Merge pull request #6449 from owncloud/core-appsorderfix

Fixed apps loading order
This commit is contained in:
Thomas Müller 2013-12-24 14:26:11 -08:00
commit efdeba7416
4 changed files with 21 additions and 6 deletions

View File

@ -166,20 +166,22 @@ class OC_App{
* 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();

View File

@ -52,7 +52,7 @@ class OC_Appconfig {
*/
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();

View File

@ -79,4 +79,17 @@ class Test_App extends PHPUnit_Framework_TestCase {
$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);
}
}

View File

@ -35,7 +35,7 @@ class Test_Appconfig extends PHPUnit_Framework_TestCase {
}
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()) {