| Current Path : /home/poneycluc/www/plugins/system/bfnetwork/bfnetwork/ |
| Current File : /home/poneycluc/www/plugins/system/bfnetwork/bfnetwork/bfPreferences.php |
<?php
/*
* @package bfNetwork
* @copyright Copyright (C) 2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026 Blue Flame Digital Solutions Ltd. All rights reserved.
* @license GNU General Public License version 3 or later
*
* @see https://mySites.guru/
* @see https://www.phil-taylor.com/
*
* @author Phil Taylor / Blue Flame Digital Solutions Limited.
*
* bfNetwork is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* bfNetwork is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this package. If not, see http://www.gnu.org/licenses/
*
* If you have any questions regarding this code, please contact phil@phil-taylor.com
*/
/**
* If we have got here then we have already passed through decrypting the encrypted header and so we are sure we are now
* secure and no one else cannot run the code below.
*/
final class bfPreferences
{
/**
* @var array
*/
public $default_alerting_filewatchlist = ['/includes/defines.php', '/includes/framework.php', '/configuration.php'];
/**
* @var string
*/
private $dieStatement = "<?php\nheader('HTTP/1.0 404 Not Found');\ndie();\n?>\n";
/**
* Incoming decrypted vars from the request.
*
* @var stdClass
*/
private $_dataObj;
/**
* @var string
*/
private $_configFile;
/**
* @var mixed|stdClass
*/
private $prefs;
/**
* I inject the request to the object.
*
* @param stdClass $dataObj
*/
public function __construct($dataObj = null)
{
$this->_configFile = __DIR__ . '/tmp/bfLocalConfig.php';
// Set the request vars
$this->_dataObj = $dataObj;
$this->prefs = $this->getPreferences();
}
public function getPreferences()
{
$this->ensurePrefsFileCreated();
$prefs = trim(str_replace($this->dieStatement, '', str_replace(\PHP_EOL, "\n", file_get_contents($this->_configFile))));
try {
$data = json_decode(trim($prefs), null, 512, 0);
if (! is_object($data)) {
$data = new stdClass();
}
} catch (Exception $ex) {
unlink($this->_configFile);
$this->ensurePrefsFileCreated();
$data = new stdClass();
}
if (! property_exists($data, '_BF_LOG')) {
$data->_BF_LOG = false;
}
$this->prefs = $data;
return $this->prefs;
}
public function ensurePrefsFileCreated()
{
if (! file_exists($this->_configFile)) {
$this->prefs = new stdClass();
$this->prefs->_BF_LOG = false;
$this->writeFile();
}
}
public function writeFile()
{
file_put_contents($this->_configFile, $this->dieStatement);
file_put_contents($this->_configFile, json_encode($this->prefs), \FILE_APPEND);
}
/**
* I'm the controller - I run methods based on the request integer.
*/
public function run($action)
{
return $this->$action();
}
public function savePreferencesFromService()
{
$this->prefs = json_decode($this->_dataObj->preferences);
$this->writeFile();
}
public function savePreference()
{
$preference = $this->_dataObj->preference;
$value = $this->_dataObj->value;
$this->prefs->$preference = $value;
$this->writeFile();
}
public function updatePreference($preference, $value)
{
$this->prefs->$preference = $value;
$this->writeFile();
}
}