diff options
author | Cash Costello <cash.costello@gmail.com> | 2009-05-17 22:11:36 +0000 |
---|---|---|
committer | Cash Costello <cash.costello@gmail.com> | 2009-05-17 22:11:36 +0000 |
commit | 3f48d3a3c2d98e8f2b2de9540f3bc5cd5c475dd2 (patch) | |
tree | be9bdf3ed7e3c6c58fc2d08d39d51e1db6a2f6d3 /actions/delete.php | |
parent | 27781e0d8e226b89988e2cf7b8351d1d50cef4b7 (diff) | |
download | elgg-3f48d3a3c2d98e8f2b2de9540f3bc5cd5c475dd2.tar.gz elgg-3f48d3a3c2d98e8f2b2de9540f3bc5cd5c475dd2.tar.bz2 |
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
Diffstat (limited to 'actions/delete.php')
-rw-r--r-- | actions/delete.php | 178 |
1 files changed, 93 insertions, 85 deletions
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 @@ <?php
/**
- * Tidypics Delete Action
+ * Tidypics Delete Action for Images and Albums
*
*/
- //if not logged in, see world pictures instead
- if (!isloggedin()) forward('pg/photos/world');
+ $forward_url = 'pg/photos/world'; // by default forward to world photos
+
+ //if not logged in, see world pictures instead
+ if (!isloggedin()) forward($forward_url);
$guid = (int) get_input('guid');
- $forward_url = 'pg/photos/world'; //forward to world pictures if there is an unknown error
- if ($photoObject = get_entity($guid)) {
- if ($photoObject->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 |