summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Tuke <samtuke@owncloud.com>2012-09-18 16:51:55 +0100
committerSam Tuke <samtuke@owncloud.com>2012-09-18 16:55:03 +0100
commit9df403f051354b24da61b12f6446d10d899f05f7 (patch)
treea05b04dacef9e78497a77945e28ce83f0e578be4
parent842cd57fa780029e60d0fb8094d4dd794bb33cb7 (diff)
downloadnextcloud-server-9df403f051354b24da61b12f6446d10d899f05f7.tar.gz
nextcloud-server-9df403f051354b24da61b12f6446d10d899f05f7.zip
Added failsafes for retrieving remote apps on settings->apps page, in case categories or app data are not found
-rwxr-xr-xlib/app.php17
-rw-r--r--lib/ocsclient.php2
-rw-r--r--settings/apps.php44
3 files changed, 41 insertions, 22 deletions
diff --git a/lib/app.php b/lib/app.php
index 328095a90d2..38ba4bcdc88 100755
--- a/lib/app.php
+++ b/lib/app.php
@@ -563,7 +563,12 @@ class OC_App{
if ( is_array( $catagoryNames ) ) {
- $categories = array_keys( $catagoryNames );
+ // Check that categories of apps were retrieved correctly
+ if ( ! $categories = array_keys( $catagoryNames ) ) {
+
+ return false;
+
+ }
$page = 0;
@@ -589,7 +594,15 @@ class OC_App{
}
- return $app1;
+ if ( empty( $app1 ) ) {
+
+ return false;
+
+ } else {
+
+ return $app1;
+
+ }
}
/**
diff --git a/lib/ocsclient.php b/lib/ocsclient.php
index 8596ea0b3c7..6428a883679 100644
--- a/lib/ocsclient.php
+++ b/lib/ocsclient.php
@@ -53,7 +53,7 @@ class OC_OCSClient{
/**
* @brief Get all the categories from the OCS server
* @returns array with category ids
- *
+ * @note returns NULL if config value appstoreenabled is set to false
* This function returns a list of all the application categories on the OCS server
*/
public static function getCategories() {
diff --git a/settings/apps.php b/settings/apps.php
index 1481f6fc4ad..a1c1bf6aa53 100644
--- a/settings/apps.php
+++ b/settings/apps.php
@@ -31,10 +31,6 @@ OC_App::setActiveNavigationEntry( "core_apps" );
$installedApps = OC_App::getAllApps();
-$remoteApps = OC_App::getAppstoreApps();
-
-//$remoteApps = array();
-
//TODO which apps do we want to blacklist and how do we integrate blacklisting with the multi apps folder feature?
$blacklist = array('files');//we dont want to show configuration for these
@@ -90,29 +86,39 @@ foreach ( $installedApps as $app ) {
}
}
-// Remove duplicates
-foreach ( $appList as $app ) {
+$remoteApps = OC_App::getAppstoreApps();
- foreach ( $remoteApps AS $key => $remote ) {
-
- if (
- $app['name'] == $remote['name']
- // To set duplicate detection to use OCS ID instead of string name,
- // enable this code, remove the line of code above,
- // and add <ocs_id>[ID]</ocs_id> to info.xml of each 3rd party app:
- // OR $app['ocs_id'] == $remote['ocs_id']
- ) {
+if ( $remoteApps ) {
+
+ // Remove duplicates
+ foreach ( $appList as $app ) {
+
+ foreach ( $remoteApps AS $key => $remote ) {
+
+ if (
+ $app['name'] == $remote['name']
+ // To set duplicate detection to use OCS ID instead of string name,
+ // enable this code, remove the line of code above,
+ // and add <ocs_id>[ID]</ocs_id> to info.xml of each 3rd party app:
+ // OR $app['ocs_id'] == $remote['ocs_id']
+ ) {
+
+ unset( $remoteApps[$key]);
- unset( $remoteApps[$key]);
+ }
}
-
+
}
+
+ $combinedApps = array_merge( $appList, $remoteApps );
+
+} else {
+
+ $combinedApps = $appList;
}
-$combinedApps = array_merge( $appList, $remoteApps );
-
function app_sort( $a, $b ) {
if ($a['active'] != $b['active']) {