TYPO3 API  SVNRelease
class.tslib_mediawizardmanager.php
Go to the documentation of this file.
00001 <?php
00002 /***************************************************************
00003  *  Copyright notice
00004  *
00005  *  (c) 2010-2011 Ernesto Baschny <ernst@cron-it.de>
00006  *  All rights reserved
00007  *
00008  *  This script is part of the TYPO3 project. The TYPO3 project is
00009  *  free software; you can redistribute it and/or modify
00010  *  it under the terms of the GNU General Public License as published by
00011  *  the Free Software Foundation; either version 2 of the License, or
00012  *  (at your option) any later version.
00013  *
00014  *  The GNU General Public License can be found at
00015  *  http://www.gnu.org/copyleft/gpl.html.
00016  *  A copy is found in the textfile GPL.txt and important notices to the license
00017  *  from the author is found in LICENSE.txt distributed with these scripts.
00018  *
00019  *
00020  *  This script is distributed in the hope that it will be useful,
00021  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00022  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023  *  GNU General Public License for more details.
00024  *
00025  *  This copyright notice MUST APPEAR in all copies of the script!
00026  ***************************************************************/
00027 
00028 /**
00029  * Manager to register and call registered media wizard providers
00030  *
00031  * $Id: $
00032 
00033  * @author  Ernesto Baschny <ernst@cron-it.de>
00034  * @static
00035  */
00036 class tslib_mediaWizardManager {
00037 
00038     protected static $providers = array();
00039 
00040     /**
00041      * Allows extensions to register themselves as media wizard providers
00042      *
00043      * @param   string  $className A class implementing tslib_mediaWizardProvider
00044      * @return  void
00045      */
00046     public static function registerMediaWizardProvider($className) {
00047         if (!isset(self::$providers[$className])) {
00048             $provider = t3lib_div::makeInstance($className);
00049             if (!($provider instanceof tslib_mediaWizardProvider)) {
00050                 throw new UnexpectedValueException(
00051                     $className .' is registered as a mediaWizardProvider, so it must implement interface tslib_mediaWizardProvider',
00052                     1285022360
00053                 );
00054             }
00055             self::$providers[$className] = $provider;
00056         }
00057     }
00058 
00059     /**
00060      *
00061      * @param string $url
00062      * @return a valid mediaWizardProvider that can handle this URL
00063      */
00064     public static function getValidMediaWizardProvider($url) {
00065             // Go through registered providers in reverse order (last one registered wins)
00066         $providers = array_reverse(self::$providers, TRUE);
00067         foreach (self::$providers as $className => $provider) {
00068             /** @var $provider tslib_mediaWizardProvider */
00069             if ($provider->canHandle($url)) {
00070                 return $provider;
00071             }
00072         }
00073             // no provider found
00074         return NULL;
00075     }
00076 
00077 }
00078 
00079 if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/class.tslib_mediawizardmanager.php'])) {
00080     include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/class.tslib_mediawizardmanager.php']);
00081 }
00082 
00083 ?>