123 Zeilen
3.7 KiB
PHP
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'];
|
|
}
|
|
|
|
}
|