Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/flow-flo.../libs/cakephp/core/Configur.../Engine
File: IniConfig.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
[2] Fix | Delete
* Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
[3] Fix | Delete
*
[4] Fix | Delete
* Licensed under The MIT License
[5] Fix | Delete
* For full copyright and license information, please see the LICENSE.txt
[6] Fix | Delete
* Redistributions of files must retain the above copyright notice.
[7] Fix | Delete
*
[8] Fix | Delete
* @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
[9] Fix | Delete
* @link https://cakephp.org CakePHP(tm) Project
[10] Fix | Delete
* @since 2.0.0
[11] Fix | Delete
* @license https://opensource.org/licenses/mit-license.php MIT License
[12] Fix | Delete
*/
[13] Fix | Delete
namespace Cake\Core\Configure\Engine;
[14] Fix | Delete
[15] Fix | Delete
use Cake\Core\Configure\ConfigEngineInterface;
[16] Fix | Delete
use Cake\Core\Configure\FileConfigTrait;
[17] Fix | Delete
use Cake\Utility\Hash;
[18] Fix | Delete
[19] Fix | Delete
/**
[20] Fix | Delete
* Ini file configuration engine.
[21] Fix | Delete
*
[22] Fix | Delete
* Since IniConfig uses parse_ini_file underneath, you should be aware that this
[23] Fix | Delete
* class shares the same behavior, especially with regards to boolean and null values.
[24] Fix | Delete
*
[25] Fix | Delete
* In addition to the native `parse_ini_file` features, IniConfig also allows you
[26] Fix | Delete
* to create nested array structures through usage of `.` delimited names. This allows
[27] Fix | Delete
* you to create nested arrays structures in an ini config file. For example:
[28] Fix | Delete
*
[29] Fix | Delete
* `db.password = secret` would turn into `['db' => ['password' => 'secret']]`
[30] Fix | Delete
*
[31] Fix | Delete
* You can nest properties as deeply as needed using `.`'s. In addition to using `.` you
[32] Fix | Delete
* can use standard ini section notation to create nested structures:
[33] Fix | Delete
*
[34] Fix | Delete
* ```
[35] Fix | Delete
* [section]
[36] Fix | Delete
* key = value
[37] Fix | Delete
* ```
[38] Fix | Delete
*
[39] Fix | Delete
* Once loaded into Configure, the above would be accessed using:
[40] Fix | Delete
*
[41] Fix | Delete
* `Configure::read('section.key');
[42] Fix | Delete
*
[43] Fix | Delete
* You can also use `.` separated values in section names to create more deeply
[44] Fix | Delete
* nested structures.
[45] Fix | Delete
*
[46] Fix | Delete
* IniConfig also manipulates how the special ini values of
[47] Fix | Delete
* 'yes', 'no', 'on', 'off', 'null' are handled. These values will be
[48] Fix | Delete
* converted to their boolean equivalents.
[49] Fix | Delete
*
[50] Fix | Delete
* @see https://secure.php.net/parse_ini_file
[51] Fix | Delete
*/
[52] Fix | Delete
class IniConfig implements ConfigEngineInterface
[53] Fix | Delete
{
[54] Fix | Delete
use FileConfigTrait;
[55] Fix | Delete
[56] Fix | Delete
/**
[57] Fix | Delete
* File extension.
[58] Fix | Delete
*
[59] Fix | Delete
* @var string
[60] Fix | Delete
*/
[61] Fix | Delete
protected $_extension = '.ini';
[62] Fix | Delete
[63] Fix | Delete
/**
[64] Fix | Delete
* The section to read, if null all sections will be read.
[65] Fix | Delete
*
[66] Fix | Delete
* @var string|null
[67] Fix | Delete
*/
[68] Fix | Delete
protected $_section;
[69] Fix | Delete
[70] Fix | Delete
/**
[71] Fix | Delete
* Build and construct a new ini file parser. The parser can be used to read
[72] Fix | Delete
* ini files that are on the filesystem.
[73] Fix | Delete
*
[74] Fix | Delete
* @param string|null $path Path to load ini config files from. Defaults to CONFIG.
[75] Fix | Delete
* @param string|null $section Only get one section, leave null to parse and fetch
[76] Fix | Delete
* all sections in the ini file.
[77] Fix | Delete
*/
[78] Fix | Delete
public function __construct($path = null, $section = null)
[79] Fix | Delete
{
[80] Fix | Delete
if ($path === null) {
[81] Fix | Delete
$path = CONFIG;
[82] Fix | Delete
}
[83] Fix | Delete
$this->_path = $path;
[84] Fix | Delete
$this->_section = $section;
[85] Fix | Delete
}
[86] Fix | Delete
[87] Fix | Delete
/**
[88] Fix | Delete
* Read an ini file and return the results as an array.
[89] Fix | Delete
*
[90] Fix | Delete
* @param string $key The identifier to read from. If the key has a . it will be treated
[91] Fix | Delete
* as a plugin prefix. The chosen file must be on the engine's path.
[92] Fix | Delete
* @return array Parsed configuration values.
[93] Fix | Delete
* @throws \Cake\Core\Exception\Exception when files don't exist.
[94] Fix | Delete
* Or when files contain '..' as this could lead to abusive reads.
[95] Fix | Delete
*/
[96] Fix | Delete
public function read($key)
[97] Fix | Delete
{
[98] Fix | Delete
$file = $this->_getFilePath($key, true);
[99] Fix | Delete
[100] Fix | Delete
$contents = parse_ini_file($file, true);
[101] Fix | Delete
if ($this->_section && isset($contents[$this->_section])) {
[102] Fix | Delete
$values = $this->_parseNestedValues($contents[$this->_section]);
[103] Fix | Delete
} else {
[104] Fix | Delete
$values = [];
[105] Fix | Delete
foreach ($contents as $section => $attribs) {
[106] Fix | Delete
if (is_array($attribs)) {
[107] Fix | Delete
$values[$section] = $this->_parseNestedValues($attribs);
[108] Fix | Delete
} else {
[109] Fix | Delete
$parse = $this->_parseNestedValues([$attribs]);
[110] Fix | Delete
$values[$section] = array_shift($parse);
[111] Fix | Delete
}
[112] Fix | Delete
}
[113] Fix | Delete
}
[114] Fix | Delete
[115] Fix | Delete
return $values;
[116] Fix | Delete
}
[117] Fix | Delete
[118] Fix | Delete
/**
[119] Fix | Delete
* parses nested values out of keys.
[120] Fix | Delete
*
[121] Fix | Delete
* @param array $values Values to be exploded.
[122] Fix | Delete
* @return array Array of values exploded
[123] Fix | Delete
*/
[124] Fix | Delete
protected function _parseNestedValues($values)
[125] Fix | Delete
{
[126] Fix | Delete
foreach ($values as $key => $value) {
[127] Fix | Delete
if ($value === '1') {
[128] Fix | Delete
$value = true;
[129] Fix | Delete
}
[130] Fix | Delete
if ($value === '') {
[131] Fix | Delete
$value = false;
[132] Fix | Delete
}
[133] Fix | Delete
unset($values[$key]);
[134] Fix | Delete
if (strpos($key, '.') !== false) {
[135] Fix | Delete
$values = Hash::insert($values, $key, $value);
[136] Fix | Delete
} else {
[137] Fix | Delete
$values[$key] = $value;
[138] Fix | Delete
}
[139] Fix | Delete
}
[140] Fix | Delete
[141] Fix | Delete
return $values;
[142] Fix | Delete
}
[143] Fix | Delete
[144] Fix | Delete
/**
[145] Fix | Delete
* Dumps the state of Configure data into an ini formatted string.
[146] Fix | Delete
*
[147] Fix | Delete
* @param string $key The identifier to write to. If the key has a . it will be treated
[148] Fix | Delete
* as a plugin prefix.
[149] Fix | Delete
* @param array $data The data to convert to ini file.
[150] Fix | Delete
* @return bool Success.
[151] Fix | Delete
*/
[152] Fix | Delete
public function dump($key, array $data)
[153] Fix | Delete
{
[154] Fix | Delete
$result = [];
[155] Fix | Delete
foreach ($data as $k => $value) {
[156] Fix | Delete
$isSection = false;
[157] Fix | Delete
if ($k[0] !== '[') {
[158] Fix | Delete
$result[] = "[$k]";
[159] Fix | Delete
$isSection = true;
[160] Fix | Delete
}
[161] Fix | Delete
if (is_array($value)) {
[162] Fix | Delete
$kValues = Hash::flatten($value, '.');
[163] Fix | Delete
foreach ($kValues as $k2 => $v) {
[164] Fix | Delete
$result[] = "$k2 = " . $this->_value($v);
[165] Fix | Delete
}
[166] Fix | Delete
}
[167] Fix | Delete
if ($isSection) {
[168] Fix | Delete
$result[] = '';
[169] Fix | Delete
}
[170] Fix | Delete
}
[171] Fix | Delete
$contents = trim(implode("\n", $result));
[172] Fix | Delete
[173] Fix | Delete
$filename = $this->_getFilePath($key);
[174] Fix | Delete
[175] Fix | Delete
return file_put_contents($filename, $contents) > 0;
[176] Fix | Delete
}
[177] Fix | Delete
[178] Fix | Delete
/**
[179] Fix | Delete
* Converts a value into the ini equivalent
[180] Fix | Delete
*
[181] Fix | Delete
* @param mixed $value Value to export.
[182] Fix | Delete
* @return string String value for ini file.
[183] Fix | Delete
*/
[184] Fix | Delete
protected function _value($value)
[185] Fix | Delete
{
[186] Fix | Delete
if ($value === null) {
[187] Fix | Delete
return 'null';
[188] Fix | Delete
}
[189] Fix | Delete
if ($value === true) {
[190] Fix | Delete
return 'true';
[191] Fix | Delete
}
[192] Fix | Delete
if ($value === false) {
[193] Fix | Delete
return 'false';
[194] Fix | Delete
}
[195] Fix | Delete
[196] Fix | Delete
return (string)$value;
[197] Fix | Delete
}
[198] Fix | Delete
}
[199] Fix | Delete
[200] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function