Вход Регистрация
Файл: mgates-class.php
Строк: 587
<?php

    
require_once 'mgates-config.php';

    class 
MGates
    
{        var $ref;
        var 
$param;
        var 
$chat_rights;
        var 
$forum_rights;
        var 
$last_code;
        var 
$last_trans;
        
        function 
MGates($param)
        {
            
$this->chat_rights = array("view""read""post""del""topic""ban");
            
$this->forum_rights = array("view""read""post""own_edit""own_del""all_edit""all_del""topic_create""topic_close""topic_del""ban");
            
            
$protocol 'http';
            if (!empty(
$_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off')
                
$protocol 'https';
             
$this->ref rawurlencode($protocol."://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);

            
$this->param $param;
            
$this->param['VER'] = '20110531-PHPCONTEXT';
             
$this->param['HOST'] = rawurlencode($_SERVER['HTTP_HOST']);
             if (!empty(
$_SERVER['HTTP_X_MGATES_HOST']))
                 
$this->param['HOST'] = rawurlencode($_SERVER['HTTP_X_MGATES_HOST']);
             
            
$this->param['CONTEXT'] = array(
                    
'http' => array(
                    
'method'          => 'GET',
                    
'request_fulluri' => true,
                    
'timeout'         => 10,
                    
'max_redirects'   => 1
                
)
            );
            if (isset(
$this->param['PROXY']) && $this->param['PROXY'])
                
$this->param['CONTEXT']['http']['proxy'] = $this->param['PROXY'];

            
$this->param['SID'] = array();
            
$this->param['SID']['ua'] = '';
            
$this->param['SID']['ip'] = '';
            
preg_match("/[0-9.]*/"$_SERVER['REMOTE_ADDR'], $out);
            if (!empty(
$out[0]))
                
$this->param['SID']['ip'] = substr($out[0], 015);
            if (isset(
$_SERVER['HTTP_USER_AGENT']))
                
$this->param['SID']['ua'] = rawurlencode(substr($_SERVER['HTTP_USER_AGENT'], 0100));
            if (
strpos($this->param['SID']['ua'], 'Opera%20Mini'))
            {
                if (isset(
$_SERVER['HTTP_X_FORWARDED_FOR']))
                {
                    
preg_match("/[0-9.]*/"$_SERVER['HTTP_X_FORWARDED_FOR'], $out);
                    if (!empty(
$out[0]))
                        
$this->param['SID']['ip'] = substr($out[0], 015);
                }
                if (isset(
$_SERVER['HTTP_X_OPERAMINI_PHONE_UA']))
                    
$this->param['SID']['ua'] = rawurlencode(substr($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'], 0100));
            }
        }

        function 
setRef($url)
        {            
$this->ref rawurlencode($url);
        }

        function 
setHost($host)
        {
            
$this->param['HOST'] = rawurlencode($host);
        }

        function 
getUserInfo($sid)
        {
            
$result false;
            
$res $this->ExecCommand($sid'getUserInfo''');
            if (
$res)
            {
                
$result = array();
                
$result['id'] = sprintf("%d"$res->response->id);
                
$result['substitutor'] = sprintf("%d"$res->response->substitutor);
                
$result['login'] = sprintf("%s"$res->response->login);
                
$result['permanent'] = sprintf("%d"$res->response->permanent);
                
$result['phone'] = sprintf("%d"$res->response->phone);
                
$result['phonezone'] = sprintf("%d"$res->response->phonezone);
                
$result['sex'] = sprintf("%d"$res->response->sex);
                
$result['birthdate'] = sprintf("%s"$res->response->birthdate);
                
$result['avatar'] = sprintf("%s"$res->response->avatar);
                
$result['sid'] = sprintf("%s"$res->response->sid);
                
$result['own'] = sprintf("%d"$res->response->own);
                
$result['placecode'] = sprintf("%s"$res->response->placecode);
                
$result['balance'] = sprintf("%d"$res->response->balance);
                
$result['bonus'] = sprintf("%d"$res->response->bonus);
                
$result['paid'] = sprintf("%d"$res->response->paid);
                
$result['status'] = sprintf("%d"$res->response->status);
                
$result['mobile'] = sprintf("%d"$res->response->mobile);
                
$result['mobile_x'] = sprintf("%d"$res->response->mobile_x);
                
$result['mobile_y'] = sprintf("%d"$res->response->mobile_y);
                
$result['widget'] = sprintf("%d"$res->response->widget);
            }
            return 
$result;
        }

        function 
getUserBalance($sid)
        {
            
$result false;
            
$res $this->ExecCommand($sid'getUserBalance''');
            if (
$res)
            {
                
$result = array();
                
$result['balance'] = sprintf("%d"$res->response->balance);
                
$result['bonus'] = sprintf("%d"$res->response->bonus);
                
$result['paid'] = sprintf("%d"$res->response->paid);
            }
            return 
$result;
        }

        function 
addBonus($sid$value)
        {
            
$result false;
            
$res $this->ExecCommand($sid'addBonus'$value);
            if (
$res)
            {
                
$result = array();
                
$result['money'] = $value;
            }
            return 
$result;
        }

        function 
addCommonBonus($sid$value)
        {
            
$result false;
            
$res $this->ExecCommand($sid'addCommonBonus'$value);
            if (
$res)
            {
                
$result = array();
                
$result['money'] = $value;
            }
            return 
$result;
        }

        function 
addBalance($sid$value)
        {
            
$result false;
            
$res $this->ExecCommand($sid'addBalance'$value);
            if (
$res)
            {
                
$result = array();
                
$result['money'] = $value;
            }
            return 
$result;
        }

        function 
getMiscInfo($sid '')
        {
            
$result false;
            
$res $this->ExecCommand($sid'getMiscInfo''');
            if (
$res)
            {
                
$result = array();
                
$result['mirror'] = sprintf("%s"$res->response->mirror);
                
$result['host'] = sprintf("%s"$res->response->host);
                
$result['url_main'] = sprintf("%s"$res->response->url->main);
                
$result['url_login'] = sprintf("%s"$res->response->url->login);
                
$result['url_registration'] = sprintf("%s"$res->response->url->registration);
                
$result['url_balance'] = sprintf("%s"$res->response->url->balance);
                
$result['url_chat'] = sprintf("%s"$res->response->url->chat);
                
$result['url_forum'] = sprintf("%s"$res->response->url->forum);
            }
            return 
$result;
        }

        function 
spendMoney($sid$value)
        {
            
$result false;
            
$res $this->ExecCommand($sid'spendMoney'$value);
            if (
$res)
            {
                
$result = array();
                
$result['gamebonus'] = sprintf("%d"$res->response->gamebonus);
                
$result['bonus'] = sprintf("%d"$res->response->bonus);
                
$result['paid'] = sprintf("%d"$res->response->paid);
            }
            return 
$result;
        }

        function 
spendBonus($sid$value)
        {
            
$result false;
            
$res $this->ExecCommand($sid'spendBonus'$value);
            if (
$res && ($res->response->gamebonus 0))
            {
                
$result = array();
                
$result['gamebonus'] = sprintf("%d"$res->response->gamebonus);
                
$result['bonus'] = 0;
                
$result['paid'] = 0;
            }
            return 
$result;
        }

        function 
spendBalance($sid$value)
        {
            
$result false;
            
$res $this->ExecCommand($sid'spendBalance'$value);
            if (
$res)
            {
                
$result = array();
                
$result['gamebonus'] = 0;
                
$result['bonus'] = sprintf("%d"$res->response->bonus);
                
$result['paid'] = sprintf("%d"$res->response->paid);
            }
            return 
$result;
        }

        function 
spendPaid($sid$value)
        {
            
$result false;
            
$res $this->ExecCommand($sid'spendPaid'$value);
            if (
$res)
            {
                
$result = array();
                
$result['gamebonus'] = 0;
                
$result['bonus'] = 0;
                
$result['paid'] = sprintf("%d"$res->response->paid);
            }
            return 
$result;
        }

        function 
multiSpend($sid$value$id_fund$value_fund$id_user$value_user)
        {
            
$result false;
            
$res $this->ExecCommand($sid'multiSpend'$value.",".$id_fund.",".$value_fund.",".$id_user.",".$value_user);
            if (
$res)
            {
                
$result = array();
                
$result['gamebonus'] = sprintf("%d"$res->response->gamebonus);
                
$result['bonus'] = sprintf("%d"$res->response->bonus);
                
$result['paid'] = sprintf("%d"$res->response->paid);
                
$result['user'] = sprintf("%d"$res->response->user);
                
$result['fund'] = sprintf("%d"$res->response->fund);
            }
            return 
$result;
        }

        function 
spendPrizeFund($sid$id_fund$value)
        {
            
$result false;
            
$res $this->ExecCommand($sid'spendPrizeFund'$id_fund.",".$value);
            if (
$res)
            {
                
$result = array();
                
$result['money'] = $value;
            }
            return 
$result;
        }

        function 
openPrizeFund($type=0)
        {
            
$result false;
            
$res $this->ExecCommand('''openPrizeFund'$type);
            if (
$res)
            {
                
$result = array();
                
$result['id'] = sprintf("%d"$res->response->id);
            }
            return 
$result;
        }

        function 
closePrizeFund($id)
        {
            
$result false;
            
$res $this->ExecCommand('''closePrizeFund'$id);
            if (
$res)
            {
                
$result = array();
                
$result['success'] = 1;
            }
            return 
$result;
        }

        function 
userToPrizeFund($sid$id_fund$value)
        {
            
$result false;
            
$res $this->ExecCommand($sid'userToPrizeFund'$id_fund.",".$value);
            if (
$res)
            {
                
$result = array();
                
$result['gamebonus'] = 0;
                
$result['bonus'] = 0;
                
$result['paid'] = sprintf("%d"$res->response->paid);
            }
            return 
$result;
        }

        function 
userFromPrizeFund($sid$id_fund$value)
        {
            
$result false;
            
$res $this->ExecCommand($sid'userFromPrizeFund'$id_fund.",".$value);
            if (
$res)
            {
                
$result = array();
                
$result['money'] = $value;
            }
            return 
$result;
        }

        function 
registerUser($login$pwd)
        {
            
$result false;
            
$res $this->ExecCommand('''registerUser'$login.",".$pwd);
            if (
$res)
            {
                
$result = array();
                
$result['id'] = sprintf("%d"$res->response->id);
                
$result['ssid'] = sprintf("%s"$res->response->ssid);
            }
            return 
$result;
        }

        function 
loginUser($login$pwd)
        {
            
$result false;
            
$res $this->ExecCommand($sid'loginUser'$login.",".$pwd);
            if (
$res)
            {
                
$result = array();
                
$result['id'] = sprintf("%d"$res->response->id);
                
$result['ssid'] = sprintf("%s"$res->response->ssid);
            }
            return 
$result;
        }
        
        function 
checkUser($sid)
        {
            
$result false;
            
$res $this->ExecCommand($sid'checkUser''');
            if (
$res)
            {
                
$result = array();
                
$result['id'] = sprintf("%d"$res->response->id);
            }
            return 
$result;
        }

        function 
setUserInfo($sid$phone$email=""$sex=0$birthdate=""$id_country=0$id_city=0$name="")
        {
            
$result false;
            if (
$phone)
                
$res $this->ExecCommand($sid'setUserInfo'"1,".$phone);
            else if (
$email)
                
$res $this->ExecCommand($sid'setUserInfo'"2,".$email);
            else
                
$res $this->ExecCommand($sid'setUserInfo'"3,".$sex.",".$birthdate.",".$id_country.",".$id_city.",".$name);
            if (
$res)
            {
                
$result = array();
                
$result['success'] = 1;
            }
            return 
$result;
        }
        
        function 
requestPayment($sid$country=""$operator="")
        {
            
$result false;
            
$res $this->ExecCommand($sid'requestPayment'$country.",".$operator);
            if (
$res)
            {
                
$result = array();
                
$result['result'] = sprintf("%d"$res->response->result);
                if (
$result['result'] == 902)
                {
                    
$result['num'] = sprintf("%s"$res->response->num);
                    
$result['text'] = sprintf("%s"$res->response->text);
                    
$result['price'] = sprintf("%s"$res->response->price);
                    
$result['currency'] = sprintf("%s"$res->response->currency);
                    
$result['vat'] = sprintf("%s"$res->response->vat);
                    
$result['spec'] = sprintf("%s"$res->response->spec);
                    
$result['country'] = sprintf("%s"$res->response->country);
                }
                else if (
$result['result'] == 903)
                {
                    
$result['list'] = array();
                    foreach (
$res->response->list->country as $elem)
                    {
                        
$tmp = array();
                        
$tmp['name'] = sprintf("%s"$elem->name);
                        
$tmp['code'] = sprintf("%s"$elem->code);
                        
array_push($result['list'], $tmp);
                    }
                }
                else if (
$result['result'] == 904)
                {
                    
$result['country'] = sprintf("%s"$res->response->country);
                    
$result['list'] = array();
                    foreach (
$res->response->list->operator as $elem)
                    {
                        
$tmp = array();
                        
$tmp['name'] = sprintf("%s"$elem->name);
                        
$tmp['code'] = sprintf("%s"$elem->code);
                        
array_push($result['list'], $tmp);
                    }
                }
            }
            return 
$result;
        }

        function 
getForumInfo()
        {
            
$result false;
            
$res $this->ExecCommand('''getForumInfo''');
            if (
$res)
            {
                
$result = array();
                
$result['success'] = 1;
                
$result['list'] = array();
                foreach (
$res->response->branch as $elem)
                {
                    
$tmp = array();
                    
$tmp['id'] = sprintf("%d"$elem->id);
                    
$tmp['name'] = sprintf("%s"$elem->name);
                    
$tmp['order'] = sprintf("%d"$elem->order);
                    
$tmp['status'] = sprintf("%d"$elem->status);
                    
$tmp['mstatus'] = sprintf("%d"$elem->mstatus);
                    
$tmp['rights'] = array();
                    foreach (
$elem->right as $right)
                    {
                        
$tmp2 sprintf("%s"$right->name);
                        
$tmp['rights'][$tmp2] = sprintf("%d"$right->value);
                    }
                    
array_push($result['list'], $tmp);
                }
            }
            return 
$result;
        }
        
        function 
addForumBranch($order$status$mstatus$rights$name)
        {
            
$result false;
            
$mask "";
            
$list $this->forum_rights;
            for (
$i 0$i count($list); $i++)
            {
                if (isset(
$rights[$list[$i]]))
                    
$mask .= $rights[$list[$i]];
                else
                    
$mask .= '2';
            }
            
$res $this->ExecCommand('''addForumBranch'$order.','.$status.','.$mstatus.','.$mask.','.$name);
            if (
$res)
            {
                
$result = array();
                
$result['id'] = sprintf("%d"$res->response->id);
            }
            return 
$result;
        }
        
        function 
setForumBranch($id_branch$order$status$mstatus$rights$name)
        {
            
$result false;
            
$mask "";
            
$list $this->forum_rights;
            for (
$i 0$i count($list); $i++)
            {
                if (isset(
$rights[$list[$i]]))
                    
$mask .= $rights[$list[$i]];
                else
                    
$mask .= '2';
            }
            
$res $this->ExecCommand('''setForumBranch'$id_branch.','.$order.','.$status.','.$mstatus.','.$mask.','.$name);
            if (
$res)
            {
                
$result = array();
                
$result['success'] = 1;
            }
            return 
$result;
        }
        
        function 
getForumRights($id_branch$ids)
        {
            
$result false;
            
$res $this->ExecCommand('''getForumRights'$id_branch.','.$ids);
            if (
$res)
            {
                
$result = array();
                
$result['success'] = 1;
                
$result['list'] = array();
                foreach (
$res->response->user as $elem)
                {
                    
$tmp = array();
                    
$tmp['id'] = sprintf("%d"$elem->id);
                    
$tmp['rights'] = array();
                    foreach (
$elem->right as $right)
                    {
                        
$tmp2 sprintf("%s"$right->name);
                        
$tmp['rights'][$tmp2] = sprintf("%d"$right->value);
                    }
                    
array_push($result['list'], $tmp);
                }
            }
            return 
$result;
        }
        
        function 
setForumRights($id_branch$ids$rights)
        {
            
$result false;
            
$mask "";
            
$list $this->forum_rights;
            for (
$i 0$i count($list); $i++)
            {
                if (isset(
$rights[$list[$i]]))
                    
$mask .= $rights[$list[$i]];
                else
                    
$mask .= '2';
            }
            
$res $this->ExecCommand('''setForumRights'$id_branch.','.$mask.','.$ids);
            if (
$res)
            {
                
$result = array();
                
$result['success'] = 1;
            }
            return 
$result;
        }
        
        function 
getChatInfo()
        {
            
$result false;
            
$res $this->ExecCommand('''getChatInfo''');
            if (
$res)
            {
                
$result = array();
                
$result['success'] = 1;
                
$result['list'] = array();
                foreach (
$res->response->room as $elem)
                {
                    
$tmp = array();
                    
$tmp['id'] = sprintf("%d"$elem->id);
                    
$tmp['name'] = sprintf("%s"$elem->name);
                    
$tmp['order'] = sprintf("%d"$elem->order);
                    
$tmp['status'] = sprintf("%d"$elem->status);
                    
$tmp['rights'] = array();
                    foreach (
$elem->right as $right)
                    {
                        
$tmp2 sprintf("%s"$right->name);
                        
$tmp['rights'][$tmp2] = sprintf("%d"$right->value);
                    }
                    
array_push($result['list'], $tmp);
                }
            }
            return 
$result;
        }
        
        function 
addChatRoom($order$status$rights$name)
        {
            
$result false;
            
$mask "";
            
$list $this->chat_rights;
            for (
$i 0$i count($list); $i++)
            {
                if (isset(
$rights[$list[$i]]))
                    
$mask .= $rights[$list[$i]];
                else
                    
$mask .= '2';
            }
            
$res $this->ExecCommand('''addChatRoom'$order.','.$status.','.$mask.','.$name);
            if (
$res)
            {
                
$result = array();
                
$result['id'] = sprintf("%d"$res->response->id);
            }
            return 
$result;
        }
        
        function 
setChatRoom($id_room$order$status$rights$name)
        {
            
$result false;
            
$mask "";
            
$list $this->chat_rights;
            for (
$i 0$i count($list); $i++)
            {
                if (isset(
$rights[$list[$i]]))
                    
$mask .= $rights[$list[$i]];
                else
                    
$mask .= '2';
            }
            
$res $this->ExecCommand('''setChatRoom'$id_room.','.$order.','.$status.','.$mask.','.$name);
            if (
$res)
            {
                
$result = array();
                
$result['success'] = 1;
            }
            return 
$result;
        }
        
        function 
getChatRights($id_room$ids)
        {
            
$result false;
            
$res $this->ExecCommand('''getChatRights'$id_room.','.$ids);
            if (
$res)
            {
                
$result = array();
                
$result['success'] = 1;
                
$result['list'] = array();
                foreach (
$res->response->user as $elem)
                {
                    
$tmp = array();
                    
$tmp['id'] = sprintf("%d"$elem->id);
                    
$tmp['rights'] = array();
                    foreach (
$elem->right as $right)
                    {
                        
$tmp2 sprintf("%s"$right->name);
                        
$tmp['rights'][$tmp2] = sprintf("%d"$right->value);
                    }
                    
array_push($result['list'], $tmp);
                }
            }
            return 
$result;
        }
        
        function 
setChatRights($id_room$ids$rights)
        {
            
$result false;
            
$mask "";
            
$list $this->chat_rights;
            for (
$i 0$i count($list); $i++)
            {
                if (isset(
$rights[$list[$i]]))
                    
$mask .= $rights[$list[$i]];
                else
                    
$mask .= '2';
            }
            
$res $this->ExecCommand('''setChatRights'$id_room.','.$mask.','.$ids);
            if (
$res)
            {
                
$result = array();
                
$result['success'] = 1;
            }
            return 
$result;
        }
        
        function 
rollbackTrans($id_trans)
        {
            
$result false;
            
$res $this->ExecCommand('''rollbackTrans'$id_trans);
            if (
$res)
            {
                
$result = array();
                
$result['status'] = sprintf("%d"$res->response->status);
            }
            return 
$result;
        }
        
        function 
sendSMS($id_user$phone_zone$msg)
        {
            
$result false;
            
$res $this->ExecCommand('''sendSMS'$id_user.','.$phone_zone.','.$msg);
            if (
$res)
            {
                
$result = array();
                
$result['id'] = sprintf("%d"$res->response->id);
                
$result['cost'] = sprintf("%d"$res->response->cost);
            }
            return 
$result;
        }
        
        function 
getWidgets($sid)
        {
            
$result false;
            
$res $this->ExecCommand($sid'getWidgets''');
            if (
$res)
            {
                
$result = array();
                
$result['header'] = base64_decode(sprintf("%s"$res->response->header));
                
$result['footer'] = base64_decode(sprintf("%s"$res->response->footer));
            }
            return 
$result;
        }
        
        function 
ExecCommand($sid$cmd$param)
        {
            
$this->last_code 0;
            
$this->last_trans 0;
                        
$url $this->param['URL'];
            
$url .= "?sid=".$sid;
            
$url .= "&sid_ua=".$this->param['SID']['ua'];
            
$url .= "&sid_ip=".$this->param['SID']['ip'];
            
$url .= "&id=".$this->param['ID'];
            
$url .= "&cmd=".$cmd;
            
$url .= "&param=".rawurlencode($param);
            
$url .= "&secret=".$this->param['SECRET'];
            
$url .= "&host=".$this->param['HOST'];
            
$url .= "&ver=".$this->param['VER'];

            
$confirm '';
            
$connection stream_context_create($this->param['CONTEXT']);
            
$data file_get_contents($urlfalse$connection);
            if (
$data)
            {                
$xml = @simplexml_load_string($data);
                if (
$xml)
                {
                    if (
$xml->result->code == 201)
                    {
                        
$confirm $xml->response->confirm;
                        if (!empty(
$xml->response->trans))
                            
$this->last_trans sprintf("%d"$xml->response->trans);
                    }
                    else
                    {
                        
$this->LogError($xml->result->text);
                        
$this->last_code sprintf("%d"$xml->result->code);
                    }
                }
                else
                    
$this->LogError("Unexpected response for command request"."rn".$data);
            }
            else
                
$this->LogError("Unable to send command request"."rn"."SID=".$sid." CMD=".$cmd." PARAM=".$param);
            if (
$confirm)
            {                
$url .= "&confirm=".$confirm;
                
$data file_get_contents($urlfalse$connection);
                if (
$data)
                {
                    
$xml = @simplexml_load_string($data);
                    if (
$xml)
                    {
                        
$code $xml->result->code;
                        
$this->last_code sprintf("%d"$xml->result->code);
                        if (
$code == 200)
                            return 
$xml;
                        else if ((
$code == 103) || ($code == 303))
                        {                            
$url $xml->response->url;                            $url .= "?ref=".$this->ref;
                            
$url .= "&sid=".$sid;
                            
header("location: ".$url);
                            die();
                        }
                        else
                            
$this->LogError("ID = ".$xml->result->id.". ".$xml->result->text);
                    }
                    else
                        
$this->LogError("Unexpected response for confirm request"."rn".$data);
                }
                else
                    
$this->LogError("Unable to send confirm request"."rn"."TRANS=".$this->last_trans." SID=".$sid." CMD=".$cmd." PARAM=".$param);
            }

            return 
false;
        }
        
        function 
getLastCode()
        {
            return 
$this->last_code;
        }

        function 
getLastTrans()
        {
            return 
$this->last_trans;
        }

        function 
LogError($txt)
        {            if (isset(
$this->param['LOG']) && $this->param['LOG'] && ($handle fopen($this->param['LOG'], 'a')))
            {
                
$tmp "[".date('Y-m-d H:i:s')."]rn";
                
$tmp .= "Error. ".$txt."rn";
                
fwrite($handle$tmp);
                
fclose($handle);
            }
        }

    }

    
$mgates = new MGates($mgates_params);

?>
Онлайн: 1
Реклама