Add caching to AppConfig->getApps
This commit is contained in:
parent
2ba5701b1a
commit
91180bfef4
|
@ -51,6 +51,11 @@ class AppConfig implements \OCP\IAppConfig {
|
|||
|
||||
private $appsLoaded = array();
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
*/
|
||||
private $apps = null;
|
||||
|
||||
/**
|
||||
* @param \OC\DB\Connection $conn
|
||||
*/
|
||||
|
@ -90,12 +95,16 @@ class AppConfig implements \OCP\IAppConfig {
|
|||
|
||||
/**
|
||||
* Get all apps using the config
|
||||
*
|
||||
* @return array an array of app ids
|
||||
*
|
||||
* This function returns a list of all apps that have at least one
|
||||
* entry in the appconfig table.
|
||||
*/
|
||||
public function getApps() {
|
||||
if (is_array($this->apps)) {
|
||||
return $this->apps;
|
||||
}
|
||||
$query = 'SELECT DISTINCT `appid` FROM `*PREFIX*appconfig` ORDER BY `appid`';
|
||||
$result = $this->conn->executeQuery($query);
|
||||
|
||||
|
@ -103,11 +112,13 @@ class AppConfig implements \OCP\IAppConfig {
|
|||
while ($appid = $result->fetchColumn()) {
|
||||
$apps[] = $appid;
|
||||
}
|
||||
$this->apps = $apps;
|
||||
return $apps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the available keys for an app
|
||||
*
|
||||
* @param string $app the app we are looking for
|
||||
* @return array an array of key names
|
||||
*
|
||||
|
@ -123,6 +134,7 @@ class AppConfig implements \OCP\IAppConfig {
|
|||
|
||||
/**
|
||||
* Gets the config value
|
||||
*
|
||||
* @param string $app app
|
||||
* @param string $key key
|
||||
* @param string $default = null, default value if the key does not exist
|
||||
|
@ -142,6 +154,7 @@ class AppConfig implements \OCP\IAppConfig {
|
|||
|
||||
/**
|
||||
* check if a key is set in the appconfig
|
||||
*
|
||||
* @param string $app
|
||||
* @param string $key
|
||||
* @return bool
|
||||
|
@ -153,6 +166,7 @@ class AppConfig implements \OCP\IAppConfig {
|
|||
|
||||
/**
|
||||
* sets a value in the appconfig
|
||||
*
|
||||
* @param string $app app
|
||||
* @param string $key key
|
||||
* @param string $value value
|
||||
|
@ -181,11 +195,15 @@ class AppConfig implements \OCP\IAppConfig {
|
|||
if (!isset($this->cache[$app])) {
|
||||
$this->cache[$app] = array();
|
||||
}
|
||||
if (is_array($this->apps) and array_search($app, $this->apps) === false) {
|
||||
$this->apps[] = $app;
|
||||
}
|
||||
$this->cache[$app][$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a key
|
||||
*
|
||||
* @param string $app app
|
||||
* @param string $key key
|
||||
* @return boolean|null
|
||||
|
@ -203,6 +221,7 @@ class AppConfig implements \OCP\IAppConfig {
|
|||
|
||||
/**
|
||||
* Remove app from appconfig
|
||||
*
|
||||
* @param string $app app
|
||||
* @return boolean|null
|
||||
*
|
||||
|
@ -214,6 +233,10 @@ class AppConfig implements \OCP\IAppConfig {
|
|||
);
|
||||
$this->conn->delete('*PREFIX*appconfig', $where);
|
||||
unset($this->cache[$app]);
|
||||
if (is_array($this->apps) and $i = array_search($app, $this->apps) !== false) {
|
||||
unset($this->apps[$i]);
|
||||
}
|
||||
$this->apps = null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue