diff options
author | Frank Karlitschek <frank@owncloud.org> | 2013-10-08 07:17:36 -0700 |
---|---|---|
committer | Frank Karlitschek <frank@owncloud.org> | 2013-10-08 07:17:36 -0700 |
commit | 92d9263e24e226ee48d9a337660d227b0c8a9714 (patch) | |
tree | 449887d97e11fabbededb619e1fba47aaedc4829 /lib | |
parent | 6284ab31de660e4400e7e244e2a71096e6ed8f3b (diff) | |
parent | e564a3a26627230951d86347fcf47aec40d1ca39 (diff) | |
download | nextcloud-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.php | 13 |
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' ); |