* get all enabled apps
*/
private static $enabledAppsCache = array();
- public static function getEnabledApps() {
+ public static function getEnabledApps($forceRefresh = false) {
if(!OC_Config::getValue('installed', false)) {
return array();
}
- if(!empty(self::$enabledAppsCache)) {
+ if(!$forceRefresh && !empty(self::$enabledAppsCache)) {
return self::$enabledAppsCache;
}
$apps=array('files');
$sql = 'SELECT `appid` FROM `*PREFIX*appconfig`'
- .' WHERE `configkey` = \'enabled\' AND `configvalue`=\'yes\'';
+ . ' WHERE `configkey` = \'enabled\' AND `configvalue`=\'yes\''
+ . ' ORDER BY `appid`';
if (OC_Config::getValue( 'dbtype', 'sqlite' ) === 'oci') {
//FIXME oracle hack: need to explicitly cast CLOB to CHAR for comparison
$sql = 'SELECT `appid` FROM `*PREFIX*appconfig`'
- .' WHERE `configkey` = \'enabled\' AND to_char(`configvalue`)=\'yes\'';
+ . ' WHERE `configkey` = \'enabled\' AND to_char(`configvalue`)=\'yes\''
+ . ' ORDER BY `appid`';
}
$query = OC_DB::prepare( $sql );
$result=$query->execute();
*/
public static function getApps() {
// No magic in here!
- $query = OC_DB::prepare('SELECT DISTINCT `appid` FROM `*PREFIX*appconfig`');
+ $query = OC_DB::prepare('SELECT DISTINCT `appid` FROM `*PREFIX*appconfig` ORDER BY `appid`');
$result = $query->execute();
$apps = array();
$this->assertFalse(OC_App::isAppVersionCompatible($oc, $app));
}
+ /**
+ * Tests that the app order is correct
+ */
+ public function testGetEnabledAppsIsSorted() {
+ $apps = \OC_App::getEnabledApps(true);
+ // copy array
+ $sortedApps = $apps;
+ sort($sortedApps);
+ // 'files' is always on top
+ unset($sortedApps[array_search('files', $sortedApps)]);
+ array_unshift($sortedApps, 'files');
+ $this->assertEquals($sortedApps, $apps);
+ }
}
}
public function testGetApps() {
- $query = \OC_DB::prepare('SELECT DISTINCT `appid` FROM `*PREFIX*appconfig`');
+ $query = \OC_DB::prepare('SELECT DISTINCT `appid` FROM `*PREFIX*appconfig` ORDER BY `appid`');
$result = $query->execute();
$expected = array();
while ($row = $result->fetchRow()) {