Author: caefer
Date: 2010-04-28 12:01:53 +0200 (Wed, 28 Apr 2010)
New Revision: 29292

Modified:
   plugins/sfImageTransformExtraPlugin/trunk/config/formats.yml.example
   
plugins/sfImageTransformExtraPlugin/trunk/lib/transforms/sfImageTransformManager.class.php
   
plugins/sfImageTransformExtraPlugin/trunk/test/unit/lib/transforms/sfImageTransformManagerTest.php
Log:
bugfix: autoboxing of parameters now limited to parameters prefixed with 
'className|'

Modified: plugins/sfImageTransformExtraPlugin/trunk/config/formats.yml.example
===================================================================
--- plugins/sfImageTransformExtraPlugin/trunk/config/formats.yml.example        
2010-04-28 09:38:26 UTC (rev 29291)
+++ plugins/sfImageTransformExtraPlugin/trunk/config/formats.yml.example        
2010-04-28 10:01:53 UTC (rev 29292)
@@ -14,13 +14,13 @@
         mime_type:              image/png
         transformations:
           - { adapter: GD, transformation: resize,    param: { width: 300, 
height: 200, inflate: on, proportional: on }}
-          - { adapter: GD, transformation: alphaMask, param: { mask: 
masks/frame.gif }}
+          - { adapter: GD, transformation: alphaMask, param: { mask: 
sfImage|masks/frame.gif }}
       demo_alpha_mask_pattern:
         quality:                75
         mime_type:              image/png
         transformations:
           - { adapter: GD, transformation: resize,    param: { width: 250, 
height: 200, inflate: on, proportional: on }}
-          - { adapter: GD, transformation: alphaMask, param: { mask: 
masks/pattern.gif }}
+          - { adapter: GD, transformation: alphaMask, param: { mask: 
sfImage|masks/pattern.gif }}
       demo_rounded_corners:
         quality:                75
         mime_type:              image/gif
@@ -171,7 +171,7 @@
         mime_type:              image/jpg
         transformations:
           - { adapter: GD, transformation: resize,  param: { width: 250, 
height: 200, inflate: on, proportional: on }}
-          - { adapter: GD, transformation: overlay, param: { overlay: 
overlays/wlcp.png, position: top-right }}
+          - { adapter: GD, transformation: overlay, param: { overlay: 
sfImage|overlays/wlcp.png, position: top-right }}
       demo_pixelBlur:
         quality:                75
         mime_type:              image/jpg

Modified: 
plugins/sfImageTransformExtraPlugin/trunk/lib/transforms/sfImageTransformManager.class.php
===================================================================
--- 
plugins/sfImageTransformExtraPlugin/trunk/lib/transforms/sfImageTransformManager.class.php
  2010-04-28 09:38:26 UTC (rev 29291)
+++ 
plugins/sfImageTransformExtraPlugin/trunk/lib/transforms/sfImageTransformManager.class.php
  2010-04-28 10:01:53 UTC (rev 29292)
@@ -92,11 +92,14 @@
   }
 
   /**
-   * Extends current transformation parameters by a callback
+   * Extends current transformation parameters by autoboxing to objects
    *
    * This is needed for transformations that need certain objects in their 
parameters,
    * that need to be instantiated first which can not be done in a yaml file.
    *
+   * If any parameter is prefixed with "className|" then the method 
autoboxClassName()
+   * would be called passing the remaining parameter returning an instance of 
className.
+   *
    * @param  sfImage $sourceImage The image to transform
    * @param  string  $method      The current transformation method
    * @param  array   $parameters  The current transformations parameters as 
set in the yaml
@@ -106,33 +109,57 @@
   {
     foreach($parameters as $key => $parameter)
     {
-      $pathinfo = pathinfo($parameter);
-      if(in_array($pathinfo['extension'], array('jpg', 'jpeg', 'gif', 'png')))
+      if(2 == count($parts = explode('|', $parameter, 2)))
       {
-        $filepath = $pathinfo['dirname'];
-        $filename = $pathinfo['basename'];
+        $methodName = "autobox".ucfirst($parts[0]);
+        $parameter  = $parts[1];
 
-        $pluginDirs = ProjectConfiguration::getActive()->getAllPluginPaths();
-        $pluginDir = $pluginDirs['sfImageTransformExtraPlugin'];
-
-        $files = sfFinder::type('file')
-          ->name($filename)
-          ->maxdepth(1)
-          ->in(array(
-            sfConfig::get('sf_data_dir') . '/resources/'.$filepath,
-            $pluginDir . '/data/example-resources/'.$filepath,
-          )
-        );
-
-        if(0 == count($files))
+        if(!method_exists($this, $methodName))
         {
-          throw new InvalidArgumentException('Could not find resource 
"'.$parameter.'"!');
+          throw new InvalidArgumentException('Don\'t know how to autobox to 
"'.$parts[0].'"!');
         }
 
-        $parameters[$key] = new sfImage($files[0]);
+        $parameters[$key] = $this->$methodName($parameter);
       }
     }
 
     return $parameters;
   }
+
+  /**
+   * Autoboxes a filepath to an image into an instance of sfImage if the file 
exists
+   *
+   * @param string $parameter A filepath as specified in the thumbnailing.yml
+   * @return sfImage
+   */
+  private function autoboxSfImage($parameter)
+  {
+    $pathinfo = pathinfo($parameter);
+    if(in_array($pathinfo['extension'], array('jpg', 'jpeg', 'gif', 'png')))
+    {
+      $filepath = $pathinfo['dirname'];
+      $filename = $pathinfo['basename'];
+
+      $pluginDirs = ProjectConfiguration::getActive()->getAllPluginPaths();
+      $pluginDir = $pluginDirs['sfImageTransformExtraPlugin'];
+
+      $files = sfFinder::type('file')
+        ->name($filename)
+        ->maxdepth(1)
+        ->in(array(
+          sfConfig::get('sf_data_dir') . '/resources/'.$filepath,
+          $pluginDir . '/data/example-resources/'.$filepath,
+        )
+      );
+
+      if(0 == count($files))
+      {
+        throw new InvalidArgumentException('Could not find resource 
"'.$parameter.'"!');
+      }
+
+      $parameter = new sfImage($files[0]);
+    }
+
+    return $parameter;
+  }
 }

Modified: 
plugins/sfImageTransformExtraPlugin/trunk/test/unit/lib/transforms/sfImageTransformManagerTest.php
===================================================================
--- 
plugins/sfImageTransformExtraPlugin/trunk/test/unit/lib/transforms/sfImageTransformManagerTest.php
  2010-04-28 09:38:26 UTC (rev 29291)
+++ 
plugins/sfImageTransformExtraPlugin/trunk/test/unit/lib/transforms/sfImageTransformManagerTest.php
  2010-04-28 10:01:53 UTC (rev 29292)
@@ -34,7 +34,7 @@
             'adapter' => 'GD',
             'transformation' => 'overlay',
             'param' => array(
-              'overlay' => 'overlays/logo.png',
+              'overlay' => 'sfImage|overlays/logo.png',
             )
           ),
         ),
@@ -50,7 +50,7 @@
             'adapter' => 'GD',
             'transformation' => 'overlay',
             'param' => array(
-              'overlay' => 'overlays/doesnotexist.png',
+              'overlay' => 'sfImage|overlays/doesnotexist.png',
             )
           ),
         ),

-- 
You received this message because you are subscribed to the Google Groups 
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/symfony-svn?hl=en.

Reply via email to