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 ?>