зеркало из https://github.com/nextcloud/server.git
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:
Родитель
f9db4249a3
Коммит
d485a70e7d
11
lib/app.php
11
lib/app.php
|
@ -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' );
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче