|
eZ Publish
[trunk]
|
00001 <?php 00002 /** 00003 * File containing the eZImageAnalyzer class. 00004 * 00005 * @copyright Copyright (C) 1999-2012 eZ Systems AS. All rights reserved. 00006 * @license http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2 00007 * @version //autogentag// 00008 * @package lib 00009 */ 00010 00011 /*! \defgroup eZImageAnalyzer Image analysis 00012 \ingroup eZImage 00013 */ 00014 00015 /*! 00016 \class eZImageAnalyzer ezimageanalyzer.php 00017 \ingroup eZImageAnalyzer 00018 \brief The class eZImageAnalyzer does 00019 00020 */ 00021 00022 class eZImageAnalyzer 00023 { 00024 const MODE_INDEXED = 1; 00025 const MODE_TRUECOLOR = 2; 00026 00027 const TIMER_HUNDRETHS_OF_A_SECOND = 1; 00028 00029 const TRANSPARENCY_OPAQUE = 1; 00030 const TRANSPARENCY_TRANSPARENT = 2; 00031 const TRANSPARENCY_TRANSLUCENT = 3; 00032 00033 /*! 00034 Constructor 00035 */ 00036 function eZImageAnalyzer() 00037 { 00038 $this->Name = false; 00039 $this->MIMEList = array(); 00040 } 00041 00042 /*! 00043 \pure 00044 Process the file based on the MIME data \a $mimeData and returns 00045 information on the analysis. 00046 \return \c false if the analysis fails. 00047 */ 00048 function process( $mimeData, $parameters = array() ) 00049 { 00050 return false; 00051 } 00052 00053 /*! 00054 Creates an analyzer for the analyzer name \a $analyzerName and returns it. 00055 */ 00056 static function createForMIME( $mimeData ) 00057 { 00058 $analyzerData = eZImageAnalyzer::analyzerData(); 00059 $mimeType = $mimeData['name']; 00060 if ( !isset( $analyzerData['analyzer_map'][$mimeType] ) ) 00061 return false; 00062 $analyzerName = $analyzerData['analyzer_map'][$mimeType]; 00063 $handlerName = $analyzerData['analyzer'][$analyzerName]['handler']; 00064 return eZImageAnalyzer::create( $handlerName ); 00065 } 00066 00067 /*! 00068 Creates an analyzer for the analyzer name \a $analyzerName and returns it. 00069 */ 00070 static function create( $analyzerName ) 00071 { 00072 $analyzerData = eZImageAnalyzer::analyzerData(); 00073 if ( !isset( $analyzerData['handlers'][$analyzerName] ) ) 00074 { 00075 if ( eZExtension::findExtensionType( array( 'ini-name' => 'image.ini', 00076 'repository-group' => 'AnalyzerSettings', 00077 'repository-variable' => 'RepositoryList', 00078 'extension-group' => 'AnalyzerSettings', 00079 'extension-variable' => 'ExtensionList', 00080 'extension-subdir' => 'imageanalyzer', 00081 'alias-group' => 'AnalyzerSettings', 00082 'alias-variable' => 'ImageAnalyzerAlias', 00083 'suffix-name' => 'imageanalyzer.php', 00084 'type-directory' => false, 00085 'type' => $analyzerName ), 00086 $result ) ) 00087 { 00088 $filepath = $result['found-file-path']; 00089 include_once( $filepath ); 00090 $className = $result['type'] . 'imageanalyzer'; 00091 $analyzerData['handlers'][$analyzerName] = array( 'classname' => $className, 00092 'filepath' => $filepath ); 00093 } 00094 else 00095 { 00096 eZDebug::writeWarning( "Could not locate Image Analyzer for $analyzerName", __METHOD__ ); 00097 } 00098 } 00099 if ( isset( $analyzerData['handlers'][$analyzerName] ) ) 00100 { 00101 $analyzer = $analyzerData['handlers'][$analyzerName]; 00102 $className = $analyzer['classname']; 00103 if ( class_exists( $className ) ) 00104 { 00105 return new $className(); 00106 } 00107 else 00108 { 00109 eZDebug::writeWarning( "The Image Analyzer class $className was not found, cannot create analyzer", __METHOD__ ); 00110 } 00111 } 00112 return false; 00113 } 00114 00115 /*! 00116 \static 00117 \private 00118 */ 00119 static function analyzerData() 00120 { 00121 $analyzerData =& $GLOBALS['eZImageAnalyzer']; 00122 if ( isset( $analyzerData ) ) 00123 return $analyzerData; 00124 00125 $ini = eZINI::instance( 'image.ini' ); 00126 $analyzerData['analyzers'] = $ini->variable( 'AnalyzerSettings', 'ImageAnalyzers' ); 00127 $analyzerData['mime_list'] = $ini->variable( 'AnalyzerSettings', 'AnalyzerMIMEList' ); 00128 $analyzerData['analyzer_map'] = array(); 00129 $analyzerData['analyzer'] = array(); 00130 return $analyzerData; 00131 } 00132 00133 /*! 00134 \static 00135 */ 00136 static function readAnalyzerSettingsFromINI() 00137 { 00138 $analyzerData = eZImageAnalyzer::analyzerData(); 00139 $ini = eZINI::instance( 'image.ini' ); 00140 foreach ( $analyzerData['analyzers'] as $analyzerName ) 00141 { 00142 $iniGroup = $analyzerName . 'Analyzer'; 00143 if ( $ini->hasGroup( $iniGroup ) ) 00144 { 00145 $handler = $ini->variable( $iniGroup, 'Handler' ); 00146 $mimeList = $ini->variable( $iniGroup, 'MIMEList' ); 00147 $analyzerData['analyzer'][$analyzerName] = array( 'handler' => $handler, 00148 'mime_list' => $mimeList ); 00149 foreach ( $mimeList as $mimeItem ) 00150 { 00151 $analyzerData['analyzer_map'][$mimeItem] = $analyzerName; 00152 } 00153 } 00154 else 00155 eZDebug::writeWarning( "INI group $iniGroup does not exist in image.ini", __METHOD__ ); 00156 } 00157 00158 $GLOBALS['eZImageAnalyzer'] = $analyzerData; 00159 } 00160 00161 /// \privatesection 00162 00163 public $MIMEList; 00164 public $Name; 00165 } 00166 00167 ?>