Вход Регистрация
Файл: silawar.ru/protected/controllers/PumpitapiController.php
Строк: 127
<?php

class PumpitapiController extends Controller {

    public function 
accessRules() {
        return array(
            array(
'allow',
                
'actions' => array('index'),
                
'users' => array('*'),
            ),
            array(
'deny',
                
'users' => array('*'),
                
'deniedCallback' => array(Yii::app()->controller'redirectToHome'),
            )
        );
    }

    public function 
actionIndex($action null) {
        
$pumpit_params = array();
        
        
$pumpit_params['APP_ID'] = 92;              // id игры, выдает администрация Pumpit
        
$pumpit_params['API_HOST'] = "http://pumpit.ru/riba_api/?"// HOST PUMPIT
        
$pumpit_params['KEY_API'] = 'UKHifLS4EjOHAlG9j';    // ключ подписи ко всем запросам кроме биллинговых, выдает администрация Pumpit
        
$pumpit_params['KEY_BILLING'] = 'jjhX5YSPNtPf3EyNw';    // ключ подписи для биллинговых запросов, выдает администрация Pumpit
        
$pumpit_params['LOG'] = '/var/log/pumpit.log';   // файл для записи логов

        // Если сессия пустая или сброс сессии,то пользователь не авторизован
        
if (!isset($_SESSION['p_sid'])) {
            
$_SESSION['pumpit_id'] = 0;
            
$_SESSION['p_sid'] = '';
            
$_SESSION['p_user_info'] = array();
        }

        
// Сохраняем в сессии заголовки проксирования
        
if (!isset($_SESSION['x_host']) && isset($_SERVER['HTTP_X_HOST'])) {
            
$_SESSION['x_host'] = $_SERVER['HTTP_X_HOST'];
        }
        if (!isset(
$_SESSION['x_partner']) && isset($_SERVER['HTTP_X_PARTNER'])) {
            
$_SESSION['x_partner'] = $_SERVER['HTTP_X_PARTNER'];
        }

        
$pumpit = new Pumpit($pumpit_params);

        
// Если пришел запрос GetAppOnline, то нужно вернуть число пользователей онлайн
        
if (!empty($action) && ($action == 'GetAppOnline') && $pumpit->checkRequest($_SERVER['QUERY_STRING'])) {
            
// Здесь реализовывается логика определения пользователей online и передается ответ Pumpit
            
$online_number Users::countOnline();
            
$xml_response '<?xml version="1.0" encoding="utf-8"?>
                <response>
                       <online>' 
$online_number '</online>
                </response>'
;
            echo 
$xml_response;
            exit();
        }
        
        
// Если пришел запрос DoLogin то записываем в сессию
        
if (!empty($action) && ($action == 'DoLogin') && $pumpit->checkRequest($_SERVER['QUERY_STRING'])) {
            
$_SESSION['pumpit_id'] = (int)$_GET['login'];
            
$_SESSION['p_sid'] = $_GET['p_sid'];
//            $res = $pumpit->getMyProfile($_GET['p_sid']);
//            if ($res) {
//                $_SESSION['p_user_info'] = $res;
//            }
            //Проверяем есть ли у пользователя персонаж в игре или нет
            
$user Users::findPartnerUser($_SESSION['pumpit_id']);
            if (
$user->id_user) {
                
$password md5('pumpit'.$_SESSION['pumpit_id']);
                
$login = new LoginForm;
                
$login->login $user->login;
                
$login->password $password;
                
$login->login();
            }
            
$this->redirect('http://'.$_SERVER['HTTP_X_HOST']);
            
Yii::app()->end();
//            if (!empty($_GET['url'])) {
//                // Здесь нужно перекинуть пользователя по запрашиваемому url
//                $this->redirect($_GET['url']);
//                Yii::app()->end();
//            }
        
}
        
// Если пришел запрос PaymentOk то надо нотифицировать Pumpit о том что запрос принят и деньги переведены в игру
        
if (!empty($action) && ($action == 'PaymentOk') && $pumpit->checkRequest($_SERVER['QUERY_STRING'], true)) {
            
$query_string $_SERVER['QUERY_STRING'];
            
parse_str($query_string$query);

            
/* Теперь массив query содержит следующие данные
              action   - приходит всегда
              amount   - приходит всегда
              app_id   - приходит всегда
              coin     - приходит всегда
              login    - приходит всегда
              trans_id - приходит всегда
              sig      - приходит всегда
              app_tid  - приходит если был передан при запросе DoIncAppAccount как элемент массива третим параметром
              app_uid  - приходит если был передан при запросе DoIncAppAccount как элемент массива третим параметром

              Здесь надо реализовать логику зачисления и отправить Pumpit ответ

              если зачисление успешно то    $ans = '<status>OK</status>';
              если зачисление не успешно то $ans = '<status>CANCEL</status>';
             */
            
$user Users::findPartnerUser($query['login']);
            if (
$user) {
                
$params = array(
                    
=> 5,
                    
10 => 10,
                    
55 => 50,
                    
300 => 250,
                    
1000 => 800,
                );
                
$key array_search($query['coin'], $params);
                if (!isset(
$key)) {
                    echo 
'<status>CANCEL</status>';
                    exit();
                }
                
$money $key 100;
                
/**
                 * Для акции на премиум в подарок 
                 */
                
if ($money >= 1000) {
                    
$time floor($money/1000);
                    
$bonus Actions::getBonusValue(4);
                    if (
$bonus && $time 0) {
                        if (
$user->premium_time time())
                            
$user->premium_time += 60 60 24 $time;
                        else
                            
$user->premium_time time() + 60 60 24 $time;
                        if (!
$user->save(false)) {
                            throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении пользователя!'));
                        } 
                    }
                }
                
$id_dialog Users::checkDialog($user->id_user100);
                
$mail = new UsersMessages();
                
$mail->id_dialog $id_dialog;
                
$mail->id_user 100;
                
$mail->users $user->id_user;
                
$mail->type 1;
                
$mail->message 'Пополнение счета';
                
$bonus Actions::getBonusValue(1);
                
$mail->money $bonus round($money + ($money/100)*$bonus) : $money;
                if (!
$mail->save(false)) {
                    throw new 
CHttpException(500Yii::t('layout''Ошибка при отправке почты!'));
                }
                
                
//Проверяем достиг ли игрок 10 уровень и является ли он рефералом
                
if ($user->level >= 10 && $user->id_ref && isset($user->idRef)) {
                    
$money round($money/10);
                    
$id_dialog Users::checkDialog($user->id_ref100);
                    
$mail = new UsersMessages();
                    
$mail->id_dialog $id_dialog;
                    
$mail->id_user 100;
                    
$mail->users $user->id_ref;
                    
$mail->type 1;
                    
$mail->message 'Бонус за друга';
                    
$mail->money $money;
                    if (!
$mail->save(false)) {
                        throw new 
CHttpException(500Yii::t('layout''Ошибка при отправке почты!'));
                    }
                }
                
$log = new DonateLog();
                
$log->id_user $user->id_user;
                
$log->tid $query['trans_id'];
                
$log->value $key;
                
$log->type 5;
                
$log->result 1;
                
$log->save(false);
                
$ans '<status>OK</status>';
            }
            else {
                
$ans '<status>CANCEL</status>';
            }
            echo 
$ans;
            exit();
        }
    }
}
Онлайн: 1
Реклама