Remove `IniStore.php`

This commit is contained in:
Sukhwinder Dhillon 2022-04-29 15:01:46 +02:00 committed by Johannes Meyer
parent 340364ee9c
commit 9c6fda7b33
1 changed files with 0 additions and 118 deletions

View File

@ -1,118 +0,0 @@
<?php
/* Icinga Web 2 | (c) 2014 Icinga Development Team | GPLv2+ */
namespace Icinga\User\Preferences\Store;
use Icinga\Application\Config;
use Icinga\Exception\NotReadableError;
use Icinga\Exception\NotWritableError;
use Icinga\User\Preferences;
use Icinga\User\Preferences\PreferencesStore;
use Icinga\File\Ini\IniParser;
/**
* Load and save user preferences from and to INI files
*/
class IniStore extends PreferencesStore
{
/**
* Preferences file of the given user
*
* @var string
*/
protected $preferencesFile;
/**
* Stored preferences
*
* @var array
*/
protected $preferences = array();
/**
* Initialize the store
*/
protected function init()
{
$this->preferencesFile = sprintf(
'%s/%s/config.ini',
$this->getStoreConfig()->location,
strtolower($this->getUser()->getUsername())
);
}
/**
* Load preferences from source
*
* @return array
*
* @throws NotReadableError When the INI file of the user exists and is not readable
*/
public function load()
{
if (file_exists($this->preferencesFile)) {
if (! is_readable($this->preferencesFile)) {
throw new NotReadableError(
'Preferences INI file %s for user %s is not readable',
$this->preferencesFile,
$this->getUser()->getUsername()
);
} else {
$this->preferences = IniParser::parseIniFile($this->preferencesFile)->toArray();
}
}
return $this->preferences;
}
/**
* Save the given preferences
*
* @param Preferences $preferences The preferences to save
*/
public function save(Preferences $preferences)
{
$this->preferences = $preferences->toArray();
// TODO: Elaborate whether we need to patch the contents
// $preferences = $preferences->toArray();
// $this->update(array_diff_assoc($preferences, $this->preferences));
// $this->delete(array_keys(array_diff_key($this->preferences, $preferences)));
$this->write();
}
/**
* Write the preferences
*
* @throws NotWritableError In case the INI file cannot be written
*/
public function write()
{
Config::fromArray($this->preferences)->saveIni($this->preferencesFile);
}
/**
* Add or update the given preferences
*
* @param array $preferences The preferences to set
*/
protected function update(array $preferences)
{
foreach ($preferences as $key => $value) {
$this->preferences[$key] = $value;
}
}
/**
* Delete the given preferences by name
*
* @param array $preferenceKeys The preference names to delete
*/
protected function delete(array $preferenceKeys)
{
foreach ($preferenceKeys as $key) {
unset($this->preferences[$key]);
}
}
}