Better error handling and support for moving items to different parent albums.
This commit is contained in:
parent
d8f3596476
commit
fccd05ccbe
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user