1
0

Better error handling and support for moving items to different parent albums.

This commit is contained in:
rWatcher 2009-08-03 01:58:03 -04:00
parent d8f3596476
commit fccd05ccbe
2 changed files with 59 additions and 30 deletions

View File

@ -32,11 +32,11 @@ class keeporiginal_Controller extends Controller {
// Make sure the current item is a photo and that an original exists. // Make sure the current item is a photo and that an original exists.
if ($item->is_photo() && file_exists($original_image)) { if ($item->is_photo() && file_exists($original_image)) {
// Delete the modified version of the photo.
@unlink($item->file_path());
// Delete the modified version and move the original over in place of it. // Copy the original image back over, display an error message if the copy fails.
unlink($item->file_path()); if (@rename($original_image, $item->file_path())) {
rename($original_image, $item->file_path());
// Re-generate the items resize and thumbnail. // Re-generate the items resize and thumbnail.
$item_data = model_cache::get("item", $id); $item_data = model_cache::get("item", $id);
$item_data->resize_dirty= 1; $item_data->resize_dirty= 1;
@ -55,7 +55,17 @@ class keeporiginal_Controller extends Controller {
} }
// Display a success message and redirect to the items page. // Display a success message and redirect to the items page.
message::success(t("Your Original Image Has Been Restored.")); message::success(t("Your original image has been restored."));
url::redirect($item->url());
} else {
// Display an error message if the copy failed.
message::error(t("Image restore failed!"));
url::redirect($item->url());
}
} else {
// Display an error message if there is not an original photo.
message::error(t("Image restore failed!"));
url::redirect($item->url()); url::redirect($item->url());
} }
} }

View File

@ -26,19 +26,22 @@ class keeporiginal_event_Core {
// Figure out where the original copy should be stashed at. // Figure out where the original copy should be stashed at.
$temp_path = str_replace(VARPATH . "albums/", "", $input_file); $temp_path = str_replace(VARPATH . "albums/", "", $input_file);
$original_image = VARPATH . "original/" . $temp_path; $original_image = VARPATH . "original/" . $temp_path;
$individual_dirs = split("[/\]", $temp_path); $individual_dirs = split("[/\]", "original/" . $temp_path);
// If any original file does not already exist, then create a folder structure // If any original file does not already exist, then create a folder structure
// similar to that found in VARPATH/albums/ and copy the photo over before // similar to that found in VARPATH/albums/ and copy the photo over before
// rotating it. // rotating it.
if (!file_exists($original_image)) { if (!file_exists($original_image)) {
$new_img_path = VARPATH . "original/"; $new_img_path = VARPATH;
for($i = 0; $i < count($individual_dirs)-1; $i++) { for($i = 0; $i < count($individual_dirs)-1; $i++) {
$new_img_path = $new_img_path . "/" . $individual_dirs[$i]; $new_img_path = $new_img_path . "/" . $individual_dirs[$i];
if(!file_exists($new_img_path)) { if(!file_exists($new_img_path)) {
@mkdir($new_img_path); @mkdir($new_img_path);
} }
} }
copy($input_file, $original_image); if (!@copy($input_file, $original_image)) {
// If the copy failed, display an error message.
message::error(t("Your original image was not backed up!"));
}
} }
} }
} }
@ -48,7 +51,7 @@ class keeporiginal_event_Core {
if ($item->is_photo()) { if ($item->is_photo()) {
$original_file = VARPATH . "original/" . str_replace(VARPATH . "albums/", "", $item->file_path()); $original_file = VARPATH . "original/" . str_replace(VARPATH . "albums/", "", $item->file_path());
if (file_exists($original_file)) { if (file_exists($original_file)) {
unlink($original_file); @unlink($original_file);
} }
} }
@ -71,7 +74,23 @@ class keeporiginal_event_Core {
$old_original = VARPATH . "original/" . str_replace(VARPATH . "albums/", "", $old->file_path()); $old_original = VARPATH . "original/" . str_replace(VARPATH . "albums/", "", $old->file_path());
$new_original = VARPATH . "original/" . str_replace(VARPATH . "albums/", "", $new->file_path()); $new_original = VARPATH . "original/" . str_replace(VARPATH . "albums/", "", $new->file_path());
if (file_exists($old_original)) { if (file_exists($old_original)) {
rename($old_original, $new_original); @rename($old_original, $new_original);
}
}
}
}
static function item_moved($item, $old_parent) {
// When moving an item, check and see if a corresponding file exists
// in VARPATH/original/. If so, move that item to a similar directory
// in original as well.
if ($item->is_photo() || $item->is_album()) {
$old_item_path = $old_parent->file_path() . "/" . $item->name;
if ($item->file_path() != $old_item_path) {
$old_original = VARPATH . "original/" . str_replace(VARPATH . "albums/", "", $old_item_path);
$new_original = VARPATH . "original/" . str_replace(VARPATH . "albums/", "", $item->file_path());
if (file_exists($old_original)) {
@rename($old_original, $new_original);
} }
} }
} }
@ -88,7 +107,7 @@ class keeporiginal_event_Core {
$menu->get("options_menu") $menu->get("options_menu")
->append(Menu::factory("link") ->append(Menu::factory("link")
->id("restore") ->id("restore")
->label("Restore Original") ->label("Restore original")
->css_id("gKeepOriginalLink") ->css_id("gKeepOriginalLink")
->url(url::site("keeporiginal/restore/" . $item->id))); ->url(url::site("keeporiginal/restore/" . $item->id)));
} }