finish the application store feature so that users can download and install ownCloud apps from our website. there is still a small problem with write permissions. will look into this later

This commit is contained in:
Frank Karlitschek 2012-01-06 19:08:35 +01:00
parent f9db4249a3
commit d485a70e7d
3 changed files with 53 additions and 17 deletions

View File

@ -94,7 +94,15 @@ class OC_App{
*/
public static function enable( $app ){
if(!OC_Installer::isInstalled($app)){
OC_Installer::installShippedApp($app);
// check if app is a shipped app or not. OCS apps have an integer as id, shipped apps use a string
if(!is_numeric($app)){
OC_Installer::installShippedApp($app);
}else{
$download=OC_OCSClient::getApplicationDownload($app,1);
if(isset($download['downloadlink']) and $download['downloadlink']<>'') {
OC_Installer::installApp(array('source'=>'http','href'=>$download['downloadlink']));
}
}
}
OC_Appconfig::setValue( $app, 'enabled', 'yes' );
}
@ -107,6 +115,7 @@ class OC_App{
* This function set an app as disabled in appconfig.
*/
public static function disable( $app ){
// check if app is a shiped app or not. if not delete
OC_Appconfig::setValue( $app, 'enabled', 'no' );
}

View File

@ -130,6 +130,33 @@ class OC_OCSClient{
return $app;
}
/**
* @brief Get the download url for an application from the OCS server
* @returns array with application data
*
* This function returns an download url for an applications from the OCS server
*/
public static function getApplicationDownload($id,$item){
$url='http://api.apps.owncloud.com/v1/content/download/'.urlencode($id).'/'.urlencode($item);
$xml=@file_get_contents($url);
if($xml==FALSE){
OC_Log::write('core','Unable to parse OCS content',OC_Log::FATAL);
return NULL;
}
$data=simplexml_load_string($xml);
$tmp=$data->data->content;
$app=array();
if(isset($tmp->downloadlink)) {
$app['downloadlink']=$tmp->downloadlink;
}else{
$app['downloadlink']='';
}
return $app;
}
/**
* @brief Get all the knowledgebase entries from the OCS server
* @returns array with q and a data

View File

@ -51,22 +51,22 @@ function app_sort($a, $b){
}
usort($apps, 'app_sort');
// dissabled for now
// $catagoryNames=OC_OCSClient::getCategories();
// if(is_array($catagoryNames)){
// $categories=array_keys($catagoryNames);
// $externalApps=OC_OCSClient::getApplications($categories);
// foreach($externalApps as $app){
// $apps[]=array(
// 'name'=>$app['name'],
// 'id'=>$app['id'],
// 'active'=>false,
// 'description'=>$app['description'],
// 'author'=>$app['personid'],
// 'license'=>$app['license'],
// );
// }
// }
// apps from external repo via OCS
$catagoryNames=OC_OCSClient::getCategories();
if(is_array($catagoryNames)){
$categories=array_keys($catagoryNames);
$externalApps=OC_OCSClient::getApplications($categories);
foreach($externalApps as $app){
$apps[]=array(
'name'=>$app['name'],
'id'=>$app['id'],
'active'=>false,
'description'=>$app['description'],
'author'=>$app['personid'],
'license'=>$app['license'],
);
}
}