* @license http://www.contenido.org/license/LIZENZ.txt * @link http://www.4fb.de * @link http://www.contenido.org * * {@internal * created 2008-02-28 * modified 2008-09-29, Murat Purc, added features to set and get configuration * $Id$: * }} * */ if(!defined('CON_FRAMEWORK')) { die('Illegal call'); } if (!class_exists('NotInitializedException')) { class NotInitializedException extends Exception {} } /** * Class to manage UrlBuilder configuration. * * The Contenido_UrlBuilderConfig::setConfig() must be called at least once to initialize the desired * UrlBuilder. * * Usage: * ------ * * // Example for default front_content UrlBuilder * $myCfg['name'] = 'front_content'; * $myCfg['config'] = array(); * Contenido_UrlBuilderConfig::setConfig($myCfg); * * // Example for CustomPath UrlBuilder * $myCfg['name'] = 'custom_path'; * $myCfg['config'] = array('prefix' => 'rocknroll', 'suffix' => '.4fb', 'separator' => ','); * Contenido_UrlBuilderConfig::setConfig($myCfg); * * */ class Contenido_UrlBuilderConfig { /** * UrlBuilder configuration array * @var array */ private static $_aUrlBuilderCfg = array( 'config' => array('prefix' => 'index', 'suffix' => '.html', 'separator' => '-') ); /** * Set UlrBuilder configuration * * @param array $cfg Assoziative configuration array as follows: * - $cfg['name'] = Name of UrlBuilder class to use * - $cfg['config'] = UrlBuilder configuration * @throws InvalidArgumentException If $cfg ist empty, $cfg['name'] is missing or $cfg['config'] * exists but is not a array */ public static function setConfig(array $cfg) { if (count($cfg) == 0) { throw new InvalidArgumentException('Contenido_UrlBuilderConfig: Empty configuration'); } elseif (!isset($cfg['name']) || (string) $cfg['name'] === '') { throw new InvalidArgumentException('Contenido_UrlBuilderConfig: Missing UrlBuilder name'); } elseif (isset($cfg['config']) && !is_array($cfg['config'])) { throw new InvalidArgumentException('Contenido_UrlBuilderConfig: Invalid UrlBuilder configuration'); } self::$_aUrlBuilderCfg = $cfg; } /** * Returns UrlBuilder name * * @return string UrlBuilder name * @throws NotInitializedException If UrlBuilder configuration wasn't initialized before */ public static function getUrlBuilderName() { if (!is_array(self::$_aUrlBuilderCfg) || !isset(self::$_aUrlBuilderCfg['name'])) { throw new NotInitializedException('Contenido_UrlBuilderConfig: Configuration is not set'); } return self::$_aUrlBuilderCfg['name']; } /** * Returns UrlBuilder configuration * * @return array UrlBuilder configuration * @throws NotInitializedException If UrlBuilder configuration wasn't initialized before */ public static function getConfig() { if (!is_array(self::$_aUrlBuilderCfg)) { throw new NotInitializedException('Contenido_UrlBuilderConfig: Configuration is not set'); } return self::$_aUrlBuilderCfg['config']; } }