cache app types in the db
This commit is contained in:
parent
5608867edc
commit
dec139716e
33
lib/app.php
33
lib/app.php
|
@ -35,6 +35,7 @@ class OC_App{
|
||||||
static private $adminForms = array();
|
static private $adminForms = array();
|
||||||
static private $personalForms = array();
|
static private $personalForms = array();
|
||||||
static private $appInfo = array();
|
static private $appInfo = array();
|
||||||
|
static private $appTypes = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief loads all apps
|
* @brief loads all apps
|
||||||
|
@ -85,11 +86,7 @@ class OC_App{
|
||||||
if(is_string($types)){
|
if(is_string($types)){
|
||||||
$types=array($types);
|
$types=array($types);
|
||||||
}
|
}
|
||||||
$appData=self::getAppInfo($app);
|
$appTypes=self::getAppTypes($app);
|
||||||
if(!isset($appData['types'])){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$appTypes=$appData['types'];
|
|
||||||
foreach($types as $type){
|
foreach($types as $type){
|
||||||
if(array_search($type,$appTypes)!==false){
|
if(array_search($type,$appTypes)!==false){
|
||||||
return true;
|
return true;
|
||||||
|
@ -97,6 +94,32 @@ class OC_App{
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get the types of an app
|
||||||
|
* @param string $app
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private static function getAppTypes($app){
|
||||||
|
//load the cache
|
||||||
|
if(count(self::$appTypes)==0){
|
||||||
|
self::$appTypes=OC_Appconfig::getValues(false,'types');
|
||||||
|
}
|
||||||
|
|
||||||
|
//get it from info.xml if we haven't cached it
|
||||||
|
if(!isset(self::$appTypes[$app])){
|
||||||
|
$appData=self::getAppInfo($app);
|
||||||
|
if(isset($appData['types'])){
|
||||||
|
self::$appTypes[$app]=$appData['types'];
|
||||||
|
}else{
|
||||||
|
self::$appTypes[$app]=array();
|
||||||
|
}
|
||||||
|
|
||||||
|
OC_Appconfig::setValue($app,'types',implode(',',self::$appTypes[$app]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return explode(',',self::$appTypes[$app]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get all enabled apps
|
* get all enabled apps
|
||||||
|
|
|
@ -163,4 +163,38 @@ class OC_Appconfig{
|
||||||
|
|
||||||
return true;
|
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
|
||||||
|
*/
|
||||||
|
public static function getValues($app,$key){
|
||||||
|
if($app!==false and $key!==false){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$where='WHERE';
|
||||||
|
$fields='configvalue';
|
||||||
|
$params=array();
|
||||||
|
if($app!==false){
|
||||||
|
$where.=' appid = ?';
|
||||||
|
$fields.=', configkey';
|
||||||
|
$params[]=$app;
|
||||||
|
$key='configkey';
|
||||||
|
}else{
|
||||||
|
$fields.=', appid';
|
||||||
|
$where.=' configkey = ?';
|
||||||
|
$params[]=$key;
|
||||||
|
$key='appid';
|
||||||
|
}
|
||||||
|
$queryString='SELECT '.$fields.' FROM *PREFIX*appconfig '.$where;
|
||||||
|
$query=OC_DB::prepare($queryString);
|
||||||
|
$result=$query->execute($params);
|
||||||
|
$values=array();
|
||||||
|
while($row=$result->fetchRow()){
|
||||||
|
$values[$row[$key]]=$row['configvalue'];
|
||||||
|
}
|
||||||
|
return $values;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue