From f84782d6200efb424731c93bd029c7cbeb9f3dad Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Wed, 29 Sep 2010 20:47:43 -0700 Subject: Stop caching all module variables in the vars table using the name=_cache row. If that overflows, it will cause us to be unable to load variables, and we can't recover from that. Instead, use the Cache table. Bump the gallery module to v40. Fixes ticket #1405. --- modules/gallery/controllers/packager.php | 5 -- modules/gallery/helpers/gallery_installer.php | 7 ++- modules/gallery/helpers/module.php | 55 ++++------------------ modules/gallery/module.info | 2 +- .../gallery/views/admin_advanced_settings.html.php | 1 - 5 files changed, 15 insertions(+), 55 deletions(-) (limited to 'modules') diff --git a/modules/gallery/controllers/packager.php b/modules/gallery/controllers/packager.php index f463d0de..bd51b93c 100644 --- a/modules/gallery/controllers/packager.php +++ b/modules/gallery/controllers/packager.php @@ -81,11 +81,6 @@ class Packager_Controller extends Controller { Database::instance()->query("TRUNCATE {caches}"); Database::instance()->query("TRUNCATE {sessions}"); Database::instance()->query("TRUNCATE {logs}"); - db::build() - ->delete("vars") - ->where("module_name", "=", "gallery") - ->where("name", "=", "_cache") - ->execute(); db::build()->update("users") ->set(array("password" => "")) ->where("id", "in", array(1, 2)) diff --git a/modules/gallery/helpers/gallery_installer.php b/modules/gallery/helpers/gallery_installer.php index 83961d6b..3d82bc69 100644 --- a/modules/gallery/helpers/gallery_installer.php +++ b/modules/gallery/helpers/gallery_installer.php @@ -309,7 +309,7 @@ class gallery_installer { module::set_var("gallery", "show_user_profiles_to", "registered_users"); module::set_var("gallery", "extra_binary_paths", "/usr/local/bin:/opt/local/bin:/opt/bin"); - module::set_version("gallery", 40); + module::set_version("gallery", 41); } static function upgrade($version) { @@ -637,6 +637,11 @@ class gallery_installer { module::set_var("gallery", "extra_binary_paths", "/usr/local/bin:/opt/local/bin:/opt/bin"); module::set_version("gallery", $version = 40); } + + if ($version == 40) { + module::clear_var("gallery", "_cache"); + module::set_version("gallery", $version = 41); + } } static function uninstall() { diff --git a/modules/gallery/helpers/module.php b/modules/gallery/helpers/module.php index 7863520e..64d0d1d6 100644 --- a/modules/gallery/helpers/module.php +++ b/modules/gallery/helpers/module.php @@ -425,48 +425,21 @@ class module_Core { * @return the value */ static function get_var($module_name, $name, $default_value=null) { - // We cache all vars in gallery._cache so that we can load all vars at once for - // performance. + // We cache vars so we can load them all at once for performance. if (empty(self::$var_cache)) { - $row = db::build() - ->select("value") - ->from("vars") - ->where("module_name", "=", "gallery") - ->where("name", "=", "_cache") - ->execute() - ->current(); - if ($row) { - self::$var_cache = unserialize($row->value); - } else { - // gallery._cache doesn't exist. Create it now. + self::$var_cache = Cache::instance()->get("var_cache"); + if (empty(self::$var_cache)) { + // Cache doesn't exist, create it now. foreach (db::build() ->select("module_name", "name", "value") ->from("vars") ->order_by("module_name") ->order_by("name") ->execute() as $row) { - if ($row->module_name == "gallery" && $row->name == "_cache") { - // This could happen if there's a race condition - continue; - } // Mute the "Creating default object from empty value" warning below @self::$var_cache->{$row->module_name}->{$row->name} = $row->value; } - $cache = ORM::factory("var"); - $cache->module_name = "gallery"; - $cache->name = "_cache"; - $cache->value = serialize(self::$var_cache); - try { - $cache->save(); - } catch (Database_Exception $e) { - // There's a potential race condition here. Don't fail if that happens because it's - // bound to be transient and not a huge deal, but at least put something in the logs. - if (stristr($e->getMessage(), "duplicate entry")) { - Kohana_Log::add("error", "Failed to cache vars"); - } else { - throw $e; - } - } + Cache::instance()->set("var_cache", self::$var_cache, array("vars")); } } @@ -495,11 +468,7 @@ class module_Core { $var->value = $value; $var->save(); - db::build() - ->delete("vars") - ->where("module_name", "=", "gallery") - ->where("name", "=", "_cache") - ->execute(); + Cache::instance()->delete("var_cache"); self::$var_cache = null; } @@ -524,11 +493,7 @@ class module_Core { ->where("name", "=", $name) ->execute(); - db::build() - ->delete("vars") - ->where("module_name", "=", "gallery") - ->where("name", "=", "_cache") - ->execute(); + Cache::instance()->delete("var_cache"); self::$var_cache = null; } @@ -546,11 +511,7 @@ class module_Core { $var->delete(); } - db::build() - ->delete("vars") - ->where("module_name", "=", "gallery") - ->where("name", "=", "_cache") - ->execute(); + Cache::instance()->delete("var_cache"); self::$var_cache = null; } diff --git a/modules/gallery/module.info b/modules/gallery/module.info index 1155ddf7..2b684e5e 100644 --- a/modules/gallery/module.info +++ b/modules/gallery/module.info @@ -1,3 +1,3 @@ name = "Gallery 3" description = "Gallery core application" -version = 40 +version = 41 diff --git a/modules/gallery/views/admin_advanced_settings.html.php b/modules/gallery/views/admin_advanced_settings.html.php index 1f7d2f64..edaeecaf 100644 --- a/modules/gallery/views/admin_advanced_settings.html.php +++ b/modules/gallery/views/admin_advanced_settings.html.php @@ -17,7 +17,6 @@ - module_name == "gallery" && $var->name == "_cache") continue ?> "> module_name ?> name) ?> -- cgit v1.2.3 From 86981c5afb980f744103af8b2e9a229e745d98fb Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Fri, 1 Oct 2010 21:09:14 -0700 Subject: Use the "loading" image from themes/wind since it's no longer in gallery3/lib. --- modules/gallery/views/upgrader.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules') diff --git a/modules/gallery/views/upgrader.html.php b/modules/gallery/views/upgrader.html.php index 1ec49c77..ad2e3421 100644 --- a/modules/gallery/views/upgrader.html.php +++ b/modules/gallery/views/upgrader.html.php @@ -17,7 +17,7 @@ -- cgit v1.2.3 From dae835449115b322c0ad057230a34a78d530b9a4 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Mon, 8 Nov 2010 19:52:43 -0800 Subject: Updated item::random_query() PHPdoc to include example usage --- modules/gallery/helpers/item.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'modules') diff --git a/modules/gallery/helpers/item.php b/modules/gallery/helpers/item.php index 092904a5..052b1c8e 100644 --- a/modules/gallery/helpers/item.php +++ b/modules/gallery/helpers/item.php @@ -218,7 +218,13 @@ class item_Core { } /** - * Return a query to get a random Item_Model, with optional filters + * Return a query to get a random Item_Model, with optional filters. + * Usage: item::random_query()->execute(); + * + * Note: You can add your own ->where() clauses but if your Gallery is + * small or your where clauses are over-constrained you may wind up with + * no item. You should try running this a few times in a loop if you + * don't get an item back. */ static function random_query() { // Pick a random number and find the item that's got nearest smaller number. -- cgit v1.2.3 From 3d952f41c8d90b5c217616fb060697f93fb9db07 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Mon, 8 Nov 2010 22:16:57 -0800 Subject: Fix a bug in the way that we add tags that causes it to be really slow when adding a tag to lots of items. Tag_Model::save() would call item_related_update for every tag related to an item upon save which is an O(N!) operation. Fixes ticket #1412. --- modules/tag/controllers/admin_tags.php | 1 - modules/tag/helpers/tag.php | 1 + modules/tag/models/tag.php | 26 +++++++++++--------------- 3 files changed, 12 insertions(+), 16 deletions(-) (limited to 'modules') diff --git a/modules/tag/controllers/admin_tags.php b/modules/tag/controllers/admin_tags.php index 0c82579b..99743a8e 100644 --- a/modules/tag/controllers/admin_tags.php +++ b/modules/tag/controllers/admin_tags.php @@ -52,7 +52,6 @@ class Admin_Tags_Controller extends Admin_Controller { $form = tag::get_delete_form($tag); if ($form->validate()) { $name = $tag->name; - db::build()->delete("items_tags")->where("tag_id", "=", $tag->id)->execute(); $tag->delete(); message::success(t("Deleted tag %tag_name", array("tag_name" => $name))); log::success("tags", t("Deleted tag %tag_name", array("tag_name" => $name))); diff --git a/modules/tag/helpers/tag.php b/modules/tag/helpers/tag.php index 14d27c94..79e74385 100644 --- a/modules/tag/helpers/tag.php +++ b/modules/tag/helpers/tag.php @@ -126,6 +126,7 @@ class tag_Core { ->delete("items_tags") ->where("item_id", "=", $item->id) ->execute(); + module::event("item_related_update", $item); } /** diff --git a/modules/tag/models/tag.php b/modules/tag/models/tag.php index d6ad4dfd..c038f6d1 100644 --- a/modules/tag/models/tag.php +++ b/modules/tag/models/tag.php @@ -57,8 +57,7 @@ class Tag_Model_Core extends ORM { /** * Overload ORM::save() to trigger an item_related_update event for all items that are related - * to this tag. Since items can be added or removed as part of the save, we need to trigger an - * event for the union of all related items before and after the save. + * to this tag. */ public function save() { $related_item_ids = array(); @@ -70,20 +69,16 @@ class Tag_Model_Core extends ORM { $related_item_ids[$row->item_id] = 1; } - $result = parent::save(); - - foreach (db::build() - ->select("item_id") - ->from("items_tags") - ->where("tag_id", "=", $this->id) - ->execute() as $row) { - $related_item_ids[$row->item_id] = 1; + if (isset($this->changed_relations["items"])) { + $changed = array_merge( + array_diff($this->changed_relations["items"], $this->object_relations["items"]), + array_diff($this->object_relations["items"], $this->changed_relations["items"])); } - if ($related_item_ids) { - foreach (ORM::factory("item") - ->where("id", "IN", array_keys($related_item_ids)) - ->find_all() as $item) { + $result = parent::save(); + + if (!empty($changed)) { + foreach (ORM::factory("item")->where("id", "IN", $changed)->find_all() as $item) { module::event("item_related_update", $item); } } @@ -93,7 +88,7 @@ class Tag_Model_Core extends ORM { /** * Overload ORM::delete() to trigger an item_related_update event for all items that are - * related to this tag. + * related to this tag, and delete all items_tags relationships. */ public function delete($ignored_id=null) { $related_item_ids = array(); @@ -105,6 +100,7 @@ class Tag_Model_Core extends ORM { $related_item_ids[$row->item_id] = 1; } + db::build()->delete("items_tags")->where("tag_id", "=", $this->id)->execute(); $result = parent::delete(); if ($related_item_ids) { -- cgit v1.2.3 From f0781a9162129394236ef9c8cd68392d59b52791 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Tue, 9 Nov 2010 09:16:07 -0800 Subject: Add an extra line break after the RewriteBase line so that the RewriteBase and RewriteRule lines don't get merged in the resulting textarea. Fixes #1481. --- modules/g2_import/views/admin_g2_import.html.php | 1 + 1 file changed, 1 insertion(+) (limited to 'modules') diff --git a/modules/g2_import/views/admin_g2_import.html.php b/modules/g2_import/views/admin_g2_import.html.php index 564bea9f..cb13363a 100644 --- a/modules/g2_import/views/admin_g2_import.html.php +++ b/modules/g2_import/views/admin_g2_import.html.php @@ -89,6 +89,7 @@ Options +FollowSymLinks RewriteEngine On RewriteBase + RewriteRule ^(.*)$ [QSA,L,R=301] </IfModule> -- cgit v1.2.3 From e87c502eded374e927c531ad10a78dac8ee70e64 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Tue, 9 Nov 2010 12:48:07 -0800 Subject: Tie the image cachebuster to the file mtime instead of Item_Model::$updated since we want the url to be stable whenever possible. Fixes #1482. --- modules/gallery/models/item.php | 13 +++++++++---- modules/gallery/tests/Item_Model_Test.php | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) (limited to 'modules') diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php index eaf09c9c..891153d1 100644 --- a/modules/gallery/models/item.php +++ b/modules/gallery/models/item.php @@ -166,8 +166,9 @@ class Item_Model_Core extends ORM_MPTT { */ public function file_url($full_uri=false) { $relative_path = "var/albums/" . $this->relative_path(); + $cache_buster = $this->_cache_buster($this->file_path()); return ($full_uri ? url::abs_file($relative_path) : url::file($relative_path)) - . "?m={$this->updated}"; + . $cache_buster; } /** @@ -198,7 +199,7 @@ class Item_Model_Core extends ORM_MPTT { * photo: http://example.com/gallery3/var/albums/album1/photo.thumb.jpg */ public function thumb_url($full_uri=false) { - $cache_buster = "?m={$this->updated}"; + $cache_buster = $this->_cache_buster($this->thumb_path()); $relative_path = "var/thumbs/" . $this->relative_path(); $base = ($full_uri ? url::abs_file($relative_path) : url::file($relative_path)); if ($this->is_photo()) { @@ -227,9 +228,9 @@ class Item_Model_Core extends ORM_MPTT { */ public function resize_url($full_uri=false) { $relative_path = "var/resizes/" . $this->relative_path(); + $cache_buster = $this->_cache_buster($this->resize_path()); return ($full_uri ? url::abs_file($relative_path) : url::file($relative_path)) . - ($this->is_album() ? "/.album.jpg" : "") - . "?m={$this->updated}"; + ($this->is_album() ? "/.album.jpg" : "") . $cache_buster; } /** @@ -1024,4 +1025,8 @@ class Item_Model_Core extends ORM_MPTT { } return $data; } + + private function _cache_buster($path) { + return "?m=" . (string)(file_exists($path) ? filemtime($path) : 0); + } } diff --git a/modules/gallery/tests/Item_Model_Test.php b/modules/gallery/tests/Item_Model_Test.php index 90c54e3c..264a2128 100644 --- a/modules/gallery/tests/Item_Model_Test.php +++ b/modules/gallery/tests/Item_Model_Test.php @@ -406,6 +406,29 @@ class Item_Model_Test extends Gallery_Unit_Test_Case { return; // pass } $this->assert_true(false, "Shouldn't get here"); + } + + public function urls_test() { + $photo = test::random_photo(); + $this->assert_true( + preg_match("|http://./var/resizes/name_\d+\.jpg\?m=\d+|", $photo->resize_url()), + $photo->resize_url() . " is malformed"); + $this->assert_true( + preg_match("|http://./var/thumbs/name_\d+\.jpg\?m=\d+|", $photo->thumb_url()), + $photo->thumb_url() . " is malformed"); + $this->assert_true( + preg_match("|http://./var/albums/name_\d+\.jpg\?m=\d+|", $photo->file_url()), + $photo->file_url() . " is malformed"); + // Albums have special thumbnails. Empty album has cachebuster of 0 since it has no thumbnail + $album = test::random_album(); + $this->assert_true( + preg_match("|http://./var/thumbs/name_\d+/\.album\.jpg\?m=0|", $album->thumb_url()), + $album->thumb_url() . " is malformed"); + + $photo = test::random_photo($album); + $this->assert_true( + preg_match("|http://./var/thumbs/name_\d+/\.album\.jpg\?m=\d+|", $album->thumb_url()), + $album->thumb_url() . " is malformed"); } } -- cgit v1.2.3 From 86790d4464c9f79e90adbe2cc7c24251371ad416 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Sun, 7 Nov 2010 19:57:05 -0800 Subject: Return the admin check as part of the block structure as opposed to printing it directly to the output. I had problems with the admin check messing up the AJAX calls on the module update page. And it went away after this fix. --- modules/gallery/helpers/gallery_theme.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'modules') diff --git a/modules/gallery/helpers/gallery_theme.php b/modules/gallery/helpers/gallery_theme.php index 0d7cc44a..978c69a6 100644 --- a/modules/gallery/helpers/gallery_theme.php +++ b/modules/gallery/helpers/gallery_theme.php @@ -93,7 +93,7 @@ class gallery_theme_Core { } // Redirect to the root album when the admin session expires. - $admin_session_redirect_check = ''; - print $admin_session_redirect_check; if ($session->get("l10n_mode", false)) { - return L10n_Client_Controller::l10n_form(); + $content .= "\n" . L10n_Client_Controller::l10n_form(); } + return $content; } static function credits() { -- cgit v1.2.3 From 7efa9a5b87eaa8fe86972376af8c58dc29c44392 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 14 Nov 2010 15:01:29 -0800 Subject: Fix two issues with item deletion: 1) We're compacting tags on every deletion which is slow. Since we delete albums in batch, we should just do one tag compaction at the end. Fixes #1487. 2) Issue introduced in 3d952f41c8d90b5c217616fb060697f93fb9db07 where we trigger an item_related_update in tag::clear_all(). Since tag::clear_all() is called when we delete an item, this causes the search module to attempt to index a deleted item. Move that triggering upstream. --- modules/tag/helpers/tag.php | 1 - modules/tag/helpers/tag_event.php | 11 +++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'modules') diff --git a/modules/tag/helpers/tag.php b/modules/tag/helpers/tag.php index 79e74385..14d27c94 100644 --- a/modules/tag/helpers/tag.php +++ b/modules/tag/helpers/tag.php @@ -126,7 +126,6 @@ class tag_Core { ->delete("items_tags") ->where("item_id", "=", $item->id) ->execute(); - module::event("item_related_update", $item); } /** diff --git a/modules/tag/helpers/tag_event.php b/modules/tag/helpers/tag_event.php index 0cc2170c..829089c4 100644 --- a/modules/tag/helpers/tag_event.php +++ b/modules/tag/helpers/tag_event.php @@ -62,6 +62,12 @@ class tag_event_Core { static function item_deleted($item) { tag::clear_all($item); + if (!batch::in_progress()) { + tag::compact(); + } + } + + static function batch_complete() { tag::compact(); } @@ -88,6 +94,7 @@ class tag_event_Core { tag::add($item, trim($tag_name)); } } + module::event("item_related_update", $item); tag::compact(); } @@ -109,7 +116,7 @@ class tag_event_Core { if (!isset($group->uploadify)) { return; } - + $group = $form->add_photos; $group->input("tags") ->label(t("Add tags to all uploaded files")) @@ -132,7 +139,7 @@ class tag_event_Core { if (!isset($group->uploadify)) { return; } - + foreach (explode(",", $form->add_photos->tags->value) as $tag_name) { $tag_name = trim($tag_name); if ($tag_name) { -- cgit v1.2.3 From d49a6dcc995d0c0073b3173d81cac7f3eb6ee30f Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 14 Nov 2010 15:45:30 -0800 Subject: Create a new task to resync tag task counts and delete tags that have no associated items. --- modules/tag/helpers/tag_task.php | 97 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 modules/tag/helpers/tag_task.php (limited to 'modules') diff --git a/modules/tag/helpers/tag_task.php b/modules/tag/helpers/tag_task.php new file mode 100644 index 00000000..087c85de --- /dev/null +++ b/modules/tag/helpers/tag_task.php @@ -0,0 +1,97 @@ +callback("tag_task::clean_up_tags") + ->name(t("Clean up tags")) + ->description(t("Correct tag counts and remove tags with no items")) + ->severity(log::SUCCESS); + return $tasks; + } + + /** + * Fix up tag counts and delete any tags that have no associated items. + * @param Task_Model the task + */ + static function clean_up_tags($task) { + $errors = array(); + try { + $start = microtime(true); + $last_tag_id = $task->get("last_tag_id", null); + $current = 0; + $total = 0; + + switch ($task->get("mode", "init")) { + case "init": + $task->set("total", ORM::factory("tag")->count_all()); + $task->set("mode", "clean_up_tags"); + $task->set("completed", 0); + $task->set("last_tag_id", 0); + + case "clean_up_tags": + $completed = $task->get("completed"); + $total = $task->get("total"); + $last_tag_id = $task->get("last_tag_id"); + $tags = ORM::factory("tag")->where("id", ">", $last_tag_id)->find_all(); + Kohana_Log::add("error",print_r(Database::instance()->last_query(),1)); + while ($current < $total && microtime(true) - $start < 1 && $tag = $tags->current()) { + $last_tag_id = $tag->id; + $real_count = $tag->items_count(); + if ($tag->count != $real_count) { + $tag->count = $real_count; + if ($tag->count) { + $task->log( + "Fixing count for tag {$tag->name} (id: {$tag->id}, new count: {$tag->count})"); + $tag->save(); + } else { + $task->log("Deleting empty tag {$tag->name} ({$tag->id})"); + $tag->delete(); + } + } + + $completed++; + $tags->next(); + } + $task->percent_complete = $completed / $total * 100; + $task->set("completed", $completed); + $task->set("last_tag_id", $last_tag_id); + } + + $task->status = t2("Examined %count tag", "Examined %count tags", $completed); + + if ($completed == $total) { + $task->done = true; + $task->state = "success"; + $task->percent_complete = 100; + } + } catch (Exception $e) { + Kohana_Log::add("error",(string)$e); + $task->done = true; + $task->state = "error"; + $task->status = $e->getMessage(); + $errors[] = (string)$e; + } + if ($errors) { + $task->log($errors); + } + } +} \ No newline at end of file -- cgit v1.2.3 From add586bbb129280badb484ae0fdaaa10372e4dc7 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 14 Nov 2010 15:53:30 -0800 Subject: Create a task to clean up tag counts and delete tag with no associated items. Fixes #1488. --- modules/tag/helpers/tag_task.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules') diff --git a/modules/tag/helpers/tag_task.php b/modules/tag/helpers/tag_task.php index 087c85de..7bf50546 100644 --- a/modules/tag/helpers/tag_task.php +++ b/modules/tag/helpers/tag_task.php @@ -51,7 +51,7 @@ class tag_task_Core { $completed = $task->get("completed"); $total = $task->get("total"); $last_tag_id = $task->get("last_tag_id"); - $tags = ORM::factory("tag")->where("id", ">", $last_tag_id)->find_all(); + $tags = ORM::factory("tag")->where("id", ">", $last_tag_id)->find_all(25); Kohana_Log::add("error",print_r(Database::instance()->last_query(),1)); while ($current < $total && microtime(true) - $start < 1 && $tag = $tags->current()) { $last_tag_id = $tag->id; -- cgit v1.2.3 From 8d030cea64c0e5934e4dbf5fc56fab87c7e253bb Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Thu, 18 Nov 2010 09:52:40 -0800 Subject: Fix a bug where simultaneous deletes of the same item can result in it deleting the first item row in the database. The root issue is a bug in Kohana that's addressed in dca9b5f3fc8e80ee0667cac88d688e2287b1e7f4 but in this change we deal with the fact that reloading an item can result in an instance of the item that's unloaded. In those cases, we should just ignore it and move on. Fixes #1489. --- modules/gallery/libraries/ORM_MPTT.php | 8 ++++++-- modules/gallery/models/item.php | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'modules') diff --git a/modules/gallery/libraries/ORM_MPTT.php b/modules/gallery/libraries/ORM_MPTT.php index d8d88e4e..f20fafa0 100644 --- a/modules/gallery/libraries/ORM_MPTT.php +++ b/modules/gallery/libraries/ORM_MPTT.php @@ -96,12 +96,16 @@ class ORM_MPTT_Core extends ORM { $item->reload()->delete(); } - // Deleting children has affected this item - $this->reload(); + // Deleting children has affected this item, but we'll reload it below. } $this->lock(); $this->reload(); // Assume that the prior lock holder may have changed this entry + if (!$this->loaded()) { + // Concurrent deletes may result in this item already being gone. Ignore it. + return; + } + try { db::build() ->update($this->table_name) diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php index 891153d1..9016a04a 100644 --- a/modules/gallery/models/item.php +++ b/modules/gallery/models/item.php @@ -71,6 +71,11 @@ class Item_Model_Core extends ORM_MPTT { } public function delete($ignored_id=null) { + if (!$this->loaded()) { + // Concurrent deletes may result in this item already being gone. Ignore it. + return; + } + if ($this->id == 1) { $v = new Validation(array("id")); $v->add_error("id", "cant_delete_root_album"); -- cgit v1.2.3 From c1573d8ef2e34429a67a69c3ad947505a5772931 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Thu, 18 Nov 2010 13:09:10 -0800 Subject: Use sys_getloadavg() instead of reading /proc/loadavg. Fixes #1491. --- modules/gallery/helpers/gallery_block.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'modules') diff --git a/modules/gallery/helpers/gallery_block.php b/modules/gallery/helpers/gallery_block.php index cb28cbcd..3e2a7313 100644 --- a/modules/gallery/helpers/gallery_block.php +++ b/modules/gallery/helpers/gallery_block.php @@ -70,12 +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") && $first_line = current(@file("/proc/loadavg"))) { - $block->content->load_average = - join(" ", array_slice(explode(" ", $first_line), 0, 3)); - } else { - $block->content->load_average = t("Unavailable"); - } + $block->content->load_average = join(" ", sys_getloadavg()); break; case "project_news": -- cgit v1.2.3 From dd2b815ab2f1623540701fa887098a8b9f40de08 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Thu, 18 Nov 2010 21:31:13 -0800 Subject: Add Bengali (bn_BD). --- modules/gallery/helpers/locales.php | 3 +++ 1 file changed, 3 insertions(+) (limited to 'modules') diff --git a/modules/gallery/helpers/locales.php b/modules/gallery/helpers/locales.php index 7bacd388..5961f449 100644 --- a/modules/gallery/helpers/locales.php +++ b/modules/gallery/helpers/locales.php @@ -62,11 +62,14 @@ class locales_Core { } // @todo Might want to add a localizable language name as well. + // ref: http://cldr.unicode.org/ + // ref: http://cldr.unicode.org/index/cldr-spec/picking-the-right-language-code private static function _init_language_data() { $l["af_ZA"] = "Afrikaans"; // Afrikaans $l["ar_SA"] = "العربية"; // Arabic $l["be_BY"] = "Беларускі"; // Belarusian $l["bg_BG"] = "български"; // Bulgarian + $l["bn_BD"] = "বাংলা"; // Bengali $l["ca_ES"] = "Catalan"; // Catalan $l["cs_CZ"] = "čeština"; // Czech $l["da_DK"] = "Dansk"; // Danish -- cgit v1.2.3 From 13cc0087ec135caf67e7c3c2becd9a12b72298b4 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sat, 20 Nov 2010 20:43:18 -0800 Subject: I don't run these, I doubt anybody does. Deleting --- modules/gallery/tests/selenium/Add_Album.html | 52 --------------------- modules/gallery/tests/selenium/Add_Comment.html | 52 --------------------- modules/gallery/tests/selenium/Add_Item.html | 62 ------------------------- modules/gallery/tests/selenium/Login.html | 47 ------------------- 4 files changed, 213 deletions(-) delete mode 100644 modules/gallery/tests/selenium/Add_Album.html delete mode 100644 modules/gallery/tests/selenium/Add_Comment.html delete mode 100644 modules/gallery/tests/selenium/Add_Item.html delete mode 100644 modules/gallery/tests/selenium/Login.html (limited to 'modules') diff --git a/modules/gallery/tests/selenium/Add_Album.html b/modules/gallery/tests/selenium/Add_Album.html deleted file mode 100644 index ccd4d0b7..00000000 --- a/modules/gallery/tests/selenium/Add_Album.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -AddAlbum - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AddAlbum
open/index.php/albums/1
clicklink=Add album
typenameseleniumtest
typetitleSelenium Test Album
typedescriptionTest
click//button[@type='button']
assertTextPresentSelenium Test Album
- - diff --git a/modules/gallery/tests/selenium/Add_Comment.html b/modules/gallery/tests/selenium/Add_Comment.html deleted file mode 100644 index 054e7597..00000000 --- a/modules/gallery/tests/selenium/Add_Comment.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -Add comment - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Add comment
open/index.php/albums/1
clickAndWaitg-photo-id-2
typeg-authorTest
typeg-emailtest@gmail.com
typeg-textThis is a selenium test comment.
click//button[@type='submit']
assertTextPresentThis is a selenium test comment.
- - diff --git a/modules/gallery/tests/selenium/Add_Item.html b/modules/gallery/tests/selenium/Add_Item.html deleted file mode 100644 index 741dff65..00000000 --- a/modules/gallery/tests/selenium/Add_Item.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - -AddItem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AddItem
open/index.php/albums/1
clicklink=Add an item
typenameseleniumitem.jpg
typetitleSelenium Item
typedescriptionTest item
typefile/Users/ckieffer/Sites/gallery3.0/core/tests/images/DSC_0003.jpg
click//button[@type='button']
clicklink=X
assertTextPresentSelenium Item
- - diff --git a/modules/gallery/tests/selenium/Login.html b/modules/gallery/tests/selenium/Login.html deleted file mode 100644 index d2e45c63..00000000 --- a/modules/gallery/tests/selenium/Login.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - -Login - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Login
open/index.php/albums/1
clickg-login-link
typeg-nameadmin
typeg-passwordadmin
clickAndWait//button[@type='button']
clickAndWaitg-user-profile-link
- - -- cgit v1.2.3 From 12b77c7ef4bb715df45aa7299872691cc0c4dcef Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sat, 20 Nov 2010 20:54:16 -0800 Subject: Move the sys_getloadavg() call into the template since that's what we're doing for other similar calls --- modules/gallery/helpers/gallery_block.php | 1 - modules/gallery/views/admin_block_platform.html.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'modules') diff --git a/modules/gallery/helpers/gallery_block.php b/modules/gallery/helpers/gallery_block.php index 3e2a7313..86886237 100644 --- a/modules/gallery/helpers/gallery_block.php +++ b/modules/gallery/helpers/gallery_block.php @@ -70,7 +70,6 @@ class gallery_block_Core { $block->css_id = "g-platform"; $block->title = t("Platform information"); $block->content = new View("admin_block_platform.html"); - $block->content->load_average = join(" ", sys_getloadavg()); break; case "project_news": diff --git a/modules/gallery/views/admin_block_platform.html.php b/modules/gallery/views/admin_block_platform.html.php index 379ab0aa..9a594fa5 100644 --- a/modules/gallery/views/admin_block_platform.html.php +++ b/modules/gallery/views/admin_block_platform.html.php @@ -16,7 +16,7 @@ Database::instance()->query("SELECT version() as v")->current()->v)) ?>
  • - $load_average)) ?> + join(" ", sys_getloadavg()))) ?>
  • module::get_var("gallery", "graphics_toolkit"))) ?> -- cgit v1.2.3 From 5f4ab7fd76d24e3848aa96b3f657fca587d68f72 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 21 Nov 2010 13:01:44 -0800 Subject: Shuffle up the way we figure out which image to rebuild next so that multiple concurrent tasks actually work in parallel and don't stomp on each other. Fixes #1498. --- modules/gallery/helpers/gallery_task.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'modules') diff --git a/modules/gallery/helpers/gallery_task.php b/modules/gallery/helpers/gallery_task.php index d56edabb..e69ff91a 100644 --- a/modules/gallery/helpers/gallery_task.php +++ b/modules/gallery/helpers/gallery_task.php @@ -71,7 +71,12 @@ class gallery_task_Core { static function rebuild_dirty_images($task) { $errors = array(); try { - $result = graphics::find_dirty_images_query()->select("id")->execute(); + // Choose the dirty images in a random order so that if we run this task multiple times + // concurrently each task is rebuilding different images simultaneously. + $result = graphics::find_dirty_images_query()->select("id") + ->select(new Database_Expression("RAND() as r")) + ->order_by("r", "ASC") + ->execute(); $total_count = $task->get("total_count", $result->count()); $mode = $task->get("mode", "init"); if ($mode == "init") { -- cgit v1.2.3 From 3c523bcac6e902973c5891c02842254eaecd33a4 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 21 Nov 2010 13:51:07 -0800 Subject: Create a module setting for the number of random images to show in the sidebar. Fixes #1499. --- modules/image_block/helpers/image_block_block.php | 20 ++++++++++----- .../image_block/helpers/image_block_installer.php | 29 ++++++++++++++++++++++ modules/image_block/module.info | 2 +- .../image_block/views/image_block_block.html.php | 2 ++ 4 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 modules/image_block/helpers/image_block_installer.php (limited to 'modules') diff --git a/modules/image_block/helpers/image_block_block.php b/modules/image_block/helpers/image_block_block.php index da6e8782..0a53672c 100644 --- a/modules/image_block/helpers/image_block_block.php +++ b/modules/image_block/helpers/image_block_block.php @@ -29,16 +29,24 @@ class image_block_block_Core { // The random_query approach is flawed and doesn't always return a // result when there actually is one. Retry a *few* times. // @todo Consider another fallback if further optimizations are necessary. - $attempts = 0; - do { - $item = item::random_query()->where("type", "!=", "album")->find_all(1)->current(); - } while (!$item && $attempts++ < 3); - if ($item && $item->loaded()) { + $image_count = module::get_var("image_block", "image_count"); + $items = array(); + for ($i = 0; $i < $image_count; $i++) { + $attempts = 0; + $item = null; + do { + $item = item::random_query()->where("type", "!=", "album")->find_all(1)->current(); + } while (!$item && $attempts++ < 3); + if ($item) { + $items[] = $item; + } + } + if ($items) { $block = new Block(); $block->css_id = "g-image-block"; $block->title = t("Random image"); $block->content = new View("image_block_block.html"); - $block->content->item = $item; + $block->content->items = $items; } break; } diff --git a/modules/image_block/helpers/image_block_installer.php b/modules/image_block/helpers/image_block_installer.php new file mode 100644 index 00000000..895a7e5d --- /dev/null +++ b/modules/image_block/helpers/image_block_installer.php @@ -0,0 +1,29 @@ + + + -- cgit v1.2.3 From 554ca2e683297489251d621e2c959a6a467a6f9c Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Mon, 22 Nov 2010 22:01:11 -0800 Subject: Take into account the core.url_suffix configuration setting when parsing REST urls. This fixes the problem that setting the url suffix breaks REST. Fixes #1500. --- modules/rest/controllers/rest.php | 3 +++ modules/rest/helpers/rest.php | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'modules') diff --git a/modules/rest/controllers/rest.php b/modules/rest/controllers/rest.php index a721ff2b..c4e0fda4 100644 --- a/modules/rest/controllers/rest.php +++ b/modules/rest/controllers/rest.php @@ -86,6 +86,9 @@ class Rest_Controller extends Controller { } $request->url = url::abs_current(true); + if ($suffix = Kohana::config('core.url_suffix')) { + $request->url = substr($request->url, 0, strlen($request->url) - strlen($suffix)); + } rest::set_active_user($request->access_key); diff --git a/modules/rest/helpers/rest.php b/modules/rest/helpers/rest.php index d5ed0452..58943700 100644 --- a/modules/rest/helpers/rest.php +++ b/modules/rest/helpers/rest.php @@ -122,7 +122,12 @@ class rest_Core { * @return mixed the corresponding object (usually a model of some kind) */ static function resolve($url) { - $relative_url = substr($url, strlen(url::abs_site("rest"))); + if ($suffix = Kohana::config('core.url_suffix')) { + $relative_url = substr($url, strlen(url::abs_site("rest")) - strlen($suffix)); + } else { + $relative_url = substr($url, strlen(url::abs_site("rest"))); + } + $path = parse_url($relative_url, PHP_URL_PATH); $components = explode("/", $path, 3); -- cgit v1.2.3 From 2ed83fcd95deb8fc41b40b7ae4fe4b9cde0003be Mon Sep 17 00:00:00 2001 From: Kriss Andsten Date: Sat, 27 Nov 2010 05:36:25 +0800 Subject: Patch from ticket 1503, making rest/items behaviour consisten with rest/item behaviour. --- modules/gallery/helpers/items_rest.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'modules') diff --git a/modules/gallery/helpers/items_rest.php b/modules/gallery/helpers/items_rest.php index f0b68d63..a5f7a067 100644 --- a/modules/gallery/helpers/items_rest.php +++ b/modules/gallery/helpers/items_rest.php @@ -45,7 +45,7 @@ class items_rest_Core { if (access::can("view", $item)) { if (isset($types)) { if (in_array($item->type, $types)) { - $items[] = items_rest::_format_restful_item($item); + $items[] = items_rest::_format_restful_item($item, $types); } } else { $items[] = items_rest::_format_restful_item($item); @@ -74,14 +74,16 @@ class items_rest_Core { return $item; } - private static function _format_restful_item($item) { + private static function _format_restful_item($item, $types = null) { $item_rest = array("url" => rest::url("item", $item), "entity" => $item->as_restful_array(), "relationships" => rest::relationships("item", $item)); if ($item->type == "album") { $members = array(); foreach ($item->viewable()->children() as $child) { - $members[] = rest::url("item", $child); + if ($types == null || in_array($child->type, $types)) { + $members[] = rest::url("item", $child); + } } $item_rest["members"] = $members; } -- cgit v1.2.3 From d2be26e407aeb620082bcad2d5a45272868b38a1 Mon Sep 17 00:00:00 2001 From: Kriss Andsten Date: Sun, 28 Nov 2010 10:56:58 +0800 Subject: Slightly more invasive version, but cleaner on the eyes. --- modules/gallery/helpers/items_rest.php | 38 ++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 16 deletions(-) (limited to 'modules') diff --git a/modules/gallery/helpers/items_rest.php b/modules/gallery/helpers/items_rest.php index a5f7a067..da062819 100644 --- a/modules/gallery/helpers/items_rest.php +++ b/modules/gallery/helpers/items_rest.php @@ -25,7 +25,7 @@ class items_rest_Core { * filter the results based on the specified type. Using the type parameter with the * ancestors_for parameter makes no sense and will be ignored. * - * urls=url1,url2,url3 + * urls=["url1","url2","url3"] * return items that match the specified urls. Typically used to return the member detail * * ancestors_for=url @@ -33,23 +33,29 @@ class items_rest_Core { * * type= * limit the type to types in this list. eg, "type=photo,movie" + * + * also limits the types returned in the member collections (same + * behaviour as item_rest) + * + * ignored if ancestors_for is set. */ static function get($request) { $items = array(); + $types = array(); + if (isset($request->params->urls)) { + if (isset($request->params->type)) { + $types = explode(",", $request->params->type); + } + foreach (json_decode($request->params->urls) as $url) { - if (isset($request->params->type)) { - $types = explode(",", $request->params->type); - } $item = rest::resolve($url); - if (access::can("view", $item)) { - if (isset($types)) { - if (in_array($item->type, $types)) { - $items[] = items_rest::_format_restful_item($item, $types); - } - } else { - $items[] = items_rest::_format_restful_item($item); - } + if (!access::can("view", $item)) { + continue; + } + + if (empty($types) || in_array($item->type, $types)) { + $items[] = items_rest::_format_restful_item($item, $types); } } } else if (isset($request->params->ancestors_for)) { @@ -57,9 +63,9 @@ class items_rest_Core { if (!access::can("view", $item)) { throw new Kohana_404_Exception(); } - $items[] = items_rest::_format_restful_item($item); + $items[] = items_rest::_format_restful_item($item, $types); while (($item = $item->parent()) != null) { - array_unshift($items, items_rest::_format_restful_item($item)); + array_unshift($items, items_rest::_format_restful_item($item, $types)); }; } @@ -74,14 +80,14 @@ class items_rest_Core { return $item; } - private static function _format_restful_item($item, $types = null) { + private static function _format_restful_item($item, $types) { $item_rest = array("url" => rest::url("item", $item), "entity" => $item->as_restful_array(), "relationships" => rest::relationships("item", $item)); if ($item->type == "album") { $members = array(); foreach ($item->viewable()->children() as $child) { - if ($types == null || in_array($child->type, $types)) { + if (empty($types) || in_array($child->type, $types)) { $members[] = rest::url("item", $child); } } -- cgit v1.2.3 From f91819441c0f899f34c02264f9cbfdc6281980b9 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sat, 27 Nov 2010 19:48:16 -0800 Subject: Tighten up the phpDoc for get(). --- modules/gallery/helpers/items_rest.php | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'modules') diff --git a/modules/gallery/helpers/items_rest.php b/modules/gallery/helpers/items_rest.php index da062819..dd190e9d 100644 --- a/modules/gallery/helpers/items_rest.php +++ b/modules/gallery/helpers/items_rest.php @@ -33,11 +33,9 @@ class items_rest_Core { * * type= * limit the type to types in this list. eg, "type=photo,movie" - * - * also limits the types returned in the member collections (same - * behaviour as item_rest) - * - * ignored if ancestors_for is set. + * Also limits the types returned in the member collections (same + * behaviour as item_rest). + * Ignored if ancestors_for is set. */ static function get($request) { $items = array(); @@ -53,8 +51,8 @@ class items_rest_Core { if (!access::can("view", $item)) { continue; } - - if (empty($types) || in_array($item->type, $types)) { + + if (empty($types) || in_array($item->type, $types)) { $items[] = items_rest::_format_restful_item($item, $types); } } -- cgit v1.2.3 From 76b6daefaa4009fdd8de72b8f25259200a66d477 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sat, 27 Nov 2010 20:42:53 -0800 Subject: Clean up phpDoc on get() a little more --- modules/gallery/helpers/item_rest.php | 11 ++++++----- modules/gallery/helpers/items_rest.php | 9 ++++----- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'modules') diff --git a/modules/gallery/helpers/item_rest.php b/modules/gallery/helpers/item_rest.php index 10f9e16a..a8bc36ad 100644 --- a/modules/gallery/helpers/item_rest.php +++ b/modules/gallery/helpers/item_rest.php @@ -23,18 +23,19 @@ class item_rest_Core { * query the collection. You can specify them in any combination. * * scope=direct - * only return items that are immediately under this one + * Only return items that are immediately under this one * scope=all - * return items anywhere under this one + * Return items anywhere under this one * * name= - * only return items where the name contains this substring + * Only return items where the name contains this substring * * random=true - * return a single random item + * Return a single random item * * type= - * limit the type to types in this list. eg, "type=photo,movie" + * Limit the type to types in this list, eg: "type=photo,movie". + * Also limits the types returned in the member collections (same behaviour as item_rest). */ static function get($request) { $item = rest::resolve($request->url); diff --git a/modules/gallery/helpers/items_rest.php b/modules/gallery/helpers/items_rest.php index dd190e9d..08aa3279 100644 --- a/modules/gallery/helpers/items_rest.php +++ b/modules/gallery/helpers/items_rest.php @@ -26,15 +26,14 @@ class items_rest_Core { * ancestors_for parameter makes no sense and will be ignored. * * urls=["url1","url2","url3"] - * return items that match the specified urls. Typically used to return the member detail + * Return items that match the specified urls. Typically used to return the member detail * * ancestors_for=url - * return the ancestors of the specified item + * Return the ancestors of the specified item * * type= - * limit the type to types in this list. eg, "type=photo,movie" - * Also limits the types returned in the member collections (same - * behaviour as item_rest). + * Limit the type to types in this list, eg: "type=photo,movie". + * Also limits the types returned in the member collections (same behaviour as item_rest). * Ignored if ancestors_for is set. */ static function get($request) { -- cgit v1.2.3 From eb010554ff963a1f73661bf96d99697abb7dfde4 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 28 Nov 2010 11:27:25 -0800 Subject: Replace self::func() with ::func() for all public APIs and constants to make overloading easier. Fixes #1510. --- modules/gallery/helpers/MY_html.php | 6 ++-- modules/gallery/helpers/MY_remote.php | 2 +- modules/gallery/helpers/access.php | 50 +++++++++++++++---------------- modules/gallery/helpers/auth.php | 4 +-- modules/gallery/helpers/block_manager.php | 20 ++++++------- modules/gallery/helpers/gallery_block.php | 2 +- modules/gallery/helpers/graphics.php | 8 ++--- modules/gallery/helpers/identity.php | 4 +-- modules/gallery/helpers/l10n_client.php | 14 ++++----- modules/gallery/helpers/locales.php | 6 ++-- modules/gallery/helpers/log.php | 16 +++++----- modules/gallery/helpers/message.php | 18 +++++------ modules/gallery/helpers/module.php | 20 ++++++------- modules/gallery/helpers/movie.php | 4 +-- modules/gallery/helpers/site_status.php | 10 +++---- 15 files changed, 92 insertions(+), 92 deletions(-) (limited to 'modules') diff --git a/modules/gallery/helpers/MY_html.php b/modules/gallery/helpers/MY_html.php index cf130401..d15bd816 100644 --- a/modules/gallery/helpers/MY_html.php +++ b/modules/gallery/helpers/MY_html.php @@ -26,7 +26,7 @@ class html extends html_Core { * unescaped HTML which is assumed to be safe. * * Example:
    -   *   
    + *
    *
    */ static function clean($html) { @@ -39,7 +39,7 @@ class html extends html_Core { * only non-malicious HTML. * * Example:
    -   *   
    title) ?> + *
    title) ?> *
    */ static function purify($html) { @@ -86,6 +86,6 @@ class html extends html_Core { * @return the string escaped for use in HTML attributes. */ static function clean_attribute($string) { - return self::clean($string)->for_html_attr(); + return html::clean($string)->for_html_attr(); } } diff --git a/modules/gallery/helpers/MY_remote.php b/modules/gallery/helpers/MY_remote.php index 05341330..a1d2a3d1 100644 --- a/modules/gallery/helpers/MY_remote.php +++ b/modules/gallery/helpers/MY_remote.php @@ -24,7 +24,7 @@ class remote extends remote_Core { /* Read the web page into a buffer */ list ($response_status, $response_headers, $response_body) = - self::do_request($url, 'POST', $extra_headers, $post_data_raw); + remote::do_request($url, 'POST', $extra_headers, $post_data_raw); return array($response_body, $response_status, $response_headers); } diff --git a/modules/gallery/helpers/access.php b/modules/gallery/helpers/access.php index 1a448e4a..0b0dcbc1 100644 --- a/modules/gallery/helpers/access.php +++ b/modules/gallery/helpers/access.php @@ -79,7 +79,7 @@ class access_Core { * @return boolean */ static function can($perm_name, $item) { - return self::user_can(identity::active_user(), $perm_name, $item); + return access::user_can(identity::active_user(), $perm_name, $item); } /** @@ -102,7 +102,7 @@ class access_Core { $resource = $perm_name == "view" ? $item : model_cache::get("access_cache", $item->id, "item_id"); foreach ($user->groups() as $group) { - if ($resource->__get("{$perm_name}_{$group->id}") === self::ALLOW) { + if ($resource->__get("{$perm_name}_{$group->id}") === access::ALLOW) { return true; } } @@ -117,12 +117,12 @@ class access_Core { * @return boolean */ static function required($perm_name, $item) { - if (!self::can($perm_name, $item)) { + if (!access::can($perm_name, $item)) { if ($perm_name == "view") { // Treat as if the item didn't exist, don't leak any information. throw new Kohana_404_Exception(); } else { - self::forbidden(); + access::forbidden(); } } } @@ -138,7 +138,7 @@ class access_Core { static function group_can($group, $perm_name, $item) { $resource = $perm_name == "view" ? $item : model_cache::get("access_cache", $item->id, "item_id"); - return $resource->__get("{$perm_name}_{$group->id}") === self::ALLOW; + return $resource->__get("{$perm_name}_{$group->id}") === access::ALLOW; } /** @@ -168,14 +168,14 @@ class access_Core { return null; } - // For view permissions, if any parent is self::DENY, then those parents lock this one. + // For view permissions, if any parent is access::DENY, then those parents lock this one. // Return $lock = ORM::factory("item") ->where("left_ptr", "<=", $item->left_ptr) ->where("right_ptr", ">=", $item->right_ptr) ->where("items.id", "<>", $item->id) ->join("access_intents", "items.id", "access_intents.item_id") - ->where("access_intents.view_$group->id", "=", self::DENY) + ->where("access_intents.view_$group->id", "=", access::DENY) ->order_by("level", "DESC") ->limit(1) ->find(); @@ -222,7 +222,7 @@ class access_Core { self::_update_access_non_view_cache($group, $perm_name, $album); } - self::update_htaccess_files($album, $group, $perm_name, $value); + access::update_htaccess_files($album, $group, $perm_name, $value); model_cache::clear(); } @@ -414,7 +414,7 @@ class access_Core { static function verify_csrf() { $input = Input::instance(); if ($input->post("csrf", $input->get("csrf", null)) !== Session::instance()->get("csrf")) { - self::forbidden(); + access::forbidden(); } } @@ -437,7 +437,7 @@ class access_Core { * @return string */ static function csrf_form_field() { - return ""; + return ""; } /** @@ -488,7 +488,7 @@ class access_Core { "ALTER TABLE {access_intents} ADD `$field` BINARY DEFAULT NULL"); db::build() ->update("access_intents") - ->set($field, self::DENY) + ->set($field, access::DENY) ->where("item_id", "=", 1) ->execute(); model_cache::clear(); @@ -517,12 +517,12 @@ class access_Core { // DENY and this ALLOW cannot be obeyed. So in that case, back up the tree and find any // non-DEFAULT and non-ALLOW parent and propagate from there. If we can't find a matching // item, then its safe to propagate from here. - if ($access->$field !== self::DENY) { + if ($access->$field !== access::DENY) { $tmp_item = ORM::factory("item") ->where("left_ptr", "<", $item->left_ptr) ->where("right_ptr", ">", $item->right_ptr) ->join("access_intents", "access_intents.item_id", "items.id") - ->where("access_intents.$field", "=", self::DENY) + ->where("access_intents.$field", "=", access::DENY) ->order_by("left_ptr", "DESC") ->limit(1) ->find(); @@ -537,7 +537,7 @@ class access_Core { // that we can tell which permissions have been changed, and which ones need to be updated. db::build() ->update("items") - ->set($field, self::UNKNOWN) + ->set($field, access::UNKNOWN) ->where("left_ptr", ">=", $item->left_ptr) ->where("right_ptr", "<=", $item->right_ptr) ->execute(); @@ -548,20 +548,20 @@ class access_Core { ->where("left_ptr", ">=", $item->left_ptr) ->where("right_ptr", "<=", $item->right_ptr) ->where("type", "=", "album") - ->where("access_intents.$field", "IS NOT", self::INHERIT) + ->where("access_intents.$field", "IS NOT", access::INHERIT) ->order_by("level", "DESC") ->find_all(); foreach ($query as $row) { - if ($row->$field == self::ALLOW) { + if ($row->$field == access::ALLOW) { // Propagate ALLOW for any row that is still UNKNOWN. db::build() ->update("items") ->set($field, $row->$field) - ->where($field, "IS", self::UNKNOWN) // UNKNOWN is NULL so we have to use IS + ->where($field, "IS", access::UNKNOWN) // UNKNOWN is NULL so we have to use IS ->where("left_ptr", ">=", $row->left_ptr) ->where("right_ptr", "<=", $row->right_ptr) ->execute(); - } else if ($row->$field == self::DENY) { + } else if ($row->$field == access::DENY) { // DENY overwrites everything below it db::build() ->update("items") @@ -577,8 +577,8 @@ class access_Core { // the hierarchy, and all of those are safe to change to ALLOW. db::build() ->update("items") - ->set($field, self::ALLOW) - ->where($field, "IS", self::UNKNOWN) // UNKNOWN is NULL so we have to use IS + ->set($field, access::ALLOW) + ->where($field, "IS", access::UNKNOWN) // UNKNOWN is NULL so we have to use IS ->where("left_ptr", ">=", $item->left_ptr) ->where("right_ptr", "<=", $item->right_ptr) ->execute(); @@ -605,12 +605,12 @@ class access_Core { // // @todo To optimize this, we wouldn't need to propagate from the parent, we could just // propagate from here with the parent's intent. - if ($access->$field === self::INHERIT) { + if ($access->$field === access::INHERIT) { $tmp_item = ORM::factory("item") ->join("access_intents", "items.id", "access_intents.item_id") ->where("left_ptr", "<", $item->left_ptr) ->where("right_ptr", ">", $item->right_ptr) - ->where($field, "IS NOT", self::UNKNOWN) // UNKNOWN is NULL so we have to use IS NOT + ->where($field, "IS NOT", access::UNKNOWN) // UNKNOWN is NULL so we have to use IS NOT ->order_by("left_ptr", "DESC") ->limit(1) ->find(); @@ -626,11 +626,11 @@ class access_Core { ->join("items", "items.id", "access_intents.item_id") ->where("left_ptr", ">=", $item->left_ptr) ->where("right_ptr", "<=", $item->right_ptr) - ->where($field, "IS NOT", self::INHERIT) + ->where($field, "IS NOT", access::INHERIT) ->order_by("level", "ASC") ->find_all(); foreach ($query as $row) { - $value = ($row->$field === self::ALLOW) ? true : false; + $value = ($row->$field === access::ALLOW) ? true : false; db::build() ->update("access_caches") ->set($field, $value) @@ -683,7 +683,7 @@ class access_Core { } foreach ($dirs as $dir) { - if ($value === self::DENY) { + if ($value === access::DENY) { $fp = fopen("$dir/.htaccess", "w+"); fwrite($fp, "\n"); fwrite($fp, " RewriteEngine On\n"); diff --git a/modules/gallery/helpers/auth.php b/modules/gallery/helpers/auth.php index 48b5fc32..fa6242b9 100644 --- a/modules/gallery/helpers/auth.php +++ b/modules/gallery/helpers/auth.php @@ -74,13 +74,13 @@ class auth_Core { } static function validate_too_many_failed_logins($name_input) { - if (self::too_many_failures($name_input->value)) { + if (auth::too_many_failures($name_input->value)) { $name_input->add_error("too_many_failed_logins", 1); } } static function validate_too_many_failed_auth_attempts($form_input) { - if (self::too_many_failures(identity::active_user()->name)) { + if (auth::too_many_failures(identity::active_user()->name)) { $form_input->add_error("too_many_failed_auth_attempts", 1); } } diff --git a/modules/gallery/helpers/block_manager.php b/modules/gallery/helpers/block_manager.php index 4dcd6c32..2237b702 100644 --- a/modules/gallery/helpers/block_manager.php +++ b/modules/gallery/helpers/block_manager.php @@ -27,10 +27,10 @@ class block_manager_Core { } static function add($location, $module_name, $block_id) { - $blocks = self::get_active($location); + $blocks = block_manager::get_active($location); $blocks[rand()] = array($module_name, $block_id); - self::set_active($location, $blocks); + block_manager::set_active($location, $blocks); } static function activate_blocks($module_name) { @@ -38,25 +38,25 @@ class block_manager_Core { if (method_exists($block_class, "get_site_list")) { $blocks = call_user_func(array($block_class, "get_site_list")); foreach (array_keys($blocks) as $block_id) { - self::add("site_sidebar", $module_name, $block_id); + block_manager::add("site_sidebar", $module_name, $block_id); } } } static function remove($location, $block_id) { - $blocks = self::get_active($location); + $blocks = block_manager::get_active($location); unset($blocks[$block_id]); - self::set_active($location, $blocks); + block_manager::set_active($location, $blocks); } static function remove_blocks_for_module($location, $module_name) { - $blocks = self::get_active($location); + $blocks = block_manager::get_active($location); foreach ($blocks as $key => $block) { if ($block[0] == $module_name) { unset($blocks[$key]); } } - self::set_active($location, $blocks); + block_manager::set_active($location, $blocks); } static function deactivate_blocks($module_name) { @@ -64,14 +64,14 @@ class block_manager_Core { if (method_exists($block_class, "get_site_list")) { $blocks = call_user_func(array($block_class, "get_site_list")); foreach (array_keys($blocks) as $block_id) { - self::remove_blocks_for_module("site_sidebar", $module_name); + block_manager::remove_blocks_for_module("site_sidebar", $module_name); } } if (method_exists($block_class, "get_admin_list")) { $blocks = call_user_func(array($block_class, "get_admin_list")); foreach (array("dashboard_sidebar", "dashboard_center") as $location) { - self::remove_blocks_for_module($location, $module_name); + block_manager::remove_blocks_for_module($location, $module_name); } } } @@ -99,7 +99,7 @@ class block_manager_Core { } static function get_html($location, $theme=null) { - $active = self::get_active($location); + $active = block_manager::get_active($location); $result = ""; foreach ($active as $id => $desc) { if (method_exists("$desc[0]_block", "get")) { diff --git a/modules/gallery/helpers/gallery_block.php b/modules/gallery/helpers/gallery_block.php index 86886237..1d92d66d 100644 --- a/modules/gallery/helpers/gallery_block.php +++ b/modules/gallery/helpers/gallery_block.php @@ -82,7 +82,7 @@ class gallery_block_Core { case "block_adder": $block->css_id = "g-block-adder"; $block->title = t("Dashboard content"); - $block->content = self::get_add_block_form(); + $block->content = gallery_block::get_add_block_form(); break; case "language": diff --git a/modules/gallery/helpers/graphics.php b/modules/gallery/helpers/graphics.php index dd521d84..edba6b76 100644 --- a/modules/gallery/helpers/graphics.php +++ b/modules/gallery/helpers/graphics.php @@ -50,7 +50,7 @@ class graphics_Core { $rule->active = true; $rule->save(); - self::mark_dirty($target == "thumb", $target == "resize"); + graphics::mark_dirty($target == "thumb", $target == "resize"); } /** @@ -67,7 +67,7 @@ class graphics_Core { ->where("operation", "=", $operation) ->execute(); - self::mark_dirty($target == "thumb", $target == "resize"); + graphics::mark_dirty($target == "thumb", $target == "resize"); } /** @@ -80,7 +80,7 @@ class graphics_Core { ->where("module_name", "=", $module_name) ->execute(); if (count($status)) { - self::mark_dirty(true, true); + graphics::mark_dirty(true, true); } } @@ -252,7 +252,7 @@ class graphics_Core { $db->execute(); } - $count = self::find_dirty_images_query()->count_records(); + $count = graphics::find_dirty_images_query()->count_records(); if ($count) { site_status::warning( t2("One of your photos is out of date. Click here to fix it", diff --git a/modules/gallery/helpers/identity.php b/modules/gallery/helpers/identity.php index 5ca024e9..e61aaaf4 100644 --- a/modules/gallery/helpers/identity.php +++ b/modules/gallery/helpers/identity.php @@ -61,7 +61,7 @@ class identity_Core { $session = Session::instance(); if (!($user = $session->get("user"))) { - self::set_active_user($user = self::guest()); + identity::set_active_user($user = self::guest()); } // The installer cannot set a user into the session, so it just sets an id which we should @@ -127,7 +127,7 @@ class identity_Core { $session = Session::instance(); $session->set("user", $user); $session->delete("group_ids"); - self::load_user(); + identity::load_user(); } /** diff --git a/modules/gallery/helpers/l10n_client.php b/modules/gallery/helpers/l10n_client.php index 43cc2036..8c2685a8 100644 --- a/modules/gallery/helpers/l10n_client.php +++ b/modules/gallery/helpers/l10n_client.php @@ -40,14 +40,14 @@ class l10n_client_Core { } static function server_uid($api_key=null) { - $api_key = $api_key == null ? self::api_key() : $api_key; + $api_key = $api_key == null ? l10n_client::api_key() : $api_key; $parts = explode(":", $api_key); return empty($parts) ? 0 : $parts[0]; } private static function _sign($payload, $api_key=null) { - $api_key = $api_key == null ? self::api_key() : $api_key; - return md5($api_key . $payload . self::client_token()); + $api_key = $api_key == null ? l10n_client::api_key() : $api_key; + return md5($api_key . $payload . l10n_client::client_token()); } static function validate_api_key($api_key) { @@ -57,9 +57,9 @@ class l10n_client_Core { list ($response_data, $response_status) = remote::post( $url, array("version" => $version, - "client_token" => self::client_token(), + "client_token" => l10n_client::client_token(), "signature" => $signature, - "uid" => self::server_uid($api_key))); + "uid" => l10n_client::server_uid($api_key))); if (!remote::success($response_status)) { return false; } @@ -215,9 +215,9 @@ class l10n_client_Core { list ($response_data, $response_status) = remote::post( $url, array("data" => $request_data, - "client_token" => self::client_token(), + "client_token" => l10n_client::client_token(), "signature" => $signature, - "uid" => self::server_uid())); + "uid" => l10n_client::server_uid())); if (!remote::success($response_status)) { throw new Exception("@todo TRANSLATIONS_SUBMISSION_FAILED " . $response_status); diff --git a/modules/gallery/helpers/locales.php b/modules/gallery/helpers/locales.php index 5961f449..565e9da8 100644 --- a/modules/gallery/helpers/locales.php +++ b/modules/gallery/helpers/locales.php @@ -212,7 +212,7 @@ class locales_Core { } private static function _locale_match_score($requested_locale, $qvalue, $adjustment_factor) { - $installed = self::installed(); + $installed = locales::installed(); if (isset($installed[$requested_locale])) { return array($requested_locale, $qvalue); } @@ -227,14 +227,14 @@ class locales_Core { static function set_request_locale() { // 1. Check the session specific preference (cookie) - $locale = self::cookie_locale(); + $locale = locales::cookie_locale(); // 2. Check the user's preference if (!$locale) { $locale = identity::active_user()->locale; } // 3. Check the browser's / OS' preference if (!$locale) { - $locale = self::locale_from_http_request(); + $locale = locales::locale_from_http_request(); } // If we have any preference, override the site's default locale if ($locale) { diff --git a/modules/gallery/helpers/log.php b/modules/gallery/helpers/log.php index 26f70480..37154522 100644 --- a/modules/gallery/helpers/log.php +++ b/modules/gallery/helpers/log.php @@ -30,7 +30,7 @@ class log_Core { * @param string $html an html snippet presented alongside the log message to aid the admin */ static function success($category, $message, $html="") { - self::_add($category, $message, $html, self::SUCCESS); + self::_add($category, $message, $html, log::SUCCESS); } /** @@ -40,7 +40,7 @@ class log_Core { * @param string $html an html snippet presented alongside the log message to aid the admin */ static function info($category, $message, $html="") { - self::_add($category, $message, $html, self::INFO); + self::_add($category, $message, $html, log::INFO); } /** @@ -50,7 +50,7 @@ class log_Core { * @param string $html an html snippet presented alongside the log message to aid the admin */ static function warning($category, $message, $html="") { - self::_add($category, $message, $html, self::WARNING); + self::_add($category, $message, $html, log::WARNING); } /** @@ -60,7 +60,7 @@ class log_Core { * @param string $html an html snippet presented alongside the log message to aid the admin */ static function error($category, $message, $html="") { - self::_add($category, $message, $html, self::ERROR); + self::_add($category, $message, $html, log::ERROR); } /** @@ -92,16 +92,16 @@ class log_Core { */ static function severity_class($severity) { switch($severity) { - case self::SUCCESS: + case log::SUCCESS: return "g-success"; - case self::INFO: + case log::INFO: return "g-info"; - case self::WARNING: + case log::WARNING: return "g-warning"; - case self::ERROR: + case log::ERROR: return "g-error"; } } diff --git a/modules/gallery/helpers/message.php b/modules/gallery/helpers/message.php index 1f69e2a9..64dd703c 100644 --- a/modules/gallery/helpers/message.php +++ b/modules/gallery/helpers/message.php @@ -28,7 +28,7 @@ class message_Core { * @param string $msg a detailed message */ static function success($msg) { - self::_add($msg, self::SUCCESS); + self::_add($msg, message::SUCCESS); } /** @@ -36,7 +36,7 @@ class message_Core { * @param string $msg a detailed message */ static function info($msg) { - self::_add($msg, self::INFO); + self::_add($msg, message::INFO); } /** @@ -44,7 +44,7 @@ class message_Core { * @param string $msg a detailed message */ static function warning($msg) { - self::_add($msg, self::WARNING); + self::_add($msg, message::WARNING); } /** @@ -52,7 +52,7 @@ class message_Core { * @param string $msg a detailed message */ static function error($msg) { - self::_add($msg, self::ERROR); + self::_add($msg, message::ERROR); } /** @@ -79,7 +79,7 @@ class message_Core { $messages = Session::instance()->get_once("messages", array()); foreach ($messages as $msg) { $msg[0] = str_replace("__CSRF__", access::csrf_token(), $msg[0]); - $buf[] = "
  • $msg[0]
  • "; + $buf[] = "
  • $msg[0]
  • "; } if ($buf) { return "
      " . implode("", $buf) . "
    "; @@ -93,16 +93,16 @@ class message_Core { */ static function severity_class($severity) { switch($severity) { - case self::SUCCESS: + case message::SUCCESS: return "g-success"; - case self::INFO: + case message::INFO: return "g-info"; - case self::WARNING: + case message::WARNING: return "g-warning"; - case self::ERROR: + case message::ERROR: return "g-error"; } } diff --git a/modules/gallery/helpers/module.php b/modules/gallery/helpers/module.php index 16c7bb72..2b446daa 100644 --- a/modules/gallery/helpers/module.php +++ b/modules/gallery/helpers/module.php @@ -35,7 +35,7 @@ class module_Core { * @param integer $version */ static function set_version($module_name, $version) { - $module = self::get($module_name); + $module = module::get($module_name); if (!$module->loaded()) { $module->name = $module_name; $module->active = $module_name == "gallery"; // only gallery is active by default @@ -62,7 +62,7 @@ class module_Core { * not found */ static function info($module_name) { - $module_list = self::available(); + $module_list = module::available(); return isset($module_list->$module_name) ? $module_list->$module_name : false; } @@ -94,10 +94,10 @@ class module_Core { $modules->$module_name = new ArrayObject(parse_ini_file($file), ArrayObject::ARRAY_AS_PROPS); $m =& $modules->$module_name; - $m->installed = self::is_installed($module_name); - $m->active = self::is_active($module_name); + $m->installed = module::is_installed($module_name); + $m->active = module::is_active($module_name); $m->code_version = $m->version; - $m->version = self::get_version($module_name); + $m->version = module::get_version($module_name); $m->locked = false; if ($m->active && $m->version != $m->code_version) { @@ -107,7 +107,7 @@ class module_Core { // Lock certain modules $modules->gallery->locked = true; - $identity_module = self::get_var("gallery", "identity_provider", "user"); + $identity_module = module::get_var("gallery", "identity_provider", "user"); $modules->$identity_module->locked = true; $modules->ksort(); self::$available = $modules; @@ -258,7 +258,7 @@ class module_Core { call_user_func_array(array($installer_class, "activate"), array()); } - $module = self::get($module_name); + $module = module::get($module_name); if ($module->loaded()) { $module->active = true; $module->save(); @@ -285,7 +285,7 @@ class module_Core { call_user_func_array(array($installer_class, "deactivate"), array()); } - $module = self::get($module_name); + $module = module::get($module_name); if ($module->loaded()) { $module->active = false; $module->save(); @@ -312,7 +312,7 @@ class module_Core { } graphics::remove_rules($module_name); - $module = self::get($module_name); + $module = module::get($module_name); if ($module->loaded()) { $module->delete(); } @@ -532,6 +532,6 @@ class module_Core { * @param string $module_name */ static function get_version($module_name) { - return self::get($module_name)->version; + return module::get($module_name)->version; } } diff --git a/modules/gallery/helpers/movie.php b/modules/gallery/helpers/movie.php index 78358b6b..0895c5f4 100644 --- a/modules/gallery/helpers/movie.php +++ b/modules/gallery/helpers/movie.php @@ -58,7 +58,7 @@ class movie_Core { } static function extract_frame($input_file, $output_file) { - $ffmpeg = self::find_ffmpeg(); + $ffmpeg = movie::find_ffmpeg(); if (empty($ffmpeg)) { throw new Exception("@todo MISSING_FFMPEG"); } @@ -103,7 +103,7 @@ class movie_Core { * Return the width, height, mime_type and extension of the given movie file. */ static function get_file_metadata($file_path) { - $ffmpeg = self::find_ffmpeg(); + $ffmpeg = movie::find_ffmpeg(); if (empty($ffmpeg)) { throw new Exception("@todo MISSING_FFMPEG"); } diff --git a/modules/gallery/helpers/site_status.php b/modules/gallery/helpers/site_status.php index 13c42dda..85f30dba 100644 --- a/modules/gallery/helpers/site_status.php +++ b/modules/gallery/helpers/site_status.php @@ -101,7 +101,7 @@ class site_status_Core { $buf = array(); foreach (ORM::factory("message")->find_all() as $msg) { $value = str_replace("__CSRF__", access::csrf_token(), $msg->value); - $buf[] = "
  • severity) . "\">$value
  • "; + $buf[] = "
  • severity) . "\">$value
  • "; } if ($buf) { @@ -116,16 +116,16 @@ class site_status_Core { */ static function severity_class($severity) { switch($severity) { - case self::SUCCESS: + case site_status::SUCCESS: return "g-success"; - case self::INFO: + case site_status::INFO: return "g-info"; - case self::WARNING: + case site_status::WARNING: return "g-warning"; - case self::ERROR: + case site_status::ERROR: return "g-error"; } } -- cgit v1.2.3 From 5fb5d10e5aece1726575b8afbac2f7603ea7632e Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 28 Nov 2010 12:18:08 -0800 Subject: Delete the temporary "user" value from the session when upconverting the admin account post-install. Fixes #1511. --- modules/gallery/helpers/identity.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'modules') diff --git a/modules/gallery/helpers/identity.php b/modules/gallery/helpers/identity.php index e61aaaf4..f45f72c3 100644 --- a/modules/gallery/helpers/identity.php +++ b/modules/gallery/helpers/identity.php @@ -61,7 +61,7 @@ class identity_Core { $session = Session::instance(); if (!($user = $session->get("user"))) { - identity::set_active_user($user = self::guest()); + identity::set_active_user($user = identity::guest()); } // The installer cannot set a user into the session, so it just sets an id which we should @@ -69,6 +69,7 @@ class identity_Core { // @todo set the user name into the session instead of 2 and then use it to get the // user object if ($user === 2) { + $session->delete("user"); // delete it so that identity code isn't confused by the integer auth::login(IdentityProvider::instance()->admin_user()); } -- cgit v1.2.3 From a36c894c636bfb70f0921aa6c7eb9393d61d772b Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 28 Nov 2010 17:01:51 -0800 Subject: Fix g2_import::g2_url() to only replace the $g2_base_url once at the beginning of the url string. Also, only do this when we're about to put it into the map, not when we're getting the g2 url else the url is mangled for other purposes. Fixes #1512. --- modules/g2_import/helpers/g2_import.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'modules') diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index 678dac3b..8de5ce44 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -1200,6 +1200,11 @@ class g2_import_Core { $g2_map->g3_id = $g3_id; $g2_map->g2_id = $g2_id; $g2_map->resource_type = $resource_type; + + if (strpos($g2_url, self::$g2_base_url) === 0) { + $g2_url = substr($g2_url, strlen(self::$g2_base_url)); + } + $g2_map->g2_url = $g2_url; $g2_map->save(); self::$map[$g2_id] = $g3_id; @@ -1212,13 +1217,12 @@ class g2_import_Core { static function g2_url($params) { global $gallery; - $url = $gallery->getUrlGenerator()->generateUrl( + return $gallery->getUrlGenerator()->generateUrl( $params, array("forceSessionId" => false, "htmlEntities" => false, "urlEncode" => false, "useAuthToken" => false)); - return str_replace(self::$g2_base_url, "", $url); } static function lower_error_reporting() { -- cgit v1.2.3 From cdf0f7f765a5bd5e0d5619d345bdc6aba069c555 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Mon, 29 Nov 2010 21:02:19 -0800 Subject: In 3c523bcac6e902973c5891c02842254eaecd33a4 (fix for #1499) I left out the install() function which should set the image_block module to version 2. Fix that here. --- modules/image_block/helpers/image_block_installer.php | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'modules') diff --git a/modules/image_block/helpers/image_block_installer.php b/modules/image_block/helpers/image_block_installer.php index 895a7e5d..e9967314 100644 --- a/modules/image_block/helpers/image_block_installer.php +++ b/modules/image_block/helpers/image_block_installer.php @@ -19,6 +19,10 @@ */ class image_block_installer { + static function install() { + module::set_version("image_block", $version = 2); + } + static function upgrade($version) { $db = Database::instance(); if ($version == 1) { -- cgit v1.2.3 From c3ef8921260db8e39b6d2a7b4708e3d19f35f8b5 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Thu, 2 Dec 2010 08:32:59 -0800 Subject: Duh, set the image_block.image_count variable in the installer! This issue was introduced in cdf0f7f765a5bd5e0d5619d345bdc6aba069c555 which was a follow-on for 3c523bcac6e902973c5891c02842254eaecd33a4 which fixes #1499. --- modules/image_block/helpers/image_block_installer.php | 1 + 1 file changed, 1 insertion(+) (limited to 'modules') diff --git a/modules/image_block/helpers/image_block_installer.php b/modules/image_block/helpers/image_block_installer.php index e9967314..62c38ba4 100644 --- a/modules/image_block/helpers/image_block_installer.php +++ b/modules/image_block/helpers/image_block_installer.php @@ -20,6 +20,7 @@ class image_block_installer { static function install() { + module::set_var("image_block", "image_count", "1"); module::set_version("image_block", $version = 2); } -- cgit v1.2.3