ConLite/conlite/classes/UrlBuilder/Contenido_UrlBuilderConfig....

123 Zeilen
3.7 KiB
PHP

<?php
/**
* Project:
* Contenido Content Management System
*
* Description:
* Configure UrlBuilder URL style. Per default, configures for style index-a-1.html.
* If you need another style, extend this class to your needs and pass it to desired UrlBuilder.
*
* Requirements:
* @con_php_req 5.0
*
* @package Contenido Backend classes
* @version 1.1.0
* @author Rudi Bieller
* @copyright four for business AG <www.4fb.de>
* @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:
* ------
* <code>
* // 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);
* </code>
*
*/
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'];
}
}