Blame view
sources/lib/private/ocsclient.php
6.65 KB
|
03e52840d
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php
/**
* ownCloud
*
* @author Frank Karlitschek
* @author Jakob Sack
* @copyright 2012 Frank Karlitschek frank@owncloud.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* This class provides an easy way for apps to store config values in the
* database.
*/
class OC_OCSClient{
/**
|
|
6d9380f96
|
32 33 |
* Get the url of the OCS AppStore server. * @return string of the AppStore server |
|
03e52840d
|
34 35 36 37 38 |
*
* This function returns the url of the OCS AppStore server. It´s possible
* to set it in the config file or it will fallback to the default
*/
private static function getAppStoreURL() {
|
|
31b7f2792
|
39 |
if(OC_Util::getEditionString()===''){
|
|
6d9380f96
|
40 |
$default='https://api.owncloud.com/v1'; |
|
31b7f2792
|
41 42 43 44 |
}else{
$default='';
}
$url = OC_Config::getValue('appstoreurl', $default);
|
|
03e52840d
|
45 46 |
return($url); } |
|
03e52840d
|
47 48 |
/** |
|
6d9380f96
|
49 50 |
* Get the content of an OCS url call. * @return string of the response |
|
03e52840d
|
51 |
* This function calls an OCS server and returns the response. It also sets a sane timeout |
|
6d9380f96
|
52 |
* @param string $url |
|
03e52840d
|
53 54 55 56 57 58 59 |
*/
private static function getOCSresponse($url) {
$data = \OC_Util::getUrlContent($url);
return($data);
}
/**
|
|
6d9380f96
|
60 |
* Get all the categories from the OCS server |
|
f7d878ff1
|
61 |
* @return array|null an array of category ids or null |
|
03e52840d
|
62 63 64 65 66 67 68 69 70 71 72 73 |
* @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() {
if(OC_Config::getValue('appstoreenabled', true)==false) {
return null;
}
$url=OC_OCSClient::getAppStoreURL().'/content/categories';
$xml=OC_OCSClient::getOCSresponse($url);
if($xml==false) {
return null;
}
|
|
837968727
|
74 75 76 |
$loadEntities = libxml_disable_entity_loader(true); $data = simplexml_load_string($xml); libxml_disable_entity_loader($loadEntities); |
|
03e52840d
|
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
$tmp=$data->data;
$cats=array();
foreach($tmp->category as $value) {
$id= (int) $value->id;
$name= (string) $value->name;
$cats[$id]=$name;
}
return $cats;
}
/**
|
|
6d9380f96
|
93 |
* Get all the applications from the OCS server |
|
f7d878ff1
|
94 |
* @return array|null an array of application data or null |
|
03e52840d
|
95 96 |
* * This function returns a list of all the applications on the OCS server |
|
6d9380f96
|
97 98 99 |
* @param array|string $categories * @param int $page * @param string $filter |
|
03e52840d
|
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
*/
public static function getApplications($categories, $page, $filter) {
if(OC_Config::getValue('appstoreenabled', true)==false) {
return(array());
}
if(is_array($categories)) {
$categoriesstring=implode('x', $categories);
}else{
$categoriesstring=$categories;
}
$version='&version='.implode('x', \OC_Util::getVersion());
$filterurl='&filter='.urlencode($filter);
$url=OC_OCSClient::getAppStoreURL().'/content/data?categories='.urlencode($categoriesstring)
.'&sortmode=new&page='.urlencode($page).'&pagesize=100'.$filterurl.$version;
$apps=array();
$xml=OC_OCSClient::getOCSresponse($url);
if($xml==false) {
return null;
}
|
|
837968727
|
122 123 124 |
$loadEntities = libxml_disable_entity_loader(true); $data = simplexml_load_string($xml); libxml_disable_entity_loader($loadEntities); |
|
03e52840d
|
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
$tmp=$data->data->content;
for($i = 0; $i < count($tmp); $i++) {
$app=array();
$app['id']=(string)$tmp[$i]->id;
$app['name']=(string)$tmp[$i]->name;
$app['label']=(string)$tmp[$i]->label;
$app['version']=(string)$tmp[$i]->version;
$app['type']=(string)$tmp[$i]->typeid;
$app['typename']=(string)$tmp[$i]->typename;
$app['personid']=(string)$tmp[$i]->personid;
$app['license']=(string)$tmp[$i]->license;
$app['detailpage']=(string)$tmp[$i]->detailpage;
$app['preview']=(string)$tmp[$i]->smallpreviewpic1;
$app['changed']=strtotime($tmp[$i]->changed);
$app['description']=(string)$tmp[$i]->description;
$app['score']=(string)$tmp[$i]->score;
$apps[]=$app;
}
return $apps;
}
/**
|
|
6d9380f96
|
150 151 |
* Get an the applications from the OCS server * @param string $id |
|
f7d878ff1
|
152 |
* @return array|null an array of application data or null |
|
03e52840d
|
153 |
* |
|
f7d878ff1
|
154 |
* This function returns an applications from the OCS server |
|
03e52840d
|
155 156 157 158 159 160 161 162 163 |
*/
public static function getApplication($id) {
if(OC_Config::getValue('appstoreenabled', true)==false) {
return null;
}
$url=OC_OCSClient::getAppStoreURL().'/content/data/'.urlencode($id);
$xml=OC_OCSClient::getOCSresponse($url);
if($xml==false) {
|
|
f7d878ff1
|
164 |
OC_Log::write('core', 'Unable to parse OCS content for app ' . $id, OC_Log::FATAL);
|
|
03e52840d
|
165 166 |
return null; } |
|
837968727
|
167 168 169 |
$loadEntities = libxml_disable_entity_loader(true); $data = simplexml_load_string($xml); libxml_disable_entity_loader($loadEntities); |
|
03e52840d
|
170 171 |
$tmp=$data->data->content; |
|
f7d878ff1
|
172 173 174 175 |
if (is_null($tmp)) {
OC_Log::write('core', 'Invalid OCS content returned for app ' . $id, OC_Log::FATAL);
return null;
}
|
|
03e52840d
|
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
$app=array(); $app['id']=$tmp->id; $app['name']=$tmp->name; $app['version']=$tmp->version; $app['type']=$tmp->typeid; $app['label']=$tmp->label; $app['typename']=$tmp->typename; $app['personid']=$tmp->personid; $app['detailpage']=$tmp->detailpage; $app['preview1']=$tmp->smallpreviewpic1; $app['preview2']=$tmp->smallpreviewpic2; $app['preview3']=$tmp->smallpreviewpic3; $app['changed']=strtotime($tmp->changed); $app['description']=$tmp->description; $app['detailpage']=$tmp->detailpage; $app['score']=$tmp->score; return $app; } /** |
|
6d9380f96
|
197 |
* Get the download url for an application from the OCS server |
|
f7d878ff1
|
198 |
* @return array|null an array of application data or null |
|
6d9380f96
|
199 200 201 202 203 |
* * This function returns an download url for an applications from the OCS server * @param string $id * @param integer $item */ |
|
03e52840d
|
204 205 206 207 208 209 210 211 212 213 214 |
public static function getApplicationDownload($id, $item) {
if(OC_Config::getValue('appstoreenabled', true)==false) {
return null;
}
$url=OC_OCSClient::getAppStoreURL().'/content/download/'.urlencode($id).'/'.urlencode($item);
$xml=OC_OCSClient::getOCSresponse($url);
if($xml==false) {
OC_Log::write('core', 'Unable to parse OCS content', OC_Log::FATAL);
return null;
}
|
|
837968727
|
215 216 217 |
$loadEntities = libxml_disable_entity_loader(true); $data = simplexml_load_string($xml); libxml_disable_entity_loader($loadEntities); |
|
03e52840d
|
218 219 220 221 222 223 224 225 226 227 |
$tmp=$data->data->content;
$app=array();
if(isset($tmp->downloadlink)) {
$app['downloadlink']=$tmp->downloadlink;
}else{
$app['downloadlink']='';
}
return $app;
}
|
|
03e52840d
|
228 |
} |