summaryrefslogtreecommitdiff
path: root/modules/gallery/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gallery/helpers')
-rw-r--r--modules/gallery/helpers/gallery_block.php2
-rw-r--r--modules/gallery/helpers/gallery_installer.php6
-rw-r--r--modules/gallery/helpers/item.php51
-rw-r--r--modules/gallery/helpers/locales.php2
4 files changed, 55 insertions, 6 deletions
diff --git a/modules/gallery/helpers/gallery_block.php b/modules/gallery/helpers/gallery_block.php
index be0f11b8..46742743 100644
--- a/modules/gallery/helpers/gallery_block.php
+++ b/modules/gallery/helpers/gallery_block.php
@@ -70,7 +70,7 @@ class gallery_block_Core {
$block->css_id = "g-platform";
$block->title = t("Platform information");
$block->content = new View("admin_block_platform.html");
- if (is_readable("/proc/loadavg")) {
+ if (@is_readable("/proc/loadavg")) {
$block->content->load_average =
join(" ", array_slice(explode(" ", current(file("/proc/loadavg"))), 0, 3));
} else {
diff --git a/modules/gallery/helpers/gallery_installer.php b/modules/gallery/helpers/gallery_installer.php
index ed4a62a5..dd53cf43 100644
--- a/modules/gallery/helpers/gallery_installer.php
+++ b/modules/gallery/helpers/gallery_installer.php
@@ -287,7 +287,7 @@ class gallery_installer {
// @todo this string needs to be picked up by l10n_scanner
module::set_var("gallery", "credits", "Powered by <a href=\"%url\">Gallery %version</a>");
module::set_var("gallery", "simultaneous_upload_limit", 5);
- module::set_var("gallery", "admin_area_timeout", 20 * 60);
+ module::set_var("gallery", "admin_area_timeout", 90 * 60);
module::set_version("gallery", 28);
}
@@ -534,8 +534,8 @@ class gallery_installer {
}
if ($version == 27) {
- // Set the admin area timeout to 20 minutes
- module::set_var("gallery", "admin_area_timeout", 20 * 60);
+ // Set the admin area timeout to 90 minutes
+ module::set_var("gallery", "admin_area_timeout", 90 * 60);
module::set_version("gallery", $version = 28);
}
}
diff --git a/modules/gallery/helpers/item.php b/modules/gallery/helpers/item.php
index 41d49ce9..36193071 100644
--- a/modules/gallery/helpers/item.php
+++ b/modules/gallery/helpers/item.php
@@ -40,7 +40,56 @@ class item_Core {
}
$source->parent_id = $target->id;
- $source->save();
+
+ // Moving may result in name or slug conflicts. If that happens, try up to 5 times to pick a
+ // random name (or slug) to avoid the conflict.
+ $orig_name = $source->name;
+ $orig_name_filename = pathinfo($source->name, PATHINFO_FILENAME);
+ $orig_name_extension = pathinfo($source->name, PATHINFO_EXTENSION);
+ $orig_slug = $source->slug;
+ for ($i = 0; $i < 5; $i++) {
+ try {
+ $source->save();
+ if ($orig_name != $source->name) {
+ switch ($source->type) {
+ case "album":
+ message::info(
+ t("Album <b>%old_name</b> renamed to <b>%new_name</b> to avoid a conflict",
+ array("old_name" => $orig_name, "new_name" => $source->name)));
+ break;
+
+ case "photo":
+ message::info(
+ t("Photo <b>%old_name</b> renamed to <b>%new_name</b> to avoid a conflict",
+ array("old_name" => $orig_name, "new_name" => $source->name)));
+ break;
+
+ case "movie":
+ message::info(
+ t("Movie <b>%old_name</b> renamed to <b>%new_name</b> to avoid a conflict",
+ array("old_name" => $orig_name, "new_name" => $source->name)));
+ break;
+ }
+ }
+ break;
+ } catch (ORM_Validation_Exception $e) {
+ $rand = rand(10, 99);
+ $errors = $e->validation->errors();
+ if (isset($errors["name"])) {
+ $source->name = $orig_name_filename . "-{$rand}." . $orig_name_extension;
+ unset($errors["name"]);
+ }
+ if (isset($errors["slug"])) {
+ $source->slug = $orig_slug . "-{$rand}";
+ unset($errors["slug"]);
+ }
+
+ if ($errors) {
+ // There were other validation issues-- we don't know how to handle those
+ throw $e;
+ }
+ }
+ }
// If the target has no cover item, make this it.
if ($target->album_cover_item_id == null) {
diff --git a/modules/gallery/helpers/locales.php b/modules/gallery/helpers/locales.php
index 883d2f9a..e72d7ed9 100644
--- a/modules/gallery/helpers/locales.php
+++ b/modules/gallery/helpers/locales.php
@@ -131,7 +131,7 @@ class locales_Core {
}
static function is_rtl($locale=null) {
- return Gallery_I18n::instance()->is_rtl($locale);
+ return Gallery_I18n::instance()->is_rtl($locale);
}
/**