Warning, /webapps/ocs-server/gamingfreedom/lib_ocs.class.php.backup is written in an unsupported language. File is not indexed.
0001 <?php
0002
0003 include_once("gfx3/main.class.php");
0004
0005 /**
0006 * OCS Lib
0007 *
0008 * @author Frank Karlitschek
0009 * @copyright 2010 Frank Karlitschek karlitschek@kde.org
0010 *
0011 * This library is free software; you can redistribute it and/or
0012 * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
0013 * License as published by the Free Software Foundation; either
0014 * version 3 of the License, or any later version.
0015 *
0016 * This library is distributed in the hope that it will be useful,
0017 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0019 * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
0020 *
0021 * You should have received a copy of the GNU Lesser General Public
0022 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
0023 *
0024
0025
0026 Documentation:
0027 This libary is an example implementation of the Open Collaboration Services Specification you find here:
0028 http://www.freedesktop.org/wiki/Specifications/open-collaboration-services
0029
0030 This libary is using PHP 5.x and MySQL 5.x
0031 The OCS Libary is just an example implementation you can use as a reference or inspiration.
0032 It will probalby not run on your server unmodified because your datasources are different. But you should
0033 get an impression how the REST interface works and how you can make your data available in an OCS compatible way
0034
0035 You need a database table to track the API traffic.
0036 The table should look like this:
0037
0038 CREATE TABLE IF NOT EXISTS `apitraffic` (
0039 `ip` bigint(20) NOT NULL,
0040 `count` int(11) NOT NULL,
0041 PRIMARY KEY (`ip`)
0042 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
0043
0044
0045 You need a file names "v1" in the htdocs of your webserver to handle the API requests. It could look like this:
0046
0047 require_once('some of your libaries');
0048 require_once('ocs/lib_ocs.php');
0049 H01_OCS::handle();
0050
0051 You have to force apache to parse this file even it it doesn´t end with .php
0052
0053 <Files v1>
0054 ForceType application/x-httpd-php
0055 </Files>
0056
0057
0058 */
0059
0060 /**
0061 * Class to handle open collaboration services API requests
0062 *
0063 */
0064 class H01_OCS {
0065
0066 /**
0067 * define some configuration variables
0068 **/
0069 public static $whitelist = array('127.0.0.2');
0070 public static $maxpersonsearchpage = 200;
0071 public static $maxrequests = 1000; // per 15min from one IP
0072 public static $maxrequestsauthenticated = 2000;
0073 public static $main = "ciao";
0074
0075 /**
0076 * reads input date from get/post/cookies and converts the date to a special data-type
0077 *
0078 * @param variable $key
0079 * @param variable-type $type Supported variable types are: raw, text, int, float, array
0080 * @param priority $getpriority
0081 * @param default $default
0082 * @return data
0083 */
0084 public static function readdata($key,$type='raw',$getpriority=false,$default='') {
0085 if($getpriority) {
0086 if(isset($_GET[$key])) {
0087 $data=$_GET[$key];
0088 } elseif(isset($_POST[$key])) {
0089 $data=$_POST[$key];
0090 } else {
0091 if($default=='') {
0092 if(($type=='int') or ($type=='float')) $data=0; else $data='';
0093 } else {
0094 $data=$default;
0095 }
0096 }
0097 } else {
0098 if(isset($_POST[$key])) {
0099 $data=$_POST[$key];
0100 } elseif(isset($_GET[$key])) {
0101 $data=$_GET[$key];
0102 } elseif(isset($_COOKIE[$key])) {
0103 $data=$_COOKIE[$key];
0104 } else {
0105 if($default=='') {
0106 if(($type=='int') or ($type=='float')) $data=0; else $data='';
0107 } else {
0108 $data=$default;
0109 }
0110 }
0111 }
0112
0113 if($type=='raw') return($data);
0114 elseif($type=='text') return(addslashes(strip_tags($data)));
0115 elseif($type=='int') { $data = (int) $data; return($data); }
0116 elseif($type=='float') { $data = (float) $data; return($data); }
0117 elseif($type=='array') { $data = $data; return($data); }
0118 else { H01_UTIL::exception('readdata: internal error:'.$type); return(false); }
0119 }
0120
0121
0122 /**
0123 main function to handle the REST request
0124 **/
0125 public static function handle() {
0126
0127 // overwrite the 404 error page returncode
0128 header("HTTP/1.0 200 OK");
0129
0130
0131 if($_SERVER['REQUEST_METHOD'] == 'GET') {
0132 $method='get';
0133 }elseif($_SERVER['REQUEST_METHOD'] == 'PUT') {
0134 $method='put';
0135 parse_str(file_get_contents("php://input"),$put_vars);
0136 }elseif($_SERVER['REQUEST_METHOD'] == 'POST') {
0137 $method='post';
0138 }else{
0139 echo('internal server error: method not supported');
0140 exit();
0141 }
0142
0143 // preprocess url
0144 $url=$_SERVER['PHP_SELF'];
0145 if(substr($url,(strlen($url)-1))<>'/') $url.='/';
0146 $ex=explode('/',$url);
0147
0148 // eventhandler
0149 if(count($ex)==2){
0150 H01_GUI::showtemplate('apidoc');
0151
0152
0153 // CONFIG
0154 // apiconfig - GET - CONFIG
0155 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='config') and (count($ex)==4)){
0156 $format=H01_OCS::readdata('format','text');
0157 H01_OCS::apiconfig($format);
0158
0159
0160 // PERSON
0161 // personsearch - GET - PERSON/DATA parameter als url parameter
0162 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='data') and (count($ex)==5)){
0163 $format=H01_OCS::readdata('format','text');
0164 $username=H01_OCS::readdata('name','text');
0165 $country=H01_OCS::readdata('country','text');
0166 $city=H01_OCS::readdata('city','text');
0167 $description=H01_OCS::readdata('description','text');
0168 $pc=H01_OCS::readdata('pc','text');
0169 $software=H01_OCS::readdata('software','text');
0170 $longitude=H01_OCS::readdata('longitude','float');
0171 $latitude=H01_OCS::readdata('latitude','float');
0172 $distance=H01_OCS::readdata('distance','float');
0173
0174 $attributeapp=H01_OCS::readdata('attributeapp','text');
0175 $attributekey=H01_OCS::readdata('attributekey','text');
0176 $attributevalue=H01_OCS::readdata('attributevalue','text');
0177
0178 $page=H01_OCS::readdata('page','int');
0179 $pagesize=H01_OCS::readdata('pagesize','int');
0180 if($pagesize<1 or $pagesize>100) $pagesize=10;
0181 H01_OCS::personsearch($format,$username,$country,$city,$description,$pc,$software,$longitude,$latitude,$distance,$attributeapp,$attributekey,$attributevalue,$page,$pagesize);
0182
0183 // personget - GET - PERSON/DATA/frank
0184 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='data') and (count($ex)==6)){
0185 $format=H01_OCS::readdata('format','text');
0186 $username=addslashes($ex[4]);
0187 H01_OCS::personget($format,$username);
0188
0189 // personaccountbalance - GET - PERSON/BALANCE
0190 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='balance') and (count($ex)==5)){
0191 $format=H01_OCS::readdata('format','text');
0192 H01_OCS::persongetbalance($format);
0193
0194 // personget - GET - PERSON/SELF
0195 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='self') and (count($ex)==5)){
0196 $format=H01_OCS::readdata('format','text');
0197 H01_OCS::personget($format);
0198
0199 // personedit - POST - PERSON/SELF
0200 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='self') and (count($ex)==5)){
0201 $format=H01_OCS::readdata('format','text');
0202 $longitude=H01_OCS::readdata('longitude','float');
0203 $latitude=H01_OCS::readdata('latitude','float');
0204 $country=H01_OCS::readdata('country','text');
0205 $city=H01_OCS::readdata('city','text');
0206 H01_OCS::personedit($format,$longitude,$latitude,$country,$city);
0207
0208 // personcheck - POST - PERSON/CHECK
0209 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='check') and (count($ex)==5)){
0210 $format=H01_OCS::readdata('format','text');
0211 $login=H01_OCS::readdata('login','text');
0212 $passwd=H01_OCS::readdata('password','text');
0213 H01_OCS::personcheck($format,$login,$passwd);
0214
0215 // personadd - POST - PERSON/ADD
0216 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='add') and (count($ex)==5)){
0217 $format=H01_OCS::readdata('format','text');
0218 $login=H01_OCS::readdata('login','text');
0219 $passwd=H01_OCS::readdata('password','text');
0220 $firstname=H01_OCS::readdata('firstname','text');
0221 $lastname=H01_OCS::readdata('lastname','text');
0222 $email=H01_OCS::readdata('email','text');
0223 H01_OCS::personadd($format,$login,$passwd,$firstname,$lastname,$email);
0224
0225 // persongetea - GET - PERSON/ATTRIBUTES/frank/parley/key
0226 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='attributes') and (count($ex)==8)){
0227 $format=H01_OCS::readdata('format','text');
0228 $username= addslashes($ex[4]);
0229 $app= addslashes($ex[5]);
0230 $key= addslashes($ex[6]);
0231 H01_OCS::personattributeget($format,$username,$app,$key);
0232
0233 // persongetea - GET - PERSON/ATTRIBUTES/frank/parley
0234 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='attributes') and (count($ex)==7)){
0235 $format=H01_OCS::readdata('format','text');
0236 $username= addslashes($ex[4]);
0237 $app= addslashes($ex[5]);
0238 $key= '';
0239 H01_OCS::personattributeget($format,$username,$app,$key);
0240
0241 // persongetea - GET - PERSON/ATTRIBUTES/frank
0242 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='attributes') and (count($ex)==6)){
0243 $format=H01_OCS::readdata('format','text');
0244 $username= addslashes($ex[4]);
0245 $app= '';
0246 $key= '';
0247 H01_OCS::personattributeget($format,$username,$app,$key);
0248
0249 // persondeleteea - POST - PERSON/DELETEATTRIBUTE/app/key
0250 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='deleteattribute') and (count($ex)==7)){
0251 $format=H01_OCS::readdata('format','text');
0252 $app= addslashes($ex[4]);
0253 $key= addslashes($ex[5]);
0254 H01_OCS::personattributedelete($format,$app,$key);
0255
0256 // personsetea - POST - PERSON/SETATTRIBUTE/app/key
0257 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='person') and (strtolower($ex[3])=='setattribute') and (count($ex)==7)){
0258 $format=H01_OCS::readdata('format','text');
0259 $app= addslashes($ex[4]);
0260 $key= addslashes($ex[5]);
0261 $value=H01_OCS::readdata('value','text');
0262 H01_OCS::personattributeset($format,$app,$key,$value);
0263
0264
0265
0266 // FAN
0267 //fanget - GET - FAN/DATA/"contentid" - page,pagesize als url parameter,
0268 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='fan') and (strtolower($ex[3])=='data') and (count($ex)==6)){
0269 $format=H01_OCS::readdata('format','text');
0270 $content=addslashes($ex[4]);
0271 $page=H01_OCS::readdata('page','int');
0272 $pagesize=H01_OCS::readdata('pagesize','int');
0273 if($pagesize<1 or $pagesize>100) $pagesize=10;
0274 H01_OCS::fanget($format,$content,$page,$pagesize);
0275
0276 //isfan - GET - FAN/STATUS/"contentid"
0277 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='fan') and (strtolower($ex[3])=='status') and (count($ex)==6)){
0278 $format=H01_OCS::readdata('format','text');
0279 $content=addslashes($ex[4]);
0280 H01_OCS::isfan($format,$content);
0281
0282 //addfan - POST - FAN/ADD/"contentid"
0283 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='fan') and (strtolower($ex[3])=='add') and (count($ex)==6)){
0284 $format=H01_OCS::readdata('format','text');
0285 $content=addslashes($ex[4]);
0286 H01_OCS::addfan($format,$content);
0287
0288 //removefan - POST - FAN/REMOVE/"contentid"
0289 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='fan') and (strtolower($ex[3])=='remove') and (count($ex)==6)){
0290 $format=H01_OCS::readdata('format','text');
0291 $content=addslashes($ex[4]);
0292 H01_OCS::removefan($format,$content);
0293
0294
0295
0296 // FRIEND
0297 //friendget - GET - FRIEND/DATA/"personid" - page,pagesize als url parameter,
0298 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='friend') and (strtolower($ex[3])=='data') and (count($ex)==6)){
0299 $format=H01_OCS::readdata('format','text');
0300 $username=addslashes($ex[4]);
0301 $page=H01_OCS::readdata('page','int');
0302 $pagesize=H01_OCS::readdata('pagesize','int');
0303 if($pagesize<1 or $pagesize>100) $pagesize=10;
0304 H01_OCS::friendget($format,$username,$page,$pagesize);
0305
0306 //friendinvite - POST - FRIEND/INVITE/"username"/ message als url parameter
0307 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='friend') and (strtolower($ex[3])=='invite') and (count($ex)==6)){
0308 $format=H01_OCS::readdata('format','text');
0309 $username=addslashes($ex[4]);
0310 $message=H01_OCS::readdata('message','text');
0311 H01_OCS::friendinvite($format,$username,$message);
0312
0313 //friendapprove - POST - FRIEND/APPROVE/"username"/
0314 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='friend') and (strtolower($ex[3])=='approve') and (count($ex)==6)){
0315 $format=H01_OCS::readdata('format','text');
0316 $username=addslashes($ex[4]);
0317 H01_OCS::friendapprove($format,$username);
0318
0319 //frienddecline - POST - FRIEND/DECLINE/"username"/
0320 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='friend') and (strtolower($ex[3])=='decline') and (count($ex)==6)){
0321 $format=H01_OCS::readdata('format','text');
0322 $username=addslashes($ex[4]);
0323 H01_OCS::frienddecline($format,$username);
0324
0325 //friendcancel - POST - FRIEND/CANCEL/"username"/
0326 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='friend') and (strtolower($ex[3])=='cancel') and (count($ex)==6)){
0327 $format=H01_OCS::readdata('format','text');
0328 $username=addslashes($ex[4]);
0329 H01_OCS::friendcancel($format,$username);
0330
0331 //friendcancelinvitation - POST - FRIEND/CANCEL/"username"/
0332 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='friend') and (strtolower($ex[3])=='cancelinvitation') and (count($ex)==6)){
0333 $format=H01_OCS::readdata('format','text');
0334 $username=addslashes($ex[4]);
0335 H01_OCS::friendcancelinvitation($format,$username);
0336
0337 //friendsentinvitations - GET - FRIEND/SENTINVITATIONS/
0338 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='friend') and (strtolower($ex[3])=='sentinvitations') and (count($ex)==5)){
0339 $format=H01_OCS::readdata('format','text');
0340 $page=H01_OCS::readdata('page','int');
0341 $pagesize=H01_OCS::readdata('pagesize','int');
0342 if($pagesize<1 or $pagesize>100) $pagesize=10;
0343 H01_OCS::friendsentinvitations($format,$page,$pagesize);
0344
0345 //friendreceivedinvitations - GET - FRIEND/RECEIVEDINVITATIONS/
0346 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='friend') and (strtolower($ex[3])=='receivedinvitations') and (count($ex)==5)){
0347 $format=H01_OCS::readdata('format','text');
0348 $page=H01_OCS::readdata('page','int');
0349 $pagesize=H01_OCS::readdata('pagesize','int');
0350 if($pagesize<1 or $pagesize>100) $pagesize=10;
0351 H01_OCS::friendreceivedinvitations($format,$page,$pagesize);
0352
0353
0354 // MESSAGE
0355 //messagefolders - GET - MESSAGE/
0356 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='message') and (count($ex)==4)){
0357 $format=H01_OCS::readdata('format','text');
0358 H01_OCS::messagefolders($format);
0359
0360 //messagelist - GET - MESSAGE/"folderid"/ page,pagesize als url parameter
0361 }elseif((($method=='get') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='message') and (count($ex)==5)){
0362 $format=H01_OCS::readdata('format','text');
0363 $folder= (int) addslashes($ex[3]);
0364 $filter=H01_OCS::readdata('status','text');
0365 $page=H01_OCS::readdata('page','int');
0366 $pagesize=H01_OCS::readdata('pagesize','int');
0367 if($pagesize<1 or $pagesize>100) $pagesize=10;
0368 H01_OCS::messagelist($format,$folder,$page,$pagesize,$filter);
0369
0370 // messagesend - POST - MESSAGE/"folderid"
0371 }elseif(($method=='post') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='message') and (strtolower($ex[3])=='2') and (count($ex)==5)){
0372 $format=H01_OCS::readdata('format','text');
0373 $touser=H01_OCS::readdata('to','text');
0374 $subject=H01_OCS::readdata('subject','text');
0375 $message=H01_OCS::readdata('message','text');
0376 H01_OCS::messagesend($format,$touser,$subject,$message);
0377
0378 // messageget - GET - MESSAGE/"folderid"/"messageid"
0379 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='message') and (count($ex)==6)){
0380 $format=H01_OCS::readdata('format','text');
0381 $folder= (int) addslashes($ex[3]);
0382 $message= (int) addslashes($ex[4]);
0383 H01_OCS::messageget($format,$folder,$message);
0384
0385
0386 // ACTIVITY
0387 // activityget - GET ACTIVITY page,pagesize als urlparameter
0388 }elseif(($method=='get') and (strtolower($ex[1])=='v1')and (strtolower($ex[2])=='activity') and (count($ex)==4)){
0389 $format=H01_OCS::readdata('format','text');
0390 $page=H01_OCS::readdata('page','int');
0391 $pagesize=H01_OCS::readdata('pagesize','int');
0392 if($pagesize<1 or $pagesize>100) $pagesize=10;
0393 H01_OCS::activityget($format,$page,$pagesize);
0394
0395 // activityput - POST ACTIVITY
0396 }elseif(($method=='post') and (strtolower($ex[1])=='v1')and (strtolower($ex[2])=='activity') and (count($ex)==4)){
0397 $format=H01_OCS::readdata('format','text');
0398 $message=H01_OCS::readdata('message','text');
0399 H01_OCS::activityput($format,$message);
0400
0401
0402 // CONTENT
0403 // contentcategories - GET - CONTENT/CATEGORIES
0404 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='categories') and (count($ex)==5)){
0405 $format=H01_OCS::readdata('format','text');
0406 H01_OCS::contentcategories($format);
0407
0408 // contentlicense - GET - CONTENT/LICENSES
0409 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='licenses') and (count($ex)==5)){
0410 $format=H01_OCS::readdata('format','text');
0411 H01_OCS::contentlicenses($format);
0412
0413 // contentdistributions - GET - CONTENT/DISTRIBUTIONS
0414 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='distributions') and (count($ex)==5)){
0415 $format=H01_OCS::readdata('format','text');
0416 H01_OCS::contentdistributions($format);
0417
0418 // contentdependencies - GET - CONTENT/DISTRIBUTIONS
0419 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='dependencies') and (count($ex)==5)){
0420 $format=H01_OCS::readdata('format','text');
0421 H01_OCS::contentdependencies($format);
0422
0423 // contenthomepage - GET - CONTENT/HOMPAGES
0424 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='homepages') and (count($ex)==5)){
0425 $format=H01_OCS::readdata('format','text');
0426 H01_OCS::contenthomepages($format);
0427
0428
0429 // contentlist - GET - CONTENT/DATA - category,search,sort,page,pagesize
0430 }elseif((($method=='get') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='data') and (count($ex)==5)){
0431 $format=H01_OCS::readdata('format','text');
0432 $contents=H01_OCS::readdata('categories','text');
0433 $searchstr=H01_OCS::readdata('search','text');
0434 $searchuser=H01_OCS::readdata('user','text');
0435 $external=H01_OCS::readdata('external','text');
0436 $distribution=H01_OCS::readdata('distribution','text');
0437 $license=H01_OCS::readdata('license','text');
0438 $sortmode=H01_OCS::readdata('sortmode','text');
0439 $page=H01_OCS::readdata('page','int');
0440 $pagesize=H01_OCS::readdata('pagesize','int');
0441 if($pagesize<1 or $pagesize>100) $pagesize=10;
0442 H01_OCS::contentlist($format,$contents,$searchstr,$searchuser,$external,$distribution,$license,$sortmode,$page,$pagesize);
0443
0444 // contentget - GET - CONTENT/DATA/"id"
0445 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='data') and (count($ex)==6)){
0446 $format=H01_OCS::readdata('format','text');
0447 $id= addslashes($ex[4]);
0448 H01_OCS::contentget($format,$id);
0449
0450 // contentdownload - GET - CONTENT/DOWNLOAD/"id"/"item"
0451 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='download') and (count($ex)==7)){
0452 $format=H01_OCS::readdata('format','text');
0453 $id= addslashes($ex[4]);
0454 $item= addslashes($ex[5]);
0455 H01_OCS::contentdownload($format,$id,$item);
0456
0457 // getrecommendations - GET - CONTENT/RECOMMENDATIONS/"id"
0458 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='recommendations') and (count($ex)==6)){
0459 $format=H01_OCS::readdata('format','text');
0460 $id= addslashes($ex[4]);
0461 $page=H01_OCS::readdata('page','int');
0462 $pagesize=H01_OCS::readdata('pagesize','int');
0463 H01_OCS::contentrecommendations($id,$format,$page,$pagesize);
0464
0465
0466 // contentvote - POST - CONTENT/VOTE/"id" - good/bad als url parameter
0467 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='vote') and (count($ex)==6)){
0468 $format=H01_OCS::readdata('format','text');
0469 $id= addslashes($ex[4]);
0470 $vote=H01_OCS::readdata('vote','text');
0471 H01_OCS::contentvote($format,$id,$vote);
0472
0473 // contentpreviewdelete - POST - CONTENT/DELETEPREVIEW/"contentid"/"previewid"
0474 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='deletepreview') and (count($ex)==7)){
0475 $format=H01_OCS::readdata('format','text');
0476 $contentid= addslashes($ex[4]);
0477 $previewid= addslashes($ex[5]);
0478 H01_OCS::contentpreviewdelete($format,$contentid,$previewid);
0479
0480 // contentpreviewupload - POST - CONTENT/UPLOADPREVIEW/"contentid"/"previewid"
0481 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='uploadpreview') and (count($ex)==7)){
0482 $format=H01_OCS::readdata('format','text');
0483 $contentid= addslashes($ex[4]);
0484 $previewid= addslashes($ex[5]);
0485 H01_OCS::contentpreviewupload($format,$contentid,$previewid);
0486
0487 // contentdownloaddelete - POST - CONTENT/DELETEDOWNLOAD/"contentid"
0488 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='deletedownload') and (count($ex)==6)){
0489 $format=H01_OCS::readdata('format','text');
0490 $contentid= addslashes($ex[4]);
0491 H01_OCS::contentdownloaddelete($format,$contentid);
0492
0493 // contentdownloadupload - POST - CONTENT/UPLOADDOWNLOAD/"contentid"
0494 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='uploaddownload') and (count($ex)==6)){
0495 $format=H01_OCS::readdata('format','text');
0496 $contentid= addslashes($ex[4]);
0497 H01_OCS::contentdownloadupload($format,$contentid);
0498
0499 // contentadd - POST - CONTENT/ADD
0500 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='add') and (count($ex)==5)){
0501 $format=H01_OCS::readdata('format','text');
0502 H01_OCS::contentadd($format);
0503
0504 // contentedit - POST - CONTENT/EDIT/"contentid"
0505 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='edit') and (count($ex)==6)){
0506 $format=H01_OCS::readdata('format','text');
0507 $contentid= addslashes($ex[4]);
0508 H01_OCS::contentedit($format,$contentid);
0509
0510 // contentdelete - POST - CONTENT/DELETE/"contentid"
0511 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='content') and (strtolower($ex[3])=='delete') and (count($ex)==6)){
0512 $format=H01_OCS::readdata('format','text');
0513 $contentid= addslashes($ex[4]);
0514 H01_OCS::contentdelete($format,$contentid);
0515
0516
0517
0518 // KNOWLEDGEBASE
0519
0520 // knowledgebaseget - GET - KNOWLEDGEBASE/DATA/"id"
0521 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='knowledgebase') and (strtolower($ex[3])=='data') and (count($ex)==6)){
0522 $format=H01_OCS::readdata('format','text');
0523 $id= addslashes($ex[4]);
0524 H01_OCS::knowledgebaseget($format,$id);
0525
0526 // knowledgebaselist - GET - KNOWLEDGEBASE/DATA - category,search,sort,page,pagesize
0527 }elseif((($method=='get') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='knowledgebase') and (strtolower($ex[3])=='data') and (count($ex)==5)){
0528 $format=H01_OCS::readdata('format','text');
0529 $contents=H01_OCS::readdata('content','text');
0530 $searchstr=H01_OCS::readdata('search','text');
0531 $sortmode=H01_OCS::readdata('sortmode','text');
0532 $page=H01_OCS::readdata('page','int');
0533 $pagesize=H01_OCS::readdata('pagesize','int');
0534 if($pagesize<1 or $pagesize>100) $pagesize=10;
0535 H01_OCS::knowledgebaselist($format,$contents,$searchstr,$sortmode,$page,$pagesize);
0536
0537
0538 // EVENT
0539
0540 // eventget - GET - EVENT/DATA/"id"
0541 }elseif(($method=='get') and (strtolower($ex[1])=='v1') and (strtolower($ex[2])=='event') and (strtolower($ex[3])=='data') and (count($ex)==6)){
0542 $format=H01_OCS::readdata('format','text');
0543 $id= addslashes($ex[4]);
0544 H01_OCS::eventget($format,$id);
0545
0546 // eventlist - GET - EVENT/DATA - type,country,startat,search,sort,page,pagesize
0547 }elseif((($method=='get') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='event') and (strtolower($ex[3])=='data') and (count($ex)==5)){
0548 $format=H01_OCS::readdata('format','text');
0549 $type=H01_OCS::readdata('type','int');
0550 $country=H01_OCS::readdata('country','text');
0551 $startat=H01_OCS::readdata('startat','text');
0552 $searchstr=H01_OCS::readdata('search','text');
0553 $sortmode=H01_OCS::readdata('sortmode','text');
0554 $page=H01_OCS::readdata('page','int');
0555 $pagesize=H01_OCS::readdata('pagesize','int');
0556 if($pagesize<1 or $pagesize>100) $pagesize=10;
0557 H01_OCS::eventlist($format,$type,$country,$startat,$searchstr,$sortmode,$page,$pagesize);
0558
0559
0560 // eventadd - POST - EVENT/ADD
0561 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='event') and (strtolower($ex[3])=='add') and (count($ex)==5)){
0562 $format=H01_OCS::readdata('format','text');
0563 H01_OCS::eventadd($format);
0564
0565 // eventedit - POST - EVENT/EDIT/"eventid"
0566 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='event') and (strtolower($ex[3])=='edit') and (count($ex)==6)){
0567 $format=H01_OCS::readdata('format','text');
0568 $eventid= addslashes($ex[4]);
0569 H01_OCS::eventedit($format,$eventid);
0570
0571 // eventdelete - POST - EVENT/DELETE/"eventid"
0572 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='event') and (strtolower($ex[3])=='delete') and (count($ex)==6)){
0573 $format=H01_OCS::readdata('format','text');
0574 $eventid= addslashes($ex[4]);
0575 H01_OCS::eventdelete($format,$eventid);
0576
0577
0578 // COMMENTS
0579
0580 // commentsget - GET - COMMENTS/ADD
0581 }elseif((($method=='get') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='comments') and (strtolower($ex[3])=='data') and (count($ex)==8)){
0582 $type= addslashes($ex[4]);
0583 $content= addslashes($ex[5]);
0584 $content2= addslashes($ex[6]);
0585 $format=H01_OCS::readdata('format','text');
0586 $page=H01_OCS::readdata('page','int');
0587 $pagesize=H01_OCS::readdata('pagesize','int');
0588 if($pagesize<1 or $pagesize>2000) $pagesize=10;
0589 H01_OCS::commentsget($format,$type,$content,$content2,$page,$pagesize);
0590
0591 // commentsadd - POST - COMMENTS/ADD
0592 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='comments') and (strtolower($ex[3])=='add') and (count($ex)==5)){
0593 $format=H01_OCS::readdata('format','text');
0594 $type=H01_OCS::readdata('type','int');
0595 $content=H01_OCS::readdata('content','int');
0596 $content2=H01_OCS::readdata('content2','int');
0597 $parent=H01_OCS::readdata('parent','int');
0598 $subject=H01_OCS::readdata('subject','text');
0599 $message=H01_OCS::readdata('message','text');
0600 H01_OCS::commentsadd($format,$type,$content,$content2,$parent,$subject,$message);
0601
0602 // commentvote - GET - COMMENTS/vote
0603 }elseif((($method=='post') and strtolower($ex[1])=='v1') and (strtolower($ex[2])=='comments') and (strtolower($ex[3])=='vote') and (count($ex)==6)){
0604 $id = addslashes($ex[4]);
0605 $score = H01_OCS::readdata('score','int');
0606 $format=H01_OCS::readdata('format','text');
0607 H01_OCS::commentvote($format,$id,$score);
0608
0609
0610 // FORUM
0611
0612 }elseif(strtolower($ex[1])=='v1' and strtolower($ex[2])=='forum'){
0613 $functioncall=strtolower($ex[3]);
0614 $subcall=strtolower($ex[4]);
0615 $argumentcount=count($ex);
0616 // list - GET - FORUM/LIST
0617 if($method=='get' and $functioncall=='list' and $argumentcount==4){
0618 $format=H01_OCS::readdata('format','text');
0619 $page=H01_OCS::readdata('page','int');
0620 $pagesize=H01_OCS::readdata('pagesize','int');
0621 // TOPIC section
0622 }elseif($functioncall=='topic'){
0623 // list - GET - FORUM/TOPIC/LIST
0624 if($method=='get' and $subcall=='list' and $argumentcount==10){
0625 $format=H01_OCS::readdata('format','text');
0626 $forum=H01_OCS::readdata('forum','int');
0627 $search=H01_OCS::readdata('search','text');
0628 $description=H01_OCS::readdata('description','text');
0629 $sortmode=H01_OCS::readdata('sortmode','text');
0630 $page=H01_OCS::readdata('page','int');
0631 $pagesize=H01_OCS::readdata('pagesize','int');
0632 // add - POST - FORUM/TOPIC/ADD
0633 }elseif($method=='post' and $subcall=='add' and $argumentcount==5){
0634 $format=H01_OCS::readdata('format','text');
0635 $subject=H01_OCS::readdata('subject','text');
0636 $content=H01_OCS::readdata('content','text');
0637 $forum=H01_OCS::readdata('forum','int');
0638 }
0639 }
0640
0641 // BUILDSERVICE
0642
0643
0644 }elseif(strtolower($ex[1])=='v1' and strtolower($ex[2])=='buildservice' and count($ex)>4){
0645 $functioncall=strtolower($ex[4]);
0646 $argumentcount=count($ex);
0647 // PROJECT section
0648 if(strtolower($ex[3]=='project')){
0649 // create - POST - PROJECT/CREATE
0650 if($method=='post' and $functioncall=='create' and $argumentcount==6){
0651 $format=H01_OCS::readdata('format','text');
0652 $name=H01_OCS::readdata('name','text');
0653 $version=H01_OCS::readdata('version','text');
0654 $license=H01_OCS::readdata('license','text');
0655 $url=H01_OCS::readdata('url','text');
0656 $developers=H01_OCS::readdata('developers','text');
0657 $summary=H01_OCS::readdata('summary','text');
0658 $description=H01_OCS::readdata('description','text');
0659 $requirements=H01_OCS::readdata('requirements','text');
0660 $specfile=H01_OCS::readdata('specfile','text');
0661
0662 H01_OCS::buildserviceprojectcreate($format,$name,$version,$license,$url,$developers,$summary,$description,$requirements,$specfile);
0663 // get - GET - PROJECT/GET/"project"
0664 }elseif($method=='get' and $functioncall=='get' and $argumentcount==7){
0665 $format=H01_OCS::readdata('format','text');
0666 $projectID=$ex[5];
0667
0668 H01_OCS::buildserviceprojectget($format,$projectID);
0669 // delete - POST - PROJECT/DELETE/"project"
0670 }elseif($method=='post' and $functioncall=='delete' and $argumentcount==7){
0671 $format=H01_OCS::readdata('format','text');
0672 $projectID=$ex[5];
0673
0674 H01_OCS::buildserviceprojectdelete($format,$projectID);
0675 // edit - POST - ROJECT/EDIT/"project"
0676 }elseif($method=='post' and $functioncall=='edit' and $argumentcount==7){
0677 $format=H01_OCS::readdata('format','text');
0678 $projectID=$ex[5];
0679 $name=H01_OCS::readdata('name','text');
0680 $version=H01_OCS::readdata('version','text');
0681 $license=H01_OCS::readdata('license','text');
0682 $url=H01_OCS::readdata('url','text');
0683 $developers=H01_OCS::readdata('developers','text');
0684 $summary=H01_OCS::readdata('summary','text');
0685 $description=H01_OCS::readdata('description','text');
0686 $requirements=H01_OCS::readdata('requirements','text');
0687 $specfile=H01_OCS::readdata('specfile','text');
0688 H01_OCS::buildserviceprojectedit($format,$projectID,$name,$version,$license,$url,$developers,$summary,$description,$requirements,$specfile);
0689 // listall - GET - PROJECT/LIST
0690 }elseif($method=='get' and $functioncall=='list' and $argumentcount==6){
0691 $format=H01_OCS::readdata('format','text');
0692 $page=H01_OCS::readdata('page','int');
0693 $pagesize=H01_OCS::readdata('pagesize','int');
0694 H01_OCS::buildserviceprojectlist($format,$page,$pagesize);
0695 // generatespecfile - GET - PROJECT/UPLOADSOURCE
0696 }elseif($method=='post' and $functioncall=='uploadsource' and $argumentcount==7){
0697 $format=H01_OCS::readdata('format','text');
0698 $projectID=$ex[5];
0699 H01_OCS::buildserviceprojectuploadsource($format,$projectID);
0700 }else{
0701 H01_OCS::reportapisyntaxerror('buildservice/project');
0702 }
0703 // REMOTEACCOUNTS section
0704 }elseif(strtolower($ex[3])=='remoteaccounts'){
0705 if($method=='get' and $functioncall=='list' and $argumentcount==6){
0706 $format=H01_OCS::readdata('format','text');
0707 $page=H01_OCS::readdata('page','int');
0708 $pagesize=H01_OCS::readdata('pagesize','int');
0709 H01_OCS::buildserviceremoteaccountslist($format,$page,$pagesize);
0710 }elseif($method=='post' and $functioncall=='add' and $argumentcount==6){
0711 $format=H01_OCS::readdata('format','text');
0712 $type=H01_OCS::readdata('type','int');
0713 $typeid=H01_OCS::readdata('typeid','text');
0714 $data=H01_OCS::readdata('data','text');
0715 $login=H01_OCS::readdata('login','text');
0716 $password=H01_OCS::readdata('password','text');
0717 H01_OCS::buildserviceremoteaccountsadd($format,$type,$typeid,$data,$login,$password);
0718 }elseif($method=='post' and $functioncall=='edit' and $argumentcount==7){
0719 $format=H01_OCS::readdata('format','text');
0720 $id=$ex[5];
0721 $data=H01_OCS::readdata('data','text');
0722 $login=H01_OCS::readdata('login','text');
0723 $password=H01_OCS::readdata('password','text');
0724 H01_OCS::buildserviceremoteaccountsedit($format,$id,$login,$password,$data);
0725 }elseif($method=='get' and $functioncall=='get' and $argumentcount==7){
0726 $format=H01_OCS::readdata('format','text');
0727 $id=$ex[5];
0728 H01_OCS::buildserviceremoteaccountsget($format,$id);
0729 }elseif($method=='post' and $functioncall=='remove' and $argumentcount==7){
0730 $format=H01_OCS::readdata('format','text');
0731 $id=$ex[5];
0732 H01_OCS::buildserviceremoteaccountsremove($format,$id);
0733 }else{
0734 H01_OCS::reportapisyntaxerror('buildservice/remoteaccounts');
0735 }
0736 // BUILDSERVICES section
0737 }elseif(strtolower($ex[3]=='buildservices')){
0738 if($method=='get' and $functioncall=='list' and $argumentcount==6){
0739 $format=H01_OCS::readdata('format','text');
0740 $page=H01_OCS::readdata('page','int');
0741 $pagesize=H01_OCS::readdata('pagesize','int');
0742 H01_OCS::buildservicebuildserviceslist($format,$page,$pagesize);
0743 }elseif($method=='get' and $functioncall=='get' and $argumentcount==7){
0744 $format=H01_OCS::readdata('format','text');
0745 $buildserviceID=$ex[5];
0746 H01_OCS::buildservicebuildservicesget($format,$buildserviceID);
0747 }else{
0748 H01_OCS::reportapisyntaxerror('buildservice/buildservices');
0749 }
0750 // JOBS section
0751 }elseif(strtolower($ex[3]=='jobs')){
0752 // getbuildcapabilities - GET - JOBS/GETBUILDCAPABILITIES
0753 if($method=='get' and $functioncall=='list' and $argumentcount==7){
0754 $format=H01_OCS::readdata('format','text');
0755 $projectID=$ex[5];
0756 $page=H01_OCS::readdata('page','int');
0757 $pagesize=H01_OCS::readdata('pagesize','int');
0758 H01_OCS::buildservicejobslist($format,$projectID,$page,$pagesize);
0759 // create - POST - JOBS/CREATE/"project"/"buildsevice"/"target"
0760 }elseif($method=='post' and $functioncall=='create' and $argumentcount==9){
0761 $format=H01_OCS::readdata('format','text');
0762 $projectID=$ex[5];
0763 $buildserviceID=$ex[6];
0764 $target=$ex[7];
0765 H01_OCS::buildservicejobscreate($format,$projectID,$buildserviceID,$target);
0766 // cancel - POST - JOBS/CANCEL/"buildjob"
0767 }elseif($method=='post' and $functioncall=='cancel' and $argumentcount==7){
0768 $format=H01_OCS::readdata('format','text');
0769 $buildjobID=$ex[5];
0770 H01_OCS::buildservicejobscancel($format,$buildjobID);
0771 // get - GET - JOBS/GET/"buildjob"
0772 }elseif($method=='get' and $functioncall=='get' and $argumentcount==7){
0773 $format=H01_OCS::readdata('format','text');
0774 $buildjobID=$ex[5];
0775 H01_OCS::buildservicejobsget($format,$buildjobID);
0776 // getoutput - GET - JOBS/GETOUTPOT/"buildjob"
0777 }elseif($method=='get' and $functioncall=='getoutput' and $argumentcount==7){
0778 $format=H01_OCS::readdata('format','text');
0779 $buildjobID=$ex[5];
0780 H01_OCS::buildservicejobsgetoutput($format,$buildjobID);
0781 }else{
0782 H01_OCS::reportapisyntaxerror('buildservice/jobs');
0783 }
0784 // PUBLISHING section
0785 }elseif(strtolower($ex[3]=='publishing')){
0786 // getpublishingcapabilities - GET - PUBLISHING/GETPUBLISHINGCAPABILITIES
0787 if($method=='get' and $functioncall=='getpublishingcapabilities' and $argumentcount==6){
0788 $format=H01_OCS::readdata('format','text');
0789 $page=H01_OCS::readdata('page','int');
0790 $pagesize=H01_OCS::readdata('pagesize','int');
0791 H01_OCS::buildservicepublishinggetpublishingcapabilities($format,$page,$pagesize);
0792 // getpublisher - GET - PUBLISHING/GETPUBLISHER
0793 }elseif($method=='get' and $functioncall=='getpublisher' and $argumentcount==7){
0794 $format=H01_OCS::readdata('format','text');
0795 $publisherID=$ex[5];
0796 H01_OCS::buildservicepublishinggetpublisher($format,$publisherID);
0797 // publishtargetresult - POST - PUBLISHING/PUBLISHTARGETRESULT/"buildjob"/"publisher"
0798 }elseif($method=='post' and $functioncall=='publishtargetresult' and $argumentcount==8){
0799 $format=H01_OCS::readdata('format','text');
0800 $buildjobID=$ex[5];
0801 $publisherID=$ex[6];
0802 H01_OCS::buildservicepublishingpublishtargetresult($format,$buildjobID,$publisherID);
0803 // savefields - POST - PUBLISHING/SAVEFIELDS/"project"
0804 }elseif($method=='post' and $functioncall=='savefields' and $argumentcount==7){
0805 $format=H01_OCS::readdata('format','text');
0806 $projectID=$ex[5];
0807 $fields=H01_OCS::readdata('fields','array');
0808 H01_OCS::buildservicepublishingsavefields($format,$projectID,$fields);
0809 // getfields - GET - PUBLISHING/GETFIELDS/"project"
0810 }elseif($method=='get' and $functioncall=='getfields' and $argumentcount==7){
0811 $format=H01_OCS::readdata('format','text');
0812 $projectID=$ex[5];
0813 H01_OCS::buildservicepublishinggetfields($format,$projectID);
0814 }else{
0815 H01_OCS::reportapisyntaxerror('buildservice/publishing');
0816 }
0817 }else{
0818 H01_OCS::reportapisyntaxerror('buildservice');
0819 }
0820
0821
0822 }else{
0823 $format=H01_OCS::readdata('format','text');
0824 $txt='please check the syntax. api specifications are here: http://www.freedesktop.org/wiki/Specifications/open-collaboration-services'."\n";
0825 $txt.=H01_OCS::getdebugoutput();
0826 echo(H01_OCS::generatexml($format,'failed',999,$txt));
0827 }
0828 exit();
0829 }
0830
0831 /**
0832 * Use this function to inform the user that there is a syntax error in the API call. The function
0833 * will inform the user which module the error occured in.
0834 * @param apimodule The name of the module the error occured in
0835 */
0836 private static function reportapisyntaxerror($apimodule){
0837 $format=H01_OCS::readdata('format','text');
0838 $txt='please check the syntax of the module '.$apimodule.'. api specifications are here: http://www.freedesktop.org/wiki/Specifications/open-collaboration-services'."\n";
0839 $txt.=H01_OCS::getdebugoutput();
0840 echo(H01_OCS::generatexml($format,'failed',999,$txt));
0841 }
0842
0843 /**
0844 * generated some debug information to make it easier to find faild API calls
0845 * @return debug data string
0846 */
0847 private static function getdebugoutput() {
0848 $txt='';
0849 $txt.="debug output:\n";
0850 if(isset($_SERVER['REQUEST_METHOD'])) $txt.='http request method: '.$_SERVER['REQUEST_METHOD']."\n";
0851 if(isset($_SERVER['REQUEST_URI'])) $txt.='http request uri: '.$_SERVER['REQUEST_URI']."\n";
0852 if(isset($_GET)) foreach($_GET as $key=>$value) $txt.='get parameter: '.$key.'->'.$value."\n";
0853 if(isset($_POST)) foreach($_POST as $key=>$value) $txt.='post parameter: '.$key.'->'.$value."\n";
0854 return($txt);
0855 }
0856
0857 /**
0858 * checks if the user is authenticated
0859 * checks the IP whitlist, apikeys and login/password combination
0860 * if $forceuser is true and the authentication failed it returns an 401 http response.
0861 * if $forceuser is false and authentification fails it returns an empty username string
0862 * @param bool $forceuser
0863 * @return username string
0864 */
0865 private static function checkpassword($forceuser=true) {
0866
0867 // check whitelist
0868 if (in_array($_SERVER['REMOTE_ADDR'], H01_OCS::$whitelist)) {
0869 $identifieduser='';
0870 }else{
0871
0872 //valid user account ?
0873 if(isset($_SERVER['PHP_AUTH_USER'])) $authuser=$_SERVER['PHP_AUTH_USER']; else $authuser='';
0874 if(isset($_SERVER['PHP_AUTH_PW'])) $authpw=$_SERVER['PHP_AUTH_PW']; else $authpw='';
0875
0876 if(empty($authuser)) {
0877 if($forceuser){
0878 header('WWW-Authenticate: Basic realm="your valid user account or api key"');
0879 header('HTTP/1.0 401 Unauthorized');
0880 exit;
0881 }else{
0882 $identifieduser='';
0883 }
0884 }else{
0885
0886 $user=H01_USER::finduserbyapikey($authuser,CONFIG_USERDB);
0887 if($user==false) {
0888 $user=H01_USER::checklogin($authuser,CONFIG_USERDB,$authpw,PERM_Login);
0889 if($user==false) {
0890 if($forceuser){
0891 header('WWW-Authenticate: Basic realm="your valid user account or api key"');
0892 header('HTTP/1.0 401 Unauthorized');
0893 exit;
0894 }else{
0895 $identifieduser='';
0896 }
0897 }else{
0898 $identifieduser=$user;
0899 }
0900 }else{
0901 $identifieduser=$user;
0902 }
0903 }
0904 }
0905
0906 return($identifieduser);
0907 }
0908
0909
0910 /**
0911 * cleans up the api traffic limit database table.
0912 * this function should be call by a cronjob every 15 minutes
0913 */
0914 public static function cleanuptrafficlimit() {
0915 $result = H01_DB::query('truncate apitraffic');
0916 H01_DB::free_result($result);
0917 }
0918
0919
0920
0921 /**
0922 * check if the current user is allowed to do one more API call or if the traffic limit is exceeded.
0923 * @param string $user
0924 */
0925 private static function checktrafficlimit($user) {
0926 // BACKUP:
0927 // $result = $db->insert('apitraffic','into apitraffic (ip,count) values ('.ip2long($_SERVER['REMOTE_ADDR']).',1) on duplicate key update count=count+1');
0928 // TODO: now
0929 $result = $main->db->insert('apitraffic','into apitraffic (ip,count) values ('.ip2long($_SERVER['REMOTE_ADDR']).',1) on duplicate key update count=count+1');
0930 H01_DB::free_result($result);
0931
0932 $result = H01_DB::select('apitraffic','count from apitraffic where ip="'.ip2long($_SERVER['REMOTE_ADDR']).'"');
0933 $numrows = H01_DB::numrows($result);
0934 $DBcount=H01_DB::fetch_assoc($result);
0935 H01_DB::free_result($result);
0936
0937 if($numrows==0) return(true);
0938 if($user=='') $max=H01_OCS::$maxrequests; else $max=H01_OCS::$maxrequestsauthenticated;
0939
0940 if($DBcount['count']>$max) {
0941 $format=H01_OCS::readdata('format','text');
0942 echo(H01_OCS::generatexml($format,'failed',200,'too many API requests in the last 15 minutes from your IP address. please try again later.'));
0943 exit();
0944 }
0945 return(true);
0946
0947 }
0948
0949
0950
0951 /**
0952 * generates the xml or json response for the API call from an multidimenional data array.
0953 * @param string $format
0954 * @param string $status
0955 * @param string $statuscode
0956 * @param string $message
0957 * @param array $data
0958 * @param string $tag
0959 * @param string $tagattribute
0960 * @param int $dimension
0961 * @param int $itemscount
0962 * @param int $itemsperpage
0963 * @return string xml/json
0964 */
0965 private static function generatexml($format,$status,$statuscode,$message,$data=array(),$tag='',$tagattribute='',$dimension=-1,$itemscount='',$itemsperpage='') {
0966 if($format=='json') {
0967
0968 $json=array();
0969 $json['status']=$status;
0970 $json['statuscode']=$statuscode;
0971 $json['message']=$message;
0972 $json['totalitems']=$itemscount;
0973 $json['itemsperpage']=$itemsperpage;
0974 $json['data']=$data;
0975 return(json_encode($json));
0976
0977
0978 }else{
0979 $txt='';
0980 $writer = xmlwriter_open_memory();
0981 xmlwriter_set_indent( $writer, 2 );
0982 xmlwriter_start_document($writer );
0983 xmlwriter_start_element($writer,'ocs');
0984 xmlwriter_start_element($writer,'meta');
0985 xmlwriter_write_element($writer,'status',$status);
0986 xmlwriter_write_element($writer,'statuscode',$statuscode);
0987 xmlwriter_write_element($writer,'message',$message);
0988 if($itemscount<>'') xmlwriter_write_element($writer,'totalitems',$itemscount);
0989 if(!empty($itemsperpage)) xmlwriter_write_element($writer,'itemsperpage',$itemsperpage);
0990 xmlwriter_end_element($writer);
0991 //echo($dimension);
0992 if($dimension=='0') {
0993 // 0 dimensions
0994 xmlwriter_write_element($writer,'data',$data);
0995
0996 }elseif($dimension=='1') {
0997 xmlwriter_start_element($writer,'data');
0998 foreach($data as $key=>$entry) {
0999 xmlwriter_write_element($writer,$key,$entry);
1000 }
1001 xmlwriter_end_element($writer);
1002
1003 }elseif($dimension=='2') {
1004 xmlwriter_start_element($writer,'data');
1005 foreach($data as $entry) {
1006 xmlwriter_start_element($writer,$tag);
1007 if(!empty($tagattribute)) {
1008 xmlwriter_write_attribute($writer,'details',$tagattribute);
1009 }
1010 foreach($entry as $key=>$value) {
1011 if(is_array($value)){
1012 foreach($value as $k=>$v) {
1013 xmlwriter_write_element($writer,$k,$v);
1014 }
1015 } else {
1016 xmlwriter_write_element($writer,$key,$value);
1017 }
1018 }
1019 xmlwriter_end_element($writer);
1020 }
1021 xmlwriter_end_element($writer);
1022
1023 }elseif($dimension=='3') {
1024 xmlwriter_start_element($writer,'data');
1025 foreach($data as $entrykey=>$entry) {
1026 xmlwriter_start_element($writer,$tag);
1027 if(!empty($tagattribute)) {
1028 xmlwriter_write_attribute($writer,'details',$tagattribute);
1029 }
1030 foreach($entry as $key=>$value) {
1031 if(is_array($value)){
1032 xmlwriter_start_element($writer,$entrykey);
1033 foreach($value as $k=>$v) {
1034 xmlwriter_write_element($writer,$k,$v);
1035 }
1036 xmlwriter_end_element($writer);
1037 } else {
1038 xmlwriter_write_element($writer,$key,$value);
1039 }
1040 }
1041 xmlwriter_end_element($writer);
1042 }
1043 xmlwriter_end_element($writer);
1044 }elseif($dimension=='dynamic') {
1045 xmlwriter_start_element($writer,'data');
1046 // H01_OCS::toxml($writer,$data,'comment');
1047 if(is_array($data)) H01_OCS::toxml($writer,$data,$tag);
1048 xmlwriter_end_element($writer);
1049 }
1050
1051 xmlwriter_end_element($writer);
1052
1053 xmlwriter_end_document( $writer );
1054 $txt.=xmlwriter_output_memory( $writer );
1055 unset($writer);
1056 return($txt);
1057 }
1058 }
1059
1060 /**
1061 * Take an array of any size, and make it into xml
1062 * @param xmlwriter An xmlwriter instance
1063 * @param array The array which is to be transformed
1064 * @param mixed Either a string, or an array of elements defining element names for each level in the XML hierarchy
1065 * In the case of multiple lists of differently titled items at the same level, adding an array inside the array will allow for this to be constructed.
1066 * @param int Internal use (the index of the child item in question - corresponds to the index in the second level array above)
1067 */
1068 public static function toxml($writer,$data,$node,$childindex=0) {
1069 $nodename=$node;
1070 if(is_array($node)){
1071 $nodename=array_shift($node);
1072 }
1073
1074 $childcount=-1;
1075 foreach($data as $key => $value) {
1076 $childcount++;
1077 if (is_numeric($key)) {
1078 if(is_array($nodename)) {
1079 $key = $nodename[$childindex];
1080 } else {
1081 $key = $nodename;
1082 }
1083 }
1084 if (is_array($value)){
1085 xmlwriter_start_element($writer,$key);
1086 H01_OCS::toxml($writer,$value,$node,$childcount);
1087 xmlwriter_end_element($writer);
1088 }else{
1089 xmlwriter_write_element($writer,$key,$value);
1090 }
1091 }
1092 if(is_array($node)) {
1093 array_unshift($node,$nodename);
1094 }
1095 }
1096
1097
1098
1099
1100 /**
1101 * return the config data of this server
1102 * @param string $format
1103 * @return string xml/json
1104 */
1105 private static function apiconfig($format) {
1106 echo "DEBUG";
1107 $user=H01_OCS::checkpassword(false);
1108 H01_OCS::checktrafficlimit($user);
1109
1110 $xml['version']='1.6';
1111 $xml['website']='openDesktop.org';
1112 $xml['host']='api.openDesktop.org';
1113 $xml['contact']='frank@openDesktop.org';
1114 $xml['ssl']='true';
1115 echo(H01_OCS::generatexml($format,'ok',100,'',$xml,'config','',1));
1116 }
1117
1118
1119
1120
1121 // PERSON API #############################################
1122
1123 /**
1124 * search and return a list of persons corresponding to different optional search parameters
1125 * @param string $format
1126 * @param string $username
1127 * @param string $country
1128 * @param string $city
1129 * @param string $description
1130 * @param string $pc
1131 * @param string $software
1132 * @param string $longitude
1133 * @param string $latitude
1134 * @param string $distance
1135 * @param string $attributeapp
1136 * @param string $attributekey
1137 * @param string $attributevalue
1138 * @param string $page
1139 * @param string $pagesize
1140 * @return string xml/json
1141 */
1142 private static function personsearch($format,$username,$country,$city,$description,$pc,$software,$longitude,$latitude,$distance,$attributeapp,$attributekey,$attributevalue,$page,$pagesize) {
1143 $user=H01_OCS::checkpassword(false);
1144 H01_OCS::checktrafficlimit($user);
1145
1146 if($pagesize==0) $pagesize=10;
1147 $cache = new H01_CACHE('apipersonsearch',array($_SESSION['website'],$_SESSION['lang'],$format,$username.'#'.$user.'#'.$country.'#'.$city.'#'.$description.'#'.$pc.'#'.$software.'#'.$longitude.'#'.$latitude.'#'.$distance.'#'.$attributeapp.'#'.$attributekey.'#'.$attributevalue.'#'.$page.'#'.$pagesize));
1148 if ($cache->exist()) {
1149 $cache->get();
1150 unset($cache);
1151 } else {
1152
1153 if($page>H01_OCS::$maxpersonsearchpage) {
1154 $txt=H01_OCS::generatexml($format,'failed',102,'page above '.H01_OCS::$maxpersonsearchpage.'. it is not allowed to fetch such a big resultset. please specify more search conditions.');
1155 }else{
1156 $xml=H01_USER::search($user,$username,$country,$city,$description,$pc,$software,$longitude,$latitude,$distance,$attributeapp,$attributekey,$attributevalue,$page,$pagesize);
1157 $usercount=$xml['usercount'];
1158 unset($xml['usercount']);
1159 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'person','summary',2,$usercount,$pagesize);
1160 }
1161
1162 $cache->put($txt);
1163 unset($cache);
1164 echo($txt);
1165 }
1166
1167 }
1168
1169 /**
1170 * edit my own useraccount
1171 * @param string $format
1172 * @param string $country
1173 * @param string $city
1174 * @param float $longitude
1175 * @param float $latitude
1176 * @return string xml/json
1177 */
1178 private static function personedit($format,$longitude,$latitude,$country,$city) {
1179 $user=H01_OCS::checkpassword();
1180 H01_OCS::checktrafficlimit($user);
1181
1182 if($latitude<>0 or $longitude<>0 or !empty($city) or !empty($country)){
1183 H01_USER::edit($user,CONFIG_USERDB,$latitude,$longitude,$city,$country);
1184
1185 // cleanup the caches for this user.
1186 H01_CACHEADMIN::cleancache('userdetail',array($user));
1187 H01_CACHEADMIN::cleancache('avatar',array($user));
1188 H01_CACHEADMIN::cleancache('apipersonget',array($user));
1189 H01_CACHEADMIN::cleancache('apipersonsearch',array());
1190 echo(H01_OCS::generatexml($format,'ok',100,''));
1191 }else{
1192 echo(H01_OCS::generatexml($format,'failed',101,'no parameters to update found'));
1193 }
1194 }
1195
1196
1197 /**
1198 * register new user
1199 * @param string $format
1200 * @param string $login
1201 * @param string $passwd
1202 * @param string $firstname
1203 * @param string $lastname
1204 * @param string $email
1205 * @return string xml/json
1206 */
1207 private static function personadd($format,$login,$passwd,$firstname,$lastname,$email) {
1208 $user=H01_OCS::checkpassword(false);
1209 H01_OCS::checktrafficlimit($user);
1210
1211 if($login<>'' and $passwd<>'' and $firstname<>'' and $lastname<>'' and $email<>''){
1212 if(H01_USER::isvalidpassword($passwd)){
1213 if(H01_USER::isloginname($login)){
1214 if(!H01_USER::exist($login,CONFIG_USERDB,false)){
1215 if(H01_USER::countusersbyemail($email,CONFIG_USERDB)==0) {
1216 if(H01_MAIL::valid($email)) {
1217 H01_USER::register($login,$passwd,$firstname,$lastname,$email);
1218 echo(H01_OCS::generatexml($format,'ok',100,''));
1219 }else{
1220 echo(H01_OCS::generatexml($format,'failed',106,'email already taken'));
1221 }
1222 }else{
1223 echo(H01_OCS::generatexml($format,'failed',105,'email invalid'));
1224 }
1225 }else{
1226 echo(H01_OCS::generatexml($format,'failed',104,'login already exists'));
1227 }
1228 }else{
1229 echo(H01_OCS::generatexml($format,'failed',103,'please specify a valid login'));
1230 }
1231 }else{
1232 echo(H01_OCS::generatexml($format,'failed',102,'please specify a valid password'));
1233 }
1234 }else{
1235 echo(H01_OCS::generatexml($format,'failed',101,'please specify all mandatory fields'));
1236 }
1237 }
1238
1239 /**
1240 * check if the provided login/apikey/password is valid
1241 * @param string $format
1242 * @param string $login
1243 * @param string $passwd
1244 * @return string xml/json
1245 */
1246 private static function personcheck($format,$login,$passwd) {
1247 $user=H01_OCS::checkpassword(false);
1248 H01_OCS::checktrafficlimit($user);
1249
1250
1251 if($login<>''){
1252 $reallogin=H01_USER::checklogin($login,CONFIG_USERDB,$passwd,PERM_Login);
1253 if($reallogin<>false){
1254 $xml['person']['personid']=$reallogin;
1255 echo(H01_OCS::generatexml($format,'ok',100,'',$xml,'person','check',2));
1256 }else{
1257 $user=H01_USER::finduserbyapikey($login,CONFIG_USERDB);
1258 if($user==false) {
1259 echo(H01_OCS::generatexml($format,'failed',102,'login not valid'));
1260 }else{
1261 $xml['person']['personid']=$user;
1262 echo(H01_OCS::generatexml($format,'ok',100,'',$xml,'person','check',2));
1263 }
1264 }
1265 }else{
1266 echo(H01_OCS::generatexml($format,'failed',101,'please specify all mandatory fields'));
1267 }
1268 }
1269
1270
1271
1272 /**
1273 * get detailed information about a person
1274 * @param string $format
1275 * @param string $username
1276 * @return string xml/json
1277 */
1278 private static function personget($format,$username='') {
1279 if(empty($username)) {
1280 $user=H01_OCS::checkpassword();
1281 }else{
1282 $user=H01_OCS::checkpassword(false);
1283 }
1284 H01_OCS::checktrafficlimit($user);
1285 if(empty($username)) $username=$user;
1286
1287 $cache = new H01_CACHE('apipersonget',array($user,CONFIG_USERDB,$username,$format));
1288 if ($cache->exist()) {
1289 $cache->get();
1290 unset($cache);
1291 } else {
1292 $DBuser=H01_USER::getuser($username,CONFIG_USERDB);
1293 $itemscount=count($DBuser);
1294
1295 if($itemscount==0){
1296 $txt=H01_OCS::generatexml($format,'failed',101,'person not found');
1297 }else{
1298 $xml=array();
1299 $xml[0]['personid']=$DBuser['login'];
1300 $xml[0]['privacy']=$DBuser['privacy'];
1301 $xml[0]['privacytext']=H01_USER::$PRIVACY[1][$DBuser['privacy']];
1302 $xml[0]['firstname']=$DBuser['firstname'];
1303 $xml[0]['lastname']=$DBuser['name'];
1304 $xml[0]['gender']=H01_USER::$GENDER[1][$DBuser['gender']];
1305 if(CONFIG_USERCOMMUNITYROLE) $xml[0]['communityrole']=H01_USER::$COMMUNITYROLE[1][$DBuser['communityrole']];
1306 $xml[0]['company']=$DBuser['company'];
1307 $xml[0]['homepage']=$DBuser['homepage1'];
1308 $xml[0]['homepagetype']=H01_USER::$LINK_CATEGORY[$DBuser['homepagetype1']];
1309 if(H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype1']]<>'') $xml[0]['homepageicon']='http://'.CONFIG_WEBSITEHOST.'/img/socialicons/'.H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype1']];
1310 $xml[0]['homepage2']=$DBuser['homepage2'];
1311 $xml[0]['homepagetype2']=H01_USER::$LINK_CATEGORY[$DBuser['homepagetype2']];
1312 if(H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype2']]<>'') $xml[0]['homepageicon2']='http://'.CONFIG_WEBSITEHOST.'/img/socialicons/'.H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype2']];
1313 $xml[0]['homepage3']=$DBuser['homepage3'];
1314 $xml[0]['homepagetype3']=H01_USER::$LINK_CATEGORY[$DBuser['homepagetype3']];
1315 if(H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype3']]<>'') $xml[0]['homepageicon3']='http://'.CONFIG_WEBSITEHOST.'/img/socialicons/'.H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype3']];
1316 $xml[0]['homepage4']=$DBuser['homepage4'];
1317 $xml[0]['homepagetype4']=H01_USER::$LINK_CATEGORY[$DBuser['homepagetype4']];
1318 if(H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype4']]<>'') $xml[0]['homepageicon4']='http://'.CONFIG_WEBSITEHOST.'/img/socialicons/'.H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype4']];
1319 $xml[0]['homepage5']=$DBuser['homepage5'];
1320 $xml[0]['homepagetype5']=H01_USER::$LINK_CATEGORY[$DBuser['homepagetype5']];
1321 if(H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype5']]<>'') $xml[0]['homepageicon5']='http://'.CONFIG_WEBSITEHOST.'/img/socialicons/'.H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype5']];
1322 $xml[0]['homepage6']=$DBuser['homepage6'];
1323 $xml[0]['homepagetype6']=H01_USER::$LINK_CATEGORY[$DBuser['homepagetype6']];
1324 if(H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype6']]<>'') $xml[0]['homepageicon6']='http://'.CONFIG_WEBSITEHOST.'/img/socialicons/'.H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype6']];
1325 $xml[0]['homepage7']=$DBuser['homepage7'];
1326 $xml[0]['homepagetype7']=H01_USER::$LINK_CATEGORY[$DBuser['homepagetype7']];
1327 if(H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype7']]<>'') $xml[0]['homepageicon7']='http://'.CONFIG_WEBSITEHOST.'/img/socialicons/'.H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype7']];
1328 $xml[0]['homepage8']=$DBuser['homepage8'];
1329 $xml[0]['homepagetype8']=H01_USER::$LINK_CATEGORY[$DBuser['homepagetype8']];
1330 if(H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype8']]<>'') $xml[0]['homepageicon8']='http://'.CONFIG_WEBSITEHOST.'/img/socialicons/'.H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype8']];
1331 $xml[0]['homepage9']=$DBuser['homepage9'];
1332 $xml[0]['homepagetype9']=H01_USER::$LINK_CATEGORY[$DBuser['homepagetype9']];
1333 if(H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype9']]<>'') $xml[0]['homepageicon9']='http://'.CONFIG_WEBSITEHOST.'/img/socialicons/'.H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype9']];
1334 $xml[0]['homepage10']=$DBuser['homepage10'];
1335 $xml[0]['homepagetype10']=H01_USER::$LINK_CATEGORY[$DBuser['homepagetype10']];
1336 if(H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype10']]<>'') $xml[0]['homepageicon10']='http://'.CONFIG_WEBSITEHOST.'/img/socialicons/'.H01_USER::$LINK_CATEGORYICON[$DBuser['homepagetype10']];
1337
1338 if (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.jpg')) { $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.jpg'; $found=true; }
1339 elseif (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.png')) { $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.png'; $found=true; }
1340 elseif (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.gif')) { $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.gif'; $found=true; }
1341 else { $pic=STATICHOST.'/usermanager/nopic.png'; $found=false ;}
1342 $xml[0]['avatarpic']=$pic;
1343 $xml[0]['avatarpicfound']=$found;
1344
1345 if (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-bigpics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.jpg')) { $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-bigpics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.jpg'; $found=true;
1346 }elseif (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-bigpics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.png')) { $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-bigpics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.png'; $found=true;
1347 }elseif (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-bigpics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.gif')) { $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-bigpics/'.CONFIG_USERDB.'/'.$DBuser['login'].'.gif'; $found=true;
1348 }else{ $pic=''; $found=false; }
1349 $xml[0]['bigavatarpic']=$pic;
1350 $xml[0]['bigavatarpicfound']=$found;
1351
1352
1353 if($DBuser['birthyear']<1910){
1354 $xml[0]['birthday']=date('Y-m-d',mktime(0, 0, 0, $DBuser['birthmonth'],$DBuser['birthday'],$DBuser['birthyear']));
1355 }else{
1356 $xml[0]['birthday']='';
1357 }
1358 if(CONFIG_USERJOBSTATUS) $xml[0]['jobstatus']=H01_USER::$JOBSTATUS[1][$DBuser['jobstatus']];
1359 $xml[0]['jabber']=$DBuser['jabber'];
1360 if(CONFIG_USERMESSENGER1){
1361 $xml[0]['messengertype1']=H01_USER::$IM_CATEGORY[$DBuser['messengertype']];
1362 $xml[0]['messenger1']=$DBuser['messenger'];
1363 }
1364 if(CONFIG_USERMESSENGER2){
1365 $xml[0]['messengertype2']=H01_USER::$IM_CATEGORY[$DBuser['messengertype2']];
1366 $xml[0]['messenger2']=$DBuser['messenger2'];
1367 }
1368 if(CONFIG_USERMESSENGER3){
1369 $xml[0]['messengertype3']=H01_USER::$IM_CATEGORY[$DBuser['messengertype3']];
1370 $xml[0]['messenger3']=$DBuser['messenger3'];
1371 }
1372
1373 $xml[0]['city']=$DBuser['city'];
1374 $xml[0]['country']=H01_USER::$COUNTRIES[$DBuser['country']];
1375
1376 $xml[0]['latitude']=$DBuser['latitude'];
1377 $xml[0]['longitude']=$DBuser['longitude'];
1378 $xml[0]['ircnick']=$DBuser['ircnick'];
1379 $xml[0]['ircchannels']=$DBuser['ircchannels'];
1380 $channels=explode(',',$DBuser['ircchannels']);
1381 foreach($channels as $channel) $xml[0][]['irclink']='irc://irc.freenode.org/'.urlencode(trim($channel));
1382
1383 if(CONFIG_USERLIKES) $xml[0]['likes']=H01_UTIL::bbcode2html($DBuser['likes']);
1384 if(CONFIG_USERDONTLIKES) $xml[0]['dontlikes']=H01_UTIL::bbcode2html($DBuser['dontlikes']);
1385 if(CONFIG_USERINTERESTS) $xml[0]['interests']=H01_UTIL::bbcode2html($DBuser['interests']);
1386 if(CONFIG_USERLANGUAGES) $xml[0]['languages']=H01_UTIL::bbcode2html($DBuser['languages']);
1387 if(CONFIG_USERPROGRAMMINGLANGUAGES) $xml[0]['programminglanguages']=H01_UTIL::bbcode2html($DBuser['programminglanguages']);
1388 if(CONFIG_USERFAVOURITEQUOTE) $xml[0]['favouritequote']=H01_UTIL::bbcode2html($DBuser['favouritequote']);
1389 if(CONFIG_USERFAVOURITEMUSIC) $xml[0]['favouritemusic']=H01_UTIL::bbcode2html($DBuser['favouritemusic']);
1390 if(CONFIG_USERFAVOURITETVSHOWS) $xml[0]['favouritetvshows']=H01_UTIL::bbcode2html($DBuser['favouritetvshows']);
1391 if(CONFIG_USERFAVOURITEMOVIES) $xml[0]['favouritemovies']=H01_UTIL::bbcode2html($DBuser['favouritemovies']);
1392 if(CONFIG_USERFAVOURITEBOOKS) $xml[0]['favouritebooks']=H01_UTIL::bbcode2html($DBuser['favouritebooks']);
1393 if(CONFIG_USERFAVOURITEGAMES) $xml[0]['favouritegames']=H01_UTIL::bbcode2html($DBuser['favouritegames']);
1394 $xml[0]['description']=H01_UTIL::bbcode2html($DBuser['description']);
1395 $xml[0]['profilepage']='http://'.CONFIG_WEBSITEHOST.'/usermanager/search.php?username='.$DBuser['login'];
1396
1397 if($DBuser['privacy']==0) {
1398 $visible=true;
1399 }elseif($DBuser['privacy']==1){
1400 if($user<>'') $visible=true; else $visible=false;
1401 }elseif($DBuser['privacy']==2){
1402 if((strtolower($username)==strtolower($user)) or (H01_RELATION::isrelation(1,$username,CONFIG_USERDB,$user))) $visible=true; else $visible=false;
1403 }elseif($DBuser['privacy']==3){
1404 $visible=false;
1405 }
1406
1407 if($visible) $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'person','full',2); else $txt=H01_OCS::generatexml($format,'failed',102,'data is private');
1408 }
1409
1410 $cache->put($txt);
1411 unset($cache);
1412 echo($txt);
1413 }
1414
1415 }
1416
1417
1418 /**
1419 * get my own balance
1420 * @param string $format
1421 * @return string xml/json
1422 */
1423 private static function persongetbalance($format) {
1424 $user=H01_OCS::checkpassword();
1425 H01_OCS::checktrafficlimit($user);
1426
1427 $balance=H01_PAYMENT::getbalance($user,CONFIG_USERDB);
1428
1429 $xml=array();
1430 $xml[0]['currency']='USD';
1431 $xml[0]['balance']=number_format(($balance/100),2);
1432 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'person','balance',2);
1433 echo($txt);
1434 }
1435
1436
1437 /**
1438 * get attributes from a specific person/app/key
1439 * @param string $format
1440 * @param string $username
1441 * @param string $app
1442 * @param string $key
1443 * @return string xml/json
1444 */
1445 private static function personattributeget($format,$username,$app,$key) {
1446 $user=H01_OCS::checkpassword();
1447 H01_OCS::checktrafficlimit($user);
1448
1449 $xml=H01_USER::getattributes($username,CONFIG_USERDB,$app,$key);
1450 $xml2=array();
1451 $xml2['attribute']=$xml;
1452 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml2,'person','attributes',3,count($xml));
1453 echo($txt);
1454
1455 }
1456
1457 /**
1458 * set a attribute
1459 * @param string $format
1460 * @param string $app
1461 * @param string $key
1462 * @param string $value
1463 * @return string xml/json
1464 */
1465 private static function personattributeset($format,$app,$key,$value) {
1466 $user=H01_OCS::checkpassword();
1467 H01_OCS::checktrafficlimit($user);
1468
1469 $xml=H01_USER::setattribute($user,CONFIG_USERDB,$app,$key,$value);
1470 $txt=H01_OCS::generatexml($format,'ok',100,'');
1471 echo($txt);
1472
1473 }
1474
1475
1476 /**
1477 * delete a attribute
1478 * @param string $format
1479 * @param string $app
1480 * @param string $key
1481 * @return string xml/json
1482 */
1483 private static function personattributedelete($format,$app,$key) {
1484 $user=H01_OCS::checkpassword();
1485 H01_OCS::checktrafficlimit($user);
1486
1487 $xml=H01_USER::deleteattribute($user,CONFIG_USERDB,$app,$key);
1488 $txt=H01_OCS::generatexml($format,'ok',100,'');
1489 echo($txt);
1490
1491 }
1492
1493
1494 // FAN API #############################################
1495
1496 /**
1497 * get the fans of a specific content
1498 * @param string $format
1499 * @param string $content
1500 * @param string $page
1501 * @param string $pagesize
1502 * @return string xml/json
1503 */
1504 private static function fanget($format,$content,$page,$pagesize) {
1505 $user=H01_OCS::checkpassword();
1506 H01_OCS::checktrafficlimit($user);
1507 $content=strip_tags(addslashes($content));
1508 $page = intval($page);
1509 $start=$pagesize*$page;
1510
1511 $cache = new H01_CACHE('apifan',array($content,CONFIG_USERDB,$page,$pagesize,$format));
1512 if ($cache->exist()) {
1513 $cache->get();
1514 unset($cache);
1515 } else {
1516
1517 $fancount=H01_FAN::countfansofcontent($content,CONFIG_USERDB);
1518 $fans=H01_FAN::getfansofcontent($content,CONFIG_USERDB,$page,$pagesize);
1519 $itemscount=count($fans);
1520 $xml=array();
1521 for ($i=0; $i < $itemscount;$i++) {
1522 $xml[$i]['personid']=$fans[$i]['user'];
1523 $xml[$i]['timestamp']=date('c',$fans[$i]['timestamp']);
1524 }
1525 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'person','fans',2,$fancount,$pagesize);
1526
1527 $cache->put($txt);
1528 unset($cache);
1529 echo($txt);
1530 }
1531
1532 }
1533
1534
1535 /**
1536 * add a fans to a specific content
1537 * @param string $format
1538 * @param string $content
1539 * @return string xml/json
1540 */
1541 private static function addfan($format,$content) {
1542 $contentid = intval($content);
1543 $user=H01_OCS::checkpassword();
1544 H01_OCS::checktrafficlimit($user);
1545 H01_FAN::addfan($contentid,$user,CONFIG_USERDB);
1546 $txt=H01_OCS::generatexml($format,'ok',100,'');
1547 echo($txt);
1548 }
1549
1550
1551 /**
1552 * remove a fans from a specific content
1553 * @param string $format
1554 * @param string $content
1555 * @return string xml/json
1556 */
1557 private static function removefan($format,$content) {
1558 $contentid = intval($content);
1559 $user=H01_OCS::checkpassword();
1560 H01_OCS::checktrafficlimit($user);
1561 H01_FAN::removefan($contentid,$user,CONFIG_USERDB);
1562 $txt=H01_OCS::generatexml($format,'ok',100,'');
1563 echo($txt);
1564 }
1565
1566
1567 /**
1568 * check if the user is a fan of a content
1569 * @param string $format
1570 * @param string $content
1571 * @return string xml/json
1572 */
1573 private static function isfan($format,$content) {
1574 $contentid = intval($content);
1575 $user=H01_OCS::checkpassword();
1576 H01_OCS::checktrafficlimit($user);
1577 $fan=H01_FAN::isfan($contentid,$user,CONFIG_USERDB);
1578 if($fan){
1579 $xml['status']='fan';
1580 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'','',1);
1581 }else{
1582 $xml['status']='not fan';
1583 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'','',1);
1584 }
1585 echo($txt);
1586 }
1587
1588
1589
1590
1591
1592 // FRIEND API #############################################
1593
1594 /**
1595 * get the list of sent invitations
1596 * @param string $format
1597 * @param string $page
1598 * @param string $pagesize
1599 * @return string xml/json
1600 */
1601 private static function friendsentinvitations($format,$page,$pagesize) {
1602 $user=H01_OCS::checkpassword();
1603 H01_OCS::checktrafficlimit($user);
1604
1605 $fromuser=addslashes($user);
1606 $page = intval($page);
1607 $start=$pagesize*$page;
1608 $count=$pagesize;
1609
1610 $cache = new H01_CACHE('apifriendssentinvitations',array($fromuser,CONFIG_USERDB,$page,$pagesize,$format));
1611 if ($cache->exist()) {
1612 $cache->get();
1613 unset($cache);
1614 } else {
1615
1616 $countsentinvitations=H01_RELATION::countsentrequests(1,$fromuser,CONFIG_USERDB);
1617 $relations=H01_RELATION::getsentrequests(1,$fromuser,CONFIG_USERDB,$start,$count);
1618 $itemscount=count($relations);
1619
1620 $xml=array();
1621 for ($i=0; $i < $itemscount;$i++) {
1622 $xml[$i]['personid']=$relations[$i]['user'];
1623 }
1624 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'user','id',2,$countsentinvitations,$pagesize);
1625
1626 $cache->put($txt);
1627 unset($cache);
1628 echo($txt);
1629 }
1630 }
1631
1632 /**
1633 * get the list of received invitations
1634 * @param string $format
1635 * @param string $page
1636 * @param string $pagesize
1637 * @return string xml/json
1638 */
1639 private static function friendreceivedinvitations($format,$page,$pagesize) {
1640 $user=H01_OCS::checkpassword();
1641 H01_OCS::checktrafficlimit($user);
1642
1643 $fromuser=addslashes($user);
1644 $page = intval($page);
1645 $start=$pagesize*$page;
1646 $count=$pagesize;
1647
1648 $cache = new H01_CACHE('apifriendsreceivedinvitations',array($fromuser,CONFIG_USERDB,$page,$pagesize,$format));
1649 if ($cache->exist()) {
1650 $cache->get();
1651 unset($cache);
1652 } else {
1653
1654 $countreceivedinvitations=H01_RELATION::countreceivedrequests(1,$fromuser,CONFIG_USERDB);
1655 $relations=H01_RELATION::getreceivedrequests(1,$fromuser,CONFIG_USERDB,$start,$count);
1656 $itemscount=count($relations);
1657 $xml=array();
1658 for ($i=0; $i < $itemscount;$i++) {
1659 $xml[$i]['personid']=$relations[$i]['user'];
1660 }
1661 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'user','id',2,$countreceivedinvitations,$pagesize);
1662
1663 $cache->put($txt);
1664 unset($cache);
1665 echo($txt);
1666 }
1667 }
1668
1669
1670
1671 /**
1672 * get the list of friends from a person
1673 * @param string $format
1674 * @param string $fromuser
1675 * @param string $page
1676 * @param string $pagesize
1677 * @return string xml/json
1678 */
1679 private static function friendget($format,$fromuser,$page,$pagesize) {
1680 $user=H01_OCS::checkpassword();
1681 H01_OCS::checktrafficlimit($user);
1682
1683 $fromuser=strip_tags(addslashes($fromuser));
1684 $page = intval($page);
1685 $start=$pagesize*$page;
1686 $count=$pagesize;
1687
1688 $cache = new H01_CACHE('apifriends',array($fromuser,CONFIG_USERDB,$page,$pagesize,$format));
1689 if ($cache->exist()) {
1690 $cache->get();
1691 unset($cache);
1692 } else {
1693
1694 $DBuser=H01_USER::getuser($fromuser,CONFIG_USERDB);
1695 if(isset($DBuser['login'])) {
1696 if($DBuser['privacyrelations']==0) {
1697 $visible=true;
1698 }elseif($DBuser['privacyrelations']==1){
1699 if($user<>'') $visible=true; else $visible=false;
1700 }elseif($DBuser['privacyrelations']==2){
1701 if(($fromuser==$user) or (H01_RELATION::isrelation(1,$fromuser,CONFIG_USERDB,$user))) $visible=true; else $visible=false;
1702 }elseif($DBuser['privacyrelations']==3){
1703 if($fromuser==$user) $visible=true; else $visible=false;
1704 }
1705
1706 if($visible){
1707 $countapprovedrelations=H01_RELATION::countapprovedrelations(1,$fromuser,CONFIG_USERDB);
1708 $relations=H01_RELATION::getapprovedrelations(1,$fromuser,CONFIG_USERDB,$start,$count,true);
1709 $itemscount=count($relations);
1710 $xml=array();
1711 for ($i=0; $i < $itemscount;$i++) {
1712 $xml[$i]['personid']=$relations[$i]['user'];
1713 $xml[$i]['firstname']=$relations[$i]['firstname'];
1714 $xml[$i]['lastname']=$relations[$i]['lastname'];
1715
1716
1717 if (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$relations[$i]['user'].'.jpg')) { $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$relations[$i]['user'].'.jpg'; $found=true; }
1718 elseif (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$relations[$i]['user'].'.png')) { $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$relations[$i]['user'].'.png'; $found=true; }
1719 elseif (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$relations[$i]['user'].'.gif')) { $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$relations[$i]['user'].'.gif'; $found=true; }
1720 else { $pic=STATICHOST.'/usermanager/nopic.png'; $found=false ;}
1721 $xml[$i]['avatarpic']=$pic;
1722 $xml[$i]['avatarpicfound']=$found;
1723
1724
1725 }
1726 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'user','id',2,$countapprovedrelations,$pagesize);
1727 }else{
1728 $txt=H01_OCS::generatexml($format,'failed',101,'data is private');
1729 }
1730 }else{
1731 $txt=H01_OCS::generatexml($format,'failed',102,'user not found');
1732 }
1733
1734 $cache->put($txt);
1735 unset($cache);
1736 echo($txt);
1737 }
1738
1739 }
1740
1741
1742
1743
1744 /**
1745 * invite a person as a friend
1746 * @param string $format
1747 * @param string $inviteuser
1748 * @param string $message
1749 * @return string xml/json
1750 */
1751 private static function friendinvite($format,$inviteuser,$message) {
1752 $user=H01_OCS::checkpassword();
1753 H01_OCS::checktrafficlimit($user);
1754 $inviteuser = strip_tags(addslashes($inviteuser));
1755 $message = strip_tags(addslashes($message));
1756
1757 $u=H01_USER::getuser($inviteuser,CONFIG_USERDB);
1758 if($u==false) $inviteuser=false; else $inviteuser=$u['login'];
1759
1760 if($user<>'' and $inviteuser<>'' and $inviteuser<>false) {
1761 if($user<>$inviteuser) {
1762 if($message<>'') {
1763 H01_RELATION::requestrelation(1,$user,$inviteuser,CONFIG_USERDB,$message);
1764 echo(H01_OCS::generatexml($format,'ok',100,''));
1765 } else {
1766 echo(H01_OCS::generatexml($format,'failed',101,'message must not be empty'));
1767 }
1768 }else{
1769 echo(H01_OCS::generatexml($format,'failed',102,'you can\´t invite yourself'));
1770 }
1771 } else {
1772 echo(H01_OCS::generatexml($format,'failed',103,'user not found'));
1773 }
1774
1775 }
1776
1777 /**
1778 * approve a friendsship invitation
1779 * @param string $format
1780 * @param string $inviteuser
1781 * @return string xml/json
1782 */
1783 private static function friendapprove($format,$inviteuser) {
1784 $user=H01_OCS::checkpassword();
1785 H01_OCS::checktrafficlimit($user);
1786 $inviteuser = strip_tags(addslashes($inviteuser));
1787
1788 if($user<>'' and $inviteuser<>'') {
1789 H01_RELATION::confirmrelation(1,$user,$inviteuser,CONFIG_USERDB);
1790 echo(H01_OCS::generatexml($format,'ok',100,''));
1791 } else {
1792 echo(H01_OCS::generatexml($format,'failed',101,'user not found'));
1793 }
1794
1795 }
1796
1797
1798 /**
1799 * decline a friendsship invitation
1800 * @param string $format
1801 * @param string $inviteuser
1802 * @return string xml/json
1803 */
1804 private static function frienddecline($format,$inviteuser) {
1805 $user=H01_OCS::checkpassword();
1806 H01_OCS::checktrafficlimit($user);
1807 $inviteuser = strip_tags(addslashes($inviteuser));
1808
1809 if($user<>'' and $inviteuser<>'') {
1810 H01_RELATION::declinerelation(1,$user,$inviteuser,CONFIG_USERDB);
1811 echo(H01_OCS::generatexml($format,'ok',100,''));
1812 } else {
1813 echo(H01_OCS::generatexml($format,'failed',101,'user not found'));
1814 }
1815
1816 }
1817
1818
1819 /**
1820 * cancel a friendsship
1821 * @param string $format
1822 * @param string $inviteuser
1823 * @return string xml/json
1824 */
1825 private static function friendcancel($format,$inviteuser) {
1826 $user=H01_OCS::checkpassword();
1827 H01_OCS::checktrafficlimit($user);
1828 $inviteuser = strip_tags(addslashes($inviteuser));
1829
1830 if($user<>'' and $inviteuser<>'') {
1831 H01_RELATION::cancelrelation(1,$user,$inviteuser,CONFIG_USERDB);
1832 echo(H01_OCS::generatexml($format,'ok',100,''));
1833 } else {
1834 echo(H01_OCS::generatexml($format,'failed',101,'user not found'));
1835 }
1836
1837 }
1838
1839
1840 /**
1841 * cancel a friendsship invitation
1842 * @param string $format
1843 * @param string $inviteuser
1844 * @return string xml/json
1845 */
1846 private static function friendcancelrequest($format,$inviteuser) {
1847 $user=H01_OCS::checkpassword();
1848 H01_OCS::checktrafficlimit($user);
1849 $inviteuser = strip_tags(addslashes($inviteuser));
1850
1851 if($user<>'' and $inviteuser<>'') {
1852 H01_RELATION::deleterelationrequest(1,$user,$inviteuser,CONFIG_USERDB);
1853 echo(H01_OCS::generatexml($format,'ok',100,''));
1854 } else {
1855 echo(H01_OCS::generatexml($format,'failed',101,'user not found'));
1856 }
1857
1858 }
1859
1860
1861
1862
1863
1864
1865 // MESSAGE API #############################################
1866
1867 /**
1868 * get the list of available message foldersn
1869 * @param string $format
1870 * @return string xml/json
1871 */
1872 private static function messagefolders($format) {
1873 $user=H01_OCS::checkpassword();
1874 H01_OCS::checktrafficlimit($user);
1875 if(!empty($user)) {
1876 $cache = new H01_CACHE('apimessagefolder',array($user,CONFIG_USERDB,$format));
1877 if ($cache->exist()) {
1878 $cache->get();
1879 unset($cache);
1880 } else {
1881
1882 $i=0;
1883 foreach(H01_MESSAGE::$FOLDERS[1] as $key=>$value) {
1884 $i++;
1885 $xml[$i]['id']=$key;
1886 $xml[$i]['name']=$value;
1887 $count=H01_MESSAGE::countmessages($user,CONFIG_USERDB,$key);
1888 $xml[$i]['messagecount']=$count;
1889 if($key==0) $xml[$i]['type']='inbox';
1890 elseif($key==1) $xml[$i]['type']='send';
1891 elseif($key==2) $xml[$i]['type']='trash';
1892 else $xml[$i]['type']='';
1893 }
1894 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'folder','',2,count(H01_MESSAGE::$FOLDERS[1]));
1895
1896 $cache->put($txt);
1897 unset($cache);
1898 echo($txt);
1899 }
1900
1901 }else{
1902 $txt=H01_OCS::generatexml($format,'failed',101,'user not found');
1903 echo($txt);
1904 }
1905
1906 }
1907
1908
1909 /**
1910 * get a list of messages
1911 * @param string $format
1912 * @param string $folder
1913 * @param string $page
1914 * @param string $pagesize
1915 * @param string $filter
1916 * @return string xml/json
1917 */
1918 private static function messagelist($format,$folder,$page,$pagesize,$filter) {
1919 $user=H01_OCS::checkpassword();
1920 H01_OCS::checktrafficlimit($user);
1921
1922 $cache = new H01_CACHE('apimessagelist',array($user,CONFIG_USERDB,$folder,$filter,$page,$pagesize,$format));
1923 if ($cache->exist()) {
1924 $cache->get();
1925 unset($cache);
1926 } else {
1927 $messages=H01_MESSAGE::getlist($user,CONFIG_USERDB,$folder,$page,$pagesize,$filter);
1928 $messagescount=$messages['count'];
1929 unset($messages['count']);
1930 $itemscount=count($messages);
1931 $xml=array();
1932 for ($i=0; $i < $itemscount;$i++) {
1933 $xml[$i]['id']=$messages[$i]['id'];
1934 $xml[$i]['messagefrom']=$messages[$i]['messagefrom'];
1935 $xml[$i]['firstname']=$messages[$i]['firstname'];
1936 $xml[$i]['lastname']=$messages[$i]['lastname'];
1937 $xml[$i]['profilepage']='http://'.CONFIG_WEBSITEHOST.'/usermanager/search.php?username='.urlencode($messages[$i]['messagefrom']);
1938 $xml[$i]['messageto']=$messages[$i]['messageto'];
1939 $xml[$i]['senddate']=date('c',$messages[$i]['senddate']);
1940 $xml[$i]['status']=$messages[$i]['status'];
1941 $xml[$i]['statustext']=strip_tags(H01_MESSAGE::$STATUS[1][$messages[$i]['status']]);
1942 $xml[$i]['subject']=$messages[$i]['subject'];
1943 $xml[$i]['body']=$messages[$i]['body'];
1944 // $xml[$i]['folder']=$messages[$i]['folder'];
1945 }
1946
1947 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'message','full',2,$messagescount,$pagesize);
1948
1949 $cache->put($txt);
1950 unset($cache);
1951 echo($txt);
1952 }
1953 }
1954
1955 /**
1956 * get one specific message
1957 * @param string $format
1958 * @param string $folder
1959 * @param string $message
1960 * @return string xml/json
1961 */
1962 private static function messageget($format,$folder,$message) {
1963 $user=H01_OCS::checkpassword();
1964 H01_OCS::checktrafficlimit($user);
1965
1966 $cache = new H01_CACHE('apimessageget',array($user,CONFIG_USERDB,$folder,$message,$format));
1967 if ($cache->exist()) {
1968 $cache->get();
1969 unset($cache);
1970 } else {
1971
1972 H01_MESSAGE::setstatus($message,$user,CONFIG_USERDB,1);
1973 $message=H01_MESSAGE::get($user,CONFIG_USERDB,$folder,$message);
1974 if(count($message)>0) {
1975 $xml['id']=$message['id'];
1976 $xml['messagefrom']=$message['messagefrom'];
1977 $xml['firstname']=$message['firstname'];
1978 $xml['lastname']=$message['lastname'];
1979 $xml['profilepage']='http://'.CONFIG_WEBSITEHOST.'/usermanager/search.php?username='.urlencode($message['messagefrom']);
1980 $xml['messageto']=$message['messageto'];
1981 $xml['senddate']=date('c',$message['senddate']);
1982 $xml['status']=$message['status'];
1983 $xml['statustext']=strip_tags(H01_MESSAGE::$STATUS[1][$message['status']]);
1984 $xml['subject']=$message['subject'];
1985 $xml['body']=$message['body'];
1986 $xml2[1]=$xml;
1987 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml2,'message','full',2);
1988 }else{
1989 $txt=H01_OCS::generatexml($format,'failed',101,'message not found');
1990 }
1991
1992 $cache->put($txt);
1993 unset($cache);
1994 echo($txt);
1995 }
1996 }
1997
1998
1999
2000 /**
2001 * send a message
2002 * @param string $format
2003 * @param string $touser
2004 * @param string $subject
2005 * @param string $message
2006 * @return string xml/json
2007 */
2008 private static function messagesend($format,$touser,$subject,$message) {
2009 $user=H01_OCS::checkpassword();
2010 H01_OCS::checktrafficlimit($user);
2011
2012 if($touser<>$user) {
2013 if(!empty($subject) and !empty($message)) {
2014 if(!empty($user) and H01_USER::exist($touser,CONFIG_USERDB,true)) {
2015 H01_MESSAGE::send($user,CONFIG_USERDB,$touser,$subject,$message);
2016 echo(H01_OCS::generatexml($format,'ok',100,''));
2017 }else{
2018 echo(H01_OCS::generatexml($format,'failed',101,'user not found'));
2019 }
2020 }else{
2021 echo(H01_OCS::generatexml($format,'failed',102,'subject or message not found'));
2022 }
2023 }else{
2024 echo(H01_OCS::generatexml($format,'failed',103,'you can\´t send a message to yourself'));
2025 }
2026 }
2027
2028
2029 // ACTIVITY API #############################################
2030
2031 /**
2032 * get my activities
2033 * @param string $format
2034 * @param string $page
2035 * @param string $pagesize
2036 * @return string xml/json
2037 */
2038 private static function activityget($format,$page,$pagesize) {
2039
2040 $user=H01_OCS::checkpassword();
2041 H01_OCS::checktrafficlimit($user);
2042
2043 $cache = new H01_CACHE('apilog',array($user,CONFIG_USERDB,$page,$pagesize,$format));
2044 if ($cache->exist()) {
2045 $cache->get();
2046 unset($cache);
2047 } else {
2048
2049 $log=H01_LOG::getlist($user,CONFIG_USERDB,$page,$pagesize);
2050 $totalcount=$log['count'];
2051 unset($log['count']);
2052 $itemscount=count($log);
2053 $xml=array();
2054 for ($i=0; $i < $itemscount;$i++) {
2055 $xml[$i]['id']=$log[$i]['id'];
2056 $xml[$i]['personid']=$log[$i]['user'];
2057 $xml[$i]['firstname']=$log[$i]['firstname'];
2058 $xml[$i]['lastname']=$log[$i]['name'];
2059 $xml[$i]['profilepage']='http://'.CONFIG_WEBSITEHOST.'/usermanager/search.php?username='.urlencode($log[$i]['user']);
2060
2061 if (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$log[$i]['user'].'.jpg')) $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$log[$i]['user'].'.jpg';
2062 elseif (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$log[$i]['user'].'.png')) $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$log[$i]['user'].'.png';
2063 elseif (file_exists(CONFIG_DOCUMENT_ROOT.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$log[$i]['user'].'.gif')) $pic='http://'.CONFIG_WEBSITEHOST.'/CONTENT/user-pics/'.CONFIG_USERDB.'/'.$log[$i]['user'].'.gif';
2064 else $pic='http://'.CONFIG_WEBSITEHOST.'/usermanager/nopic.png';
2065 $xml[$i]['avatarpic']=$pic;
2066
2067 $xml[$i]['timestamp']=date('c',$log[$i]['timestamp']);
2068 $xml[$i]['type']=$log[$i]['type'];
2069 $xml[$i]['message']=strip_tags($log[$i]['logmessage']);
2070 $xml[$i]['link']=$log[$i]['link'];
2071 }
2072
2073 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'activity','full',2,$totalcount,$pagesize);
2074
2075 $cache->put($txt);
2076 unset($cache);
2077 echo($txt);
2078 }
2079
2080 }
2081
2082 /**
2083 * submit a activity
2084 * @param string $format
2085 * @param string $message
2086 * @return string xml/json
2087 */
2088 private static function activityput($format,$message) {
2089 $user=H01_OCS::checkpassword();
2090 H01_OCS::checktrafficlimit($user);
2091
2092 if($user<>'') {
2093 if(trim($message)<>'') {
2094 H01_MICROBLOG::send($user,CONFIG_USERDB,$message);
2095 echo(H01_OCS::generatexml($format,'ok',100,''));
2096 } else {
2097 echo(H01_OCS::generatexml($format,'failed',101,'empty message'));
2098 }
2099 } else {
2100 echo(H01_OCS::generatexml($format,'failed',102,'user not found'));
2101 }
2102
2103 }
2104
2105
2106 // CONTENT API #############################################
2107
2108 /**
2109 * get a specific content
2110 * @param string $format
2111 * @param string $content
2112 * @return string xml/json
2113 */
2114 private static function contentget($format,$content) {
2115 global $WEBSITECONTENT;
2116 global $DEPENDTYPES;
2117 global $DISTRIBUTIONSTYPES;
2118 global $contentlicense;
2119
2120 $user=H01_OCS::checkpassword(false);
2121 H01_OCS::checktrafficlimit($user);
2122
2123 $content=addslashes($content);
2124
2125 $cache = new H01_CACHE('apiget',array($_SESSION['website'],$_SESSION['lang'],$content,$format));
2126 if ($cache->exist()) {
2127 $cache->get();
2128 unset($cache);
2129 } else {
2130
2131 // fetch data
2132 $con=H01_CONTENT::getdetail($content);
2133
2134 // check data
2135 if ((count($con) == 0) or (!isset($con['type'])) or (!isset($WEBSITECONTENT[$con['type']])) ) {
2136 $txt=H01_OCS::generatexml($format,'failed',101,'content not found');
2137 } else {
2138
2139 $xml['id']=$con['id'];
2140 $xml['name']=$con['name'];
2141 $xml['version']=$con['version'];
2142 $xml['typeid']=$con['type'];
2143 $xml['typename']=$WEBSITECONTENT[$con['type']];
2144 $xml['language']=H01_CONTENT::$LANGUAGES[$con['language']];
2145 $xml['personid']=$con['user'];
2146 $xml['profilepage']='http://opendesktop.org/usermanager/search.php?username='.urlencode($con['user']);
2147 $xml['created']=date('c',$con['created']);
2148 $xml['changed']=date('c',$con['changed']);
2149 $xml['downloads']=$con['downloads'];
2150 $xml['score']=$con['scoresum'];
2151 $xml['description']=$con['description'];
2152 $xml['summary']=$con['summary'];
2153 $xml['feedbackurl']=$con['feedbackurl'];
2154 $xml['changelog']=$con['changelog'];
2155 $xml['homepage']=$con['homepage1'];
2156 if($con['homepagetype1']<>0) $xml['homepagetype']=H01_CONTENT::$LINK_CATEGORY[$con['homepagetype1']]; else $xml['homepagetype']='';
2157 $xml['homepage2']=$con['homepage2'];
2158 if($con['homepagetype2']<>0) $xml['homepagetype2']=H01_CONTENT::$LINK_CATEGORY[$con['homepagetype2']]; else $xml['homepagetype2']='';
2159 $xml['homepage3']=$con['homepage3'];
2160 if($con['homepagetype3']<>0) $xml['homepagetype3']=H01_CONTENT::$LINK_CATEGORY[$con['homepagetype3']]; else $xml['homepagetype3']='';
2161 $xml['homepage4']=$con['homepage4'];
2162 if($con['homepagetype4']<>0) $xml['homepagetype4']=H01_CONTENT::$LINK_CATEGORY[$con['homepagetype4']]; else $xml['homepagetype4']='';
2163 $xml['homepage5']=$con['homepage5'];
2164 if($con['homepagetype5']<>0) $xml['homepagetype5']=H01_CONTENT::$LINK_CATEGORY[$con['homepagetype5']]; else $xml['homepagetype5']='';
2165 $xml['homepage6']=$con['homepage6'];
2166 if($con['homepagetype6']<>0) $xml['homepagetype6']=H01_CONTENT::$LINK_CATEGORY[$con['homepagetype6']]; else $xml['homepagetype6']='';
2167 $xml['homepage7']=$con['homepage7'];
2168 if($con['homepagetype7']<>0) $xml['homepagetype7']=H01_CONTENT::$LINK_CATEGORY[$con['homepagetype7']]; else $xml['homepagetype7']='';
2169 $xml['homepage8']=$con['homepage8'];
2170 if($con['homepagetype8']<>0) $xml['homepagetype8']=H01_CONTENT::$LINK_CATEGORY[$con['homepagetype8']]; else $xml['homepagetype8']='';
2171 $xml['homepage9']=$con['homepage9'];
2172 if($con['homepagetype9']<>0) $xml['homepagetype9']=H01_CONTENT::$LINK_CATEGORY[$con['homepagetype9']]; else $xml['homepagetype9']='';
2173 $xml['homepage10']=$con['homepage10'];
2174 if($con['homepagetype10']<>0) $xml['homepagetype10']=H01_CONTENT::$LINK_CATEGORY[$con['homepagetype10']]; else $xml['homepagetype10']='';
2175
2176 $xml['licensetype']=$con['licensetype'];
2177 if (($con['licensetype']<>0) and ($con['licensetype']<>1000)) {
2178 if(isset($contentlicense[$con['licensetype']])) $xml['license']=$contentlicense[$con['licensetype']];
2179 } else {
2180 if (!empty($con['license'])) $xml['license']=nl2br(htmlspecialchars($con['license']));
2181 }
2182
2183 if(!empty($con['donation'])) $xml['donationpage']='http://'.CONFIG_WEBSITEHOST.'/content/donate.php?content='.$con['id']; else $xml['donationpage']='';
2184 $xml['comments']=$con['commentscount'];
2185 $xml['commentspage']='http://'.CONFIG_WEBSITEHOST.'/content/show.php?content='.$con['id'];
2186 $xml['fans']=$con['fancount'];
2187 $xml['fanspage']='http://'.CONFIG_WEBSITEHOST.'/content/show.php?action=fan&content='.$con['id'];
2188 $xml['knowledgebaseentries']=$con['knowledgebasecount'];
2189 $xml['knowledgebasepage']='http://'.CONFIG_WEBSITEHOST.'/content/show.php?action=knowledgebase&content='.$con['id'];
2190
2191 if ($con['depend']<>0) $xml['depend']=$DEPENDTYPES[$con['depend']]; else $xml['depend']='';
2192
2193 // preview
2194 if (!empty($con['preview1'])) $pic1=$con['id'].'-1.'.$con['preview1']; else $pic1='';
2195 if (!empty($con['preview2'])) $pic2=$con['id'].'-2.'.$con['preview2']; else $pic2='';
2196 if (!empty($con['preview3'])) $pic3=$con['id'].'-3.'.$con['preview3']; else $pic3='';
2197 if (!empty($con['preview1'])) $picsmall1='m'.$con['id'].'-1.png'; else $picsmall1='';
2198 if (!empty($con['preview2'])) $picsmall2='m'.$con['id'].'-2.png'; else $picsmall2='';
2199 if (!empty($con['preview3'])) $picsmall3='m'.$con['id'].'-3.png'; else $picsmall3='';
2200
2201
2202 if(!empty($pic1)) $xml['preview1']='http://'.CONFIG_WEBSITEHOST.'/content/preview.php?preview=1&id='.$con['id'].'&file1='.$pic1.'&file2='.$pic2.'&file3='.$pic3.'&name='.urlencode($con['name']); else $xml['preview1']='';
2203 if(!empty($pic2)) $xml['preview2']='http://'.CONFIG_WEBSITEHOST.'/content/preview.php?preview=2&id='.$con['id'].'&file1='.$pic1.'&file2='.$pic2.'&file3='.$pic3.'&name='.urlencode($con['name']); else $xml['preview2']='';
2204 if(!empty($pic3)) $xml['preview3']='http://'.CONFIG_WEBSITEHOST.'/content/preview.php?preview=3&id='.$con['id'].'&file1='.$pic1.'&file2='.$pic2.'&file3='.$pic3.'&name='.urlencode($con['name']); else $xml['preview3']='';
2205 if(!empty($pic1)) $xml['previewpic1']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/content-pre1/'.$pic1; else $xml['previewpic1']='';
2206 if(!empty($pic2)) $xml['previewpic2']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/content-pre2/'.$pic2; else $xml['previewpic2']='';
2207 if(!empty($pic3)) $xml['previewpic3']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/content-pre3/'.$pic3; else $xml['previewpic3']='';
2208 if(!empty($picsmall1)) $xml['smallpreviewpic1']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/content-m1/'.$picsmall1; else $xml['picsmall1']='';
2209 if(!empty($picsmall2)) $xml['smallpreviewpic2']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/content-m2/'.$picsmall2; else $xml['picsmall2']='';
2210 if(!empty($picsmall3)) $xml['smallpreviewpic3']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/content-m3/'.$picsmall3; else $xml['picsmall3']='';
2211 $xml['detailpage']='http://'.CONFIG_WEBSITEHOST.'/content/show.php?content='.$con['id'];
2212
2213 // download
2214 if (!empty($con['download1']) or !empty($con['downloadlink1']) or ($con['downloadtyp1']==2)) {
2215 if($con['downloadfiletype1']<>0) {
2216 $typetmp=$DISTRIBUTIONSTYPES[$con['downloadfiletype1']].' ';
2217 } else {
2218 $typetmp='';
2219 }
2220 $xml['downloadtype1']=$typetmp;
2221 if($con['downloadbuy1']==1) {
2222 $xml['downloadprice1']=$con['downloadbuyprice1'];
2223 $xml['downloadlink1']='http://'.CONFIG_WEBSITEHOST.'/content/buy.php?content='.$con['id'].'&id=1';
2224 }else{
2225 $xml['downloadprice1']='0';
2226 $xml['downloadlink1']='http://'.CONFIG_WEBSITEHOST.'/content/download.php?content='.$con['id'].'&id=1';
2227 }
2228 if(!empty($con['downloadname1'])) $xml['downloadname1']=$con['downloadname1']; else $xml['downloadname1']='';
2229 if(!empty($con['downloadgpgfingerprint1'])) $xml['downloadgpgfingerprint1']=$con['downloadgpgfingerprint1']; else $xml['downloadgpgfingerprint1']='';
2230 if(!empty($con['downloadgpgsignature1'])) $xml['downloadgpgsignature1']=$con['downloadgpgsignature1']; else $xml['downloadgpgsignature1']='';
2231 if(!empty($con['downloadpackagename1'])) $xml['downloadpackagename1']=$con['downloadpackagename1']; else $xml['downloadpackagename1']='';
2232 if(!empty($con['downloadrepository1'])) $xml['downloadrepository1']=$con['downloadrepository1']; else $xml['downloadrepository1']='';
2233
2234 if(($con['downloadtyp1']=='0') and (!empty($con['download1']))) $xml['downloadsize1']=ceil(@filesize(CONFIG_DOCUMENT_ROOT.'/CONTENT/content-files/'.$con['download1'])/1024); else $xml['downloadsize1']='';
2235
2236 }
2237
2238 for ($i=2; $i <= 12;$i++) {
2239 if (!empty($con['downloadname'.$i]) and !empty($con['downloadlink'.$i]) ) {
2240 if($con['downloadfiletype'.$i]<>0) {
2241 $typetmp=$DISTRIBUTIONSTYPES[$con['downloadfiletype'.$i]].' ';
2242 } else {
2243 $typetmp='';
2244 }
2245 $xml['downloadtype'.$i]=$typetmp;
2246
2247 if($con['downloadbuy'.$i]==1) {
2248 $xml['downloadprice'.$i]=$con['downloadbuyprice'.$i];
2249 $xml['downloadlink'.$i]='http://'.CONFIG_WEBSITEHOST.'/content/buy.php?content='.$con['id'].'&id='.$i;
2250 }else{
2251 $xml['downloadprice'.$i]='0';
2252 $xml['downloadlink'.$i]='http://'.CONFIG_WEBSITEHOST.'/content/download.php?content='.$con['id'].'&id='.$i;
2253 }
2254 if(!empty($con['downloadname'.$i])) $xml['downloadname'.$i]=$con['downloadname'.$i]; else $xml['downloadname'.$i]='';
2255 if(!empty($con['downloadgpgfingerprint'.$i])) $xml['downloadgpgfingerprint'.$i]=$con['downloadgpgfingerprint'.$i]; else $xml['downloadgpgfingerprint'.$i]='';
2256 if(!empty($con['downloadgpgsignature'.$i])) $xml['downloadgpgsignature'.$i]=$con['downloadgpgsignature'.$i]; else $xml['downloadgpgsignature'.$i]='';
2257 if(!empty($con['downloadpackagename'.$i])) $xml['downloadpackagename'.$i]=$con['downloadpackagename'.$i]; else $xml['downloadpackagename'.$i]='';
2258 if(!empty($con['downloadrepository'.$i])) $xml['downloadrepository'.$i]=$con['downloadrepository'.$i]; else $xml['downloadrepository'.$i]='';
2259 }
2260 }
2261 $xml2[0]=$xml;
2262 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml2,'content','full',2);
2263
2264 }
2265
2266 $cache->put($txt);
2267 unset($cache);
2268 echo($txt);
2269 }
2270 }
2271
2272
2273
2274 /**
2275 * get the download link for a content
2276 * @param string $format
2277 * @param string $content
2278 * @param string $item
2279 * @return string xml/json
2280 */
2281 private static function contentdownload($format,$content,$item) {
2282 global $WEBSITECONTENT;
2283
2284 $user=H01_OCS::checkpassword(false);
2285 H01_OCS::checktrafficlimit($user);
2286
2287 $content= (int) $content;
2288 $item= (int) $item;
2289
2290 // item range
2291 if($item<1 or $item>12) {
2292 $txt=H01_OCS::generatexml($format,'failed',101,'item not found');
2293 } else {
2294
2295 // fetch data
2296 $con=H01_CONTENT::getdetail($content);
2297
2298 // check data
2299 if ((count($con) == 0) or (!isset($con['type'])) or (!isset($WEBSITECONTENT[$con['type']])) ) {
2300 $txt=H01_OCS::generatexml($format,'failed',101,'content not found');
2301 } else {
2302
2303
2304
2305 if($item==1) {
2306 if($con['downloadtyp1']==0) {
2307 $link='http://'.CONFIG_WEBSITEHOST.'/CONTENT/content-files/'.$con['download1'];
2308 $filename=CONFIG_DOCUMENT_ROOT.'/CONTENT/content-files/'.$con['download1'];
2309
2310 $mimetype=mime_content_type($filename);
2311 // enable with php 5.3
2312 // $finfo = finfo_open(FILEINFO_MIME_TYPE);
2313 // $mimetype=finfo_file($finfo, $filename);
2314 // finfo_close($finfo);
2315
2316 } else {
2317 $link=$con['downloadlink1'];
2318 $mimetype='';
2319 }
2320 }
2321 elseif($item==2) $link=$con['downloadlink2'];
2322 elseif($item==3) $link=$con['downloadlink3'];
2323 elseif($item==4) $link=$con['downloadlink4'];
2324 elseif($item==5) $link=$con['downloadlink5'];
2325 elseif($item==6) $link=$con['downloadlink6'];
2326 elseif($item==7) $link=$con['downloadlink7'];
2327 elseif($item==8) $link=$con['downloadlink8'];
2328 elseif($item==9) $link=$con['downloadlink9'];
2329 elseif($item==10) $link=$con['downloadlink10'];
2330 elseif($item==11) $link=$con['downloadlink11'];
2331 elseif($item==12) $link=$con['downloadlink12'];
2332 else $link='';
2333
2334
2335 if($item==1){
2336 if(!empty($con['download1']) or !empty($con['downloadlink1']) or ($con['downloadtyp1']==2)) {
2337 if($con['downloadbuy1']==1) {
2338
2339 if($user=='') {
2340 echo(H01_OCS::generatexml($format,'failed',104,'you have to login to buy a content'));
2341 exit();
2342 }
2343
2344 $status=H01_PAYMENT::buy(addslashes($user),$con['id'],$item,$con['downloadbuyprice'.$item]);
2345 if($status==true) {
2346 $xml['downloadlink']=$link;
2347 $xml['mimetype']=$mimetype;
2348 $xml['gpgfingerprint']=$con['downloadgpgfingerprint1'];
2349 $xml['gpgsignature']=$con['downloadgpgsignature1'];
2350 $xml['packagename']=$con['downloadpackagename1'];
2351 $xml['repository']=$con['downloadrepository1'];
2352 $xml2[0]=$xml;
2353 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml2,'content','download',2);
2354 }else{
2355 $txt=H01_OCS::generatexml($format,'failed',102,'payment failed');
2356 }
2357 }else{
2358 $xml['downloadlink']=$link;
2359 $xml['mimetype']=$mimetype;
2360 $xml['gpgfingerprint']=$con['downloadgpgfingerprint1'];
2361 $xml['gpgsignature']=$con['downloadgpgsignature1'];
2362 $xml['packagename']=$con['downloadpackagename1'];
2363 $xml['repository']=$con['downloadrepository1'];
2364 $xml2[0]=$xml;
2365 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml2,'content','download',2);
2366 }
2367
2368 }else{
2369 $txt=H01_OCS::generatexml($format,'failed',103,'content item not found');
2370 }
2371 }
2372
2373 if(($item>1) and ($item<13)){
2374 if (!empty($con['downloadname'.$item]) or !empty($con['downloadlink'.$item])) {
2375
2376 if($con['downloadbuy'.$item]==1) {
2377 if($user=='') {
2378 echo(H01_OCS::generatexml($format,'failed',104,'you have to login to buy a content'));
2379 exit();
2380 }
2381
2382 $status=H01_PAYMENT::buy(addslashes($user),$con['id'],$item,$con['downloadbuyprice'.$item]);
2383 if($status==true) {
2384 $xml['downloadlink']=$link;
2385 $xml['mimetype']=''; // no idea with external content
2386 $xml['gpgfingerprint']=$con['downloadgpgfingerprint'.$item];
2387 $xml['gpgsignature']=$con['downloadgpgsignature'.$item];
2388 $xml['packagename']=$con['downloadpackagename'.$item];
2389 $xml['repository']=$con['downloadrepository'.$item];
2390 $xml2[0]=$xml;
2391 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml2,'content','download',2);
2392 }else{
2393 $txt=H01_OCS::generatexml($format,'failed',102,'payment failed');
2394 }
2395 }else{
2396 $xml['downloadlink']=$link;
2397 $xml['mimetype']=''; // no idea with external content
2398 $xml['gpgfingerprint']=$con['downloadgpgfingerprint'.$item];
2399 $xml['gpgsignature']=$con['downloadgpgsignature'.$item];
2400 $xml['packagename']=$con['downloadpackagename'.$item];
2401 $xml['repository']=$con['downloadrepository'.$item];
2402 $xml2[0]=$xml;
2403 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml2,'content','download',2);
2404 }
2405 }else{
2406 $txt=H01_OCS::generatexml($format,'failed',103,'content item not found');
2407 }
2408 }
2409 }
2410 }
2411
2412 if(isset($txt) and $txt<>'') {
2413 echo($txt);
2414 }else{
2415 echo(H01_OCS::generatexml($format,'failed',101,'content item not found'));
2416 }
2417 }
2418
2419
2420
2421
2422
2423 /**
2424 * get a list of contents
2425 * @param string $format
2426 * @param string $contents
2427 * @param string $searchstr
2428 * @param string $searchuser
2429 * @param string $sortmode
2430 * @param string $page
2431 * @param string $pagesize
2432 * @return string xml/json
2433 */
2434 private static function contentlist($format,$contents,$searchstr,$searchuser,$external,$distribution,$license,$sortmode,$page,$pagesize) {
2435
2436 $user=H01_OCS::checkpassword(false);
2437 H01_OCS::checktrafficlimit($user);
2438
2439
2440 $cache = new H01_CACHE('apilist',array($_SESSION['website'],$_SESSION['lang'],$format,$searchuser,$contents.$searchstr.$external.$distribution.$license.$sortmode.$page.$pagesize));
2441 if ($cache->exist()) {
2442 $cache->get();
2443 unset($cache);
2444 } else {
2445
2446 $xml=H01_CONTENT::search($user,$contents,$searchstr,$searchuser,$external,$distribution,$license,$sortmode,$page,$pagesize);
2447 $totalitems=$xml['totalitems'];
2448 unset($xml['totalitems']);
2449
2450 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'content','summary',2,$totalitems,$pagesize);
2451
2452 $cache->put($txt);
2453 unset($cache);
2454 echo($txt);
2455 }
2456
2457 }
2458
2459
2460
2461
2462 /**
2463 * get a list of recommendations for a content
2464 * @param string $format
2465 * @param string $contents
2466 * @param string $searchstr
2467 * @param string $searchuser
2468 * @param string $sortmode
2469 * @param string $page
2470 * @param string $pagesize
2471 * @return string xml/json
2472 */
2473 private static function contentrecommendations($format,$contentid,$page,$pagesize) {
2474
2475 $user=H01_OCS::checkpassword(false);
2476 H01_OCS::checktrafficlimit($user);
2477
2478
2479 $cache = new H01_CACHE('apicontentrecommendations',array($_SESSION['website'],$_SESSION['lang'],$contentid,$format));
2480 if ($cache->exist()) {
2481 $cache->get();
2482 unset($cache);
2483 } else {
2484
2485 $xml=H01_CONTENT::getrecommendations($contentid,$page,$pagesize);
2486 $totalitems=$xml['totalitems'];
2487 unset($xml['totalitems']);
2488
2489 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'content','basic',2,$totalitems,$pagesize);
2490
2491 $cache->put($txt);
2492 unset($cache);
2493 echo($txt);
2494 }
2495
2496 }
2497
2498
2499
2500
2501
2502
2503 /**
2504 * get a list of contents categories
2505 * @param string $format
2506 * @return string xml/json
2507 */
2508 private static function contentcategories($format) {
2509 global $WEBSITECONTENT;
2510 global $WEBSITECONTENTTHEME;
2511
2512 $user=H01_OCS::checkpassword(false);
2513 H01_OCS::checktrafficlimit($user);
2514
2515 $i=0;
2516 foreach($WEBSITECONTENT as $key=>$value) {
2517 $i++;
2518 $xml[$i]['id']=$key;
2519 $xml[$i]['name']=$value;
2520 }
2521 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'category','',2,count($WEBSITECONTENT));
2522
2523 echo($txt);
2524 }
2525
2526 /**
2527 * get a list of contents licenses
2528 * @param string $format
2529 * @return string xml/json
2530 */
2531 private static function contentlicenses($format) {
2532 global $contentlicense;
2533 global $contentlicenselink;
2534
2535 $user=H01_OCS::checkpassword(false);
2536 H01_OCS::checktrafficlimit($user);
2537
2538 $i=0;
2539 foreach($contentlicense as $key=>$value) {
2540 $i++;
2541 $xml[$i]['id']=$key;
2542 $xml[$i]['name']=$value;
2543 $xml[$i]['link']=$contentlicenselink[$key];
2544 }
2545 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'license','',2,count($contentlicense));
2546
2547 echo($txt);
2548 }
2549
2550 /**
2551 * get a list of contents distributions
2552 * @param string $format
2553 * @return string xml/json
2554 */
2555 private static function contentdistributions($format) {
2556 global $DISTRIBUTIONSTYPES;
2557
2558 $user=H01_OCS::checkpassword(false);
2559 H01_OCS::checktrafficlimit($user);
2560
2561 $i=0;
2562 foreach($DISTRIBUTIONSTYPES as $key=>$value) {
2563 $i++;
2564 $xml[$i]['id']=$key;
2565 $xml[$i]['name']=$value;
2566 }
2567 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'distribution','',2,count($DISTRIBUTIONSTYPES));
2568
2569 echo($txt);
2570 }
2571
2572
2573 /**
2574 * get a list of contents homepages
2575 * @param string $format
2576 * @return string xml/json
2577 */
2578 private static function contenthomepages($format) {
2579 $user=H01_OCS::checkpassword(false);
2580 H01_OCS::checktrafficlimit($user);
2581
2582 $i=0;
2583 foreach(H01_CONTENT::$LINK_CATEGORY as $key=>$value) {
2584 $i++;
2585 $xml[$i]['id']=$key;
2586 $xml[$i]['name']=$value;
2587 }
2588 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'homepagetypes','',2,count(H01_CONTENT::$LINK_CATEGORY));
2589
2590 echo($txt);
2591 }
2592
2593
2594 /**
2595 * get a list of contents dependencies
2596 * @param string $format
2597 * @return string xml/json
2598 */
2599 private static function contentdependencies($format) {
2600 global $DEPENDTYPES;
2601
2602 $user=H01_OCS::checkpassword(false);
2603 H01_OCS::checktrafficlimit($user);
2604
2605 $i=0;
2606 foreach($DEPENDTYPES as $key=>$value) {
2607 $i++;
2608 $xml[$i]['id']=$key;
2609 $xml[$i]['name']=$value;
2610 }
2611 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'dependtypes','',2,count($DEPENDTYPES));
2612
2613 echo($txt);
2614 }
2615
2616
2617
2618 /**
2619 * vote for a content
2620 * @param string $format
2621 * @param string $content
2622 * @param string $vote
2623 * @return string xml/json
2624 */
2625 private static function contentvote($format,$content,$vote) {
2626 global $WEBSITECONTENT;
2627
2628 $user=H01_OCS::checkpassword(false);
2629 H01_OCS::checktrafficlimit($user);
2630
2631 // fetch data
2632 $content=addslashes($content);
2633 $vote=addslashes($vote);
2634 $con=H01_CONTENT::getdetail($content);
2635 // check data
2636 if ((count($con) == 0) or (!isset($con['type'])) or (!isset($WEBSITECONTENT[$con['type']])) ) {
2637 $txt=H01_OCS::generatexml($format,'failed',101,'content not found');
2638 } else {
2639 if($user<>'') H01_CONTENT::setscore($user,CONFIG_USERDB,$content,$vote);
2640 $txt=H01_OCS::generatexml($format,'ok',100,'');
2641 }
2642 echo($txt);
2643 }
2644
2645
2646 /**
2647 * delete a preview picture of a content
2648 * @param string $format
2649 * @param string $contentid
2650 * @param string $previewid
2651 * @return string xml/json
2652 */
2653 private static function contentpreviewdelete($format,$contentid,$previewid) {
2654 $user=H01_OCS::checkpassword();
2655 H01_OCS::checktrafficlimit($user);
2656 $content=addslashes($contentid);
2657 $preview=addslashes($previewid);
2658
2659 // fetch data
2660 $con=H01_CONTENT::getdetail($content);
2661 if(isset($con['preview'.$preview]) and $con['preview'.$preview]<>'') {
2662
2663 if((($con['user']==$user) and ($con['userdb']==CONFIG_USERDB) and H01_AUTH::checkuser(PERM_Content_Edit,$user,CONFIG_USERDB) ) or (H01_AUTH::checkuser(PERM_Content_Admin,$user,CONFIG_USERDB))) {
2664
2665 H01_CONTENTEDIT::previewdelete($content,$con['preview'.$preview],$preview);
2666 H01_CACHEADMIN::cleancache('apilist',array($_SESSION['website'],$_SESSION['lang'],$format,$user));
2667 H01_CACHEADMIN::cleancache('apiget',array($_SESSION['website'],$_SESSION['lang'],$content));
2668 $txt=H01_OCS::generatexml($format,'ok',100,'');
2669 } else {
2670 $txt=H01_OCS::generatexml($format,'failed',101,'no permission to change content');
2671 }
2672 } else {
2673 $txt=H01_OCS::generatexml($format,'failed',102,'preview not found');
2674 }
2675 echo($txt);
2676 }
2677
2678 /**
2679 * upload a preview picture of a content
2680 * @param string $format
2681 * @param string $contentid
2682 * @param string $previewid
2683 * @return string xml/json
2684 */
2685 private static function contentpreviewupload($format,$contentid,$previewid) {
2686 $user=H01_OCS::checkpassword();
2687 H01_OCS::checktrafficlimit($user);
2688 $content=addslashes($contentid);
2689 $preview=addslashes($previewid);
2690
2691 // fetch data
2692 $con=H01_CONTENT::getdetail($content);
2693
2694 if(($preview==1) or ($preview==2) or ($preview==3)) {
2695
2696 if((($con['user']==$user) and ($con['userdb']==CONFIG_USERDB) and H01_AUTH::checkuser(PERM_Content_Edit,$user,CONFIG_USERDB) ) or (H01_AUTH::checkuser(PERM_Content_Admin,$user,CONFIG_USERDB))) {
2697
2698 if(isset($_FILES['localfile']['name']) and isset($_FILES['localfile']['name']) and ($_FILES['localfile']['name']<>'' and $_FILES['localfile']['name']<>'none' and $_FILES['localfile']['tmp_name']<>'' and $_FILES['localfile']['tmp_name']<>'none')) {
2699 H01_CONTENTEDIT::previewadd($content,'localfile',$preview);
2700 H01_CACHEADMIN::cleancache('apilist',array($_SESSION['website'],$_SESSION['lang'],$format,$user));
2701 H01_CACHEADMIN::cleancache('apiget',array($_SESSION['website'],$_SESSION['lang'],$content));
2702 $txt=H01_OCS::generatexml($format,'ok',100,'');
2703 } else {
2704 $txt=H01_OCS::generatexml($format,'failed',101,'localfile not found');
2705 }
2706 } else {
2707 $txt=H01_OCS::generatexml($format,'failed',102,'no permission to change content');
2708 }
2709 } else {
2710 $txt=H01_OCS::generatexml($format,'failed',103,'preview most be 1, 2 or 3');
2711 }
2712 echo($txt);
2713 }
2714
2715
2716
2717 /**
2718 * delete the downloadfile from a content
2719 * @param string $format
2720 * @param string $contentid
2721 * @return string xml/json
2722 */
2723 private static function contentdownloaddelete($format,$contentid) {
2724 $user=H01_OCS::checkpassword();
2725 H01_OCS::checktrafficlimit($user);
2726 $content=addslashes($contentid);
2727
2728 // fetch data
2729 $con=H01_CONTENT::getdetail($content);
2730
2731 if((($con['user']==$user) and ($con['userdb']==CONFIG_USERDB) and H01_AUTH::checkuser(PERM_Content_Edit,$user,CONFIG_USERDB) ) or (H01_AUTH::checkuser(PERM_Content_Admin,$user,CONFIG_USERDB))) {
2732
2733 H01_CONTENTEDIT::downloaddelete($content);
2734 H01_CACHEADMIN::cleancache('apilist',array($_SESSION['website'],$_SESSION['lang'],$format,$user));
2735 H01_CACHEADMIN::cleancache('apiget',array($_SESSION['website'],$_SESSION['lang'],$content));
2736 $txt=H01_OCS::generatexml($format,'ok',100,'');
2737 } else {
2738 $txt=H01_OCS::generatexml($format,'failed',101,'no permission to change content');
2739 }
2740
2741 echo($txt);
2742
2743 }
2744
2745 /**
2746 * upload the downloadfile for a content
2747 * @param string $format
2748 * @param string $contentid
2749 * @return string xml/json
2750 */
2751 private static function contentdownloadupload($format,$contentid) {
2752 $user=H01_OCS::checkpassword();
2753 H01_OCS::checktrafficlimit($user);
2754 $content=addslashes($contentid);
2755
2756 // fetch data
2757 $con=H01_CONTENT::getdetail($content);
2758
2759 if((($con['user']==$user) and ($con['userdb']==CONFIG_USERDB) and H01_AUTH::checkuser(PERM_Content_Edit,$user,CONFIG_USERDB) ) or (H01_AUTH::checkuser(PERM_Content_Admin,$user,CONFIG_USERDB))) {
2760
2761 if(isset($_FILES['localfile']['name']) and isset($_FILES['localfile']['name']) and ($_FILES['localfile']['name']<>'' and $_FILES['localfile']['name']<>'none' and $_FILES['localfile']['tmp_name']<>'' and $_FILES['localfile']['tmp_name']<>'none')) {
2762 $error=H01_CONTENTEDIT::downloadadd($content,'localfile');
2763 H01_CACHEADMIN::cleancache('apilist',array($_SESSION['website'],$_SESSION['lang'],$format,$user));
2764 H01_CACHEADMIN::cleancache('apiget',array($_SESSION['website'],$_SESSION['lang'],$content));
2765 if($error==''){
2766 $txt=H01_OCS::generatexml($format,'ok',100,'');
2767 }else{
2768 $txt=H01_OCS::generatexml($format,'failed',101,$error);
2769 }
2770 } else {
2771 $txt=H01_OCS::generatexml($format,'failed',102,'localfile not found');
2772 }
2773 } else {
2774 $txt=H01_OCS::generatexml($format,'failed',103,'no permission to change content');
2775 }
2776
2777 echo($txt);
2778
2779 }
2780
2781
2782
2783
2784 /**
2785 * add a new content
2786 * @param string $format
2787 * @return string xml/json
2788 */
2789 private static function contentadd($format) {
2790 $user=H01_OCS::checkpassword();
2791 H01_OCS::checktrafficlimit($user);
2792
2793 if(H01_AUTH::checkuser(PERM_Content_Upload,$user,CONFIG_USERDB)) {
2794
2795 $data=array();
2796 $data['name']=H01_OCS::readdata('name','text');
2797 // if(H01_OCS::readdata('type','int')<>0) $data['type']=H01_OCS::readdata('type','int');
2798 $data['type']=H01_OCS::readdata('type','int');
2799 if(H01_OCS::readdata('depend','int')<>0) $data['depend']=H01_OCS::readdata('depend','int');
2800
2801 if(isset($_POST['downloadtyp1'])) $data['downloadtyp1'] =H01_OCS::readdata('downloadtyp1','int');
2802 if(H01_OCS::readdata('downloadname1','text')<>'') $data['downloadname1'] =H01_OCS::readdata('downloadname1','text');
2803 if(H01_OCS::readdata('downloadlink1','text')<>'') $data['downloadlink1'] =H01_OCS::readdata('downloadlink1','text');
2804 if(isset($_POST['downloaddistributiontype1'])) $data['downloadfiletype1'] =H01_OCS::readdata('downloaddistributiontype1','int');
2805 if(isset($_POST['downloadbuy1'])) $data['downloadbuy1'] =H01_OCS::readdata('downloadbuy1','int');
2806 if(H01_OCS::readdata('downloadbuyreason1','text')<>'') $data['downloadbuyreason1'] =H01_OCS::readdata('downloadbuyreason1','text');
2807 if(isset($_POST['downloadbuyprice1'])) $data['downloadbuyprice1'] =H01_OCS::readdata('downloadbuyprice1','float');
2808 if(H01_OCS::readdata('downloadpackagename1','text')<>'') $data['downloadpackagename1'] =H01_OCS::readdata('downloadpackagename1','text');
2809 if(H01_OCS::readdata('downloadrepository1','text')<>'') $data['downloadrepository1'] =H01_OCS::readdata('downloadrepository1','text');
2810 if(H01_OCS::readdata('downloadgpgfingerprint1','text')<>'') $data['downloadgpgfingerprint1'] =H01_OCS::readdata('downloadgpgfingerprint1','text');
2811 if(H01_OCS::readdata('downloadgpgsignature1','text')<>'') $data['downloadgpgsignature1'] =H01_OCS::readdata('downloadgpgsignature1','text');
2812
2813 if(H01_OCS::readdata('downloadname2','text')<>'') $data['downloadname2'] =H01_OCS::readdata('downloadname2','text');
2814 if(H01_OCS::readdata('downloadlink2','text')<>'') $data['downloadlink2'] =H01_OCS::readdata('downloadlink2','text');
2815 if(isset($_POST['downloaddistributiontype2'])) $data['downloadfiletype2'] =H01_OCS::readdata('downloaddistributiontype2','int');
2816 if(isset($_POST['downloadbuy2'])) $data['downloadbuy2'] =H01_OCS::readdata('downloadbuy2','int');
2817 if(H01_OCS::readdata('downloadbuyreason2','text')<>'') $data['downloadbuyreason2'] =H01_OCS::readdata('downloadbuyreason2','text');
2818 if(isset($_POST['downloadbuyprice2'])) $data['downloadbuyprice2'] =H01_OCS::readdata('downloadbuyprice2','float');
2819 if(H01_OCS::readdata('downloadpackagename2','text')<>'') $data['downloadpackagename2'] =H01_OCS::readdata('downloadpackagename2','text');
2820 if(H01_OCS::readdata('downloadrepository2','text')<>'') $data['downloadrepository2'] =H01_OCS::readdata('downloadrepository2','text');
2821 if(H01_OCS::readdata('downloadgpgfingerprint2','text')<>'') $data['downloadgpgfingerprint2'] =H01_OCS::readdata('downloadgpgfingerprint2','text');
2822 if(H01_OCS::readdata('downloadgpgsignature2','text')<>'') $data['downloadgpgsignature2'] =H01_OCS::readdata('downloadgpgsignature2','text');
2823
2824 if(H01_OCS::readdata('downloadname3','text')<>'') $data['downloadname3'] =H01_OCS::readdata('downloadname3','text');
2825 if(H01_OCS::readdata('downloadlink3','text')<>'') $data['downloadlink3'] =H01_OCS::readdata('downloadlink3','text');
2826 if(isset($_POST['downloaddistributiontype3'])) $data['downloadfiletype3'] =H01_OCS::readdata('downloaddistributiontype3','int');
2827 if(isset($_POST['downloadbuy3'])) $data['downloadbuy3'] =H01_OCS::readdata('downloadbuy3','int');
2828 if(H01_OCS::readdata('downloadbuyreason3','text')<>'') $data['downloadbuyreason3'] =H01_OCS::readdata('downloadbuyreason3','text');
2829 if(isset($_POST['downloadbuyprice3'])) $data['downloadbuyprice3'] =H01_OCS::readdata('downloadbuyprice3','float');
2830 if(H01_OCS::readdata('downloadpackagename3','text')<>'') $data['downloadpackagename3'] =H01_OCS::readdata('downloadpackagename3','text');
2831 if(H01_OCS::readdata('downloadrepository3','text')<>'') $data['downloadrepository3'] =H01_OCS::readdata('downloadrepository3','text');
2832 if(H01_OCS::readdata('downloadgpgfingerprint3','text')<>'') $data['downloadgpgfingerprint3'] =H01_OCS::readdata('downloadgpgfingerprint3','text');
2833 if(H01_OCS::readdata('downloadgpgsignature3','text')<>'') $data['downloadgpgsignature3'] =H01_OCS::readdata('downloadgpgsignature3','text');
2834
2835 if(H01_OCS::readdata('downloadname4','text')<>'') $data['downloadname4'] =H01_OCS::readdata('downloadname4','text');
2836 if(H01_OCS::readdata('downloadlink4','text')<>'') $data['downloadlink4'] =H01_OCS::readdata('downloadlink4','text');
2837 if(isset($_POST['downloaddistributiontype4'])) $data['downloadfiletype4'] =H01_OCS::readdata('downloaddistributiontype4','int');
2838 if(isset($_POST['downloadbuy4'])) $data['downloadbuy4'] =H01_OCS::readdata('downloadbuy4','int');
2839 if(H01_OCS::readdata('downloadbuyreason4','text')<>'') $data['downloadbuyreason4'] =H01_OCS::readdata('downloadbuyreason4','text');
2840 if(isset($_POST['downloadbuyprice4'])) $data['downloadbuyprice4'] =H01_OCS::readdata('downloadbuyprice4','float');
2841 if(H01_OCS::readdata('downloadpackagename4','text')<>'') $data['downloadpackagename4'] =H01_OCS::readdata('downloadpackagename4','text');
2842 if(H01_OCS::readdata('downloadrepository4','text')<>'') $data['downloadrepository4'] =H01_OCS::readdata('downloadrepository4','text');
2843 if(H01_OCS::readdata('downloadgpgfingerprint4','text')<>'') $data['downloadgpgfingerprint4'] =H01_OCS::readdata('downloadgpgfingerprint4','text');
2844 if(H01_OCS::readdata('downloadgpgsignature4','text')<>'') $data['downloadgpgsignature4'] =H01_OCS::readdata('downloadgpgsignature4','text');
2845
2846 if(H01_OCS::readdata('downloadgpgfingerprint1','text')<>'') $data['downloadgpgfingerprint1'] =H01_OCS::readdata('downloadgpgfingerprint1','text');
2847 if(H01_OCS::readdata('downloadgpgsignature1','text')<>'') $data['downloadgpgsignature1'] =H01_OCS::readdata('downloadgpgsignature1','text');
2848 if(H01_OCS::readdata('downloadname5','text')<>'') $data['downloadname5'] =H01_OCS::readdata('downloadname5','text');
2849 if(H01_OCS::readdata('downloadlink5','text')<>'') $data['downloadlink5'] =H01_OCS::readdata('downloadlink5','text');
2850 if(isset($_POST['downloaddistributiontype5'])) $data['downloadfiletype5'] =H01_OCS::readdata('downloaddistributiontype5','int');
2851 if(isset($_POST['downloadbuy5'])) $data['downloadbuy5'] =H01_OCS::readdata('downloadbuy5','int');
2852 if(H01_OCS::readdata('downloadbuyreason5','text')<>'') $data['downloadbuyreason5'] =H01_OCS::readdata('downloadbuyreason5','text');
2853 if(isset($_POST['downloadbuyprice5'])) $data['downloadbuyprice5'] =H01_OCS::readdata('downloadbuyprice5','float');
2854 if(H01_OCS::readdata('downloadpackagename5','text')<>'') $data['downloadpackagename5'] =H01_OCS::readdata('downloadpackagename5','text');
2855 if(H01_OCS::readdata('downloadrepository5','text')<>'') $data['downloadrepository5'] =H01_OCS::readdata('downloadrepository5','text');
2856 if(H01_OCS::readdata('downloadgpgfingerprint5','text')<>'') $data['downloadgpgfingerprint5'] =H01_OCS::readdata('downloadgpgfingerprint5','text');
2857 if(H01_OCS::readdata('downloadgpgsignature5','text')<>'') $data['downloadgpgsignature5'] =H01_OCS::readdata('downloadgpgsignature5','text');
2858
2859 if(H01_OCS::readdata('downloadname6','text')<>'') $data['downloadname6'] =H01_OCS::readdata('downloadname6','text');
2860 if(H01_OCS::readdata('downloadlink6','text')<>'') $data['downloadlink6'] =H01_OCS::readdata('downloadlink6','text');
2861 if(isset($_POST['downloaddistributiontype6'])) $data['downloadfiletype6'] =H01_OCS::readdata('downloaddistributiontype6','int');
2862 if(isset($_POST['downloadbuy6'])) $data['downloadbuy6'] =H01_OCS::readdata('downloadbuy6','int');
2863 if(H01_OCS::readdata('downloadbuyreason6','text')<>'') $data['downloadbuyreason6'] =H01_OCS::readdata('downloadbuyreason6','text');
2864 if(isset($_POST['downloadbuyprice6'])) $data['downloadbuyprice6'] =H01_OCS::readdata('downloadbuyprice6','float');
2865 if(H01_OCS::readdata('downloadpackagename6','text')<>'') $data['downloadpackagename6'] =H01_OCS::readdata('downloadpackagename6','text');
2866 if(H01_OCS::readdata('downloadrepository6','text')<>'') $data['downloadrepository6'] =H01_OCS::readdata('downloadrepository6','text');
2867 if(H01_OCS::readdata('downloadgpgfingerprint6','text')<>'') $data['downloadgpgfingerprint6'] =H01_OCS::readdata('downloadgpgfingerprint6','text');
2868 if(H01_OCS::readdata('downloadgpgsignature6','text')<>'') $data['downloadgpgsignature6'] =H01_OCS::readdata('downloadgpgsignature6','text');
2869
2870 if(H01_OCS::readdata('downloadname7','text')<>'') $data['downloadname7'] =H01_OCS::readdata('downloadname7','text');
2871 if(H01_OCS::readdata('downloadlink7','text')<>'') $data['downloadlink7'] =H01_OCS::readdata('downloadlink7','text');
2872 if(isset($_POST['downloaddistributiontype7'])) $data['downloadfiletype7'] =H01_OCS::readdata('downloaddistributiontype7','int');
2873 if(isset($_POST['downloadbuy7'])) $data['downloadbuy7'] =H01_OCS::readdata('downloadbuy7','int');
2874 if(H01_OCS::readdata('downloadbuyreason7','text')<>'') $data['downloadbuyreason7'] =H01_OCS::readdata('downloadbuyreason7','text');
2875 if(isset($_POST['downloadbuyprice7'])) $data['downloadbuyprice7'] =H01_OCS::readdata('downloadbuyprice7','float');
2876 if(H01_OCS::readdata('downloadpackagename7','text')<>'') $data['downloadpackagename7'] =H01_OCS::readdata('downloadpackagename7','text');
2877 if(H01_OCS::readdata('downloadrepository7','text')<>'') $data['downloadrepository7'] =H01_OCS::readdata('downloadrepository7','text');
2878 if(H01_OCS::readdata('downloadgpgfingerprint7','text')<>'') $data['downloadgpgfingerprint7'] =H01_OCS::readdata('downloadgpgfingerprint7','text');
2879 if(H01_OCS::readdata('downloadgpgsignature7','text')<>'') $data['downloadgpgsignature7'] =H01_OCS::readdata('downloadgpgsignature7','text');
2880
2881 if(H01_OCS::readdata('downloadname8','text')<>'') $data['downloadname8'] =H01_OCS::readdata('downloadname8','text');
2882 if(H01_OCS::readdata('downloadlink8','text')<>'') $data['downloadlink8'] =H01_OCS::readdata('downloadlink8','text');
2883 if(isset($_POST['downloaddistributiontype8'])) $data['downloadfiletype8'] =H01_OCS::readdata('downloaddistributiontype8','int');
2884 if(isset($_POST['downloadbuy8'])) $data['downloadbuy8'] =H01_OCS::readdata('downloadbuy8','int');
2885 if(H01_OCS::readdata('downloadbuyreason8','text')<>'') $data['downloadbuyreason8'] =H01_OCS::readdata('downloadbuyreason8','text');
2886 if(isset($_POST['downloadbuyprice8'])) $data['downloadbuyprice8'] =H01_OCS::readdata('downloadbuyprice8','float');
2887 if(H01_OCS::readdata('downloadpackagename8','text')<>'') $data['downloadpackagename8'] =H01_OCS::readdata('downloadpackagename8','text');
2888 if(H01_OCS::readdata('downloadrepository8','text')<>'') $data['downloadrepository8'] =H01_OCS::readdata('downloadrepository8','text');
2889 if(H01_OCS::readdata('downloadgpgfingerprint8','text')<>'') $data['downloadgpgfingerprint8'] =H01_OCS::readdata('downloadgpgfingerprint8','text');
2890 if(H01_OCS::readdata('downloadgpgsignature8','text')<>'') $data['downloadgpgsignature8'] =H01_OCS::readdata('downloadgpgsignature8','text');
2891
2892 if(H01_OCS::readdata('downloadname9','text')<>'') $data['downloadname9'] =H01_OCS::readdata('downloadname9','text');
2893 if(H01_OCS::readdata('downloadlink9','text')<>'') $data['downloadlink9'] =H01_OCS::readdata('downloadlink9','text');
2894 if(isset($_POST['downloaddistributiontype9'])) $data['downloadfiletype9'] =H01_OCS::readdata('downloaddistributiontype9','int');
2895 if(isset($_POST['downloadbuy9'])) $data['downloadbuy9'] =H01_OCS::readdata('downloadbuy9','int');
2896 if(H01_OCS::readdata('downloadbuyreason9','text')<>'') $data['downloadbuyreason9'] =H01_OCS::readdata('downloadbuyreason9','text');
2897 if(isset($_POST['downloadbuyprice9'])) $data['downloadbuyprice9'] =H01_OCS::readdata('downloadbuyprice9','float');
2898 if(H01_OCS::readdata('downloadpackagename9','text')<>'') $data['downloadpackagename9'] =H01_OCS::readdata('downloadpackagename9','text');
2899 if(H01_OCS::readdata('downloadrepository9','text')<>'') $data['downloadrepository9'] =H01_OCS::readdata('downloadrepository9','text');
2900 if(H01_OCS::readdata('downloadgpgfingerprint9','text')<>'') $data['downloadgpgfingerprint9'] =H01_OCS::readdata('downloadgpgfingerprint9','text');
2901 if(H01_OCS::readdata('downloadgpgsignature9','text')<>'') $data['downloadgpgsignature9'] =H01_OCS::readdata('downloadgpgsignature9','text');
2902
2903 if(H01_OCS::readdata('downloadname10','text')<>'') $data['downloadname10'] =H01_OCS::readdata('downloadname10','text');
2904 if(H01_OCS::readdata('downloadlink10','text')<>'') $data['downloadlink10'] =H01_OCS::readdata('downloadlink10','text');
2905 if(isset($_POST['downloaddistributiontype10'])) $data['downloadfiletype10'] =H01_OCS::readdata('downloaddistributiontype10','int');
2906 if(isset($_POST['downloadbuy10'])) $data['downloadbuy10'] =H01_OCS::readdata('downloadbuy10','int');
2907 if(H01_OCS::readdata('downloadbuyreason10','text')<>'') $data['downloadbuyreason10'] =H01_OCS::readdata('downloadbuyreason10','text');
2908 if(isset($_POST['downloadbuyprice10'])) $data['downloadbuyprice10'] =H01_OCS::readdata('downloadbuyprice10','float');
2909 if(H01_OCS::readdata('downloadpackagename10','text')<>'') $data['downloadpackagename10'] =H01_OCS::readdata('downloadpackagename10','text');
2910 if(H01_OCS::readdata('downloadrepository10','text')<>'') $data['downloadrepository10'] =H01_OCS::readdata('downloadrepository10','text');
2911 if(H01_OCS::readdata('downloadgpgfingerprint10','text')<>'') $data['downloadgpgfingerprint10'] =H01_OCS::readdata('downloadgpgfingerprint10','text');
2912 if(H01_OCS::readdata('downloadgpgsignature10','text')<>'') $data['downloadgpgsignature10'] =H01_OCS::readdata('downloadgpgsignature10','text');
2913
2914 if(H01_OCS::readdata('downloadname11','text')<>'') $data['downloadname11'] =H01_OCS::readdata('downloadname11','text');
2915 if(H01_OCS::readdata('downloadlink11','text')<>'') $data['downloadlink11'] =H01_OCS::readdata('downloadlink11','text');
2916 if(isset($_POST['downloaddistributiontype11'])) $data['downloadfiletype11'] =H01_OCS::readdata('downloaddistributiontype11','int');
2917 if(isset($_POST['downloadbuy11'])) $data['downloadbuy11'] =H01_OCS::readdata('downloadbuy11','int');
2918 if(H01_OCS::readdata('downloadbuyreason11','text')<>'') $data['downloadbuyreason11'] =H01_OCS::readdata('downloadbuyreason11','text');
2919 if(isset($_POST['downloadbuyprice11'])) $data['downloadbuyprice11'] =H01_OCS::readdata('downloadbuyprice11','float');
2920 if(H01_OCS::readdata('downloadpackagename11','text')<>'') $data['downloadpackagename11'] =H01_OCS::readdata('downloadpackagename11','text');
2921 if(H01_OCS::readdata('downloadrepository11','text')<>'') $data['downloadrepository11'] =H01_OCS::readdata('downloadrepository11','text');
2922 if(H01_OCS::readdata('downloadgpgfingerprint11','text')<>'') $data['downloadgpgfingerprint11'] =H01_OCS::readdata('downloadgpgfingerprint11','text');
2923 if(H01_OCS::readdata('downloadgpgsignature11','text')<>'') $data['downloadgpgsignature11'] =H01_OCS::readdata('downloadgpgsignature11','text');
2924
2925 if(H01_OCS::readdata('downloadname12','text')<>'') $data['downloadname12'] =H01_OCS::readdata('downloadname12','text');
2926 if(H01_OCS::readdata('downloadlink12','text')<>'') $data['downloadlink12'] =H01_OCS::readdata('downloadlink12','text');
2927 if(isset($_POST['downloaddistributiontype12'])) $data['downloadfiletype12'] =H01_OCS::readdata('downloaddistributiontype12','int');
2928 if(isset($_POST['downloadbuy12'])) $data['downloadbuy12'] =H01_OCS::readdata('downloadbuy12','int');
2929 if(H01_OCS::readdata('downloadbuyreason12','text')<>'') $data['downloadbuyreason12'] =H01_OCS::readdata('downloadbuyreason12','text');
2930 if(isset($_POST['downloadbuyprice12'])) $data['downloadbuyprice12'] =H01_OCS::readdata('downloadbuyprice12','float');
2931 if(H01_OCS::readdata('downloadpackagename12','text')<>'') $data['downloadpackagename12'] =H01_OCS::readdata('downloadpackagename12','text');
2932 if(H01_OCS::readdata('downloadrepository12','text')<>'') $data['downloadrepository12'] =H01_OCS::readdata('downloadrepository12','text');
2933 if(H01_OCS::readdata('downloadgpgfingerprint12','text')<>'') $data['downloadgpgfingerprint12'] =H01_OCS::readdata('downloadgpgfingerprint12','text');
2934 if(H01_OCS::readdata('downloadgpgsignature12','text')<>'') $data['downloadgpgsignature12'] =H01_OCS::readdata('downloadgpgsignature12','text');
2935
2936 if(H01_OCS::readdata('description','text')<>'') $data['description']=H01_OCS::readdata('description','text');
2937 if(H01_OCS::readdata('summary','text')<>'') $data['summary']=H01_OCS::readdata('summary','text');
2938 if(H01_OCS::readdata('feedbackurl','text')<>'') $data['feedbackurl']=H01_OCS::readdata('feedbackurl','text');
2939 if(isset($_POST['licensetype'])) $data['licensetype']=H01_OCS::readdata('licensetype','int');
2940 if(H01_OCS::readdata('license','text')<>'') $data['license']=H01_OCS::readdata('license','text');
2941
2942 if(H01_OCS::readdata('homepage','text')<>'') $data['homepage1']=H01_OCS::readdata('homepage','text');
2943 if(H01_OCS::readdata('homepagetype','int')<>0) $data['homepagetype1']=H01_OCS::readdata('homepagetype','int');
2944 if(H01_OCS::readdata('homepage2','text')<>'') $data['homepage2']=H01_OCS::readdata('homepage2','text');
2945 if(H01_OCS::readdata('homepagetype2','int')<>0) $data['homepagetype2']=H01_OCS::readdata('homepagetype2','int');
2946 if(H01_OCS::readdata('homepage3','text')<>'') $data['homepage3']=H01_OCS::readdata('homepage3','text');
2947 if(H01_OCS::readdata('homepagetype3','int')<>0) $data['homepagetype3']=H01_OCS::readdata('homepagetype3','int');
2948 if(H01_OCS::readdata('homepage4','text')<>'') $data['homepage4']=H01_OCS::readdata('homepage4','text');
2949 if(H01_OCS::readdata('homepagetype4','int')<>0) $data['homepagetype4']=H01_OCS::readdata('homepagetype4','int');
2950 if(H01_OCS::readdata('homepage5','text')<>'') $data['homepage5']=H01_OCS::readdata('homepage5','text');
2951 if(H01_OCS::readdata('homepagetype5','int')<>0) $data['homepagetype5']=H01_OCS::readdata('homepagetype5','int');
2952 if(H01_OCS::readdata('homepage6','text')<>'') $data['homepage6']=H01_OCS::readdata('homepage6','text');
2953 if(H01_OCS::readdata('homepagetype6','int')<>0) $data['homepagetype6']=H01_OCS::readdata('homepagetype6','int');
2954 if(H01_OCS::readdata('homepage7','text')<>'') $data['homepage7']=H01_OCS::readdata('homepage7','text');
2955 if(H01_OCS::readdata('homepagetype7','int')<>0) $data['homepagetype7']=H01_OCS::readdata('homepagetype7','int');
2956 if(H01_OCS::readdata('homepage8','text')<>'') $data['homepage8']=H01_OCS::readdata('homepage8','text');
2957 if(H01_OCS::readdata('homepagetype8','int')<>0) $data['homepagetype8']=H01_OCS::readdata('homepagetype8','int');
2958 if(H01_OCS::readdata('homepage9','text')<>'') $data['homepage9']=H01_OCS::readdata('homepage9','text');
2959 if(H01_OCS::readdata('homepagetype9','int')<>0) $data['homepagetype9']=H01_OCS::readdata('homepagetype9','int');
2960 if(H01_OCS::readdata('homepage10','text')<>'') $data['homepage10']=H01_OCS::readdata('homepage10','text');
2961 if(H01_OCS::readdata('homepagetype10','int')<>0) $data['homepagetype10']=H01_OCS::readdata('homepagetype10','int');
2962
2963 if(H01_OCS::readdata('version','text')<>'') $data['version']=H01_OCS::readdata('version','text');
2964 if(H01_OCS::readdata('changelog','text')<>'') $data['changelog']=H01_OCS::readdata('changelog','text');
2965 if(isset($_POST['donation'])) $data['donation']=H01_OCS::readdata('donation','text');
2966 if(H01_OCS::readdata('osbsproject','text')<>'') $data['osbsproject']=H01_OCS::readdata('osbsproject','text');
2967 if(H01_OCS::readdata('osbspackage','text')<>'') $data['osbspackage']=H01_OCS::readdata('osbspackage','text');
2968 if(H01_OCS::readdata('donationreason','text')<>'') $data['donationreason']=H01_OCS::readdata('donationreason','text');
2969
2970 if(($data['name']<>'') and ($data['type']<>0)) {
2971 $id=H01_CONTENTEDIT::add($user,$data);
2972 H01_CACHEADMIN::cleancache('apilist',array($_SESSION['website'],$_SESSION['lang'],$format,$user));
2973 H01_CACHEADMIN::cleancache('apiget',array($_SESSION['website'],$_SESSION['lang'],$id));
2974 $xml=array();
2975 $xml[0]['id']=$id;
2976 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'content','',2);
2977 }else{
2978 $txt=H01_OCS::generatexml($format,'failed',101,'please specify all mandatory fields');
2979 }
2980 }else{
2981 $txt=H01_OCS::generatexml($format,'failed',102,'no permission to change content');
2982 }
2983
2984 echo($txt);
2985
2986 }
2987
2988
2989
2990 /**
2991 * edit a content entry
2992 * @param string $format
2993 * @param string $contentid
2994 * @return string xml/json
2995 */
2996 private static function contentedit($format,$contentid) {
2997
2998 $user=H01_OCS::checkpassword();
2999 H01_OCS::checktrafficlimit($user);
3000 $content=addslashes($contentid);
3001
3002 // fetch data
3003 $con=H01_CONTENT::getdetail($content);
3004 if(isset($con['user'])) {
3005
3006 if((($con['user']==$user) and ($con['userdb']==CONFIG_USERDB) and H01_AUTH::checkuser(PERM_Content_Edit,$user,CONFIG_USERDB) ) or (H01_AUTH::checkuser(PERM_Content_Admin,$user,CONFIG_USERDB))) {
3007
3008 $data=array();
3009 $data['name']=H01_OCS::readdata('name','text');
3010 $data['type']=H01_OCS::readdata('type','int');
3011 if(H01_OCS::readdata('depend','int')<>0) $data['depend']=H01_OCS::readdata('depend','int');
3012
3013 if(isset($_POST['downloadtyp1'])) $data['downloadtyp1'] =H01_OCS::readdata('downloadtyp1','int');
3014 if(H01_OCS::readdata('downloadname1','text')<>'') $data['downloadname1'] =H01_OCS::readdata('downloadname1','text');
3015 if(H01_OCS::readdata('downloadlink1','text')<>'') $data['downloadlink1'] =H01_OCS::readdata('downloadlink1','text');
3016 if(isset($_POST['downloaddistributiontype1'])) $data['downloadfiletype1'] =H01_OCS::readdata('downloaddistributiontype1','int');
3017 if(isset($_POST['downloadbuy1'])) $data['downloadbuy1'] =H01_OCS::readdata('downloadbuy1','int');
3018 if(H01_OCS::readdata('downloadbuyreason1','text')<>'') $data['downloadbuyreason1'] =H01_OCS::readdata('downloadbuyreason1','text');
3019 if(isset($_POST['downloadbuyprice1'])) $data['downloadbuyprice1'] =H01_OCS::readdata('downloadbuyprice1','float');
3020 if(isset($_POST['downloadpackagename1'])) $data['downloadpackagename1'] =H01_OCS::readdata('downloadpackagename1','text');
3021 if(isset($_POST['downloadrepository1'])) $data['downloadrepository1'] =H01_OCS::readdata('downloadrepository1','text');
3022 if(H01_OCS::readdata('downloadgpgfingerprint1','text')<>'') $data['downloadgpgfingerprint1'] =H01_OCS::readdata('downloadgpgfingerprint1','text');
3023 if(H01_OCS::readdata('downloadgpgsignature1','text')<>'') $data['downloadgpgsignature1'] =H01_OCS::readdata('downloadgpgsignature1','text');
3024
3025 if(H01_OCS::readdata('downloadname2','text')<>'') $data['downloadname2'] =H01_OCS::readdata('downloadname2','text');
3026 if(H01_OCS::readdata('downloadlink2','text')<>'') $data['downloadlink2'] =H01_OCS::readdata('downloadlink2','text');
3027 if(isset($_POST['downloaddistributiontype2'])) $data['downloadfiletype2'] =H01_OCS::readdata('downloaddistributiontype2','int');
3028 if(isset($_POST['downloadbuy2'])) $data['downloadbuy2'] =H01_OCS::readdata('downloadbuy2','int');
3029 if(H01_OCS::readdata('downloadbuyreason2','text')<>'') $data['downloadbuyreason2'] =H01_OCS::readdata('downloadbuyreason2','text');
3030 if(isset($_POST['downloadbuyprice2'])) $data['downloadbuyprice2'] =H01_OCS::readdata('downloadbuyprice2','float');
3031 if(isset($_POST['downloadpackagename2'])) $data['downloadpackagename2'] =H01_OCS::readdata('downloadpackagename2','text');
3032 if(isset($_POST['downloadrepository2'])) $data['downloadrepository2'] =H01_OCS::readdata('downloadrepository2','text');
3033 if(H01_OCS::readdata('downloadgpgfingerprint2','text')<>'') $data['downloadgpgfingerprint2'] =H01_OCS::readdata('downloadgpgfingerprint2','text');
3034 if(H01_OCS::readdata('downloadgpgsignature2','text')<>'') $data['downloadgpgsignature2'] =H01_OCS::readdata('downloadgpgsignature2','text');
3035
3036 if(H01_OCS::readdata('downloadname3','text')<>'') $data['downloadname3'] =H01_OCS::readdata('downloadname3','text');
3037 if(H01_OCS::readdata('downloadlink3','text')<>'') $data['downloadlink3'] =H01_OCS::readdata('downloadlink3','text');
3038 if(isset($_POST['downloaddistributiontype3'])) $data['downloadfiletype3'] =H01_OCS::readdata('downloaddistributiontype3','int');
3039 if(isset($_POST['downloadbuy3'])) $data['downloadbuy3'] =H01_OCS::readdata('downloadbuy3','int');
3040 if(H01_OCS::readdata('downloadbuyreason3','text')<>'') $data['downloadbuyreason3'] =H01_OCS::readdata('downloadbuyreason3','text');
3041 if(isset($_POST['downloadbuyprice3'])) $data['downloadbuyprice3'] =H01_OCS::readdata('downloadbuyprice3','float');
3042 if(isset($_POST['downloadpackagename3'])) $data['downloadpackagename3'] =H01_OCS::readdata('downloadpackagename3','text');
3043 if(isset($_POST['downloadrepository3'])) $data['downloadrepository3'] =H01_OCS::readdata('downloadrepository3','text');
3044 if(H01_OCS::readdata('downloadgpgfingerprint3','text')<>'') $data['downloadgpgfingerprint3'] =H01_OCS::readdata('downloadgpgfingerprint3','text');
3045 if(H01_OCS::readdata('downloadgpgsignature3','text')<>'') $data['downloadgpgsignature3'] =H01_OCS::readdata('downloadgpgsignature3','text');
3046
3047 if(H01_OCS::readdata('downloadname4','text')<>'') $data['downloadname4'] =H01_OCS::readdata('downloadname4','text');
3048 if(H01_OCS::readdata('downloadlink4','text')<>'') $data['downloadlink4'] =H01_OCS::readdata('downloadlink4','text');
3049 if(isset($_POST['downloaddistributiontype4'])) $data['downloadfiletype4'] =H01_OCS::readdata('downloaddistributiontype4','int');
3050 if(isset($_POST['downloadbuy4'])) $data['downloadbuy4'] =H01_OCS::readdata('downloadbuy4','int');
3051 if(H01_OCS::readdata('downloadbuyreason4','text')<>'') $data['downloadbuyreason4'] =H01_OCS::readdata('downloadbuyreason4','text');
3052 if(isset($_POST['downloadbuyprice4'])) $data['downloadbuyprice4'] =H01_OCS::readdata('downloadbuyprice4','float');
3053 if(isset($_POST['downloadpackagename4'])) $data['downloadpackagename4'] =H01_OCS::readdata('downloadpackagename4','text');
3054 if(isset($_POST['downloadrepository4'])) $data['downloadrepository4'] =H01_OCS::readdata('downloadrepository4','text');
3055 if(H01_OCS::readdata('downloadgpgfingerprint4','text')<>'') $data['downloadgpgfingerprint4'] =H01_OCS::readdata('downloadgpgfingerprint4','text');
3056 if(H01_OCS::readdata('downloadgpgsignature4','text')<>'') $data['downloadgpgsignature4'] =H01_OCS::readdata('downloadgpgsignature4','text');
3057
3058 if(H01_OCS::readdata('downloadname5','text')<>'') $data['downloadname5'] =H01_OCS::readdata('downloadname5','text');
3059 if(H01_OCS::readdata('downloadlink5','text')<>'') $data['downloadlink5'] =H01_OCS::readdata('downloadlink5','text');
3060 if(isset($_POST['downloaddistributiontype5'])) $data['downloadfiletype5'] =H01_OCS::readdata('downloaddistributiontype5','int');
3061 if(isset($_POST['downloadbuy5'])) $data['downloadbuy5'] =H01_OCS::readdata('downloadbuy5','int');
3062 if(H01_OCS::readdata('downloadbuyreason5','text')<>'') $data['downloadbuyreason5'] =H01_OCS::readdata('downloadbuyreason5','text');
3063 if(isset($_POST['downloadbuyprice5'])) $data['downloadbuyprice5'] =H01_OCS::readdata('downloadbuyprice5','float');
3064 if(isset($_POST['downloadpackagename5'])) $data['downloadpackagename5'] =H01_OCS::readdata('downloadpackagename5','text');
3065 if(isset($_POST['downloadrepository5'])) $data['downloadrepository5'] =H01_OCS::readdata('downloadrepository5','text');
3066 if(H01_OCS::readdata('downloadgpgfingerprint5','text')<>'') $data['downloadgpgfingerprint5'] =H01_OCS::readdata('downloadgpgfingerprint5','text');
3067 if(H01_OCS::readdata('downloadgpgsignature5','text')<>'') $data['downloadgpgsignature5'] =H01_OCS::readdata('downloadgpgsignature5','text');
3068
3069 if(H01_OCS::readdata('downloadname6','text')<>'') $data['downloadname6'] =H01_OCS::readdata('downloadname6','text');
3070 if(H01_OCS::readdata('downloadlink6','text')<>'') $data['downloadlink6'] =H01_OCS::readdata('downloadlink6','text');
3071 if(isset($_POST['downloaddistributiontype6'])) $data['downloadfiletype6'] =H01_OCS::readdata('downloaddistributiontype6','int');
3072 if(isset($_POST['downloadbuy6'])) $data['downloadbuy6'] =H01_OCS::readdata('downloadbuy6','int');
3073 if(H01_OCS::readdata('downloadbuyreason6','text')<>'') $data['downloadbuyreason6'] =H01_OCS::readdata('downloadbuyreason6','text');
3074 if(isset($_POST['downloadbuyprice6'])) $data['downloadbuyprice6'] =H01_OCS::readdata('downloadbuyprice6','float');
3075 if(isset($_POST['downloadpackagename6'])) $data['downloadpackagename6'] =H01_OCS::readdata('downloadpackagename6','text');
3076 if(isset($_POST['downloadrepository6'])) $data['downloadrepository6'] =H01_OCS::readdata('downloadrepository6','text');
3077 if(H01_OCS::readdata('downloadgpgfingerprint6','text')<>'') $data['downloadgpgfingerprint6'] =H01_OCS::readdata('downloadgpgfingerprint6','text');
3078 if(H01_OCS::readdata('downloadgpgsignature6','text')<>'') $data['downloadgpgsignature6'] =H01_OCS::readdata('downloadgpgsignature6','text');
3079
3080 if(H01_OCS::readdata('downloadname7','text')<>'') $data['downloadname7'] =H01_OCS::readdata('downloadname7','text');
3081 if(H01_OCS::readdata('downloadlink7','text')<>'') $data['downloadlink7'] =H01_OCS::readdata('downloadlink7','text');
3082 if(isset($_POST['downloaddistributiontype7'])) $data['downloadfiletype7'] =H01_OCS::readdata('downloaddistributiontype7','int');
3083 if(isset($_POST['downloadbuy7'])) $data['downloadbuy7'] =H01_OCS::readdata('downloadbuy7','int');
3084 if(H01_OCS::readdata('downloadbuyreason7','text')<>'') $data['downloadbuyreason7'] =H01_OCS::readdata('downloadbuyreason7','text');
3085 if(isset($_POST['downloadbuyprice7'])) $data['downloadbuyprice7'] =H01_OCS::readdata('downloadbuyprice7','float');
3086 if(isset($_POST['downloadpackagename7'])) $data['downloadpackagename7'] =H01_OCS::readdata('downloadpackagename7','text');
3087 if(isset($_POST['downloadrepository7'])) $data['downloadrepository7'] =H01_OCS::readdata('downloadrepository7','text');
3088 if(H01_OCS::readdata('downloadgpgfingerprint7','text')<>'') $data['downloadgpgfingerprint7'] =H01_OCS::readdata('downloadgpgfingerprint7','text');
3089 if(H01_OCS::readdata('downloadgpgsignature7','text')<>'') $data['downloadgpgsignature7'] =H01_OCS::readdata('downloadgpgsignature7','text');
3090
3091 if(H01_OCS::readdata('downloadname8','text')<>'') $data['downloadname8'] =H01_OCS::readdata('downloadname8','text');
3092 if(H01_OCS::readdata('downloadlink8','text')<>'') $data['downloadlink8'] =H01_OCS::readdata('downloadlink8','text');
3093 if(isset($_POST['downloaddistributiontype8'])) $data['downloadfiletype8'] =H01_OCS::readdata('downloaddistributiontype8','int');
3094 if(isset($_POST['downloadbuy8'])) $data['downloadbuy8'] =H01_OCS::readdata('downloadbuy8','int');
3095 if(H01_OCS::readdata('downloadbuyreason8','text')<>'') $data['downloadbuyreason8'] =H01_OCS::readdata('downloadbuyreason8','text');
3096 if(isset($_POST['downloadbuyprice8'])) $data['downloadbuyprice8'] =H01_OCS::readdata('downloadbuyprice8','float');
3097 if(H01_OCS::readdata('downloadgpgfingerprint8','text')<>'') $data['downloadgpgfingerprint8'] =H01_OCS::readdata('downloadgpgfingerprint8','text');
3098 if(H01_OCS::readdata('downloadgpgsignature8','text')<>'') $data['downloadgpgsignature8'] =H01_OCS::readdata('downloadgpgsignature8','text');
3099
3100 if(H01_OCS::readdata('downloadname9','text')<>'') $data['downloadname9'] =H01_OCS::readdata('downloadname9','text');
3101 if(H01_OCS::readdata('downloadlink9','text')<>'') $data['downloadlink9'] =H01_OCS::readdata('downloadlink9','text');
3102 if(isset($_POST['downloaddistributiontype9'])) $data['downloadfiletype9'] =H01_OCS::readdata('downloaddistributiontype9','int');
3103 if(isset($_POST['downloadbuy9'])) $data['downloadbuy9'] =H01_OCS::readdata('downloadbuy9','int');
3104 if(H01_OCS::readdata('downloadbuyreason9','text')<>'') $data['downloadbuyreason9'] =H01_OCS::readdata('downloadbuyreason9','text');
3105 if(isset($_POST['downloadbuyprice9'])) $data['downloadbuyprice9'] =H01_OCS::readdata('downloadbuyprice9','float');
3106 if(isset($_POST['downloadpackagename9'])) $data['downloadpackagename9'] =H01_OCS::readdata('downloadpackagename9','text');
3107 if(isset($_POST['downloadrepository9'])) $data['downloadrepository9'] =H01_OCS::readdata('downloadrepository9','text');
3108 if(H01_OCS::readdata('downloadgpgfingerprint9','text')<>'') $data['downloadgpgfingerprint9'] =H01_OCS::readdata('downloadgpgfingerprint9','text');
3109 if(H01_OCS::readdata('downloadgpgsignature9','text')<>'') $data['downloadgpgsignature9'] =H01_OCS::readdata('downloadgpgsignature9','text');
3110
3111 if(H01_OCS::readdata('downloadname10','text')<>'') $data['downloadname10'] =H01_OCS::readdata('downloadname10','text');
3112 if(H01_OCS::readdata('downloadlink10','text')<>'') $data['downloadlink10'] =H01_OCS::readdata('downloadlink10','text');
3113 if(isset($_POST['downloaddistributiontype10'])) $data['downloadfiletype10'] =H01_OCS::readdata('downloaddistributiontype10','int');
3114 if(isset($_POST['downloadbuy10'])) $data['downloadbuy10'] =H01_OCS::readdata('downloadbuy10','int');
3115 if(H01_OCS::readdata('downloadbuyreason10','text')<>'') $data['downloadbuyreason10'] =H01_OCS::readdata('downloadbuyreason10','text');
3116 if(isset($_POST['downloadbuyprice10'])) $data['downloadbuyprice10'] =H01_OCS::readdata('downloadbuyprice10','float');
3117 if(isset($_POST['downloadpackagename10'])) $data['downloadpackagename10'] =H01_OCS::readdata('downloadpackagename10','text');
3118 if(isset($_POST['downloadrepository10'])) $data['downloadrepository10'] =H01_OCS::readdata('downloadrepository10','text');
3119 if(H01_OCS::readdata('downloadgpgfingerprint10','text')<>'') $data['downloadgpgfingerprint10'] =H01_OCS::readdata('downloadgpgfingerprint10','text');
3120 if(H01_OCS::readdata('downloadgpgsignature10','text')<>'') $data['downloadgpgsignature10'] =H01_OCS::readdata('downloadgpgsignature10','text');
3121
3122 if(H01_OCS::readdata('downloadname11','text')<>'') $data['downloadname11'] =H01_OCS::readdata('downloadname11','text');
3123 if(H01_OCS::readdata('downloadlink11','text')<>'') $data['downloadlink11'] =H01_OCS::readdata('downloadlink11','text');
3124 if(isset($_POST['downloaddistributiontype11'])) $data['downloadfiletype11'] =H01_OCS::readdata('downloaddistributiontype11','int');
3125 if(isset($_POST['downloadbuy11'])) $data['downloadbuy11'] =H01_OCS::readdata('downloadbuy11','int');
3126 if(H01_OCS::readdata('downloadbuyreason11','text')<>'') $data['downloadbuyreason11'] =H01_OCS::readdata('downloadbuyreason11','text');
3127 if(isset($_POST['downloadbuyprice11'])) $data['downloadbuyprice11'] =H01_OCS::readdata('downloadbuyprice11','float');
3128 if(isset($_POST['downloadpackagename11'])) $data['downloadpackagename11'] =H01_OCS::readdata('downloadpackagename11','text');
3129 if(isset($_POST['downloadrepository11'])) $data['downloadrepository11'] =H01_OCS::readdata('downloadrepository11','text');
3130 if(H01_OCS::readdata('downloadgpgfingerprint11','text')<>'') $data['downloadgpgfingerprint11'] =H01_OCS::readdata('downloadgpgfingerprint11','text');
3131 if(H01_OCS::readdata('downloadgpgsignature11','text')<>'') $data['downloadgpgsignature11'] =H01_OCS::readdata('downloadgpgsignature11','text');
3132
3133 if(H01_OCS::readdata('downloadname12','text')<>'') $data['downloadname12'] =H01_OCS::readdata('downloadname12','text');
3134 if(H01_OCS::readdata('downloadlink12','text')<>'') $data['downloadlink12'] =H01_OCS::readdata('downloadlink12','text');
3135 if(isset($_POST['downloaddistributiontype12'])) $data['downloadfiletype12'] =H01_OCS::readdata('downloaddistributiontype12','int');
3136 if(isset($_POST['downloadbuy12'])) $data['downloadbuy12'] =H01_OCS::readdata('downloadbuy12','int');
3137 if(H01_OCS::readdata('downloadbuyreason12','text')<>'') $data['downloadbuyreason12'] =H01_OCS::readdata('downloadbuyreason12','text');
3138 if(isset($_POST['downloadbuyprice12'])) $data['downloadbuyprice12'] =H01_OCS::readdata('downloadbuyprice12','float');
3139 if(isset($_POST['downloadpackagename12'])) $data['downloadpackagename12'] =H01_OCS::readdata('downloadpackagename12','text');
3140 if(isset($_POST['downloadrepository12'])) $data['downloadrepository12'] =H01_OCS::readdata('downloadrepository12','text');
3141 if(H01_OCS::readdata('downloadgpgfingerprint12','text')<>'') $data['downloadgpgfingerprint12'] =H01_OCS::readdata('downloadgpgfingerprint12','text');
3142 if(H01_OCS::readdata('downloadgpgsignature12','text')<>'') $data['downloadgpgsignature12'] =H01_OCS::readdata('downloadgpgsignature12','text');
3143
3144 if(H01_OCS::readdata('description','text')<>'') $data['description']=H01_OCS::readdata('description','text');
3145 if(H01_OCS::readdata('summary','text')<>'') $data['summary']=H01_OCS::readdata('summary','text');
3146 if(H01_OCS::readdata('feedbackurl','text')<>'') $data['feedbackurl']=H01_OCS::readdata('feedbackurl','text');
3147 if(isset($_POST['licensetype'])) $data['licensetype']=H01_OCS::readdata('licensetype','int');
3148 if(H01_OCS::readdata('license','text')<>'') $data['license']=H01_OCS::readdata('license','text');
3149
3150 // if(H01_OCS::readdata('homepage','text')<>'') $data['homepage']=H01_OCS::readdata('homepage','text');
3151
3152 if(H01_OCS::readdata('homepage','text')<>'') $data['homepage1']=H01_OCS::readdata('homepage','text');
3153 if(H01_OCS::readdata('homepagetype','int')<>0) $data['homepagetype1']=H01_OCS::readdata('homepagetype','int');
3154 if(H01_OCS::readdata('homepage2','text')<>'') $data['homepage2']=H01_OCS::readdata('homepage2','text');
3155 if(H01_OCS::readdata('homepagetype2','int')<>0) $data['homepagetype2']=H01_OCS::readdata('homepagetype2','int');
3156 if(H01_OCS::readdata('homepage3','text')<>'') $data['homepage3']=H01_OCS::readdata('homepage3','text');
3157 if(H01_OCS::readdata('homepagetype3','int')<>0) $data['homepagetype3']=H01_OCS::readdata('homepagetype3','int');
3158 if(H01_OCS::readdata('homepage4','text')<>'') $data['homepage4']=H01_OCS::readdata('homepage4','text');
3159 if(H01_OCS::readdata('homepagetype4','int')<>0) $data['homepagetype4']=H01_OCS::readdata('homepagetype4','int');
3160 if(H01_OCS::readdata('homepage5','text')<>'') $data['homepage5']=H01_OCS::readdata('homepage5','text');
3161 if(H01_OCS::readdata('homepagetype5','int')<>0) $data['homepagetype5']=H01_OCS::readdata('homepagetype5','int');
3162 if(H01_OCS::readdata('homepage6','text')<>'') $data['homepage6']=H01_OCS::readdata('homepage6','text');
3163 if(H01_OCS::readdata('homepagetype6','int')<>0) $data['homepagetype6']=H01_OCS::readdata('homepagetype6','int');
3164 if(H01_OCS::readdata('homepage7','text')<>'') $data['homepage7']=H01_OCS::readdata('homepage7','text');
3165 if(H01_OCS::readdata('homepagetype7','int')<>0) $data['homepagetype7']=H01_OCS::readdata('homepagetype7','int');
3166 if(H01_OCS::readdata('homepage8','text')<>'') $data['homepage8']=H01_OCS::readdata('homepage8','text');
3167 if(H01_OCS::readdata('homepagetype8','int')<>0) $data['homepagetype8']=H01_OCS::readdata('homepagetype8','int');
3168 if(H01_OCS::readdata('homepage9','text')<>'') $data['homepage9']=H01_OCS::readdata('homepage9','text');
3169 if(H01_OCS::readdata('homepagetype9','int')<>0) $data['homepagetype9']=H01_OCS::readdata('homepagetype9','int');
3170 if(H01_OCS::readdata('homepage10','text')<>'') $data['homepage10']=H01_OCS::readdata('homepage10','text');
3171 if(H01_OCS::readdata('homepagetype10','int')<>0) $data['homepagetype10']=H01_OCS::readdata('homepagetype10','int');
3172
3173 if(H01_OCS::readdata('version','text')<>'') $data['version']=H01_OCS::readdata('version','text');
3174 if(H01_OCS::readdata('changelog','text')<>'') $data['changelog']=H01_OCS::readdata('changelog','text');
3175 if(isset($_POST['donation'])) $data['donation']=H01_OCS::readdata('donation','text');
3176 if(H01_OCS::readdata('osbsproject','text')<>'') $data['osbsproject']=H01_OCS::readdata('osbsproject','text');
3177 if(H01_OCS::readdata('osbspackage','text')<>'') $data['osbspackage']=H01_OCS::readdata('osbspackage','text');
3178 if(H01_OCS::readdata('donationreason','text')<>'') $data['donationreason']=H01_OCS::readdata('donationreason','text');
3179 if(isset($_POST['announceupdate'])) $data['announceupdate']=H01_OCS::readdata('announceupdate','int'); else $data['announceupdate']=1;
3180
3181 if(($data['name']<>'') and ($data['type']<>0)) {
3182 H01_CONTENTEDIT::edit($contentid,$user,$data);
3183 H01_CACHEADMIN::cleancache('apilist',array($_SESSION['website'],$_SESSION['lang'],$format,$user));
3184 H01_CACHEADMIN::cleancache('apiget',array($_SESSION['website'],$_SESSION['lang'],$contentid));
3185 $txt=H01_OCS::generatexml($format,'ok',100,'');
3186 }else{
3187 $txt=H01_OCS::generatexml($format,'failed',101,'please specify all mandatory fields');
3188 }
3189 }else{
3190 $txt=H01_OCS::generatexml($format,'failed',102,'no permission to change content');
3191 }
3192 }else{
3193 $txt=H01_OCS::generatexml($format,'failed',102,'no permission to change content');
3194 }
3195
3196 echo($txt);
3197
3198 }
3199
3200
3201
3202 /**
3203 * delete a content
3204 * @param string $format
3205 * @param string $contentid
3206 * @return string xml/json
3207 */
3208 private static function contentdelete($format,$contentid) {
3209
3210 $user=H01_OCS::checkpassword();
3211 H01_OCS::checktrafficlimit($user);
3212 $content=addslashes($contentid);
3213
3214 // fetch data
3215 $con=H01_CONTENT::getdetail($content);
3216 if(isset($con['user'])) {
3217
3218 if((($con['user']==$user) and ($con['userdb']==CONFIG_USERDB) and H01_AUTH::checkuser(PERM_Content_Edit,$user,CONFIG_USERDB) ) or (H01_AUTH::checkuser(PERM_Content_Admin,$user,CONFIG_USERDB))) {
3219 H01_CONTENTEDIT::delete($content,$user);
3220 H01_CACHEADMIN::cleancache('apilist',array($_SESSION['website'],$_SESSION['lang'],$format,$user));
3221 H01_CACHEADMIN::cleancache('apiget',array($_SESSION['website'],$_SESSION['lang'],$content));
3222 $txt=H01_OCS::generatexml($format,'ok',100,'');
3223 }else{
3224 $txt=H01_OCS::generatexml($format,'failed',101,'no permission to change content');
3225 }
3226 }else{
3227 $txt=H01_OCS::generatexml($format,'failed',101,'no permission to change content');
3228 }
3229
3230 echo($txt);
3231
3232 }
3233
3234
3235
3236 //KNOWLEDGEBASE API #############################################
3237
3238 /**
3239 * get a specific knowledgebase entry
3240 * @param string $format
3241 * @param string $kbid
3242 * @return string xml/json
3243 */
3244 private static function knowledgebaseget($format,$kbid) {
3245 $user=H01_OCS::checkpassword();
3246 H01_OCS::checktrafficlimit($user);
3247 $kbid=addslashes($kbid);
3248
3249 $cache = new H01_CACHE('apiknowledgebaseget',array($_SESSION['website'],$_SESSION['lang'],$kbid,$format));
3250 if ($cache->exist()) {
3251 $cache->get();
3252 unset($cache);
3253 } else {
3254
3255 // fetch data
3256 $con=H01_KNOWLEDGEBASE::getentry($kbid);
3257
3258 // check data
3259 if (($con['id'])==0) {
3260 $txt=H01_OCS::generatexml($format,'failed',101,'entry not found');
3261 } else {
3262
3263 if(trim($con['answer'])=='') $status=1; else $status=2;
3264 $xml['id']=$con['id'];
3265 $xml['status']=H01_KNOWLEDGEBASE::$STATUS[1][$status];
3266 $xml['contentid']=$con['contentid'];
3267 $xml['category']=H01_KNOWLEDGEBASE::$TYPE[1][1][$con['type']];
3268 $xml['user']=$con['user'];
3269 $xml['changed']=date('c',$con['changed']);
3270 $xml['name']=$con['name'];
3271 $xml['description']=$con['description'];
3272 $xml['answeruser']=$con['user2'];
3273 $xml['answer']=$con['answer'];
3274 $xml['comments']=$con['commentscount'];
3275 $xml['detailpage']='http://'.CONFIG_WEBSITEHOST.'/content/show.php?action=knowledgebase&content='.$con['contentid'].'&kbid='.$con['id'];
3276
3277 // preview
3278 if (!empty($con['pic1'])) $pic1=$con['pic1']; else $pic1='';
3279 if (!empty($con['pic2'])) $pic2=$con['pic2']; else $pic2='';
3280 if (!empty($con['pic3'])) $pic3=$con['pic3']; else $pic3='';
3281
3282
3283 if(!empty($pic1)) $xml['previewpic1']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/knowledgebase-pics1/'.$pic1;
3284 if(!empty($pic1)) $xml['smallpreviewpic1']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/knowledgebase-m1/'.$pic1;
3285
3286 if(!empty($pic2)) $xml['previewpic2']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/knowledgebase-pics2/'.$pic2;
3287 if(!empty($pic2)) $xml['smallpreviewpic2']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/knowledgebase-m2/'.$pic2;
3288
3289 if(!empty($pic3)) $xml['previewpic3']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/knowledgebase-pics3/'.$pic3;
3290 if(!empty($pic3)) $xml['smallpreviewpic3']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/knowledgebase-m3/'.$pic3;
3291
3292 if(!empty($pic4)) $xml['previewpic4']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/knowledgebase-pics4/'.$pic4;
3293 if(!empty($pic4)) $xml['smallpreviewpic4']='http://'.CONFIG_WEBSITEHOST.'/CONTENT/knowledgebase-m4/'.$pic4;
3294
3295 $xml2[0]=$xml;
3296 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml2,'knowledgebase','',2);
3297
3298 }
3299
3300 $cache->put($txt);
3301 unset($cache);
3302 echo($txt);
3303 }
3304 }
3305
3306
3307 /**
3308 * get a list of knowledgebase entries
3309 * @param string $format
3310 * @param string $contents
3311 * @param string $searchstr
3312 * @param string $sortmode
3313 * @param string $page
3314 * @param string $pagesize
3315 * @return string xml/json
3316 */
3317 private static function knowledgebaselist($format,$contents,$searchstr,$sortmode,$page,$pagesize) {
3318 $user=H01_OCS::checkpassword();
3319 H01_OCS::checktrafficlimit($user);
3320
3321 $cache = new H01_CACHE('apiknowledgebaselist',array($_SESSION['website'],$_SESSION['lang'],$format,$contents.$searchstr.$sortmode.$page.$pagesize));
3322 if ($cache->exist()) {
3323 $cache->get();
3324 unset($cache);
3325 } else {
3326
3327 $xml=H01_KNOWLEDGEBASE::search($contents,$searchstr,$sortmode,$page,$pagesize);
3328 $totalitems=$xml['totalitems'];
3329 unset($xml['totalitems']);
3330
3331 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'content','detail',2,$totalitems,$pagesize);
3332
3333 $cache->put($txt);
3334 unset($cache);
3335 echo($txt);
3336 }
3337
3338 }
3339
3340
3341
3342 // EVENT API #############################################
3343
3344 /**
3345 * get a specific event
3346 * @param string $format
3347 * @param string $evid
3348 * @return string xml/json
3349 */
3350 private static function eventget($format,$evid) {
3351
3352 $user=H01_OCS::checkpassword();
3353 H01_OCS::checktrafficlimit($user);
3354 $evid=addslashes($evid);
3355
3356 $cache = new H01_CACHE('apieventget',array($_SESSION['website'],$_SESSION['lang'],$evid,$format));
3357 if ($cache->exist()) {
3358 $cache->get();
3359 unset($cache);
3360 } else {
3361
3362 // fetch data
3363 $con=H01_EVENT::get($evid,0);
3364
3365 // check data
3366 if (($con['id'])==0) {
3367 $txt=H01_OCS::generatexml($format,'failed',100,'entry not found');
3368 } else {
3369
3370 $xml['id']=$con['id'];
3371 $xml['name']=$con['name'];
3372 $xml['description']=$con['description'];
3373 $xml['category']=H01_EVENT::$CATEGORIES[0][1][$con['category']];
3374 $xml['startdate']=date('c',$con['startdate']);
3375 $xml['enddate']=date('c',$con['enddate']);
3376 $xml['user']=$con['user'];
3377 $xml['organizer']=$con['organizer'];
3378 $xml['location']=$con['location'];
3379 $xml['city']=$con['city'];
3380 $xml['country']=H01_USER::$COUNTRIES[$con['country']];
3381 $xml['longitude']=$con['longitude'];
3382 $xml['latitude']=$con['latitude'];
3383 $xml['homepage']=$con['homepage'];
3384 $xml['tel']=$con['tel'];
3385 $xml['fax']=$con['fax'];
3386 $xml['email']=$con['email'];
3387 $xml['changed']=date('c',$con['changed']);
3388 $xml['comments']=$con['comments'];
3389 $xml['participants']=$con['participants'];
3390 $xml['detailpage']='http://'.CONFIG_WEBSITEHOST.'/events/?id='.$con['id'];
3391
3392 $photourl='/CONTENT/event-badge/0/'.$con['id'].'.';
3393 if (file_exists(CONFIG_DOCUMENT_ROOT.$photourl.'gif')) $xml['badge']='http://'.CONFIG_WEBSITEHOST.$photourl.'gif';
3394 elseif (file_exists(CONFIG_DOCUMENT_ROOT.$photourl.'png')) $xml['badge']='http://'.CONFIG_WEBSITEHOST.$photourl.'png';
3395 elseif (file_exists(CONFIG_DOCUMENT_ROOT.$photourl.'jpg')) $xml['badge']='http://'.CONFIG_WEBSITEHOST.$photourl.'jpg';
3396 else $xml['badge']='';
3397
3398
3399 $photourl='/CONTENT/event-image/0/'.$con['id'].'.';
3400 if (file_exists(CONFIG_DOCUMENT_ROOT.$photourl.'gif')) $xml['image']='http://'.CONFIG_WEBSITEHOST.$photourl.'gif';
3401 elseif (file_exists(CONFIG_DOCUMENT_ROOT.$photourl.'png')) $xml['image']='http://'.CONFIG_WEBSITEHOST.$photourl.'png';
3402 elseif (file_exists(CONFIG_DOCUMENT_ROOT.$photourl.'jpg')) $xml['image']='http://'.CONFIG_WEBSITEHOST.$photourl.'jpg';
3403 else $xml['image']='';
3404
3405
3406 $xml2[0]=$xml;
3407 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml2,'event','',2);
3408
3409 }
3410
3411 $cache->put($txt);
3412 unset($cache);
3413 echo($txt);
3414 }
3415 }
3416
3417
3418 /**
3419 * get a list of events
3420 * @param string $format
3421 * @param string $type
3422 * @param string $country
3423 * @param string $startat
3424 * @param string $searchstr
3425 * @param string $sortmode
3426 * @param string $page
3427 * @param string $pagesize
3428 * @return string xml/json
3429 */
3430 private static function eventlist($format,$type,$country,$startat,$searchstr,$sortmode,$page,$pagesize) {
3431 $user=H01_OCS::checkpassword();
3432 H01_OCS::checktrafficlimit($user);
3433
3434 $cache = new H01_CACHE('apieventlist',array($_SESSION['website'],$_SESSION['lang'],$format,$type.$country.$startat.$searchstr.$sortmode.$page.$pagesize));
3435 if ($cache->exist()) {
3436 $cache->get();
3437 unset($cache);
3438 } else {
3439
3440 $xml=H01_EVENT::search($type,$country,$startat,$searchstr,$sortmode,$page,$pagesize);
3441 $totalitems=$xml['totalitems'];
3442 unset($xml['totalitems']);
3443
3444 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'event','detail',2,$totalitems,$pagesize);
3445
3446 $cache->put($txt);
3447 unset($cache);
3448 echo($txt);
3449 }
3450
3451 }
3452
3453
3454 /**
3455 * add a new event
3456 * @param string $format
3457 * @return string xml/json
3458 */
3459 private static function eventadd($format) {
3460
3461 $user=H01_OCS::checkpassword();
3462 H01_OCS::checktrafficlimit($user);
3463
3464 $name=H01_OCS::readdata('name','text');
3465 $category=H01_OCS::readdata('category','int');
3466
3467 if(H01_OCS::readdata('description','text')<>'') $description=H01_OCS::readdata('description','text'); else $description='';
3468 if(H01_OCS::readdata('startdate','text')<>'') $startdate=strtotime(H01_OCS::readdata('startdate','raw')); else $startdate=0;
3469 if(H01_OCS::readdata('enddate','text')<>'') $enddate=strtotime(H01_OCS::readdata('enddate','raw')); else $enddate=0;
3470
3471 if(H01_OCS::readdata('organizer','text')<>'') $organizer=H01_OCS::readdata('organizer','text'); else $organizer='';
3472 if(H01_OCS::readdata('location','text')<>'') $location=H01_OCS::readdata('location','text'); else $location='';
3473 if(H01_OCS::readdata('city','text')<>'') $city=H01_OCS::readdata('city','text'); else $city='';
3474 if(H01_OCS::readdata('country','text')<>'') $country=H01_OCS::readdata('country','text'); else $country='';
3475 $co=array_search(strtoupper($country),H01_USER::$COUNTRIESISO);
3476
3477 if(H01_OCS::readdata('longitude','float')<>'') $longitude=H01_OCS::readdata('longitude','float'); else $longitude='';
3478 if(H01_OCS::readdata('latitude','float')<>'') $latitude=H01_OCS::readdata('latitude','float'); else $latitude='';
3479
3480 if(H01_OCS::readdata('homepage','text')<>'') $homepage=H01_OCS::readdata('homepage','text'); else $homepage='';
3481 if(H01_OCS::readdata('tel','text')<>'') $tel=H01_OCS::readdata('tel','text'); else $tel='';
3482 if(H01_OCS::readdata('fax','text')<>'') $fax=H01_OCS::readdata('fax','text'); else $fax='';
3483 if(H01_OCS::readdata('email','text')<>'') $email=H01_OCS::readdata('email','text'); else $email='';
3484
3485 if($user<>'') {
3486 if(($name<>'' and $category<>0)) {
3487 $id=H01_EVENT::create(CONFIG_EVENTDB,$name,$description,$category,$startdate,$enddate,$user,CONFIG_USERDB,$organizer,$location,$city,$co,$longitude,$latitude,$homepage,$tel,$fax,$email);
3488 $xml=array();
3489 $xml[0]['id']=$id;
3490 $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'event','',2);
3491 }else{
3492 $txt=H01_OCS::generatexml($format,'failed',101,'please specify all mandatory fields');
3493 }
3494 }else{
3495 $txt=H01_OCS::generatexml($format,'failed',102,'no permission to add event');
3496 }
3497
3498 echo($txt);
3499
3500 }
3501
3502
3503 /**
3504 * delete a event
3505 * @param string $format
3506 * @param string $eventid
3507 * @return string xml/json
3508 */
3509 private static function eventdelete($format,$eventid) {
3510 $user=H01_OCS::checkpassword();
3511 H01_OCS::checktrafficlimit($user);
3512 $event=addslashes($eventid);
3513
3514 // fetch data
3515 $con=H01_EVENT::get($event,CONFIG_EVENTDB);
3516 if(isset($con['user'])) {
3517
3518 if((($con['user']==$user) and ($con['userdb']==CONFIG_USERDB) ) or (H01_AUTH::checkuser(PERM_Event_Admin,$user,CONFIG_USERDB))) {
3519 H01_EVENT::del($event,$user);
3520 $txt=H01_OCS::generatexml($format,'ok',100,'');
3521 }else{
3522 $txt=H01_OCS::generatexml($format,'failed',101,'no permission to change event');
3523 }
3524 }else{
3525 $txt=H01_OCS::generatexml($format,'failed',101,'ano permission to change event');
3526 }
3527
3528 echo($txt);
3529
3530 }
3531
3532
3533 /**
3534 * edit a event
3535 * @param string $format
3536 * @param string $eventid
3537 * @return string xml/json
3538 */
3539 private static function eventedit($format,$eventid) {
3540 $user=H01_OCS::checkpassword();
3541 H01_OCS::checktrafficlimit($user);
3542 $event=addslashes($eventid);
3543
3544 // fetch data
3545 $DBevent=H01_EVENT::get($event,CONFIG_EVENTDB);
3546 if(isset($DBevent['user'])) {
3547
3548 if((($DBevent['user']==$user) and ($DBevent['userdb']==CONFIG_USERDB) ) or (H01_AUTH::checkuser(PERM_Event_Admin,$user,CONFIG_USERDB))) {
3549
3550 if(isset($_POST['name'])) $name=H01_OCS::readdata('name','text'); else $name=$DBevent['name'];
3551 if(isset($_POST['category'])) $category=H01_OCS::readdata('category','int'); else $category=$DBevent['category'];
3552
3553 if(isset($_POST['description'])) $description=H01_OCS::readdata('description','text'); else $description=$DBevent['description'];
3554 if(isset($_POST['startdate'])) $startdate=strtotime(H01_OCS::readdata('startdate','raw')); else $startdate=$DBevent['startdate'];
3555 if(isset($_POST['enddate'])) $enddate=strtotime(H01_OCS::readdata('enddate','raw')); else $enddate=$DBevent['enddate'];
3556 if(isset($_POST['organizer'])) $organizer=H01_OCS::readdata('organizer','text'); else $organizer=$DBevent['organizer'];
3557 if(isset($_POST['location'])) $location=H01_OCS::readdata('location','text'); else $location=$DBevent['location'];
3558 if(isset($_POST['city'])) $city=H01_OCS::readdata('city','text'); else $city=$DBevent['city'];
3559 if(isset($_POST['country'])) {
3560 $country=H01_OCS::readdata('country','text');
3561 $country=array_search(strtoupper($country),H01_USER::$COUNTRIESISO);
3562 }else {
3563 $country=$DBevent['country'];
3564 }
3565 if(isset($_POST['longitude'])) $longitude=H01_OCS::readdata('longitude','float'); else $longitude=$DBevent['longitude'];
3566 if(isset($_POST['latitude'])) $latitude=H01_OCS::readdata('latitude','float'); else $latitude=$DBevent['latitude'];
3567 if(isset($_POST['homepage'])) $homepage=H01_OCS::readdata('homepage','text'); else $homepage=$DBevent['homepage'];
3568 if(isset($_POST['tel'])) $tel=H01_OCS::readdata('tel','text'); else $tel=$DBevent['tel'];
3569 if(isset($_POST['fax'])) $fax=H01_OCS::readdata('fax','text'); else $fax=$DBevent['fax'];
3570 if(isset($_POST['email'])) $email=H01_OCS::readdata('email','text'); else $email=$DBevent['email'];
3571
3572 if(($name<>'') and ($category<>0)) {
3573
3574 H01_EVENT::edit($event,CONFIG_EVENTDB,$name,$description,$category,$startdate,$enddate,$user,CONFIG_USERDB,$organizer,$location,$city,$country,$longitude,$latitude,$homepage,$tel,$fax,$email);
3575 $txt=H01_OCS::generatexml($format,'ok',100,'');
3576 }else{
3577 $txt=H01_OCS::generatexml($format,'failed',101,'please specify all mandatory fields');
3578 }
3579 }else{
3580 $txt=H01_OCS::generatexml($format,'failed',102,'no permission to change event');
3581 }
3582 }else{
3583 $txt=H01_OCS::generatexml($format,'failed',102,'event not found');
3584 }
3585
3586 echo($txt);
3587 }
3588
3589
3590
3591 // COMMENTS API #############################################
3592
3593 /**
3594 * add a comment
3595 * @param string $format
3596 * @param string $content
3597 * @param string $parent
3598 * @param string $subject
3599 * @param string $message
3600 * @return string xml/json
3601 */
3602 private static function commentsadd($format,$type,$content,$content2,$parent,$subject,$message) {
3603 $user=H01_OCS::checkpassword();
3604 H01_OCS::checktrafficlimit($user);
3605 $parent = strip_tags(addslashes($parent));
3606 $subject = strip_tags(addslashes($subject));
3607 $message = strip_tags(addslashes($message));
3608 $content = strip_tags(addslashes($content));
3609 $content2= strip_tags(addslashes($content2));
3610 $type= strip_tags(addslashes($type));
3611
3612 //types
3613 // 1 - content
3614 // 4 - forum
3615 // 7 - knowledgebase
3616 // 8 - event
3617
3618 if(!in_array($type,array(1,4,7,8))) $type=1;
3619
3620 if($user<>'') {
3621 if($message<>'' and $subject<>'') {
3622 if($content<>0) {
3623 $notify='';
3624 $pictodata='0';
3625 H01_COMMENTS::add($user,$type,$content,$content2,$parent,$pictodata,$notify,$subject,$message,'');
3626 $xml[0]['id']=H01_COMMENTS::getlastid();
3627 echo(H01_OCS::generatexml($format,'ok',100,'',$xml,'comment','',2));
3628 } else {
3629 echo(H01_OCS::generatexml($format,'failed',101,'content must not be empty'));
3630 }
3631 } else {
3632 echo(H01_OCS::generatexml($format,'failed',102,'message or subject must not be empty'));
3633 }
3634 } else {
3635 echo(H01_OCS::generatexml($format,'failed',103,'no permission to add a comment'));
3636 }
3637
3638 }
3639
3640
3641
3642 private static function commentsget($format,$type,$content,$content2,$page,$pagesize) {
3643 $user=H01_OCS::checkpassword(false);
3644 H01_OCS::checktrafficlimit($user);
3645 $type = strip_tags(addslashes($type));
3646 $content = strip_tags(addslashes($content));
3647 $content2 = strip_tags(addslashes($content2));
3648 $page = strip_tags(addslashes($page));
3649 $pagesize = strip_tags(addslashes($pagesize));
3650
3651 //types
3652 // 1 - content
3653 // 4 - forum
3654 // 7 - knowledgebase
3655 // 8 - event
3656
3657 if(!in_array($type,array(1,4,7,8))) $type=1;
3658
3659 $cache = new H01_CACHE('forum',array($_SESSION['website'],$_SESSION['lang'],$type,$content,$content2,$page,$pagesize));
3660
3661 if ($cache->exist()) {
3662 $cache->get();
3663 unset($cache);
3664 } else {
3665
3666 $comments=H01_COMMENTS::fetchcomments($type,$content,$content2,0,0,0,$page,$pagesize);
3667 $totalitems=$comments['totalitems'];
3668 unset($comments['totalitems']);
3669 // $txt=H01_OCS::generatexml($format,'ok',100,'',$xml,'event','detail',2,$totalitems,$pagesize);
3670
3671 $txt=H01_OCS::generatexml($format,'ok',100,'',$comments,'comment','','dynamic',$totalitems,$pagesize);
3672 $cache->put($txt);
3673 unset($cache);
3674 echo($txt);
3675 }
3676
3677
3678 }
3679
3680
3681 /**
3682 * vote for a comment
3683 * @param string $format
3684 * @param string $id
3685 * @param string $score
3686 * @return string xml/json
3687 */
3688 private static function commentvote($format,$id,$score) {
3689 $user=H01_OCS::checkpassword();
3690 H01_OCS::checktrafficlimit($user);
3691
3692 H01_COMMENTS::vote($user,CONFIG_USERDB,$id,$score,'');
3693 $txt=H01_OCS::generatexml($format,'ok',100,'');
3694 echo($txt);
3695 }
3696
3697
3698 // FORUM
3699
3700 /**
3701 * Get a list of forums
3702 * @param string $format
3703 * @param int $page The list page. You can control the size of a page with the pagesize argument. The first page is 0, the second is 1.
3704 * @param int $pagesize The amount of entries per page.
3705 * @return string xml/json
3706 */
3707 private static function forumlist($format,$page,$pagesize){
3708 $user=H01_OCS::checkpassword();
3709 H01_OCS::checktrafficlimit($user);
3710
3711 // Call forum implementation here
3712 $txt=H01_OCS::generatexml($format,'ok',100,'');
3713 echo($txt);
3714 }
3715
3716 /**
3717 * Gets a list of a specific set of topics.
3718 * @param string $format
3719 * @param string $forum Id of the forum you are requesting a list of. Not required if a search term is provided.
3720 * @param string $search a keyword you want find in the name.
3721 * @param string $description the description or comment of a topic. Not required if a forum id is provided.
3722 * @param string $sortmode The sortmode of the list. Possible values are: "new" - newest first or "alpha" - alphabetical
3723 * @param int $page The list page. You can control the size of a page with the pagesize argument. The first page is 0, the second is 1.
3724 * @param int $pagesize The amount of entries per page.
3725 * @return string xml/json
3726 */
3727 private static function forumtopiclist($format,$forum,$search,$description,$sortmode,$page,$pagesize){
3728 $user=H01_OCS::checkpassword();
3729 H01_OCS::checktrafficlimit($user);
3730
3731 // Call forum implementation here
3732 $txt=H01_OCS::generatexml($format,'ok',100,'');
3733 echo($txt);
3734 }
3735
3736 /**
3737 * Add a new topic to a forum. Only authenticated users are allowed to access this method.
3738 * Authentication is done by sending a Basic HTTP Authorisation header. All arguments are
3739 * mandatory.
3740 * @param string $format
3741 * @param string $subject Subject of the new topic
3742 * @param string $content Content of the first post of the new topic
3743 * @param string $forum id of the forum entry to be added to if available
3744 * @return string xml/json
3745 */
3746 private static function forumtopicadd($format,$subject,$content,$forum){
3747 $user=H01_OCS::checkpassword();
3748 H01_OCS::checktrafficlimit($user);
3749
3750 // Call forum implementation here
3751 $txt=H01_OCS::generatexml($format,'ok',100,'');
3752 echo($txt);
3753 }
3754
3755 // BUILDSERVICE
3756
3757 /**
3758 * Create a new project in the build service
3759 * @param string $format
3760 * @param string $name
3761 * @param string $version
3762 * @param string $license
3763 * @param string $url
3764 * @param array $developers
3765 * @param string $summary
3766 * @param string $description
3767 * @param string $requirements
3768 * @param string $specfile
3769 * @return string xml/json
3770 */
3771 private static function buildserviceprojectcreate($format,$name='',$version='',$license='',$url='',$developers='',$summary='',$description='',$requirements='',$specfile=''){
3772 $user=H01_OCS::checkpassword(true);
3773 H01_OCS::checktrafficlimit($user);
3774
3775 if(strlen($name)<1){
3776 echo(H01_OCS::generatexml($format,'failed',101,'required argument missing: name'));
3777 return;
3778 }
3779
3780 $data=H01_BUILDSERVICE::projectcreate($user,CONFIG_USERDB,$name,$version,$license,$url,$developers,$summary,$description,$requirements,$specfile);
3781 $txt="";
3782 if($data!=NULL) {
3783 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,'buildservice','','dynamic');
3784 // This looks a bit odd - but errors are also cached, and as such we got to expire the error
3785 // page for attempting to fetch a wrongly IDd project
3786 H01_CACHEADMIN::cleancache('apibuildserviceprojectget',$_SESSION['website'],$_SESSION['lang'],$format,$user.'#'.$data['projectid']);
3787 H01_CACHEADMIN::cleancache('apibuildserviceprojectlist',$_SESSION['website'],$_SESSION['lang'],$format,$user);
3788 } else
3789 $txt=H01_OCS::generatexml($format,'failed',101,'');
3790 echo($txt);
3791 }
3792
3793 /**
3794 * Get the data for a project in the build service
3795 * @param string $format
3796 * @param int $projectID
3797 * @return string xml/json
3798 */
3799 private static function buildserviceprojectget($format,$projectID){
3800 $user=H01_OCS::checkpassword(true);
3801 H01_OCS::checktrafficlimit($user);
3802
3803 $cache = new H01_CACHE('apibuildserviceprojectget',array($_SESSION['website'],$_SESSION['lang'],$format,$user.'#'.$projectID));
3804 if ($cache->exist()) {
3805 $cache->get();
3806 unset($cache);
3807 } else {
3808 $txt="";
3809 $data=H01_BUILDSERVICE::projectget($user,CONFIG_USERDB,$projectID);
3810
3811 if(count($data["project"])>0)
3812 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,'buildservice','','dynamic');
3813 else {
3814 if(is_numeric($projectID))
3815 $txt=H01_OCS::generatexml($format,'failed',101,'no such project');
3816 else
3817 $txt=H01_OCS::generatexml($format,'failed',102,'project id should be an integer');
3818 }
3819 $cache->put($txt);
3820 unset($cache);
3821 echo($txt);
3822 }
3823 }
3824
3825 /**
3826 * Delete a project in the build service
3827 * @param string $format
3828 * @param int $projectID
3829 * @return string xml/json
3830 */
3831 private static function buildserviceprojectdelete($format,$projectID){
3832 $user=H01_OCS::checkpassword(true);
3833 H01_OCS::checktrafficlimit($user);
3834
3835 $data=H01_BUILDSERVICE::projectdelete($user,CONFIG_USERDB,$projectID);
3836
3837 $txt="";
3838 if($data==true) {
3839 $txt=H01_OCS::generatexml($format,'ok',100,'');
3840 H01_CACHEADMIN::cleancache('apibuildserviceprojectget',$_SESSION['website'],$_SESSION['lang'],$format,$user.'#'.$projectID);
3841 H01_CACHEADMIN::cleancache('apibuildserviceprojectlist',$_SESSION['website'],$_SESSION['lang'],$format,$user);
3842 } else {
3843 if(is_numeric($projectID))
3844 $txt=H01_OCS::generatexml($format,'failed',101,'no such project');
3845 else
3846 $txt=H01_OCS::generatexml($format,'failed',102,'project id should be an integer');
3847 }
3848
3849 echo($txt);
3850 }
3851
3852 /**
3853 * Change the details of a project in the build service
3854 * @param string $format
3855 * @param int @projectID
3856 * @param string $name
3857 * @param string $version
3858 * @param string $license
3859 * @param string $url
3860 * @param array $developers
3861 * @param string $summary
3862 * @param string $description
3863 * @param string $requirements
3864 * @param string $specfile
3865 * @return string xml/json
3866 */
3867 private static function buildserviceprojectedit($format,$projectID,$name="",$version="",$license="",$url="",$developers='',$summary="",$description="",$requirements="",$specfile=""){
3868 $user=H01_OCS::checkpassword(true);
3869 H01_OCS::checktrafficlimit($user);
3870
3871 // This looks slightly odd - we do this because the function in the buildservice module requires
3872 // a 0 here if you do not intend to clear the field - it checks the data type to be a real int.
3873 if(!array_key_exists("specfile",$_POST))
3874 $specfile=0;
3875
3876 $data=H01_BUILDSERVICE::projectedit($user,CONFIG_USERDB,$projectID,$name,$version,$license,$url,$developers,$summary,$description,$requirements,$specfile);
3877 $txt="";
3878 if($data===true) {
3879 $txt=H01_OCS::generatexml($format,'ok',100,'');
3880 H01_CACHEADMIN::cleancache('apibuildserviceprojectget',$_SESSION['website'],$_SESSION['lang'],$format,$user.'#'.$projectID);
3881 H01_CACHEADMIN::cleancache('apibuildserviceprojectlist',$_SESSION['website'],$_SESSION['lang'],$format,$user);
3882 } else {
3883 if(is_numeric($projectID))
3884 $txt=H01_OCS::generatexml($format,'failed',101,'no such project');
3885 else
3886 $txt=H01_OCS::generatexml($format,'failed',102,'project id should be an integer');
3887 }
3888
3889 echo($txt);
3890 }
3891
3892 /**
3893 * List all the projects in the build service owned by the authorized user
3894 * @param string $format
3895 * @param int $page
3896 * @param int $pagesize
3897 * @return string xml/json
3898 */
3899 private static function buildserviceprojectlist($format,$page,$pagesize){
3900 $user=H01_OCS::checkpassword(true);
3901 H01_OCS::checktrafficlimit($user);
3902
3903 $cache = new H01_CACHE('apibuildserviceprojectlist',array($_SESSION['website'],$_SESSION['lang'],$format,$user));
3904 if ($cache->exist()) {
3905 $cache->get();
3906 unset($cache);
3907 } else {
3908 $data=H01_BUILDSERVICE::projectlist($user,CONFIG_USERDB);
3909 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,'project','','dynamic');
3910
3911 $cache->put($txt);
3912 unset($cache);
3913 echo($txt);
3914 }
3915 }
3916
3917 /**
3918 * Upload a new source bundle (a compressed file in .zip, .tar.gz or .tar.bz2 format) containing
3919 * the source code of the project
3920 * @param string $format
3921 * @param int $projectID
3922 * @return string xml/json
3923 */
3924 private static function buildserviceprojectuploadsource($format,$projectID){
3925 $user=H01_OCS::checkpassword(true);
3926 H01_OCS::checktrafficlimit($user);
3927
3928 if(!is_numeric($projectID)){
3929 $txt=H01_OCS::generatexml($format,'failed',102,'project id should be an integer');
3930 }else{
3931 $error=H01_BUILDSERVICE::projectuploadsource($user,CONFIG_USERDB,$projectID);
3932
3933 if($error==''){
3934 $txt=H01_OCS::generatexml($format,'ok',100,'');
3935 }else{
3936 $txt=H01_OCS::generatexml($format,'failed',103,$error);
3937 }
3938
3939 }
3940
3941
3942 echo($txt);
3943 }
3944
3945 // REMOTEACCOUNTS section
3946
3947 /**
3948 * List all accounts for the currently authorised user
3949 * @param string $format
3950 * @return string xml/json
3951 */
3952 private static function buildserviceremoteaccountslist($format,$page,$pagesize) {
3953 $user=H01_OCS::checkpassword(true);
3954 H01_OCS::checktrafficlimit($user);
3955
3956 $data=H01_BUILDSERVICE::remoteaccountslist($user,CONFIG_USERDB);
3957 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,'remoteaccount','','dynamic');
3958 echo($txt);
3959 }
3960
3961 /**
3962 * Add a remote account entry for the currently authorised user
3963 * @param string $format
3964 * @param int $type The type of account (1 == build service, 2 == publisher)
3965 * @param string $typeid The ID of the service the account pertains to
3966 * @param string $data The data to enter into the data section (any arbitrary string data)
3967 * @param string $login The user's login on the remote service
3968 * @param string $password The user's password on the remote service
3969 * @return string xml/json
3970 */
3971 private static function buildserviceremoteaccountsadd($format,$type,$typeid,$data,$login,$password) {
3972 $user=H01_OCS::checkpassword(true);
3973 H01_OCS::checktrafficlimit($user);
3974
3975 $txt='';
3976 $data=H01_BUILDSERVICE::remoteaccountsadd($user,CONFIG_USERDB,$type,$typeid,$data,$login,$password);
3977 if(array_key_exists('remoteaccountid',$data)) {
3978 $txt=H01_OCS::generatexml($format,'ok',100,'');
3979 } else {
3980 $txt=H01_OCS::generatexml($format,'failed',$data['code'],$data['message']);
3981 }
3982
3983 echo($txt);
3984 }
3985
3986 /**
3987 * Edit the specified remote account entry
3988 * @param string $format
3989 * @param int $id The ID of the remote account to edit
3990 * @param string $data The data to enter into the data section (any arbitrary string data)
3991 * @param string $login The user's login on the remote service
3992 * @param string $password The user's password on the remote service
3993 * @return string xml/json
3994 */
3995 private static function buildserviceremoteaccountsedit($format,$id,$login,$password,$data) {
3996 $user=H01_OCS::checkpassword(true);
3997 H01_OCS::checktrafficlimit($user);
3998
3999 $txt='';
4000 $data=H01_BUILDSERVICE::remoteaccountsedit($user,CONFIG_USERDB,$id,$login,$password,$data);
4001 if($data) {
4002 $txt=H01_OCS::generatexml($format,'ok',100,'');
4003 } else {
4004 $txt=H01_OCS::generatexml($format,'failed',101,'no such remote account');
4005 }
4006
4007 echo($txt);
4008 }
4009
4010 /**
4011 * Fetch all known information about a specified remote account
4012 * @param string $format
4013 * @param int $id The ID of the remote account to get
4014 * @return string xml/json
4015 */
4016 private static function buildserviceremoteaccountsget($format,$id) {
4017 $user=H01_OCS::checkpassword(true);
4018 H01_OCS::checktrafficlimit($user);
4019
4020 $txt='';
4021 $data=H01_BUILDSERVICE::remoteaccountsget($user,CONFIG_USERDB,$id);
4022 if(!array_key_exists('code',$data)) {
4023 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,'remoteaccount','','dynamic');
4024 } else {
4025 $txt=H01_OCS::generatexml($format,'failed',$data['code'],$data['message']);
4026 }
4027
4028 echo($txt);
4029 }
4030
4031 /**
4032 * Delete the specified remote account entry
4033 * @param string $format
4034 * @param int $id The ID of the remote account to remove
4035 * @return string xml/json
4036 */
4037 private static function buildserviceremoteaccountsremove($format,$id) {
4038 $user=H01_OCS::checkpassword(true);
4039 H01_OCS::checktrafficlimit($user);
4040
4041 $txt='';
4042 $data=H01_BUILDSERVICE::remoteaccountsremove($user,CONFIG_USERDB,$id);
4043 if(!is_array($data)) {
4044 $txt=H01_OCS::generatexml($format,'ok',100,'');
4045 } else {
4046 $txt=H01_OCS::generatexml($format,'failed',$data['code'],$data['message']);
4047 }
4048
4049 echo($txt);
4050 }
4051
4052 // BUILDSERVICES section
4053
4054 /**
4055 * get build service listing
4056 * @param string $format
4057 * @return string xml/json
4058 */
4059 private static function buildservicebuildserviceslist($format,$page,$pagesize) {
4060 $user=H01_OCS::checkpassword(false);
4061 H01_OCS::checktrafficlimit($user);
4062
4063 $data=H01_BUILDSERVICE::buildserviceslist($user,CONFIG_USERDB);
4064 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,array('','buildservice','','target'),'','dynamic');
4065 echo($txt);
4066 }
4067
4068 /**
4069 * get build service data
4070 * @param string $format
4071 * @param string $buildserviceID
4072 * @return string xml/json
4073 */
4074 private static function buildservicebuildservicesget($format,$buildserviceID) {
4075 $user=H01_OCS::checkpassword(false);
4076 H01_OCS::checktrafficlimit($user);
4077
4078 $data=H01_BUILDSERVICE::buildservicesget($user,CONFIG_USERDB,$buildserviceID);
4079 if(is_array($data['buildservice']) && count($data['buildservice'])>0) {
4080 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,array('buildservice','','target'),'','dynamic');
4081 } else {
4082 if(is_numeric($buildserviceID)) {
4083 $txt=H01_OCS::generatexml($format,'failed',101,'no such build service');
4084 } else {
4085 $txt=H01_OCS::generatexml($format,'failed',101,'no such build service - the build service ID should be an integer');
4086 }
4087 }
4088 echo($txt);
4089 }
4090
4091 // JOBS section
4092
4093 /**
4094 * Get a list of jobs pertaining to one project on the build service
4095 * @param string $format
4096 * @param int $projectID
4097 * @param int $page
4098 * @param int $pagesize
4099 * @return string xml/json
4100 */
4101 private static function buildservicejobslist($format,$projectID,$page,$pagesize){
4102 $user=H01_OCS::checkpassword(true);
4103 H01_OCS::checktrafficlimit($user);
4104
4105 $data=H01_BUILDSERVICE::jobslist($user,CONFIG_USERDB,$projectID);
4106 if(!array_key_exists('code',$data)) {
4107 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,'buildjob','','dynamic');
4108 } else {
4109 $txt=H01_OCS::generatexml($format,'failed',$data['code'],$data['message']);
4110 }
4111
4112 echo($txt);
4113 }
4114
4115 /**
4116 * Create a new build job for a specified project, on a specified build service, with a specified
4117 * target
4118 * @param string $format
4119 * @param int $projectID
4120 * @param int $buildserviceID
4121 * @param string $target
4122 * @return string xml/json
4123 */
4124 private static function buildservicejobscreate($format,$projectID,$buildserviceID,$target){
4125 $user=H01_OCS::checkpassword(true);
4126 H01_OCS::checktrafficlimit($user);
4127
4128 $data=H01_BUILDSERVICE::jobscreate($projectID,$buildserviceID,$target,$user,CONFIG_USERDB);
4129 $txt="";
4130 if(array_key_exists('buildjobid',$data) && $data['buildjobid']!=NULL)
4131 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,'buildservice','','dynamic');
4132 else{
4133 if(is_array($data) and array_key_exists('code',$data)){
4134 $txt=H01_OCS::generatexml($format,'failed',$data['code'],$data['message']);
4135 }else
4136 $txt=H01_OCS::generatexml($format,'failed',102,'project id should be an integer');
4137 }
4138
4139 echo($txt);
4140 }
4141
4142 /**
4143 * Cancel a specified build job
4144 * @param string $format
4145 * @param int $buildjobID
4146 * @return string xml/json
4147 */
4148 private static function buildservicejobscancel($format,$buildjobID){
4149 $user=H01_OCS::checkpassword(true);
4150 H01_OCS::checktrafficlimit($user);
4151
4152 $data=H01_BUILDSERVICE::jobscancel($buildjobID,$user,CONFIG_USERDB);
4153 $txt="";
4154 if($data===true)
4155 $txt=H01_OCS::generatexml($format,'ok',100,'');
4156 else{
4157 if(is_numeric($buildjobID))
4158 $txt=H01_OCS::generatexml($format,'failed',101,'no such build job');
4159 else
4160 $txt=H01_OCS::generatexml($format,'failed',102,'build job id should be an integer');
4161 }
4162
4163 echo($txt);
4164 }
4165
4166 /**
4167 * Get information about a specified build job
4168 * @param string $format
4169 * @param int $buildjobID
4170 * @return string xml/json
4171 */
4172 private static function buildservicejobsget($format,$buildjobID){
4173 $user=H01_OCS::checkpassword(true);
4174 H01_OCS::checktrafficlimit($user);
4175
4176 $data=H01_BUILDSERVICE::jobsget($buildjobID,$user,CONFIG_USERDB);
4177 $txt="";
4178 if(count($data["buildjob"])>0)
4179 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,'buildservice','','dynamic');
4180 else{
4181 if(is_numeric($buildjobID))
4182 $txt=H01_OCS::generatexml($format,'failed',101,'no such build job');
4183 else
4184 $txt=H01_OCS::generatexml($format,'failed',102,'build job id should be an integer');
4185 }
4186
4187 echo($txt);
4188 }
4189
4190 /**
4191 * Get the command output from a specified build job
4192 * @param string $format
4193 * @param int $buildjobID
4194 * @return string xml/json
4195 */
4196 private static function buildservicejobsgetoutput($format,$buildjobID){
4197 $user=H01_OCS::checkpassword(true);
4198 H01_OCS::checktrafficlimit($user);
4199
4200 $data=H01_BUILDSERVICE::jobsgetoutput($buildjobID,$user,CONFIG_USERDB);
4201 $txt="";
4202 if($data["output"]!==NULL)
4203 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,'buildservice','','dynamic');
4204 else{
4205 if(is_numeric($buildjobID))
4206 $txt=H01_OCS::generatexml($format,'failed',101,'no such build job');
4207 else
4208 $txt=H01_OCS::generatexml($format,'failed',102,'build job id should be an integer');
4209 }
4210
4211 echo($txt);
4212 }
4213
4214 // Publishing
4215
4216 /**
4217 * Get a list of supported publishers, optionally for the currently authorised user
4218 * @param string $format
4219 * @param int $page
4220 * @param int $pagesize
4221 * @return string xml/json
4222 */
4223 private static function buildservicepublishinggetpublishingcapabilities($format,$page,$pagesize){
4224 $user=H01_OCS::checkpassword(false);
4225 H01_OCS::checktrafficlimit($user);
4226
4227 $data=H01_BUILDSERVICE::publishinggetpublishingcapabilities($user,CONFIG_USERDB);
4228 $txt="";
4229 if(count($data["publishers"])>0){
4230 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,array('','publisher','',array(3=>'field',4=>'target'),'','option'),'','dynamic');
4231 }else{
4232 if($user=='')
4233 $txt=H01_OCS::generatexml($format,'failed',101,'no such user');
4234 else
4235 $txt=H01_OCS::generatexml($format,'failed',102,'user has not registered with any publishers');
4236 }
4237
4238 echo($txt);
4239 }
4240
4241 /**
4242 * Get information on a specified publisher
4243 * @param string $format
4244 * @param int $publisherID
4245 * @return string xml/json
4246 */
4247 private static function buildservicepublishinggetpublisher($format,$publisherID){
4248 $user=H01_OCS::checkpassword(false);
4249 H01_OCS::checktrafficlimit($user);
4250
4251 $data=H01_BUILDSERVICE::publishinggetpublisher($publisherID);
4252 $txt="";
4253 if(count($data["publisher"])>0)
4254 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,array('','',array(3=>'field',4=>'target'),'','option'),'','dynamic');
4255 else{
4256 if(is_numeric($publisherID))
4257 $txt=H01_OCS::generatexml($format,'failed',101,'no such publisher');
4258 else
4259 $txt=H01_OCS::generatexml($format,'failed',102,'publisher id should be an integer');
4260 }
4261
4262 echo($txt);
4263 }
4264
4265 /**
4266 * Publish the result of a bulid job on some specified project to a publisher
4267 * @param string $format
4268 * @param int $buildjobID
4269 * @param int $publisherID
4270 * @return string xml/json
4271 */
4272 private static function buildservicepublishingpublishtargetresult($format,$buildjobID,$publisherID){
4273 $user=H01_OCS::checkpassword(true);
4274 H01_OCS::checktrafficlimit($user);
4275
4276 $data=H01_BUILDSERVICE::publishingpublishtargetresult($buildjobID,$publisherID,$user,CONFIG_USERDB);
4277 $txt="";
4278 if($data===true)
4279 $txt=H01_OCS::generatexml($format,'ok',100,'');
4280 else {
4281 if(is_array($data)) {
4282 $txt=H01_OCS::generatexml($format,'failed',$data['code'],$data['message']);
4283 } else if(is_numeric($buildjobID)) {
4284 if(is_numeric($publisherID)) {
4285 $txt=H01_OCS::generatexml($format,'failed',108,'publishing failed');
4286 } else {
4287 $txt=H01_OCS::generatexml($format,'failed',107,'publisher id should be an integer');
4288 }
4289 } else {
4290 $txt=H01_OCS::generatexml($format,'failed',105,'build job id should be an integer');
4291 }
4292 }
4293
4294 echo($txt);
4295 }
4296
4297 /**
4298 * Save some field data (as connected to publishing the project) into that project
4299 * @param string $format
4300 * @param int $projectID
4301 * @param array $fields A bunch of field data, in the form
4302 * array( array("name"=>value,"fieldtype"=>value,"data"=>value), array(...))
4303 * @return string xml/json
4304 */
4305 private static function buildservicepublishingsavefields($format,$projectID,$fields){
4306 $user=H01_OCS::checkpassword(true);
4307 H01_OCS::checktrafficlimit($user);
4308
4309 $data=H01_BUILDSERVICE::publishingsavefields($projectID,$fields,$user,CONFIG_USERDB);
4310 $txt="";
4311 if($data===true)
4312 $txt=H01_OCS::generatexml($format,'ok',100,'');
4313 else {
4314 if(is_numeric($projectID))
4315 $txt=H01_OCS::generatexml($format,'failed',101,'no such project');
4316 else
4317 $txt=H01_OCS::generatexml($format,'failed',102,'project id should be an integer');
4318 }
4319
4320 echo($txt);
4321 }
4322
4323 /**
4324 * Get all the saved fields for some specified project
4325 * @param string $format
4326 * @param int $projectID
4327 * @return string xml/json
4328 */
4329 private static function buildservicepublishinggetfields($format,$projectID){
4330 $user=H01_OCS::checkpassword(true);
4331 H01_OCS::checktrafficlimit($user);
4332
4333 $data=H01_BUILDSERVICE::publishinggetfields($projectID,$user,CONFIG_USERDB);
4334 $txt="";
4335 if(!array_key_exists('code',$data))
4336 $txt=H01_OCS::generatexml($format,'ok',100,'',$data,'field','','dynamic');
4337 else {
4338 $txt=H01_OCS::generatexml($format,'failed',$data['code'],$data['message']);
4339 }
4340
4341 echo($txt);
4342 }
4343 }
4344 // Little hack to get kdevelop to pick up the functions...
4345 //include_once("../buildservice/lib_buildservice.php");
4346
4347 ?>