wdsSfThumbnailAddonPlugin plugin
Extension to the sfThumbnail plugin. Now you can easily add photo thumbnails generation to your model.
Installation
You can install using the plugin-install task:
php symfony plugin-install wdsSfThumbnailAddonPlugin
You can also pull the code directly from the Subversion repository using a svn checkout or the svn:externals property on your project's /plugins directory.
Configuring the plugin
You can configure the plugin via app.yml (the example below configures the plugin to generate two thumbnails with sfPropelBehavior turned off).
all:
wdsSfThumbnailAddonPlugin:
sfPropelBehaviorEnabled: false
quality: 75
crop: false
photo_sizes:
PHOTO_THUMBNAIL_50:
size: 50x50
path: thumbnails_50
crop: true
PHOTO_THUMBNAIL_100:
size: 100x100
path: thumbnails_100
quality: 90
You must add the plugin interface to your model classes (as it is done in the example below).
class Photo extends BasePhoto implements PhotoThumbnail
{
public function getPhotoFileName()
{
return $this->getPhotoFileName();
}
public function getPhotoSizes()
{
return array();
}
}
The PhotoThumbnail interface uses two methods for thumbnail generation:
getPhotoFileName() - this method should return the original photo filename
return $this->getPhotoFileName();
getPhotoSizes() - you can define here an array of thumbnail sizes that you want to create for the model
return array('PHOTO_THUMBNAIL_50'); // this tells the plugin to generate only this thumbnail size
Using the plugin with Propel model
When you use Propel ORM, you can use sfPropelBehavior to automate thumbnail generation/removal for your model class (you have to enable it first in app.yml):
all:
wdsSfThumbnailAddonPlugin:
sfPropelBehaviorEnabled: true
sfPropelBehavior::add('Photo', array('Thumbnailable'));
Using the plugin with Doctrine model
When you use Doctrine ORM, you can use two methods instead of sfPropelBehavior to automate thumbnail generation/removal for your model class:
public function postSave($event)
{
photoThumbnailSupport::postSave($this);
}
public function preDelete($event)
{
photoThumbnailSupport::preDelete($this);
}
From version 1.1.0 there is also a behavior available. You can use it instaead of defining the above two methods in every model class that uses thumbnails.
Photo:
actAs:
Thumbnailable: ~
Auto-removing of original file when removing thumbnails
If you want to remove original file when the thumbnail are removed, it can be done dy adding code below to your model class:
public function removeOriginalPhoto()
{
return true;
}
Using thumbnail_image_tag helper in the template
<?php use_helper('ThumbnailAddon'); ?>
<?php echo thumbnail_image_tag($photo, array(
'thumbnail_constant' => 'PHOTO_THUMBNAIL_100',
'auto_include_filename' => true
)); ?>
Changelog
Version 1.2.0
- Changed ThumbnailGeneretor to Thumbnailable (Doctrine behavior)
- Added Propel behavior (Thumbnailable)
- Small changes to app.yml.dist
- Added ability to turn off Propel behavior (default off)
- Added support for models that have optional photo filename field
Version 1.1.0
- Added image quality and crop support (requires ImageMagick)
- Moved app.yml to app.yml.dist (added svn:ignore for app.yml)
- Fixed thumbnail removal
- Fixed photoThumbnailSupport::getThumbnailPath support for Doctrine
- Added Doctrine behavior to automate thumbnail support
- Added logging support
- Updated README
Version 1.0.1
- Fixed thumbnail removal
- Fixed photoThumbnailSupport::getThumbnailPath support for Doctrine
- Added ability to remove the original file with the thumbanils
- Updated README
Version 1.0.0
Maintainers
Sebastian Owodziń