From 74328584205c6685af44de6ea011f5e337fa9155 Mon Sep 17 00:00:00 2001
From: Bharat Mediratta <bharat@menalto.com>
Date: Sun, 27 Sep 2009 11:25:03 -0700
Subject: Fix one more place in the installer where we referring to the old
 default theme names.

Update installer.sql
---
 installer/install.sql | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

(limited to 'installer/install.sql')

diff --git a/installer/install.sql b/installer/install.sql
index e8aaa681..12785f09 100755
--- a/installer/install.sql
+++ b/installer/install.sql
@@ -228,7 +228,7 @@ CREATE TABLE {modules} (
   UNIQUE KEY `name` (`name`)
 ) AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
 SET character_set_client = @saved_cs_client;
-INSERT INTO {modules} VALUES (1,1,'gallery',12);
+INSERT INTO {modules} VALUES (1,1,'gallery',13);
 INSERT INTO {modules} VALUES (2,1,'user',1);
 INSERT INTO {modules} VALUES (3,1,'comment',2);
 INSERT INTO {modules} VALUES (4,1,'organize',1);
@@ -331,8 +331,8 @@ CREATE TABLE {themes} (
   UNIQUE KEY `name` (`name`)
 ) AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
 SET character_set_client = @saved_cs_client;
-INSERT INTO {themes} VALUES (1,'default',1);
-INSERT INTO {themes} VALUES (2,'admin_default',1);
+INSERT INTO {themes} VALUES (1,'wind',1);
+INSERT INTO {themes} VALUES (2,'admin_wind',1);
 DROP TABLE IF EXISTS {users};
 SET @saved_cs_client     = @@character_set_client;
 SET character_set_client = utf8;
@@ -368,8 +368,8 @@ CREATE TABLE {vars} (
   UNIQUE KEY `module_name` (`module_name`,`name`)
 ) AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;
 SET character_set_client = @saved_cs_client;
-INSERT INTO {vars} VALUES (1,'gallery','active_site_theme','default');
-INSERT INTO {vars} VALUES (2,'gallery','active_admin_theme','admin_default');
+INSERT INTO {vars} VALUES (1,'gallery','active_site_theme','wind');
+INSERT INTO {vars} VALUES (2,'gallery','active_admin_theme','admin_wind');
 INSERT INTO {vars} VALUES (3,'gallery','page_size','9');
 INSERT INTO {vars} VALUES (4,'gallery','thumb_size','200');
 INSERT INTO {vars} VALUES (5,'gallery','resize_size','640');
-- 
cgit v1.2.3


From 467b74c3106558d1656301b9c73236417d4421ac Mon Sep 17 00:00:00 2001
From: Tim Almdal <tnalmdal@shaw.ca>
Date: Sun, 27 Sep 2009 15:24:51 -0700
Subject: This path requires the upgrader to be run and applies the following
 changes: * moves the composite method back into core * requires that the
 operation be fully qualified i.e. gallery_graphics::resize * caches the
 graphics rules on each request

---
 installer/install.sql                              |  4 +-
 .../gallery/controllers/admin_theme_options.php    |  8 +--
 modules/gallery/helpers/gallery_graphics.php       | 55 ++++++++++++++++
 modules/gallery/helpers/gallery_installer.php      | 21 +++++-
 modules/gallery/helpers/graphics.php               | 30 ++++++---
 modules/gallery/module.info                        |  2 +-
 modules/watermark/controllers/admin_watermarks.php |  2 +-
 modules/watermark/helpers/watermark_graphics.php   | 75 ----------------------
 modules/watermark/helpers/watermark_installer.php  | 22 ++++++-
 modules/watermark/module.info                      |  2 +-
 10 files changed, 124 insertions(+), 97 deletions(-)
 delete mode 100644 modules/watermark/helpers/watermark_graphics.php

(limited to 'installer/install.sql')

diff --git a/installer/install.sql b/installer/install.sql
index 12785f09..80042b10 100755
--- a/installer/install.sql
+++ b/installer/install.sql
@@ -88,8 +88,8 @@ CREATE TABLE {graphics_rules} (
   PRIMARY KEY  (`id`)
 ) AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
 SET character_set_client = @saved_cs_client;
-INSERT INTO {graphics_rules} VALUES (1,1,'a:3:{s:5:\"width\";i:200;s:6:\"height\";i:200;s:6:\"master\";i:2;}','gallery','resize',100,'thumb');
-INSERT INTO {graphics_rules} VALUES (2,1,'a:3:{s:5:\"width\";i:640;s:6:\"height\";i:480;s:6:\"master\";i:2;}','gallery','resize',100,'resize');
+INSERT INTO {graphics_rules} VALUES (1,1,'a:3:{s:5:\"width\";i:200;s:6:\"height\";i:200;s:6:\"master\";i:2;}','gallery','gallery_graphics::resize',100,'thumb');
+INSERT INTO {graphics_rules} VALUES (2,1,'a:3:{s:5:\"width\";i:640;s:6:\"height\";i:480;s:6:\"master\";i:2;}','gallery','gallery_graphics::resize',100,'resize');
 DROP TABLE IF EXISTS {groups};
 SET @saved_cs_client     = @@character_set_client;
 SET character_set_client = utf8;
diff --git a/modules/gallery/controllers/admin_theme_options.php b/modules/gallery/controllers/admin_theme_options.php
index 8970c3c9..27a67bdb 100644
--- a/modules/gallery/controllers/admin_theme_options.php
+++ b/modules/gallery/controllers/admin_theme_options.php
@@ -35,9 +35,9 @@ class Admin_Theme_Options_Controller extends Admin_Controller {
       $thumb_size = $form->edit_theme->thumb_size->value;
       $thumb_dirty = false;
       if (module::get_var("gallery", "thumb_size") != $thumb_size) {
-        graphics::remove_rule("gallery", "thumb", "resize");
+        graphics::remove_rule("gallery", "thumb", "gallery_graphics::resize");
         graphics::add_rule(
-          "gallery", "thumb", "resize",
+          "gallery", "thumb", "gallery_graphics::resize",
           array("width" => $thumb_size, "height" => $thumb_size, "master" => Image::AUTO),
           100);
         module::set_var("gallery", "thumb_size", $thumb_size);
@@ -46,9 +46,9 @@ class Admin_Theme_Options_Controller extends Admin_Controller {
       $resize_size = $form->edit_theme->resize_size->value;
       $resize_dirty = false;
       if (module::get_var("gallery", "resize_size") != $resize_size) {
-        graphics::remove_rule("gallery", "resize", "resize");
+        graphics::remove_rule("gallery", "resize", "gallery_graphics::resize");
         graphics::add_rule(
-          "gallery", "resize", "resize",
+          "gallery", "resize", "gallery_graphics::resize",
           array("width" => $resize_size, "height" => $resize_size, "master" => Image::AUTO),
           100);
         module::set_var("gallery", "resize_size", $resize_size);
diff --git a/modules/gallery/helpers/gallery_graphics.php b/modules/gallery/helpers/gallery_graphics.php
index f62fbf97..bdd600c5 100644
--- a/modules/gallery/helpers/gallery_graphics.php
+++ b/modules/gallery/helpers/gallery_graphics.php
@@ -51,4 +51,59 @@ class gallery_graphics_Core {
 
     module::event("graphics_resize_completed", $input_file, $output_file, $options);
   }
+
+  /**
+   * Overlay an image on top of the input file.
+   *
+   * Valid options are: file, mime_type, position, transparency_percent, padding
+   *
+   * Valid positions: northwest, north, northeast,
+   *                  west, center, east,
+   *                  southwest, south, southeast
+   *
+   * padding is in pixels
+   *
+   * @param string     $input_file
+   * @param string     $output_file
+   * @param array      $options
+   */
+  static function composite($input_file, $output_file, $options) {
+    try {
+      graphics::init_toolkit();
+
+      module::event("graphics_composite", $input_file, $output_file, $options);
+
+      list ($width, $height) = getimagesize($input_file);
+      list ($w_width, $w_height) = getimagesize($options["file"]);
+
+      $pad = isset($options["padding"]) ? $options["padding"] : 10;
+      $top = $pad;
+      $left = $pad;
+      $y_center = max($height / 2 - $w_height / 2, $pad);
+      $x_center = max($width / 2 - $w_width / 2, $pad);
+      $bottom = max($height - $w_height - $pad, $pad);
+      $right = max($width - $w_width - $pad, $pad);
+
+      switch ($options["position"]) {
+      case "northwest": $x = $left;     $y = $top;       break;
+      case "north":     $x = $x_center; $y = $top;       break;
+      case "northeast": $x = $right;    $y = $top;       break;
+      case "west":      $x = $left;     $y = $y_center;  break;
+      case "center":    $x = $x_center; $y = $y_center;  break;
+      case "east":      $x = $right;    $y = $y_center;  break;
+      case "southwest": $x = $left;     $y = $bottom;    break;
+      case "south":     $x = $x_center; $y = $bottom;    break;
+      case "southeast": $x = $right;    $y = $bottom;    break;
+      }
+
+      Image::factory($input_file)
+        ->composite($options["file"], $x, $y, $options["transparency"])
+        ->quality(module::get_var("gallery", "image_quality"))
+        ->save($output_file);
+
+      module::event("graphics_composite_completed", $input_file, $output_file, $options);
+    } catch (ErrorException $e) {
+      Kohana::log("error", $e->get_message());
+    }
+  }
 }
diff --git a/modules/gallery/helpers/gallery_installer.php b/modules/gallery/helpers/gallery_installer.php
index d4aae4c3..f995b606 100644
--- a/modules/gallery/helpers/gallery_installer.php
+++ b/modules/gallery/helpers/gallery_installer.php
@@ -235,11 +235,11 @@ class gallery_installer {
 
     // Add rules for generating our thumbnails and resizes
     graphics::add_rule(
-      "gallery", "thumb", "resize",
+      "gallery", "thumb", "gallery_graphics::resize",
       array("width" => 200, "height" => 200, "master" => Image::AUTO),
       100);
     graphics::add_rule(
-      "gallery", "resize", "resize",
+      "gallery", "resize", "gallery_graphics::resize",
       array("width" => 640, "height" => 480, "master" => Image::AUTO),
       100);
 
@@ -268,7 +268,7 @@ class gallery_installer {
     module::set_var("gallery", "show_credits", 1);
     // @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_version("gallery", 13);
+    module::set_version("gallery", 14);
   }
 
   static function upgrade($version) {
@@ -375,6 +375,21 @@ class gallery_installer {
       module::set_version("gallery", $version = 13);
     }
 
+    if ($version == 13) {
+      // Add rules for generating our thumbnails and resizes
+      graphics::remove_rule("gallery", "thumb", "gallery_graphics::resize");
+      graphics::remove_rule("gallery", "resize", "gallery_graphics::resize");
+      graphics::add_rule(
+        "gallery", "thumb", "gallery_graphics::resize",
+        array("width" => 200, "height" => 200, "master" => Image::AUTO),
+        100);
+      graphics::add_rule(
+        "gallery", "resize", "gallery_graphics::resize",
+        array("width" => 640, "height" => 480, "master" => Image::AUTO),
+        100);
+      module::set_version("gallery", $version = 14);
+    }
+
   }
 
   static function uninstall() {
diff --git a/modules/gallery/helpers/graphics.php b/modules/gallery/helpers/graphics.php
index 6705652f..0e32022f 100644
--- a/modules/gallery/helpers/graphics.php
+++ b/modules/gallery/helpers/graphics.php
@@ -19,6 +19,7 @@
  */
 class graphics_Core {
   private static $init;
+  private static $_rules_cache = array();
 
   /**
    * Add a new graphics rule.
@@ -26,7 +27,7 @@ class graphics_Core {
    * Rules are applied to targets (thumbnails and resizes) in priority order.  Rules are functions
    * in the graphics class.  So for example, the following rule:
    *
-   *   graphics::add_rule("gallery", "thumb", "resize",
+   *   graphics::add_rule("gallery", "thumb", "gallery_graphics::resize",
    *                       array("width" => 200, "height" => 200, "master" => Image::AUTO), 100);
    *
    * Specifies that "gallery" is adding a rule to resize thumbnails down to a max of 200px on
@@ -35,7 +36,7 @@ class graphics_Core {
    *
    * @param string  $module_name the module that added the rule
    * @param string  $target      the target for this operation ("thumb" or "resize")
-   * @param string  $operation   the name of the operation
+   * @param string  $operation   the name of the operation (<defining class>::method)
    * @param array   $args        arguments to the operation
    * @param integer $priority    the priority for this rule (lower priorities are run first)
    */
@@ -56,7 +57,7 @@ class graphics_Core {
    * Remove any matching graphics rules
    * @param string  $module_name the module that added the rule
    * @param string  $target      the target for this operation ("thumb" or "resize")
-   * @param string  $operation   the name of the operation
+   * @param string  $operation   the name of the operation(<defining class>::method)
    */
   static function remove_rule($module_name, $target, $operation) {
     ORM::factory("graphics_rule")
@@ -146,13 +147,9 @@ class graphics_Core {
           $working_file = $input_file;
         }
 
-        foreach (ORM::factory("graphics_rule")
-                 ->where("target", $target)
-                 ->where("active", true)
-                 ->orderby("priority", "asc")
-                 ->find_all() as $rule) {
+        foreach (self::_get_rules($target) as $rule) {
           $args = array($working_file, $output_file, unserialize($rule->args));
-          call_user_func_array(array("{$rule->module_name}_graphics", $rule->operation), $args);
+          call_user_func_array($rule->operation, $args);
           $working_file = $output_file;
         }
       }
@@ -180,6 +177,21 @@ class graphics_Core {
     }
   }
 
+  private static function _get_rules($target) {
+    if (empty(self::$_rules_cache[$target])) {
+      $rules = array();
+      foreach (ORM::factory("graphics_rule")
+               ->where("target", $target)
+               ->where("active", true)
+               ->orderby("priority", "asc")
+               ->find_all() as $rule) {
+        $rules[] = (object)$rule->as_array();
+      }
+      self::$_rules_cache[$target] = $rules;
+    }
+    return self::$_rules_cache[$target];
+  }
+
   /**
    * Rotate an image.  Valid options are degrees
    *
diff --git a/modules/gallery/module.info b/modules/gallery/module.info
index 65a0691c..bffcb1c6 100644
--- a/modules/gallery/module.info
+++ b/modules/gallery/module.info
@@ -1,3 +1,3 @@
 name = "Gallery 3"
 description = "Gallery core application"
-version = 13
+version = 14
diff --git a/modules/watermark/controllers/admin_watermarks.php b/modules/watermark/controllers/admin_watermarks.php
index 423196ac..2a1d5f60 100644
--- a/modules/watermark/controllers/admin_watermarks.php
+++ b/modules/watermark/controllers/admin_watermarks.php
@@ -138,7 +138,7 @@ class Admin_Watermarks_Controller extends Admin_Controller {
     if ($name = module::get_var("watermark", "name")) {
       foreach (array("thumb", "resize") as $target) {
         graphics::add_rule(
-          "watermark", $target, "composite",
+          "watermark", $target, "gallery_graphics::composite",
           array("file" => VARPATH . "modules/watermark/$name",
                 "width" => module::get_var("watermark", "width"),
                 "height" => module::get_var("watermark", "height"),
diff --git a/modules/watermark/helpers/watermark_graphics.php b/modules/watermark/helpers/watermark_graphics.php
deleted file mode 100644
index aef7586b..00000000
--- a/modules/watermark/helpers/watermark_graphics.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php defined("SYSPATH") or die("No direct script access.");
-/**
- * Gallery - a web based photo album viewer and editor
- * Copyright (C) 2000-2009 Bharat Mediratta
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
- */
-class watermark_graphics_Core {
-  /**
-   * Overlay an image on top of the input file.
-   *
-   * Valid options are: file, mime_type, position, transparency_percent, padding
-   *
-   * Valid positions: northwest, north, northeast,
-   *                  west, center, east,
-   *                  southwest, south, southeast
-   *
-   * padding is in pixels
-   *
-   * @param string     $input_file
-   * @param string     $output_file
-   * @param array      $options
-   */
-  static function composite($input_file, $output_file, $options) {
-    try {
-      graphics::init_toolkit();
-
-      module::event("graphics_composite", $input_file, $output_file, $options);
-
-      list ($width, $height) = getimagesize($input_file);
-      list ($w_width, $w_height) = getimagesize($options["file"]);
-
-      $pad = isset($options["padding"]) ? $options["padding"] : 10;
-      $top = $pad;
-      $left = $pad;
-      $y_center = max($height / 2 - $w_height / 2, $pad);
-      $x_center = max($width / 2 - $w_width / 2, $pad);
-      $bottom = max($height - $w_height - $pad, $pad);
-      $right = max($width - $w_width - $pad, $pad);
-
-      switch ($options["position"]) {
-      case "northwest": $x = $left;     $y = $top;       break;
-      case "north":     $x = $x_center; $y = $top;       break;
-      case "northeast": $x = $right;    $y = $top;       break;
-      case "west":      $x = $left;     $y = $y_center;  break;
-      case "center":    $x = $x_center; $y = $y_center;  break;
-      case "east":      $x = $right;    $y = $y_center;  break;
-      case "southwest": $x = $left;     $y = $bottom;    break;
-      case "south":     $x = $x_center; $y = $bottom;    break;
-      case "southeast": $x = $right;    $y = $bottom;    break;
-      }
-
-      Image::factory($input_file)
-        ->composite($options["file"], $x, $y, $options["transparency"])
-        ->quality(module::get_var("gallery", "image_quality"))
-        ->save($output_file);
-
-      module::event("graphics_composite_completed", $input_file, $output_file, $options);
-    } catch (ErrorException $e) {
-      Kohana::log("error", $e->get_message());
-    }
-  }
-}
diff --git a/modules/watermark/helpers/watermark_installer.php b/modules/watermark/helpers/watermark_installer.php
index b3e91044..5c7dfdab 100644
--- a/modules/watermark/helpers/watermark_installer.php
+++ b/modules/watermark/helpers/watermark_installer.php
@@ -33,11 +33,31 @@ class watermark_installer {
                DEFAULT CHARSET=utf8;");
 
     @mkdir(VARPATH . "modules/watermark");
-    module::set_version("watermark", 1);
+    module::set_version("watermark", 2);
   }
 
   static function uninstall() {
     Database::instance()->query("DROP TABLE {watermarks}");
     dir::unlink(VARPATH . "modules/watermark");
   }
+
+  static function upgrade($version) {
+    $db = Database::instance();
+    if ($version == 1) {
+      graphics::remove_rules("watermark");
+      if ($name = module::get_var("watermark", "name")) {
+        foreach (array("thumb", "resize") as $target) {
+          graphics::add_rule(
+            "watermark", $target, "gallery_graphics::composite",
+            array("file" => VARPATH . "modules/watermark/$name",
+                  "width" => module::get_var("watermark", "width"),
+                  "height" => module::get_var("watermark", "height"),
+                  "position" => module::get_var("watermark", "position"),
+                  "transparency" => 101 - module::get_var("watermark", "transparency")),
+            1000);
+        }
+      }
+      module::set_version("watermark", $version = 2);
+    }
+  }
 }
diff --git a/modules/watermark/module.info b/modules/watermark/module.info
index abd4a3cf..41a871bd 100644
--- a/modules/watermark/module.info
+++ b/modules/watermark/module.info
@@ -1,3 +1,3 @@
 name = "Watermarks"
 description = "Allows users to watermark their photos"
-version = 1
+version = 2
-- 
cgit v1.2.3


From c97a88599eb7b199294edbfae382353456061bef Mon Sep 17 00:00:00 2001
From: Tim Almdal <tnalmdal@shaw.ca>
Date: Sun, 27 Sep 2009 17:55:48 -0700
Subject: Change gallery installer to do a direct update to the database,
 preppending gallery_graphics:: to each of the defined rules operations

---
 installer/install.sql                             |  2 +-
 modules/gallery/helpers/gallery_installer.php     | 12 ++----------
 modules/watermark/helpers/watermark_installer.php | 22 +---------------------
 3 files changed, 4 insertions(+), 32 deletions(-)

(limited to 'installer/install.sql')

diff --git a/installer/install.sql b/installer/install.sql
index 80042b10..da349c36 100755
--- a/installer/install.sql
+++ b/installer/install.sql
@@ -228,7 +228,7 @@ CREATE TABLE {modules} (
   UNIQUE KEY `name` (`name`)
 ) AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
 SET character_set_client = @saved_cs_client;
-INSERT INTO {modules} VALUES (1,1,'gallery',13);
+INSERT INTO {modules} VALUES (1,1,'gallery',14);
 INSERT INTO {modules} VALUES (2,1,'user',1);
 INSERT INTO {modules} VALUES (3,1,'comment',2);
 INSERT INTO {modules} VALUES (4,1,'organize',1);
diff --git a/modules/gallery/helpers/gallery_installer.php b/modules/gallery/helpers/gallery_installer.php
index f995b606..49bd9bb7 100644
--- a/modules/gallery/helpers/gallery_installer.php
+++ b/modules/gallery/helpers/gallery_installer.php
@@ -377,16 +377,8 @@ class gallery_installer {
 
     if ($version == 13) {
       // Add rules for generating our thumbnails and resizes
-      graphics::remove_rule("gallery", "thumb", "gallery_graphics::resize");
-      graphics::remove_rule("gallery", "resize", "gallery_graphics::resize");
-      graphics::add_rule(
-        "gallery", "thumb", "gallery_graphics::resize",
-        array("width" => 200, "height" => 200, "master" => Image::AUTO),
-        100);
-      graphics::add_rule(
-        "gallery", "resize", "gallery_graphics::resize",
-        array("width" => 640, "height" => 480, "master" => Image::AUTO),
-        100);
+      Database::instance()->query("update g3_graphics_rules g
+                                   set operation=concat(\"gallery_graphics::\", g.operation);");
       module::set_version("gallery", $version = 14);
     }
 
diff --git a/modules/watermark/helpers/watermark_installer.php b/modules/watermark/helpers/watermark_installer.php
index 5c7dfdab..b3e91044 100644
--- a/modules/watermark/helpers/watermark_installer.php
+++ b/modules/watermark/helpers/watermark_installer.php
@@ -33,31 +33,11 @@ class watermark_installer {
                DEFAULT CHARSET=utf8;");
 
     @mkdir(VARPATH . "modules/watermark");
-    module::set_version("watermark", 2);
+    module::set_version("watermark", 1);
   }
 
   static function uninstall() {
     Database::instance()->query("DROP TABLE {watermarks}");
     dir::unlink(VARPATH . "modules/watermark");
   }
-
-  static function upgrade($version) {
-    $db = Database::instance();
-    if ($version == 1) {
-      graphics::remove_rules("watermark");
-      if ($name = module::get_var("watermark", "name")) {
-        foreach (array("thumb", "resize") as $target) {
-          graphics::add_rule(
-            "watermark", $target, "gallery_graphics::composite",
-            array("file" => VARPATH . "modules/watermark/$name",
-                  "width" => module::get_var("watermark", "width"),
-                  "height" => module::get_var("watermark", "height"),
-                  "position" => module::get_var("watermark", "position"),
-                  "transparency" => 101 - module::get_var("watermark", "transparency")),
-            1000);
-        }
-      }
-      module::set_version("watermark", $version = 2);
-    }
-  }
 }
-- 
cgit v1.2.3

