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