diff options
Diffstat (limited to 'poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Configure')
3 files changed, 320 insertions, 0 deletions
diff --git a/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Configure/ConfigReaderInterface.php b/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Configure/ConfigReaderInterface.php new file mode 100644 index 0000000..f137355 --- /dev/null +++ b/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Configure/ConfigReaderInterface.php @@ -0,0 +1,33 @@ +<?php +/** + * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) + * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The MIT License + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://cakephp.org CakePHP(tm) Project + * @package Cake.Core + * @since CakePHP(tm) v 1.0.0.2363 + * @license MIT License (http://www.opensource.org/licenses/mit-license.php) + */ + +/** + * An interface for creating objects compatible with Configure::load() + * + * @package Cake.Core + */ +interface ConfigReaderInterface { + +/** + * Read method is used for reading configuration information from sources. + * These sources can either be static resources like files, or dynamic ones like + * a database, or other datasource. + * + * @param string $key + * @return array An array of data to merge into the runtime configuration + */ + public function read($key); + +} diff --git a/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Configure/IniReader.php b/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Configure/IniReader.php new file mode 100644 index 0000000..debd685 --- /dev/null +++ b/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Configure/IniReader.php @@ -0,0 +1,184 @@ +<?php +/** + * IniReader + * + * PHP 5 + * + * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) + * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The MIT License + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://cakephp.org CakePHP(tm) Project + * @package Cake.Configure + * @since CakePHP(tm) v 2.0 + * @license MIT License (http://www.opensource.org/licenses/mit-license.php) + */ +App::uses('Hash', 'Utility'); + +/** + * Ini file configuration engine. + * + * Since IniReader uses parse_ini_file underneath, you should be aware that this + * class shares the same behavior, especially with regards to boolean and null values. + * + * In addition to the native `parse_ini_file` features, IniReader also allows you + * to create nested array structures through usage of `.` delimited names. This allows + * you to create nested arrays structures in an ini config file. For example: + * + * `db.password = secret` would turn into `array('db' => array('password' => 'secret'))` + * + * You can nest properties as deeply as needed using `.`'s. In addition to using `.` you + * can use standard ini section notation to create nested structures: + * + * {{{ + * [section] + * key = value + * }}} + * + * Once loaded into Configure, the above would be accessed using: + * + * `Configure::read('section.key'); + * + * You can combine `.` separated values with sections to create more deeply + * nested structures. + * + * IniReader also manipulates how the special ini values of + * 'yes', 'no', 'on', 'off', 'null' are handled. These values will be + * converted to their boolean equivalents. + * + * @package Cake.Configure + * @see http://php.net/parse_ini_file + */ +class IniReader implements ConfigReaderInterface { + +/** + * The path to read ini files from. + * + * @var array + */ + protected $_path; + +/** + * The section to read, if null all sections will be read. + * + * @var string + */ + protected $_section; + +/** + * Build and construct a new ini file parser. The parser can be used to read + * ini files that are on the filesystem. + * + * @param string $path Path to load ini config files from. + * @param string $section Only get one section, leave null to parse and fetch + * all sections in the ini file. + */ + public function __construct($path, $section = null) { + $this->_path = $path; + $this->_section = $section; + } + +/** + * Read an ini file and return the results as an array. + * + * @param string $file Name of the file to read. The chosen file + * must be on the reader's path. + * @return array + * @throws ConfigureException + */ + public function read($file) { + $filename = $this->_path . $file; + if (!file_exists($filename)) { + $filename .= '.ini'; + if (!file_exists($filename)) { + throw new ConfigureException(__d('cake_dev', 'Could not load configuration files: %s or %s', substr($filename, 0, -4), $filename)); + } + } + $contents = parse_ini_file($filename, true); + if (!empty($this->_section) && isset($contents[$this->_section])) { + $values = $this->_parseNestedValues($contents[$this->_section]); + } else { + $values = array(); + foreach ($contents as $section => $attribs) { + if (is_array($attribs)) { + $values[$section] = $this->_parseNestedValues($attribs); + } else { + $parse = $this->_parseNestedValues(array($attribs)); + $values[$section] = array_shift($parse); + } + } + } + return $values; + } + +/** + * parses nested values out of keys. + * + * @param array $values Values to be exploded. + * @return array Array of values exploded + */ + protected function _parseNestedValues($values) { + foreach ($values as $key => $value) { + if ($value === '1') { + $value = true; + } + if ($value === '') { + $value = false; + } + unset($values[$key]); + if (strpos($key, '.') !== false) { + $values = Hash::insert($values, $key, $value); + } else { + $values[$key] = $value; + } + } + return $values; + } + +/** + * Dumps the state of Configure data into an ini formatted string. + * + * @param string $filename The filename on $this->_path to save into. + * @param array $data The data to convert to ini file. + * @return int Bytes saved. + */ + public function dump($filename, $data) { + $result = array(); + foreach ($data as $key => $value) { + if ($key[0] != '[') { + $result[] = "[$key]"; + } + if (is_array($value)) { + $keyValues = Hash::flatten($value, '.'); + foreach ($keyValues as $k => $v) { + $result[] = "$k = " . $this->_value($v); + } + } + } + $contents = join("\n", $result); + return file_put_contents($this->_path . $filename, $contents); + } + +/** + * Converts a value into the ini equivalent + * + * @param mixed $value to export. + * @return string String value for ini file. + */ + protected function _value($val) { + if ($val === null) { + return 'null'; + } + if ($val === true) { + return 'true'; + } + if ($val === false) { + return 'false'; + } + return (string)$val; + } + +} diff --git a/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Configure/PhpReader.php b/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Configure/PhpReader.php new file mode 100644 index 0000000..f5d9619 --- /dev/null +++ b/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Configure/PhpReader.php @@ -0,0 +1,103 @@ +<?php +/** + * PhpReader file + * + * PHP 5 + * + * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The MIT License + * Redistributions of files must retain the above copyright notice + * + * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://book.cakephp.org/2.0/en/development/configuration.html#loading-configuration-files CakePHP(tm) Configuration + * @package Cake.Configure + * @since CakePHP(tm) v 2.0 + * @license MIT License (http://www.opensource.org/licenses/mit-license.php) + */ + +/** + * PHP Reader allows Configure to load configuration values from + * files containing simple PHP arrays. + * + * Files compatible with PhpReader should define a `$config` variable, that + * contains all of the configuration data contained in the file. + * + * @package Cake.Configure + */ +class PhpReader implements ConfigReaderInterface { + +/** + * The path this reader finds files on. + * + * @var string + */ + protected $_path = null; + +/** + * Constructor for PHP Config file reading. + * + * @param string $path The path to read config files from. Defaults to APP . 'Config' . DS + */ + public function __construct($path = null) { + if (!$path) { + $path = APP . 'Config' . DS; + } + $this->_path = $path; + } + +/** + * Read a config file and return its contents. + * + * Files with `.` in the name will be treated as values in plugins. Instead of reading from + * the initialized path, plugin keys will be located using App::pluginPath(). + * + * @param string $key The identifier to read from. If the key has a . it will be treated + * as a plugin prefix. + * @return array Parsed configuration values. + * @throws ConfigureException when files don't exist or they don't contain `$config`. + * Or when files contain '..' as this could lead to abusive reads. + */ + public function read($key) { + if (strpos($key, '..') !== false) { + throw new ConfigureException(__d('cake_dev', 'Cannot load configuration files with ../ in them.')); + } + if (substr($key, -4) === '.php') { + $key = substr($key, 0, -4); + } + list($plugin, $key) = pluginSplit($key); + + if ($plugin) { + $file = App::pluginPath($plugin) . 'Config' . DS . $key; + } else { + $file = $this->_path . $key; + } + $file .= '.php'; + if (!is_file($file)) { + if (!is_file(substr($file, 0, -4))) { + throw new ConfigureException(__d('cake_dev', 'Could not load configuration files: %s or %s', $file, substr($file, 0, -4))); + } + } + include $file; + if (!isset($config)) { + throw new ConfigureException( + sprintf(__d('cake_dev', 'No variable $config found in %s.php'), $file) + ); + } + return $config; + } + +/** + * Converts the provided $data into a string of PHP code that can + * be used saved into a file and loaded later. + * + * @param string $filename The filename to create on $this->_path. + * @param array $data Data to dump. + * @return int Bytes saved. + */ + public function dump($filename, $data) { + $contents = '<?php' . "\n" . '$config = ' . var_export($data, true) . ';'; + return file_put_contents($this->_path . $filename, $contents); + } + +} |