Author: mgiagnoni
Date: 2010-09-06 01:51:41 +0200 (Mon, 06 Sep 2010)
New Revision: 30835
Added:
plugins/lyMediaManagerPlugin/trunk/lib/lyMediaThumbnails.class.php
Modified:
plugins/lyMediaManagerPlugin/trunk/lib/lyMediaFileSystem.class.php
plugins/lyMediaManagerPlugin/trunk/lib/lyMediaTools.class.php
plugins/lyMediaManagerPlugin/trunk/lib/model/doctrine/PluginlyMediaAsset.class.php
plugins/lyMediaManagerPlugin/trunk/lib/test/lyMediaTestFunctional.class.php
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/templates/_asset_icon.php
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/templates/_popup_menu.php
Log:
Added thumbnail creation functions to a dedicated class.
Modified: plugins/lyMediaManagerPlugin/trunk/lib/lyMediaFileSystem.class.php
===================================================================
--- plugins/lyMediaManagerPlugin/trunk/lib/lyMediaFileSystem.class.php
2010-09-05 23:17:17 UTC (rev 30834)
+++ plugins/lyMediaManagerPlugin/trunk/lib/lyMediaFileSystem.class.php
2010-09-05 23:51:41 UTC (rev 30835)
@@ -118,8 +118,8 @@
{
$src_info = pathinfo($src);
$dest_info = pathinfo($dest);
- $src_path = $src_info['dirname'] . DIRECTORY_SEPARATOR .
lyMediaTools::getThumbnailFolder() . DIRECTORY_SEPARATOR;
- $dest_path = $dest_info['dirname'] . DIRECTORY_SEPARATOR .
lyMediaTools::getThumbnailFolder() . DIRECTORY_SEPARATOR;
+ $src_path = $src_info['dirname'] . DIRECTORY_SEPARATOR .
lyMediaThumbnails::getThumbnailFolder() . DIRECTORY_SEPARATOR;
+ $dest_path = $dest_info['dirname'] . DIRECTORY_SEPARATOR .
lyMediaThumbnails::getThumbnailFolder() . DIRECTORY_SEPARATOR;
if(!file_exists($dest_path))
{
@@ -148,7 +148,7 @@
public function rmdir($dir, $rm_thumbs = true)
{
$dir = $this->makePathAbsolute($dir);
- $thumb_dir = rtrim($dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR .
trim(sfConfig::get('app_lyMediaManager_thumbnail_folder', 'thumbs'), "\/");
+ $thumb_dir = rtrim($dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR .
lyMediaThumbnails::getThumbnailFolder();
//TODO: more error checking needed
if($rm_thumbs && is_dir($thumb_dir))
{
@@ -175,7 +175,7 @@
if($thumbs)
{
$info = pathinfo($file);
- $path = $info['dirname'] . DIRECTORY_SEPARATOR .
lyMediaTools::getThumbnailFolder() . DIRECTORY_SEPARATOR;
+ $path = $info['dirname'] . DIRECTORY_SEPARATOR .
lyMediaThumbnails::getThumbnailFolder() . DIRECTORY_SEPARATOR;
foreach($this->getThumbnailTypes() as $key)
{
@@ -195,11 +195,6 @@
*/
protected function getThumbnailTypes()
{
- return array_keys(
- sfConfig::get('app_lyMediaManager_thumbnails', array(
- 'small' => array('width' => 84, 'height' => 84, 'shave' => true),
- 'medium' => array('width' => 194, 'height' => 152)
- ))
- );
+ return array_keys(lyMediaThumbnails::getThumbnailSettings());
}
}
Added: plugins/lyMediaManagerPlugin/trunk/lib/lyMediaThumbnails.class.php
===================================================================
--- plugins/lyMediaManagerPlugin/trunk/lib/lyMediaThumbnails.class.php
(rev 0)
+++ plugins/lyMediaManagerPlugin/trunk/lib/lyMediaThumbnails.class.php
2010-09-05 23:51:41 UTC (rev 30835)
@@ -0,0 +1,155 @@
+<?php
+
+/*
+ * This file is part of the lyMediaManagerPlugin package.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * lyMediaThumbnails.
+ *
+ * @package lyMediaManagerPlugin
+ * @subpackage thumbnail generator
+ * @copyright Copyright (C) 2010 Massimo Giagnoni.
+ * @license http://www.symfony-project.org/license MIT
+ * @version SVN: $Id$
+ */
+class lyMediaThumbnails
+{
+ protected $folder;
+ protected $file;
+ protected $settings;
+
+ /**
+ * Constructor.
+ *
+ * @param string $src_folder source folder path
+ * @param string $src_file source file name (image file from which
thumbnails will be generated).
+ */
+ public function __construct($src_folder, $src_file)
+ {
+ $fs = new lyMediaFileSystem();
+
+ $this->folder = $fs->makePathAbsolute($src_folder);
+ $this->file = $src_file;
+ $this->settings = self::getThumbnailSettings();
+ }
+
+ /**
+ * Generates thumbnails of all types set in configuration..
+ *
+ */
+ public function generate()
+ {
+ foreach ($this->settings as $key => $params)
+ {
+ $this->generateThumbnail($key, $params);
+ }
+ }
+
+ /**
+ * Gets thumbnail folder name as set in plugin configuration.
+ *
+ * @return string
+ */
+ public static function getThumbnailFolder()
+ {
+ return trim(sfConfig::get('app_lyMediaManager_thumbnail_folder',
'thumbs'), "\/");
+ }
+
+ /**
+ * Gets full path of a thumbnail file of a given type.
+ *
+ * @param string $thumb_type thumbnail type.
+ * @param bool $create true = create thumbnail folder if it doesn't exists.
+ * @return string thumbnail file path.
+ */
+ public function getThumbnailPath($thumb_type, $create = true)
+ {
+ $folder = $this->folder . self::getThumbnailFolder();
+
+ if($create && !file_exists($folder))
+ {
+ $fs = new lyMediaFileSystem();
+ $fs->mkdir($folder);
+ }
+ return $folder . DIRECTORY_SEPARATOR . $thumb_type . '_' . $this->file;
+ }
+
+ /**
+ * Returns an array with paths of all thumbnails of source file.
+ *
+ * @return array of paths
+ */
+ public function getThumbnailPaths()
+ {
+ $paths = array();
+ foreach (array_keys($this->settings) as $key)
+ {
+ $paths[] = $this->getThumbnailPath($key, false);
+ }
+ return $paths;
+ }
+
+ /**
+ * Gets thumbnail configuration parameters.
+ *
+ * @return array
+ */
+ public static function getThumbnailSettings()
+ {
+ return sfConfig::get('app_lyMediaManager_thumbnails', array(
+ 'small' => array('width' => 84, 'height' => 84, 'shave' => true),
+ 'medium' => array('width' => 194, 'height' => 152)
+ ));
+ }
+
+ /**
+ * Generate a thumbnail of a given type.
+ *
+ * @param <type> $thumb_type thumbnail type
+ * @param <type> $thumb_options thumbnail options (width, height and other
as set in configuration).
+ * @return bool true = success, false = failure.
+ */
+ protected function generateThumbnail($thumb_type, $thumb_options)
+ {
+ $source = $this->folder . $this->file;
+ $dest = $this->getThumbnailPath($thumb_type);
+ $width = $thumb_options['width'];
+ $height = $thumb_options['height'];
+ $shave_all = isset($thumb_options['shave']) ? $thumb_options['shave'] :
false;
+
+ if (class_exists('sfThumbnail') && file_exists($source))
+ {
+ if (sfConfig::get('app_lyMediaManager_use_ImageMagick', false))
+ {
+ $adapter = 'sfImageMagickAdapter';
+ $mime = 'image/jpg';
+ }
+ else
+ {
+ $adapter = 'sfGDAdapter';
+ $mime = 'image/jpeg';
+ }
+ if ($shave_all)
+ {
+ $thumbnail = new sfThumbnail($width, $height, false, true, 85,
$adapter, array('method' => 'shave_all'));
+ $thumbnail->loadFile($source);
+ $thumbnail->save($dest, $mime);
+ return true;
+ }
+ else
+ {
+ list($w, $h, $type, $attr) = getimagesize($source);
+ $newHeight = $width ? ceil(($width * $h) / $w) : $height;
+ $thumbnail = new sfThumbnail($width, $newHeight, true, true, 85,
$adapter);
+ $thumbnail->loadFile($source);
+ $thumbnail->save($dest, $mime);
+ return true;
+ }
+ }
+ return false;
+ }
+}
\ No newline at end of file
Property changes on:
plugins/lyMediaManagerPlugin/trunk/lib/lyMediaThumbnails.class.php
___________________________________________________________________
Added: svn:keywords
+ Id
Modified: plugins/lyMediaManagerPlugin/trunk/lib/lyMediaTools.class.php
===================================================================
--- plugins/lyMediaManagerPlugin/trunk/lib/lyMediaTools.class.php
2010-09-05 23:17:17 UTC (rev 30834)
+++ plugins/lyMediaManagerPlugin/trunk/lib/lyMediaTools.class.php
2010-09-05 23:51:41 UTC (rev 30835)
@@ -24,54 +24,6 @@
return(nl2br(wordwrap($asset->getFilename(),sfConfig::get('app_lyMediaManager_caption_row_max_chars',20),
"\n", true)));
}
- public static function generateThumbnails($folder, $filename)
- {
- $source = self::getBasePath() . $folder . $filename;
- $thumbnailSettings = self::getThumbnailSettings();
-
- foreach ($thumbnailSettings as $key => $params)
- {
- $width = $params['width'];
- $height = $params['height'];
- $shave = isset($params['shave']) ? $params['shave'] : false;
- self::generateThumbnail($source, self::getThumbnailPath($folder,
$filename, $key), $width, $height, $shave);
- }
- }
-
- public static function generateThumbnail($source, $dest, $width, $height,
$shave_all = false)
- {
- if (class_exists('sfThumbnail') && file_exists($source))
- {
- if (sfConfig::get('app_lyMediaManager_use_ImageMagick', false))
- {
- $adapter = 'sfImageMagickAdapter';
- $mime = 'image/jpg';
- }
- else
- {
- $adapter = 'sfGDAdapter';
- $mime = 'image/jpeg';
- }
- if ($shave_all)
- {
- $thumbnail = new sfThumbnail($width, $height, false, true, 85,
$adapter, array('method' => 'shave_all'));
- $thumbnail->loadFile($source);
- $thumbnail->save($dest, $mime);
- return true;
- }
- else
- {
- list($w, $h, $type, $attr) = getimagesize($source);
- $newHeight = $width ? ceil(($width * $h) / $w) : $height;
- $thumbnail = new sfThumbnail($width, $newHeight, true, true, 85,
$adapter);
- $thumbnail->loadFile($source);
- $thumbnail->save($dest, $mime);
- return true;
- }
- }
- return false;
- }
-
public static function getAllowedExtensions()
{
return sfConfig::get('app_lyMediaManager_allowed_extensions',
@@ -135,36 +87,11 @@
return $thumbnail;
}
- public static function getThumbnailFolder()
- {
- return trim(sfConfig::get('app_lyMediaManager_thumbnail_folder',
'thumbs'), "\/");
- }
-
- public static function getThumbnailPath($path, $filename, $thumbnailType,
$create = true)
- {
- $fs = new lyMediaFileSystem();
- $folder = $fs->makePathAbsolute($path) . self::getThumbnailFolder();
-
- if($create && !file_exists($folder))
- {
- $fs->mkdir($folder);
- }
- return $folder . DIRECTORY_SEPARATOR . $thumbnailType . '_' . $filename;
- }
-
- public static function getThumbnailSettings()
- {
- return sfConfig::get('app_lyMediaManager_thumbnails', array(
- 'small' => array('width' => 84, 'height' => 84, 'shave' => true),
- 'medium' => array('width' => 194, 'height' => 152)
- ));
- }
-
public static function getThumbnailURI($asset, $folder_path, $type = 'small')
{
if($asset->supportsThumbnails())
{
- $img = '/' . (isset($folder_path) ? $folder_path :
$asset->getFolderPath()) . self::getThumbnailFolder() . '/' .
self::getThumbnailFile($asset, $type);
+ $img = '/' . (isset($folder_path) ? $folder_path :
$asset->getFolderPath()) . lyMediaThumbnails::getThumbnailFolder() . '/' .
self::getThumbnailFile($asset, $type);
}
else
{
Modified:
plugins/lyMediaManagerPlugin/trunk/lib/model/doctrine/PluginlyMediaAsset.class.php
===================================================================
---
plugins/lyMediaManagerPlugin/trunk/lib/model/doctrine/PluginlyMediaAsset.class.php
2010-09-05 23:17:17 UTC (rev 30834)
+++
plugins/lyMediaManagerPlugin/trunk/lib/model/doctrine/PluginlyMediaAsset.class.php
2010-09-05 23:51:41 UTC (rev 30835)
@@ -84,7 +84,8 @@
}
if($record->supportsThumbnails())
{
- lyMediaTools::generateThumbnails($record->getFolderPath(),
$record->getFilename());
+ $tn = new lyMediaThumbnails($record->getFolderPath(),
$record->getFilename());
+ $tn->generate();
}
}
else
Modified:
plugins/lyMediaManagerPlugin/trunk/lib/test/lyMediaTestFunctional.class.php
===================================================================
--- plugins/lyMediaManagerPlugin/trunk/lib/test/lyMediaTestFunctional.class.php
2010-09-05 23:17:17 UTC (rev 30834)
+++ plugins/lyMediaManagerPlugin/trunk/lib/test/lyMediaTestFunctional.class.php
2010-09-05 23:51:41 UTC (rev 30835)
@@ -77,11 +77,10 @@
if($check_thumbs)
{
-
- foreach(lyMediaTools::getThumbnailSettings() as $key => $params)
+ $tn = new lyMediaThumbnails($folder, $file);
+ foreach($tn->getThumbnailPaths() as $file_path)
{
- $file_path = lyMediaTools::getThumbnailPath($folder, $file, $key,
false);
- $this->test()->is(is_file($file_path), $exist, 'Thumbnail ' . $key .
'_' . $file . ($exist ? ' has ' : ' has not ') . 'been found');
+ $this->test()->is(is_file($file_path), $exist, 'Thumbnail ' .
basename($file_path) . ($exist ? ' has ' : ' has not ') . 'been found');
}
}
return $this;
Modified:
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/templates/_asset_icon.php
===================================================================
---
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/templates/_asset_icon.php
2010-09-05 23:17:17 UTC (rev 30834)
+++
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/templates/_asset_icon.php
2010-09-05 23:51:41 UTC (rev 30835)
@@ -5,7 +5,7 @@
<span>
<?php echo image_path(lyMediaTools::getAssetURI($asset)); ?>
</span>
- <?php foreach(lyMediaTools::getThumbnailSettings() as $type => $params):
?>
+ <?php foreach(lyMediaThumbnails::getThumbnailSettings() as $type =>
$params): ?>
<span class="<?php echo $type; ?>">
<?php echo thumbnail_image_path($asset, $folder->getRelativePath(),
$type); ?>
</span>
Modified:
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/templates/_popup_menu.php
===================================================================
---
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/templates/_popup_menu.php
2010-09-05 23:17:17 UTC (rev 30834)
+++
plugins/lyMediaManagerPlugin/trunk/modules/lyMediaAsset/templates/_popup_menu.php
2010-09-05 23:51:41 UTC (rev 30835)
@@ -3,7 +3,7 @@
<?php echo __('Choose size'); ?>
</div>
<span class="_original"><?php echo __('original'); ?></span>
- <?php foreach(lyMediaTools::getThumbnailSettings() as $type => $params):?>
+ <?php foreach(lyMediaThumbnails::getThumbnailSettings() as $type =>
$params):?>
<span class="<?php echo $type;?>"><?php echo __($type) . ' ('.
$params['width'] . 'x' . $params['height'] . ')'; ?></span>
<?php endforeach; ?>
<span class="_cancel"><?php echo __('Cancel'); ?></span>
--
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.