diff options
author | Sam Tuke <samtuke@owncloud.com> | 2012-09-18 16:51:55 +0100 |
---|---|---|
committer | Sam Tuke <samtuke@owncloud.com> | 2012-09-18 16:55:03 +0100 |
commit | 9df403f051354b24da61b12f6446d10d899f05f7 (patch) | |
tree | a05b04dacef9e78497a77945e28ce83f0e578be4 | |
parent | 842cd57fa780029e60d0fb8094d4dd794bb33cb7 (diff) | |
download | nextcloud-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-x | lib/app.php | 17 | ||||
-rw-r--r-- | lib/ocsclient.php | 2 | ||||
-rw-r--r-- | settings/apps.php | 44 |
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']) { |