diff options
Diffstat (limited to '')
-rw-r--r-- | admin/include/image.class.php | 77 | ||||
-rw-r--r-- | admin/intro.php | 31 | ||||
-rw-r--r-- | admin/photos_add_settings.php | 2 | ||||
-rw-r--r-- | admin/themes/default/template/intro.tpl | 3 |
4 files changed, 76 insertions, 37 deletions
diff --git a/admin/include/image.class.php b/admin/include/image.class.php index 943c2a257..0fa851636 100644 --- a/admin/include/image.class.php +++ b/admin/include/image.class.php @@ -57,8 +57,6 @@ class pwg_image function __construct($source_filepath, $library=null)
{
- global $conf;
-
$this->source_filepath = $source_filepath;
trigger_action('load_image_library', array(&$this) );
@@ -75,40 +73,9 @@ class pwg_image die('[Image] unsupported file extension');
}
- if (is_null($library))
+ if (!($this->library = self::get_library($library, $extension)))
{
- $library = $conf['image_library'];
- }
-
- // Choose image library
- switch (strtolower($library))
- {
- case 'auto':
- case 'imagick':
- if ($extension != 'gif' and self::is_imagick())
- {
- $this->library = 'imagick';
- break;
- }
- case 'ext_imagick':
- if ($extension != 'gif' and self::is_ext_imagick())
- {
- $this->library = 'ext_imagick';
- break;
- }
- case 'gd':
- if (self::is_gd())
- {
- $this->library = 'gd';
- break;
- }
- default:
- if ($library != 'auto')
- {
- // Requested library not available. Try another library
- return self::__construct($source_filepath, 'auto');
- }
- die('No image library available on your server.');
+ die('No image library available on your server.');
}
$class = 'image_'.$this->library;
@@ -304,7 +271,7 @@ class pwg_image {
return false;
}
- @exec($conf['ext_imagick_dir'].'convert', $returnarray, $returnvalue);
+ @exec($conf['ext_imagick_dir'].'convert -version', $returnarray, $returnvalue);
if (!$returnvalue and !empty($returnarray[0]) and preg_match('/ImageMagick/i', $returnarray[0]))
{
return true;
@@ -317,6 +284,44 @@ class pwg_image return function_exists('gd_info');
}
+ static function get_library($library=null, $extension=null)
+ {
+ global $conf;
+
+ if (is_null($library))
+ {
+ $library = $conf['image_library'];
+ }
+
+ // Choose image library
+ switch (strtolower($library))
+ {
+ case 'auto':
+ case 'imagick':
+ if ($extension != 'gif' and self::is_imagick())
+ {
+ return 'imagick';
+ }
+ case 'ext_imagick':
+ if ($extension != 'gif' and self::is_ext_imagick())
+ {
+ return 'ext_imagick';
+ }
+ case 'gd':
+ if (self::is_gd())
+ {
+ return 'gd';
+ }
+ default:
+ if ($library != 'auto')
+ {
+ // Requested library not available. Try another library
+ return self::get_library('auto');
+ }
+ }
+ return false;
+ }
+
function destroy()
{
if (method_exists($this->image, 'destroy'))
diff --git a/admin/intro.php b/admin/intro.php index 09b7e0811..7b6985e6f 100644 --- a/admin/intro.php +++ b/admin/intro.php @@ -29,6 +29,7 @@ if (!defined('PHPWG_ROOT_PATH')) include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); include_once(PHPWG_ROOT_PATH.'admin/include/check_integrity.class.php'); include_once(PHPWG_ROOT_PATH.'admin/include/c13y_internal.class.php'); +include_once(PHPWG_ROOT_PATH.'admin/include/image.class.php'); // +-----------------------------------------------------------------------+ // | Check Access and exit when user status is not ok | @@ -258,6 +259,36 @@ if ($nb_comments > 0) ); } +// graphics library +switch (pwg_image::get_library()) +{ + case 'imagick': + $library = 'ImageMagick'; + $img = new Imagick(); + $version = $img->getVersion(); + if (preg_match('/ImageMagick \d+\.\d+\.\d+-?\d*/', $version['versionString'], $match)) + { + $library = $match[0]; + } + $template->assign('GRAPHICS_LIBRARY', $library); + break; + + case 'ext_imagick': + $library = 'External ImageMagick'; + exec($conf['ext_imagick_dir'].'convert -version', $returnarray); + if (preg_match('/Version: ImageMagick (\d+\.\d+\.\d+-?\d*)/', $returnarray[0], $match)) + { + $library .= ' ' . $match[1]; + } + $template->assign('GRAPHICS_LIBRARY', $library); + break; + + case 'gd': + $gd_info = gd_info(); + $template->assign('GRAPHICS_LIBRARY', 'GD '.@$gd_info['GD Version']); + break; +} + // +-----------------------------------------------------------------------+ // | sending html code | // +-----------------------------------------------------------------------+ diff --git a/admin/photos_add_settings.php b/admin/photos_add_settings.php index 91ac9cbd9..eebbec15c 100644 --- a/admin/photos_add_settings.php +++ b/admin/photos_add_settings.php @@ -111,7 +111,7 @@ foreach (array_keys($upload_form_config) as $field) $template->assign( array( 'F_ADD_ACTION'=> PHOTOS_ADD_BASE_URL, - 'MANAGE_HD' => (pwg_image::is_imagick() or pwg_image::is_ext_imagick()), + 'MANAGE_HD' => pwg_image::get_library() != 'gd', 'values' => $form_values ) ); diff --git a/admin/themes/default/template/intro.tpl b/admin/themes/default/template/intro.tpl index 0f4dc7c00..6bdbfc9ff 100644 --- a/admin/themes/default/template/intro.tpl +++ b/admin/themes/default/template/intro.tpl @@ -53,6 +53,9 @@ jQuery().ready(function(){ <li>{'Operating system'|@translate}: {$OS}</li> <li>PHP: {$PHP_VERSION} (<a href="{$U_PHPINFO}" class="externalLink">{'Show info'|@translate}</a>) [{$PHP_DATATIME}]</li> <li>{$DB_ENGINE}: {$DB_VERSION} [{$DB_DATATIME}]</li> + {if isset($GRAPHICS_LIBRARY)} + <li>{'Graphics Library'|@translate}: {$GRAPHICS_LIBRARY}</li> + {/if} </ul> </dd> |