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 $personalForms = array();
|
||||
static private $appInfo = array();
|
||||
static private $appTypes = array();
|
||||
|
||||
/**
|
||||
* @brief loads all apps
|
||||
|
@ -85,11 +86,7 @@ class OC_App{
|
|||
if(is_string($types)){
|
||||
$types=array($types);
|
||||
}
|
||||
$appData=self::getAppInfo($app);
|
||||
if(!isset($appData['types'])){
|
||||
return false;
|
||||
}
|
||||
$appTypes=$appData['types'];
|
||||
$appTypes=self::getAppTypes($app);
|
||||
foreach($types as $type){
|
||||
if(array_search($type,$appTypes)!==false){
|
||||
return true;
|
||||
|
@ -98,6 +95,32 @@ class OC_App{
|
|||
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
|
||||
*/
|
||||
|
|
|
@ -163,4 +163,38 @@ class OC_Appconfig{
|
|||
|
||||
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