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.