eZ Publish  [trunk]
ezimageanalyzer.php
Go to the documentation of this file.
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 ?>