summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/app.php33
-rw-r--r--settings/apps.php17
2 files changed, 33 insertions, 17 deletions
diff --git a/lib/private/app.php b/lib/private/app.php
index b4a71992178..1a242ad968e 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -752,10 +752,43 @@ class OC_App{
} else {
$combinedApps = $appList;
}
+ // bring the apps into the right order with a custom sort funtion
+ usort( $combinedApps, '\OC_App::customSort' );
+
return $combinedApps;
}
/**
+ * @brief: Internal custom sort funtion to bring the app into the right order. Should only be called by listAllApps
+ * @return array
+ */
+ private static function customSort($a, $b) {
+
+ // prio 1: active
+ if ($a['active'] != $b['active']) {
+ return $b['active'] - $a['active'];
+ }
+
+ // prio 2: shipped
+ if ($a['shipped'] != $b['shipped']) {
+ $atemp = ($a['shipped'] == true ? 1 : 0);
+ $btemp = ($b['shipped'] == true ? 1 : 0);
+ return ($btemp - $atemp);
+ }
+
+ // prio 3: recommended
+ if ($a['internalclass'] != $b['internalclass']) {
+ $atemp = ($a['internalclass'] == 'recommendedapp' ? 1 : 0);
+ $btemp = ($b['internalclass'] == 'recommendedapp' ? 1 : 0);
+ return ($btemp - $atemp);
+ }
+
+ // prio 4: alphabetical
+ return strcasecmp($a['name'], $b['name']);
+
+ }
+
+ /**
* @brief: get a list of all apps on apps.owncloud.com
* @return array, multi-dimensional array of apps.
* Keys: id, name, type, typename, personid, license, detailpage, preview, changed, description
diff --git a/settings/apps.php b/settings/apps.php
index 20b12887554..96b6d21b502 100644
--- a/settings/apps.php
+++ b/settings/apps.php
@@ -28,24 +28,7 @@ OC_App::loadApps();
OC_Util::addStyle( "settings", "settings" );
OC_App::setActiveNavigationEntry( "core_apps" );
-function app_sort( $a, $b ) {
-
- if ($a['active'] !== $b['active']) {
-
- return $b['active'] - $a['active'];
-
- }
-
- if ($a['internal'] !== $b['internal']) {
- return $b['internal'] - $a['internal'];
- }
-
- return strcmp($a['name'], $b['name']);
-
-}
-
$combinedApps = OC_App::listAllApps();
-usort( $combinedApps, 'app_sort' );
$tmpl = new OC_Template( "settings", "apps", "user" );