Added failsafes for retrieving remote apps on settings->apps page, in case categories or app data are not found

This commit is contained in:
Sam Tuke 2012-09-18 16:51:55 +01:00
parent 842cd57fa7
commit 9df403f051
3 changed files with 41 additions and 22 deletions

View File

@ -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;
}
}
/**

View File

@ -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() {

View File

@ -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']) {