You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.0 KiB
103 lines
3.0 KiB
<?php
|
|
|
|
// +---------------------------------------------------------------------------+
|
|
// | This file is part of the core package. |
|
|
// | Copyright (c) laiketui.com |
|
|
// | |
|
|
// | For the full copyright and license information, please view the LICENSE |
|
|
// | file that was distributed with this source code. You can also view the |
|
|
// | LICENSE file online at http://www.laiketui.com |
|
|
// +---------------------------------------------------------------------------+
|
|
|
|
/**
|
|
* IniConfigHandler is a base class for .ini configuration handlers. This class
|
|
* provides a central location for parsing ini files and detecting required
|
|
* categories.
|
|
*
|
|
* @package laiketui
|
|
* @subpackage config
|
|
*
|
|
* @author ketter (ketter@laiketui.com)
|
|
* @since 3.0.0
|
|
*/
|
|
abstract class IniConfigHandler extends ConfigHandler
|
|
{
|
|
|
|
// +-----------------------------------------------------------------------+
|
|
// | METHODS |
|
|
// +-----------------------------------------------------------------------+
|
|
|
|
/**
|
|
* Parse an .ini configuration file.
|
|
*
|
|
* @param string An absolute filesystem path to a configuration file.
|
|
*
|
|
* @return string A parsed .ini configuration.
|
|
*
|
|
* @throws <b>ConfigurationException</b> If a requested configuration file
|
|
* does not exist or is not readable.
|
|
* @throws <b>ParseException</b> If a requested configuration file is
|
|
* improperly formatted.
|
|
*
|
|
* @author ketter (ketter@laiketui.com)
|
|
* @since 3.0.0
|
|
*/
|
|
protected function & parseIni ($config)
|
|
{
|
|
|
|
if (!is_readable($config))
|
|
{
|
|
|
|
// can't read the configuration
|
|
$error = 'Configuration file "%s" does not exist or is not ' .
|
|
'readable';
|
|
$error = sprintf($error, $config);
|
|
|
|
throw new ConfigurationException($error);
|
|
|
|
}
|
|
|
|
// parse our config
|
|
$ini = @parse_ini_file($config, true);
|
|
|
|
if ($ini === false)
|
|
{
|
|
|
|
// configuration couldn't be parsed
|
|
$error = 'Configuration file "%s" could not be parsed';
|
|
$error = sprintf($error, $config);
|
|
|
|
throw new ParseException($error);
|
|
|
|
}
|
|
|
|
// get a list of the required categories
|
|
if ($this->hasParameter('required_categories'))
|
|
{
|
|
|
|
$categories = $this->getParameter('required_categories');
|
|
|
|
foreach ($categories as $category)
|
|
{
|
|
|
|
if (!isset($ini[$category]))
|
|
{
|
|
|
|
$error = 'Configuration file "%s" is missing "%s" category';
|
|
$error = sprintf($error, $config, $category);
|
|
|
|
throw new ParseException($error);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $ini;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|