diff options
author | Andreas Fischer <bantu@phpbb.com> | 2012-06-11 13:18:00 +0200 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2012-06-11 13:18:00 +0200 |
commit | ca974e2f2a3fc49564d0a595b2d55d04006b9ce5 (patch) | |
tree | 95d61a56e7362afbdaf24823567aba0e00483002 /phpBB/includes/php | |
parent | 4af503e11bc2c42654cf783f031bdb074fdd91ed (diff) | |
download | forums-ca974e2f2a3fc49564d0a595b2d55d04006b9ce5.tar forums-ca974e2f2a3fc49564d0a595b2d55d04006b9ce5.tar.gz forums-ca974e2f2a3fc49564d0a595b2d55d04006b9ce5.tar.bz2 forums-ca974e2f2a3fc49564d0a595b2d55d04006b9ce5.tar.xz forums-ca974e2f2a3fc49564d0a595b2d55d04006b9ce5.zip |
[ticket/10931] Add wrapper class for ini_get function.
Provides easier handling of the different interpretations of ini values.
PHPBB3-10931
Diffstat (limited to 'phpBB/includes/php')
-rw-r--r-- | phpBB/includes/php/ini.php | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/phpBB/includes/php/ini.php b/phpBB/includes/php/ini.php new file mode 100644 index 0000000000..5c2cadb052 --- /dev/null +++ b/phpBB/includes/php/ini.php @@ -0,0 +1,165 @@ +<?php +/** +* +* @package phpBB +* @copyright (c) 2011 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +/** +* @ignore +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +/** +* Wrapper class for ini_get function. +* +* Provides easier handling of the different interpretations of ini values. +* +* @package phpBB +*/ +class phpbb_php_ini +{ + /** + * Simple wrapper for ini_get() + * See http://php.net/manual/en/function.ini-get.php + * + * @param string $varname The configuration option name. + * @return bool|string False if configuration option does not exist, + * the configuration option value (string) otherwise. + */ + public function get($varname) + { + return @ini_get($varname); + } + + /** + * Gets configuration option value as a string and performs various + * normalisation on the returned value. + * + * @param string $varname The configuration option name. + * @return bool|string False if configuration option does not exist, + * the configuration option value (string) otherwise. + */ + public function get_string($varname) + { + $value = $this->get($varname); + + if ($value === false) + { + return false; + } + + return trim($value); + } + + /** + * Gets configuration option value as a boolean. + * Interprets the string value 'off' as false. + * + * @param string $varname The configuration option name. + * @return bool False if configuration option does not exist. + * False if configuration option is disabled. + * True otherwise. + */ + public function get_bool($varname) + { + $value = strtolower($this->get_string($varname)); + + if (empty($value) || $value == 'off') + { + return false; + } + + return true; + } + + /** + * Gets configuration option value as an integer. + * + * @param string $varname The configuration option name. + * @return bool|int False if configuration option does not exist, + * the configuration option value (integer) otherwise. + */ + public function get_int($varname) + { + $value = $this->get_string($varname); + + if (!is_numeric($value)) + { + return false; + } + + return (int) $value; + } + + /** + * Gets configuration option value as a float. + * + * @param string $varname The configuration option name. + * @return bool|float False if configuration option does not exist, + * the configuration option value (float) otherwise. + */ + public function get_float($varname) + { + $value = $this->get_string($varname); + + if (!is_numeric($value)) + { + return false; + } + + return (float) $value; + } + + /** + * Gets configuration option value in bytes. + * Converts strings like '128M' to bytes (integer or float). + * + * @param string $varname The configuration option name. + * @return bool|int|float False if configuration option does not exist, + * the configuration option value otherwise. + */ + public function get_bytes($varname) + { + $value = strtolower($this->get_string($varname)); + + if ($value === false) + { + return false; + } + + if (is_numeric($value)) + { + return $value; + } + else if (strlen($value) < 2) + { + return false; + } + + $value_numeric = (int) $value; + + switch ($value[strlen($value) - 1]) + { + case 'g': + $value_numeric *= 1024; + case 'm': + $value_numeric *= 1024; + case 'k': + $value_numeric *= 1024; + break; + + default: + // It's not already in bytes (and thus numeric) + // and does not carry a unit. + return false; + } + + return $value_numeric; + } +} |