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.

Reply via email to