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

class SiteController extends Controller {

    public function 
accessRules() {
        return array(
            array(
'allow',
                
'actions' => array('index''error''logout'),
                
'users' => array('*'),
            ),
            array(
'deny',
                
'roles' => array('banned'),
                
'deniedCallback' => array(Yii::app()->controller'redirectToHome'),
            ),
            array(
'allow',
                
'actions' => array('registration''login''start''remind''remindPassword'),
                
'users' => array('?'),
            ),
            array(
'allow',
                
'actions' => array('online''returnToBattle''support''ajaxReadNews''actions''bonus'),
                
'users' => array('@'),
            ),
            array(
'deny',
                
'users' => array('*'),
                
'deniedCallback' => array(Yii::app()->controller'redirectToHome'),
            )
        );
    }

    public function 
actionRemind() {
        
$model = new RemindForm;
        if (isset(
$_POST['RemindForm'])) {
            
$model->attributes $_POST['RemindForm'];
            if (
$model->validate()) {
                
$user Users::model()->findByAttributes(array('login' => $model->login));
                
$hash rand(11119999) . $user->email rand(11119999);
                
$user->email_remind md5(md5($hash));
                
$user->email_remind_time time();
                if (!
$user->save(false)) {
                    throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении пользователя!'));
                }
                
$email Yii::app()->email;
                
$email->to $user->email;
                
$email->from 'Битва за Средиземье <support@mland.mobi>';
                
$email->subject 'Восстановление пароля';
                
$email->message 'Вы получили данное сообщение так как запрашивали восстановление пароля в мобильной'
                        
' онлайн игре "Битва за Средиземье" для персонажа под логином <i>' $user->login '</i><br /><br />'
                        
'Если же Вы не запрашивали восстановление пароля - просто проигнорируйте письмо.<br /><br />'
                        
'Если же именно Вы запрашивали восстановление пароля, тогда перейдите по следующей ссылке для смены пароля:<br /><br />'
                        
'http://mland.mobi/remindPassword/?code=' $user->email_remind '<br /><br />'
                        
'И следуйте инструкциям указанным на странице.<br /><br />'
                        
'Приятной игры. С уважением команда mland.mobi';
                
$email->send();
                
Yii::app()->user->setFlash('info''Сообщение с инструкциями отправленно на Ваш Email!');
                
$this->redirect('/');
                
Yii::app()->end();
            }
        }
        
$this->render('remind', array('model' => $model));
    }

    public function 
actionRemindPassword($code) {
        
$user Users::model()->findByAttributes(array('email_remind' => $code));
        if (!
$user) {
            throw new 
CHttpException(404Yii::t('layout''Данный код не верный!'));
        } else {
            
$model = new OptionsForm();
            
$model->setScenario('changePassword');
            if (isset(
$_POST['OptionsForm'])) {
                
$model->attributes $_POST['OptionsForm'];
                if (
$model->validate()) {
                    
$user->password md5(md5($model->password_new));
                    
$user->email_remind $user->email_remind_time null;
                    if (!
$user->save(false)) {
                        throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении пользователя!'));
                    }
                    
Yii::app()->user->setFlash('info''Ваш новый пароль установлен.');
                    
$this->redirect('/login/');
                    
Yii::app()->end();
                }
            }
        }
        
$this->render('remindPassword', array('model' => $model));
    }

    public function 
actionReturnToBattle($type null) {
        if (
$type == 1) {
            
$this->redirect('/battles/');
        } elseif (
$type == 2) {
            
$this->redirect('/dungeons/');
        } elseif (
$type == 3) {
            
$this->redirect('/training/');
        } else {
            
$this->redirect('/site/');
        }
    }

    public function 
actionActions() {
        
$criteria = new CDbCriteria();
        
$criteria->addCondition('t.time >= ' time());
        
$models Actions::model()->findAll($criteria);
        
$this->render('actions', ['models' => $models]);
    }

    public function 
actionBonus() {
        
$user Users::findUser();
        if (isset(
$_GET['action']) && !UserDaily::check('bonus') && $user->level >= 15) {
            
$bonuses = [
                
'money' => [
                    
'value' => 10,
                    
'name' => '10 серебра'
                
],
                
'xp' => [
                    
'name' => '5% личного опыта'
                
],
                
'item' => [
                    
'value' => 10,
                    
'name' => 'Добротная вещь'
                
],
                
'iron' => [
                    
'value' => 150,
                    
'name' => '150 железа'
                
],
                
'bottles' => [
                    
'value' => 5,
                    
'name' => '5 эликсиров'
                
],
            ];
            
$bonus array_rand($bonuses1);
            if (
$bonus == 'item') {
                
$id_set rand(25);
                
$item ShopItems::getRandomItemInDungeons($id_set);
                
$drop ShopItems::getNewItem($item->id_item3Yii::app()->user->idfalsefalsetrue);
            } elseif (
$bonus == 'xp') {
                
$min BattleHelper::maxXP($user->level 1);
                
$max BattleHelper::maxXP($user->level);
                
$xp round((($max $min) / 100) * 5);
                
$user->xp += $xp;
                if (
$user->xp >= $max && $user->level 34) {
                    
$user->level += 1;
                    
$params Users::calcParam($user->id_user);
                    
$user->health_now $params->totalHealth 2;
                    
$user->energy_now $params->totalEnergy 2;
                }
            } else {
                
$user->$bonus += $bonuses[$bonus]['value'];
            }
            if (!
$user->save(false)) {
                throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении данных пользователя!'));
            }
            
UserDaily::addToDaily('bonus');
            
Yii::app()->user->setFlash('info''Вы выиграли "' $bonuses[$bonus]['name'] . '"');
            
$this->redirect('/bonus/');
            
Yii::app()->end();
        }
        
$this->render('bonus', ['user' => $user]);
    }

    public function 
actionIndex() {
        if (
Yii::app()->user->role == 'guest') {
            if (
Yii::app()->request->getParam('user')) {
                
$_SESSION['id_ref'] = (int) Yii::app()->request->getParam('user');
            }
            
$this->render('main');
        } else {
            
$user Users::findUser();
            
$columns = array('dungeons''logs''dungeon_id''battle_id''battle_type''battle_target''ip''ua');
            
$user->dungeons null;
            
$user->logs null;
            if (
$user->battle_type == 2) {
                
$dungeon BattlesDungeons::model()->findByPk($user->battle_id);
                if (
$dungeon) {
                    
$users_ids CHtml::listData($dungeon->users'id_user''id_user');
                    
$log = new BattleLog();
                    
$log->battle_type $user->battle_type;
                    
$log->battle_id $user->battle_id;
                    
$log->id_user $user->id_user;
                    
$log->type 8;
                    
$log->info 2;
                    
$log->users $users_ids;
                    
$log->save(false);
                }
            }
            
$user->dungeon_id null;
            
$user->battle_id null;
            
$user->battle_type null;
            
$user->battle_target null;
            
$user->ip ip2long(Yii::app()->request->getUserHostAddress());
            
$user->ua Yii::app()->request->getUserAgent();
            if (!
$user->health_now) {
                
$params Users::calcParam($user->id_user);
                
$user->health_now $params->totalHealth;
                
$user->energy_now $params->totalEnergy;
                
$columns[] = 'health_now';
                
$columns[] = 'energy_now';
            }
            if (!
$user->update($columns)) {
                throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении пользователя!'));
            }
            
$criteria = new CDbCriteria();
            
$criteria->select 'short_name_action';
            
$criteria->addCondition('t.time >= ' time());
            
$actions Actions::model()->findAll($criteria);
            
$this->render('index', ['actions' => $actions'user' => $user]);
        }
    }

    public function 
actionStart($side) {
        
$side = ($side || $side $side);
        if (isset(
$_GET['class'])) {
            
$class = ((int) $_GET['class'] < || (int) $_GET['class'] > : (int) $_GET['class']);
            
$last Users::model()->count();
            
$user = new Users();
            
$user->id_role 8;
            
$user->side $side;
            
$user->class $class;
            
$user->avatar 1;
            
$user->iron 50;
            
$user->money 5;
            
$user->login = ($class 'Воин' 'Медик') . ' ' . ($side 'Краллов' 'Элийцев') . ' ' $last;
            if (isset(
$_SERVER['HTTP_X_HOST']) && isset($_SESSION['pumpit_id'])) {
                
$user->pumpit_id $_SESSION['pumpit_id'];
                
$password md5('pumpit' $_SESSION['pumpit_id']);
            } else {
                
$password md5(rand(111111999999));
            }
            
$user->password $password;
            if (isset(
$_SESSION['id_ref'])) {
                
$user->id_ref = (int) $_SESSION['id_ref'];
            }
            if (
$user->save(false)) {
                
$items ShopItems::findAllBySet(1);
                foreach (
$items as $item) {
                    
ShopItems::getNewItem($item->id_item1$user->id_userfalsetrue);
                }
                
$health Users::calcParam($user->id_user'health');
                
$energy Users::calcParam($user->id_user'energy');
                
$user->health_now round($health 2);
                
$user->energy_now round($energy 2);
                if (!
$user->save(false)) {
                    throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении бота!'));
                }
                
$login = new LoginForm;
                
$login->login $user->login;
                
$login->password $password;
                
$login->login();
            }
            
$this->redirect('/training/');
        }
        
$this->render('start', array('side' => $side));
    }

    public function 
actionLogin() {
        
$model = new LoginForm;
        if (isset(
$_POST['ajax']) && $_POST['ajax'] === 'login-form') {
            echo 
CActiveForm::validate($model);
            
Yii::app()->end();
        }
        if (isset(
$_POST['LoginForm'])) {
            
$model->attributes $_POST['LoginForm'];
            if (
$model->validate() && $model->login()) {
                
$this->redirect('/');
                
Yii::app()->end();
            }
        }
        
$this->render('login', array('model' => $model));
    }

    public function 
actionOnline() {
        
$model = new Users('online');
        
$this->render('online', array('model' => $model));
    }

    public function 
actionError() {
        if (
$error Yii::app()->errorHandler->error) {
            if (
Yii::app()->request->isAjaxRequest)
                echo 
$error['message'];
            else
                
$this->render('error'$error);
        }
    }

    public function 
actionLogout() {
        
Yii::app()->user->logout();
        if (isset(
$_SERVER['HTTP_X_HOST'])) {
            
// Если пользователь хочет вернуться в Pumpit
            
$pumpit = new Pumpit(Yii::app()->params->pumpit_params);
            
$p_sid = (isset($_SESSION['p_sid']) ? $_SESSION['p_sid'] : '');
            
$url $pumpit->doPumpitBack($p_sid);
            
$this->redirect($url);
            
Yii::app()->end();
        }
        
$this->redirect(Yii::app()->homeUrl);
    }

    public function 
actionRegistration() {
        
$model = new RegistrationForm;
        if (
Users::countUsers(1null) > Users::countUsers(2null))
            
$model->side 2;
        else
            
$model->side 1;
        if (
Users::countUsers($model->side1) > Users::countUsers($model->side2))
            
$model->class 2;
        else
            
$model->class 1;
        if (isset(
$_POST['RegistrationForm'])) {
            
$model->attributes $_POST['RegistrationForm'];
            if (!
in_array($model->side, array(12)))
                
$model->side rand(12);
            if (!
in_array($model->class, array(12)))
                
$model->class rand(12);
            if (
$model->validate()) {
                
$user = new Users();
                
$user->attributes $model->attributes;
                
$user->id_role 1;
                if (
$user->side == && $user->sex == 0)
                    
$user->avatar 1;
                elseif (
$user->side == && $user->sex == 0)
                    
$user->avatar 2;
                elseif (
$user->side == && $user->sex == 1)
                    
$user->avatar 3;
                else
                    
$user->avatar 4;
                if (
$user->save(false)) {
                    
$items ShopItems::findAllBySet(1);
                    foreach (
$items as $item) {
                        
ShopItems::getNewItem($item->id_item1$user->id_userfalsetruetrue);
                    }
                    
$health Users::calcParam($user->id_user'health');
                    
$energy Users::calcParam($user->id_user'energy');
                    
$user->health_now round($health 2);
                    
$user->energy_now round($energy 2);
                    if (!
$user->save(false)) {
                        throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении бота!'));
                    }
                    
$login = new LoginForm;
                    
$login->login $model->login;
                    
$login->password $model->password;
                    if (
$login->login()) {
                        
$this->redirect(Yii::app()->user->returnUrl);
                    }
                }
                
$this->redirect('/');
            }
        }
        
$this->render('registration', array('model' => $model));
    }

    public function 
actionSupport() {
        
$model = new SupportMessages();
        if (isset(
$_POST['SupportMessages'])) {
            
$model->attributes $_POST['SupportMessages'];
            if (
$model->validate()) {
                if (!
$model->save(false)) {
                    throw new 
CHttpException(500Yii::t('layout''Ошибка при создании запроса!'));
                }
                
Yii::app()->user->setFlash('info''Ваш запрос отправлен. Ожидайте ответ');
                
$this->redirect('/');
                
Yii::app()->end();
            }
        }
        
$this->render('support', array(
            
'model' => $model,
        ));
    }

}
Онлайн: 1
Реклама