]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
cleaned up album deletion
authorCash Costello <cash.costello@gmail.com>
Sat, 23 Oct 2010 13:35:24 +0000 (13:35 +0000)
committerCash Costello <cash.costello@gmail.com>
Sat, 23 Oct 2010 13:35:24 +0000 (13:35 +0000)
actions/delete.php
lib/album.php

index d9a65ce5fb67e7b2e42abced26c5488ef8b1e641..dfe9106665b7f8d83e3a0eb15ffc0a23255ec9e8 100644 (file)
@@ -13,12 +13,14 @@ $forward_url = 'pg/photos/world'; // by default forward to world photos
 $guid = (int) get_input('guid');
 
 $entity = get_entity($guid);
-if (!$entity) { // unable to get Elgg entity
+if (!$entity) {
+       // unable to get Elgg entity
        register_error(elgg_echo("tidypics:deletefailed"));
        forward($forward_url);
 }
 
-if (!$entity->canEdit()) { // user doesn't have permissions
+if (!$entity->canEdit()) {
+       // user doesn't have permissions
        register_error(elgg_echo("tidypics:deletefailed"));
        forward($forward_url);
 }
@@ -26,71 +28,31 @@ if (!$entity->canEdit()) { // user doesn't have permissions
 $subtype = $entity->getSubtype();
 $container = get_entity($entity->container_guid);
 
-if ($subtype != 'image' && $subtype != 'album') { // how did we even get here?
+if ($subtype != 'image' && $subtype != 'album') {
+       // how did we even get here?
        register_error(elgg_echo("tidypics:deletefailed"));
        forward($forward_url);
 }
 
-$owner_guid = 0; // group or user
 if ($subtype == 'image') {
        //forward back to album after deleting pictures
        $forward_url = $container->getURL();
 
        // plugins can register to be told when a Tidypics image has been deleted
        trigger_elgg_event('delete', 'tp_image', $entity);
-
-       if ($entity->delete()) {
-               system_message(elgg_echo("tidypics:deleted"));
-       } else {
-               register_error(elgg_echo("tidypics:deletefailed"));
-       }
 } else {
-       //deleting an album
-       $owner_guid = $entity->container_guid;
+       // forward to this person's albums
        $forward_url = 'pg/photos/owned/' . $container->username;
-       //get all the images from this album as long as less than 999 images
-       $images = get_entities("object", "image", $guid, '', 999);
+
        // plugins can register to be told when a Tidypics album has been deleted
        trigger_elgg_event('delete', 'tp_album', $entity);
-       //loop through all images and delete them
-       foreach ($images as $im) {
-               if ($im) {
-
-
-                       if (!$im->delete()) {
-                               register_error(elgg_echo("tidypics:deletefailed")); //unable to delete object
-                       } else {
-                               if ($subtype=='image') {
-                                       system_message(elgg_echo("tidypics:deleted")); //successfully deleted object
-                               }
-                       }
-               } //end delete actual image file
-       } //end looping through each image to delete it
 }
 
-//now that all images have been deleted, delete the album
-if ($subtype == 'album') {
-       //delete the album's directory manually; first create a temp file to get the directory path
-       $tmpfile = new ElggFile();
-       $tmpfile->setFilename('image/' . $guid . '/._tmp_del_tidypics_album_');
-       $tmpfile->subtype = 'image';
-       $tmpfile->container_guid = $guid;
-       $tmpfile->open("write");
-       $tmpfile->write('');
-       $tmpfile->close();
-       $tmpfile->save();
-       $albumdir = eregi_replace('/._tmp_del_tidypics_album_', '', $tmpfile->getFilenameOnFilestore());
-       $tmpfile->delete();
-       if (is_dir($albumdir)) {
-               rmdir($albumdir);
-       }
 
-       //delete album object from database
-       if (!$entity->delete()) {
-               register_error(elgg_echo("tidypics:deletefailed")); //unable to delete object
-       } else {
-               system_message(elgg_echo("tidypics:deleted")); //successfully deleted object
-       }
-} //end of delete album
+if ($entity->delete()) {
+       system_message(elgg_echo("tidypics:deleted"));
+} else {
+       register_error(elgg_echo("tidypics:deletefailed"));
+}
 
 forward($forward_url);
index 15450049aa255d61f41e9561878eefb03477c796..472bf69d8434d571f5fed2bf02bd5eeff577a5bc 100644 (file)
@@ -17,6 +17,19 @@ class TidypicsAlbum extends ElggObject {
                parent::__construct($guid);
        }
 
+       /**
+        * Delete album
+        *
+        * @return bool
+        */
+       public function delete() {
+
+               $this->deleteImages();
+               $this->deleteAlbumDir();
+               
+               return parent::delete();
+       }
+
        /**
         * Get an array of image objects
         *
@@ -157,4 +170,31 @@ class TidypicsAlbum extends ElggObject {
 
                return TRUE;
        }
+
+       protected function deleteImages() {
+               // get all the images from this album as long as less than 999 images
+               $images = get_entities("object", "image", $this->guid, '', 999);
+               foreach ($images as $image) {
+                       if ($image) {
+                               $image->delete();
+                       }
+               }
+       }
+
+       protected function deleteAlbumDir() {
+               $tmpfile = new ElggFile();
+               $tmpfile->setFilename('image/' . $this->guid . '/._tmp_del_tidypics_album_');
+               $tmpfile->subtype = 'image';
+               $tmpfile->owner_guid = $this->owner_guid;
+               $tmpfile->container_guid = $this->guid;
+               $tmpfile->open("write");
+               $tmpfile->write('');
+               $tmpfile->close();
+               $tmpfile->save();
+               $albumdir = eregi_replace('/._tmp_del_tidypics_album_', '', $tmpfile->getFilenameOnFilestore());
+               $tmpfile->delete();
+               if (is_dir($albumdir)) {
+                       rmdir($albumdir);
+               }
+       }
 }