summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorFrank Karlitschek <frank@owncloud.org>2013-10-08 07:17:36 -0700
committerFrank Karlitschek <frank@owncloud.org>2013-10-08 07:17:36 -0700
commit92d9263e24e226ee48d9a337660d227b0c8a9714 (patch)
tree449887d97e11fabbededb619e1fba47aaedc4829 /lib
parent6284ab31de660e4400e7e244e2a71096e6ed8f3b (diff)
parente564a3a26627230951d86347fcf47aec40d1ca39 (diff)
downloadnextcloud-server-92d9263e24e226ee48d9a337660d227b0c8a9714.tar.gz
nextcloud-server-92d9263e24e226ee48d9a337660d227b0c8a9714.zip
Merge pull request #5146 from guruz/cache_enabled_apps_list
OC_App: Cache list of enabled apps
Diffstat (limited to 'lib')
-rw-r--r--lib/private/app.php13
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/private/app.php b/lib/private/app.php
index 0ab1ee57f63..b4a71992178 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -165,10 +165,14 @@ class OC_App{
/**
* get all enabled apps
*/
+ private static $enabledAppsCache = array();
public static function getEnabledApps() {
if(!OC_Config::getValue('installed', false)) {
return array();
}
+ if(!empty(self::$enabledAppsCache)) {
+ return self::$enabledAppsCache;
+ }
$apps=array('files');
$sql = 'SELECT `appid` FROM `*PREFIX*appconfig`'
.' WHERE `configkey` = \'enabled\' AND `configvalue`=\'yes\'';
@@ -187,6 +191,7 @@ class OC_App{
$apps[]=$row['appid'];
}
}
+ self::$enabledAppsCache = $apps;
return $apps;
}
@@ -198,11 +203,11 @@ class OC_App{
* This function checks whether or not an app is enabled.
*/
public static function isEnabled( $app ) {
- if( 'files'==$app or ('yes' == OC_Appconfig::getValue( $app, 'enabled' ))) {
+ if('files' == $app) {
return true;
}
-
- return false;
+ $enabledApps = self::getEnabledApps();
+ return in_array($app, $enabledApps);
}
/**
@@ -214,6 +219,7 @@ class OC_App{
* This function set an app as enabled in appconfig.
*/
public static function enable( $app ) {
+ self::$enabledAppsCache = array(); // flush
if(!OC_Installer::isInstalled($app)) {
// check if app is a shipped app or not. OCS apps have an integer as id, shipped apps use a string
if(!is_numeric($app)) {
@@ -257,6 +263,7 @@ class OC_App{
* This function set an app as disabled in appconfig.
*/
public static function disable( $app ) {
+ self::$enabledAppsCache = array(); // flush
// check if app is a shipped app or not. if not delete
\OC_Hook::emit('OC_App', 'pre_disable', array('app' => $app));
OC_Appconfig::setValue( $app, 'enabled', 'no' );