Fetch all appconfig values for an app at once and cache the results
This commit is contained in:
parent
930a46e8e2
commit
5a646477a5
|
@ -38,6 +38,9 @@
|
|||
* database.
|
||||
*/
|
||||
class OC_Appconfig {
|
||||
|
||||
private static $cache = array();
|
||||
|
||||
/**
|
||||
* @brief Get all apps using the config
|
||||
* @return array with app ids
|
||||
|
@ -79,6 +82,19 @@ class OC_Appconfig{
|
|||
return $keys;
|
||||
}
|
||||
|
||||
private static function getAppValues($app) {
|
||||
if (!isset(self::$cache[$app])) {
|
||||
self::$cache[$app] = array();
|
||||
}
|
||||
$query = OC_DB::prepare('SELECT `configvalue`, `configkey` FROM `*PREFIX*appconfig`'
|
||||
. ' WHERE `appid` = ?');
|
||||
$result = $query->execute(array($app));
|
||||
while ($row = $result->fetchRow()) {
|
||||
self::$cache[$app][$row['configkey']] = $row['configvalue'];
|
||||
}
|
||||
return self::$cache[$app];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Gets the config value
|
||||
* @param string $app app
|
||||
|
@ -90,14 +106,17 @@ class OC_Appconfig{
|
|||
* not exist the default value will be returned
|
||||
*/
|
||||
public static function getValue($app, $key, $default = null) {
|
||||
// At least some magic in here :-)
|
||||
$query = OC_DB::prepare( 'SELECT `configvalue` FROM `*PREFIX*appconfig`'
|
||||
.' WHERE `appid` = ? AND `configkey` = ?' );
|
||||
$result = $query->execute( array( $app, $key ));
|
||||
$row = $result->fetchRow();
|
||||
if($row) {
|
||||
return $row["configvalue"];
|
||||
if (!isset(self::$cache[$app])) {
|
||||
self::$cache[$app] = array();
|
||||
}
|
||||
if (isset(self::$cache[$app][$key])) {
|
||||
return self::$cache[$app][$key];
|
||||
}
|
||||
$values = self::getAppValues($app);
|
||||
if (isset($values[$key])) {
|
||||
return $values[$key];
|
||||
} else {
|
||||
self::$cache[$app][$key] = $default;
|
||||
return $default;
|
||||
}
|
||||
}
|
||||
|
@ -109,6 +128,9 @@ class OC_Appconfig{
|
|||
* @return bool
|
||||
*/
|
||||
public static function hasKey($app, $key) {
|
||||
if (isset(self::$cache[$app]) and isset(self::$cache[$app][$key])) {
|
||||
return true;
|
||||
}
|
||||
$exists = self::getKeys($app);
|
||||
return in_array($key, $exists);
|
||||
}
|
||||
|
@ -128,8 +150,7 @@ class OC_Appconfig{
|
|||
$query = OC_DB::prepare('INSERT INTO `*PREFIX*appconfig` ( `appid`, `configkey`, `configvalue` )'
|
||||
. ' VALUES( ?, ?, ? )');
|
||||
$query->execute(array($app, $key, $value));
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
$query = OC_DB::prepare('UPDATE `*PREFIX*appconfig` SET `configvalue` = ?'
|
||||
. ' WHERE `appid` = ? AND `configkey` = ?');
|
||||
$query->execute(array($value, $app, $key));
|
||||
|
@ -140,6 +161,10 @@ class OC_Appconfig{
|
|||
'key' => $key,
|
||||
'value' => $value
|
||||
));
|
||||
if (!isset(self::$cache[$app])) {
|
||||
self::$cache[$app] = array();
|
||||
}
|
||||
self::$cache[$app][$key] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -154,6 +179,9 @@ class OC_Appconfig{
|
|||
// Boring!
|
||||
$query = OC_DB::prepare('DELETE FROM `*PREFIX*appconfig` WHERE `appid` = ? AND `configkey` = ?');
|
||||
$query->execute(array($app, $key));
|
||||
if (isset(self::$cache[$app]) and isset(self::$cache[$app][$key])) {
|
||||
unset(self::$cache[$app][$key]);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -169,12 +197,14 @@ class OC_Appconfig{
|
|||
// Nothing special
|
||||
$query = OC_DB::prepare('DELETE FROM `*PREFIX*appconfig` WHERE `appid` = ?');
|
||||
$query->execute(array($app));
|
||||
self::$cache[$app] = array();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* get multiply values, either the app or key can be used as wildcard by setting it to false
|
||||
*
|
||||
* @param app
|
||||
* @param key
|
||||
* @return array
|
||||
|
|
Loading…
Reference in New Issue