X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FConfig%2FPreloadPConfigAdapter.php;h=af97815adef38d159ab6ba44f27766d10ed7ca9d;hb=cb791024e4dee6404567b025348fc08d852a9a0d;hp=36b0f36362ccbf5c9aa2029355a4db3d08573d60;hpb=4e44b07dfe07dde78fe8a095fbb43d9ec1ffcb53;p=friendica.git diff --git a/src/Core/Config/PreloadPConfigAdapter.php b/src/Core/Config/PreloadPConfigAdapter.php index 36b0f36362..af97815ade 100644 --- a/src/Core/Config/PreloadPConfigAdapter.php +++ b/src/Core/Config/PreloadPConfigAdapter.php @@ -3,28 +3,40 @@ namespace Friendica\Core\Config; use Exception; -use Friendica\BaseObject; -use Friendica\Database\dba; -use Friendica\Database\DBM; - -require_once 'include/dba.php'; +use Friendica\Database\DBA; /** * Preload User Configuration Adapter * * Minimizes the number of database queries to retrieve configuration values at the cost of memory. * - * @author Hypolite Petovan + * @author Hypolite Petovan */ -class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter +class PreloadPConfigAdapter implements IPConfigAdapter { private $config_loaded = false; - public function __construct($uid) + /** + * The config cache of this adapter + * @var IPConfigCache + */ + private $configCache; + + /** + * @param IPConfigCache $configCache The config cache of this adapter + * @param int $uid The UID of the current user + */ + public function __construct(IPConfigCache $configCache, $uid = null) { - $this->load($uid, 'config'); + $this->configCache = $configCache; + if (isset($uid)) { + $this->load($uid, 'config'); + } } + /** + * {@inheritdoc} + */ public function load($uid, $family) { if ($this->config_loaded) { @@ -35,15 +47,18 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter return; } - $pconfigs = dba::select('pconfig', ['cat', 'v', 'k'], ['uid' => $uid]); - while ($pconfig = dba::fetch($pconfigs)) { - self::getApp()->setPConfigValue($uid, $pconfig['cat'], $pconfig['k'], $pconfig['v']); + $pconfigs = DBA::select('pconfig', ['cat', 'v', 'k'], ['uid' => $uid]); + while ($pconfig = DBA::fetch($pconfigs)) { + $this->configCache->setP($uid, $pconfig['cat'], $pconfig['k'], $pconfig['v']); } - dba::close($pconfigs); + DBA::close($pconfigs); $this->config_loaded = true; } + /** + * {@inheritdoc} + */ public function get($uid, $cat, $k, $default_value = null, $refresh = false) { if (!$this->config_loaded) { @@ -51,19 +66,20 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter } if ($refresh) { - $config = dba::selectFirst('pconfig', ['v'], ['uid' => $uid, 'cat' => $cat, 'k' => $k]); - if (DBM::is_result($config)) { - self::getApp()->setPConfigValue($uid, $cat, $k, $config['v']); + $config = DBA::selectFirst('pconfig', ['v'], ['uid' => $uid, 'cat' => $cat, 'k' => $k]); + if (DBA::isResult($config)) { + $this->configCache->setP($uid, $cat, $k, $config['v']); } else { - self::getApp()->deletePConfigValue($uid, $cat, $k); + $this->configCache->deleteP($uid, $cat, $k); } } - $return = self::getApp()->getPConfigValue($uid, $cat, $k, $default_value); - - return $return; + return $this->configCache->getP($uid, $cat, $k, $default_value);; } + /** + * {@inheritdoc} + */ public function set($uid, $cat, $k, $value) { if (!$this->config_loaded) { @@ -74,16 +90,16 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter // The exception are array values. $compare_value = !is_array($value) ? (string)$value : $value; - if (self::getApp()->getPConfigValue($uid, $cat, $k) === $compare_value) { + if ($this->configCache->getP($uid, $cat, $k) === $compare_value) { return true; } - self::getApp()->setPConfigValue($uid, $cat, $k, $value); + $this->configCache->setP($uid, $cat, $k, $value); // manage array value $dbvalue = is_array($value) ? serialize($value) : $value; - $result = dba::update('pconfig', ['v' => $dbvalue], ['uid' => $uid, 'cat' => $cat, 'k' => $k], true); + $result = DBA::update('pconfig', ['v' => $dbvalue], ['uid' => $uid, 'cat' => $cat, 'k' => $k], true); if (!$result) { throw new Exception('Unable to store config value in [' . $uid . '][' . $cat . '][' . $k . ']'); } @@ -91,15 +107,18 @@ class PreloadPConfigAdapter extends BaseObject implements IPConfigAdapter return true; } + /** + * {@inheritdoc} + */ public function delete($uid, $cat, $k) { if (!$this->config_loaded) { $this->load($uid, $cat); } - self::getApp()->deletePConfigValue($uid, $cat, $k); + $this->configCache->deleteP($uid, $cat, $k); - $result = dba::delete('pconfig', ['uid' => $uid, 'cat' => $cat, 'k' => $k]); + $result = DBA::delete('pconfig', ['uid' => $uid, 'cat' => $cat, 'k' => $k]); return $result; }