From 3f48d3a3c2d98e8f2b2de9540f3bc5cd5c475dd2 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sun, 17 May 2009 22:11:36 +0000 Subject: reorged delete code to get rid of nested if statements and added trigger event in case a plugin wants to know when an album/image has been deleted --- actions/delete.php | 178 ++++++++++++++++++++++++++++------------------------- 1 file changed, 93 insertions(+), 85 deletions(-) (limited to 'actions/delete.php') diff --git a/actions/delete.php b/actions/delete.php index ecc5f7ffe..f6b677c55 100644 --- a/actions/delete.php +++ b/actions/delete.php @@ -1,102 +1,110 @@ canEdit()) { - $subtype = $photoObject->getSubtype(); - $container = get_entity($photoObject->container_guid); - - if ($subtype!='image' && $subtype!='album') - forward(get_input('forward_url', $_SERVER['HTTP_REFERER'])); //back off if not an album or image - - if ($subtype == 'image') { //deleting an image - $forward_url = $container->getURL(); //forward back to album after deleting pictures - $images = array($photoObject); - } else { //deleting an album - $forward_url = 'pg/photos/owned/' . $container->username; - $images = get_entities("object","image", $guid, '', 999); //get all the images from this album, or the image requested - } //end of subtype comparison + $entity = get_entity($guid); + if (!$entity) { // unable to get Elgg entity + register_error(elgg_echo("file:deletefailed")); + forward($forward_url); + } + + if (!$entity->canEdit()) { // user doesn't have permissions + register_error(elgg_echo("file:deletefailed")); + forward($forward_url); + } - //loop through all images and delete them - foreach($images as $im) { - $thumbnail = $im->thumbnail; - $smallthumb = $im->smallthumb; - $largethumb = $im->largethumb; + $subtype = $entity->getSubtype(); + $container = get_entity($entity->container_guid); + + if ($subtype != 'image' && $subtype != 'album') { // how did we even get here? + register_error(elgg_echo("file:deletefailed")); + forward($forward_url); + } + + if ($subtype == 'image') { //deleting an image + $forward_url = $container->getURL(); //forward back to album after deleting pictures + $images = array($entity); + // plugins can register to be told when a Tidypics image has been deleted + trigger_elgg_event('upload', 'tp_album', $entity); + } else { //deleting an album + $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('upload', 'tp_album', $entity); + } - if ($thumbnail) { //delete standard thumbnail image - $delfile = new ElggFile(); - $delfile->owner_guid = $im->getOwner(); - $delfile->setFilename($thumbnail); - $delfile->delete(); - } - if ($smallthumb) { //delete small thumbnail image - $delfile = new ElggFile(); - $delfile->owner_guid = $im->getOwner(); - $delfile->setFilename($smallthumb); - $delfile->delete(); - } - if ($largethumb) { //delete large thumbnail image - $delfile = new ElggFile(); - $delfile->owner_guid = $im->getOwner(); - $delfile->setFilename($largethumb); - $delfile->delete(); - } - if ($im) { //delete actual image file - $delfile = new ElggFile($im->getGUID()); - $delfile->owner_guid = $im->getOwner(); - //$delfile->setFilename($im->originalfilename); - if (!$delfile->delete()) { - if ($subtype=='image') register_error(elgg_echo("file:deletefailed")); //unable to delete object - } else { - if ($subtype=='image') system_message(elgg_echo("file: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 object from database - if (!$photoObject->delete()) { - register_error(elgg_echo("file:deletefailed")); //unable to delete object - } else { - system_message(elgg_echo("file:deleted")); //successfully deleted object - } - } //end of delete album + //loop through all images and delete them + foreach($images as $im) { + $thumbnail = $im->thumbnail; + $smallthumb = $im->smallthumb; + $largethumb = $im->largethumb; + if ($thumbnail) { //delete standard thumbnail image + $delfile = new ElggFile(); + $delfile->owner_guid = $im->getOwner(); + $delfile->setFilename($thumbnail); + $delfile->delete(); + } + if ($smallthumb) { //delete small thumbnail image + $delfile = new ElggFile(); + $delfile->owner_guid = $im->getOwner(); + $delfile->setFilename($smallthumb); + $delfile->delete(); + } + if ($largethumb) { //delete large thumbnail image + $delfile = new ElggFile(); + $delfile->owner_guid = $im->getOwner(); + $delfile->setFilename($largethumb); + $delfile->delete(); + } + if ($im) { //delete actual image file + $delfile = new ElggFile($im->getGUID()); + $delfile->owner_guid = $im->getOwner(); + //$delfile->setFilename($im->originalfilename); + if (!$delfile->delete()) { + if ($subtype=='image') register_error(elgg_echo("file:deletefailed")); //unable to delete object + } else { + if ($subtype=='image') system_message(elgg_echo("file: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 object from database + if (!$entity->delete()) { + register_error(elgg_echo("file:deletefailed")); //unable to delete object + } else { + system_message(elgg_echo("file:deleted")); //successfully deleted object + } + } //end of delete album - } else { //user does not have permissions to delete this image or album - $container = $_SESSION['user']; - register_error(elgg_echo("file:deletefailed")); - } //end of canEdit() comparison - } else { // unable to get Elgg entity - register_error(elgg_echo("file:deletefailed")); - } //end of get_entitty() - forward($forward_url); ?> \ No newline at end of file -- cgit v1.2.3