summaryrefslogtreecommitdiff
path: root/modules/gallery
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gallery')
-rw-r--r--modules/gallery/helpers/gallery_installer.php21
-rw-r--r--modules/gallery/models/item.php16
-rw-r--r--modules/gallery/module.info2
3 files changed, 34 insertions, 5 deletions
diff --git a/modules/gallery/helpers/gallery_installer.php b/modules/gallery/helpers/gallery_installer.php
index 760bec31..2322110e 100644
--- a/modules/gallery/helpers/gallery_installer.php
+++ b/modules/gallery/helpers/gallery_installer.php
@@ -98,9 +98,20 @@ class gallery_installer {
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
KEY `type` (`type`),
- KEY `random` (`rand_key`))
+ KEY `random` (`rand_key`),
+ KEY `weight` (`weight` DESC))
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
+ $db->query("DELIMITER |
+ CREATE TRIGGER setweight BEFORE INSERT ON {items}
+ FOR EACH ROW BEGIN
+ DECLARE new_weight int(9);
+ SELECT weight+1 FROM {items}
+ ORDER BY weight LIMIT 1 INTO new_weight;
+ SET NEW.weight = new_weight;
+ END;|
+ DELIMITER ;");
+
$db->query("CREATE TABLE {logs} (
`id` int(9) NOT NULL auto_increment,
`category` varchar(64) default NULL,
@@ -329,7 +340,13 @@ class gallery_installer {
$db->query("ALTER TABLE {items} CHANGE COLUMN `right` `right_ptr` INT(9) NOT NULL;");
module::set_version("gallery", $version = 9);
}
- }
+
+ if ($version == 9) {
+ $db->query("ALTER TABLE {items} ADD KEY `weight` (`weight` DESC);");
+
+ module::set_version("gallery", $version = 10);
+ }
+}
static function uninstall() {
$db = Database::instance();
diff --git a/modules/gallery/models/item.php b/modules/gallery/models/item.php
index dcbee991..481b22bc 100644
--- a/modules/gallery/models/item.php
+++ b/modules/gallery/models/item.php
@@ -350,9 +350,21 @@ class Item_Model extends ORM_MPTT {
if (!empty($this->changed) && $this->changed != array("view_count" => "view_count")) {
$this->updated = time();
if (!$this->loaded) {
+ try {
$this->created = $this->updated;
- $r = ORM::factory("item")->select("MAX(weight) as max_weight")->find();
- $this->weight = $r->max_weight + 1;
+ Kohana::log("error", "get Weight");
+ $weight = ORM::factory("item")
+ ->select("weight")
+ ->orderby("weight", "DESC")
+ ->limit(1)
+ ->find_all()
+ ->current()->weight;
+ Kohana::log("error", "Weight: $weight");
+ $this->weight = $weight + 1;
+ } catch (Exception $e) {
+ Kohana::log("error", $e->__toString());
+ throw $e;
+ }
} else {
$send_event = 1;
}
diff --git a/modules/gallery/module.info b/modules/gallery/module.info
index c5a9d25d..dfb1a7a2 100644
--- a/modules/gallery/module.info
+++ b/modules/gallery/module.info
@@ -1,3 +1,3 @@
name = "Gallery 3"
description = "Gallery core application"
-version = 9
+version = 10