diff options
author | Sam Tuke <samtuke@owncloud.com> | 2012-09-18 14:35:27 +0100 |
---|---|---|
committer | Sam Tuke <samtuke@owncloud.com> | 2012-09-18 14:35:27 +0100 |
commit | b765e883f32bf271c77e4bfa4a88249e5b371a1a (patch) | |
tree | fa7851e829f31dc4b7092be509e808ff43bb11c0 /settings/apps.php | |
parent | 9bfdf47cd43139ca5c3fba255fd4486d06b6d72c (diff) | |
download | nextcloud-server-b765e883f32bf271c77e4bfa4a88249e5b371a1a.tar.gz nextcloud-server-b765e883f32bf271c77e4bfa4a88249e5b371a1a.zip |
Fixed bug with duplicate entries for installed 3rd party apps in settings->apps
Added method getAppstoreApps to OC_App
Added minor documentation
Diffstat (limited to 'settings/apps.php')
-rw-r--r-- | settings/apps.php | 93 |
1 files changed, 79 insertions, 14 deletions
diff --git a/settings/apps.php b/settings/apps.php index e613814fe94..1481f6fc4ad 100644 --- a/settings/apps.php +++ b/settings/apps.php @@ -29,45 +29,110 @@ OC_Util::addStyle( "settings", "settings" ); OC_Util::addScript( "settings", "apps" ); OC_App::setActiveNavigationEntry( "core_apps" ); -$registeredApps=OC_App::getAllApps(); -$apps=array(); +$installedApps = OC_App::getAllApps(); -//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 +$remoteApps = OC_App::getAppstoreApps(); -foreach($registeredApps as $app) { - if(array_search($app, $blacklist)===false) { +//$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 + +$appList = array(); + +foreach ( $installedApps as $app ) { + + if ( array_search( $app, $blacklist ) === false ) { + $info=OC_App::getAppInfo($app); + if (!isset($info['name'])) { + OC_Log::write('core', 'App id "'.$app.'" has no name in appinfo', OC_Log::ERROR); + continue; + } - $active=(OC_Appconfig::getValue($app, 'enabled', 'no')=='yes')?true:false; - $info['active']=$active; + + if ( OC_Appconfig::getValue( $app, 'enabled', 'no') == 'yes' ) { + + $active = true; + + } else { + + $active = false; + + } + + $info['active'] = $active; + if(isset($info['shipped']) and ($info['shipped']=='true')) { + $info['internal']=true; + $info['internallabel']='Internal App'; + }else{ + $info['internal']=false; + $info['internallabel']='3rd Party App'; + } - $info['preview']='trans.png'; - $info['version']=OC_App::getAppVersion($app); - $apps[]=$info; + + $info['preview'] = 'trans.png'; + + $info['version'] = OC_App::getAppVersion($app); + + $appList[] = $info; + } } -function app_sort($a, $b) { +// 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]); + + } + + } + +} + +$combinedApps = array_merge( $appList, $remoteApps ); + +function app_sort( $a, $b ) { + if ($a['active'] != $b['active']) { + return $b['active'] - $a['active']; + } + return strcmp($a['name'], $b['name']); + } -usort($apps, 'app_sort'); + +usort( $combinedApps, 'app_sort' ); $tmpl = new OC_Template( "settings", "apps", "user" ); -$tmpl->assign('apps', $apps, false); + +$tmpl->assign('apps', $combinedApps, false); + $appid = (isset($_GET['appid'])?strip_tags($_GET['appid']):''); + $tmpl->assign('appid', $appid); $tmpl->printPage(); |