Browse Source

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

tags/v3.0
Frank Karlitschek 12 years ago
parent
commit
d485a70e7d
3 changed files with 53 additions and 17 deletions
  1. 10
    1
      lib/app.php
  2. 27
    0
      lib/ocsclient.php
  3. 16
    16
      settings/apps.php

+ 10
- 1
lib/app.php 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' );
}


+ 27
- 0
lib/ocsclient.php 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

+ 16
- 16
settings/apps.php 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'],
);
}
}




Loading…
Cancel
Save