Вход Регистрация
Файл: silawar.ru/protected/controllers/ShopController.php
Строк: 144
<?php
class ShopController extends Controller {
    public function 
accessRules() {
        return array(
            array(
'deny',
                
'roles' => array('banned'),
                
'deniedCallback' => array(Yii::app()->controller'redirectToHome'),
            ),
            array(
'allow',
                
'actions' => array('index''list''avatars''ajaxGetItems''buy''view''buyAvatar''abilities''viewAbility'),
                
'users' => array('@'),
            ),
            array(
'deny',
                
'users' => array('*'),
                
'deniedCallback' => array(Yii::app()->controller'redirectToHome'),
            )
        );
    }
    
    public function 
actionIndex() {
        
$this->render('index');
    }
    
    
    public function 
actionAbilities() {
        
$info 'знаешь что поможет тебе победить врага? Хороший навык!';
        
$model = new ShopAbilities('search');

        
$this->render('abilities', ['model' => $model'info' => $info]);
    }
    
    public function 
actionViewAbility($id) {
        
$model $this->loadModel($id'ShopAbilities');
        
$ability UsersAbilities::model()->findByAttributes(['id_user' => Yii::app()->user->id'id_ability' => $id]);
        if (isset(
$_GET['type'])) {
            
$shop ShopAbilitiesTypes::model()->findByAttributes(['id_ability' => $id'id_type' => $_GET['type']]);
            
$user Users::findUser();
            if (
$user->money >= $shop->money && (!empty($ability) && $ability->idType->type $shop->type || empty($ability))) {
                if (empty(
$ability)) {
                    
$ability = new UsersAbilities();
                    
$ability->id_user $user->id_user;
                    
$ability->id_ability $id;
                }
                
$ability->id_type $shop->id_type;
                
$ability->save(false);
                
Users::model()->updateByPk($user->id_user, ['money' => $user->money $shop->money]);
                
Yii::app()->user->setFlash('info''Вы успешно купили навык');
            }
            else {
                
Yii::app()->user->setFlash('error''Недостаточно денег');
            }
            
$this->redirect(['/shop/viewAbility''id' => $id]);
            
Yii::app()->end();
        }
        
$this->render('viewAbility', ['model' => $model'ability' => $ability]);
    }
    
    public function 
actionList($id 4) {
        
$ids = array(4);
        if (!
in_array($id$ids)) {
            
$this->redirect('/shop/');
            
Yii::app()->end();
        }
        
$info = array(
            
=> 'Хищник - идеальный вариант для игроков, которые уже на 15 уровне хотят иметь приемущество!',
            
=> 'Сила - максимальная сила, слабая броня и средние здоровье и энергия',
            
=> 'Защитник - максимальная броня и здоровье, средняя сила, слабая энергия и регенерация',
            
=> 'Паладин - максимальная регенерация, остальные параметры средние',
            
=> '',
        );
        
$this->render('list', array(
            
'type' => $id,
            
'info' => $info
        
));
    }
    
    public function 
actionView($item$id_set$type) {
        
$ids = array(4);
        if (!
in_array($id_set$ids)) {
            
$this->redirect('/shop/');
            
Yii::app()->end();
        }
        
$type = ((int)$type && (int)$type>&& (int)$type<? (int)$type 3);
        
$item ShopItems::findItem($item);
        if (!
$item) {
            
$this->redirect('/shop/');
            
Yii::app()->end();
        }
        
$percents = array(3=>99140195275);
        
$percent=$percents[$type]; 

        
$item->img $id_set.'/'.$type;
        
$item->quality $type;
        
$item->sum 0;
        foreach (
FuncHelper::mainParams() as $param => $name){
            if (
$item->$param) {
                
$param_percent $param.'_percent';
                
$item->$param round($item->$param + ($item->$param 100) * $percent);
                
$item->$param_percent $percent;                
            }
        }
        
/*
         * Выбираем аналогичную надетую шмотку у пользователя
         */
        
$user_item UserItems::findUserItem($item);
        if (
$user_item)
            
$compare FuncHelper::compareStats($item$user_item);
        else 
            
$compare FuncHelper::compareStats($item$item);

        
$this->render('view', array(
            
'item' => $item
            
'user_item' => $user_item
            
'type' => $type
            
'compare' => $compare
            
'percent' => $percent
        
));
    }
    
    public function 
actionBuy($id$id_set$type) {
        
$ids = array(4);
        if (!
in_array($id_set$ids)) {
            
$this->redirect('/shop/');
            
Yii::app()->end();
        }
        
$type = ((int)$type && (int)$type>&& (int)$type<? (int)$type 3);
        
$percents = array(3=>99140195275);
        
$prices = array(
            
4=>array(3=>50100200300),
            
6=>array(3=>100200400600),
            
7=>array(3=>100200400600),
            
8=>array(3=>100200400600),
            
9=>array(3=>100200400600),
        );
        
$percent=$percents[$type]; 
        
$price=$prices[$id_set][$type];
        
$all=$price*10;
        
$user Users::findUser();
        
    if (
$id == 'all'){
            if (
$all>$user->money)
               
Yii::app()->user->setFlash('error''Недостаточно денег');
            else {
                
$shop_items ShopItems::model()->findAll('id_set=:id_set', array(':id_set'=>$id_set));
                if (
$shop_items) {
                    foreach (
$shop_items as $item) {
                        
ShopItems::getNewItem($item->id_item$typeYii::app()->user->id);
                    }
                    
$user->money -= $all;
                    if (!
$user->save(false)) {
                        throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении данных пользователя!'));
                    }
                    
Yii::app()->user->setFlash('info''Покупка отправлена на почту');
                }
            }
    }
    else {
            
$item ShopItems::model()->findByPk($id);
            if (!
$item || $item->id_set != $id_set) {
                
$this->redirect('/shop/');
                
Yii::app()->end();
            }
            if (
$price>$user->money)
               
Yii::app()->user->setFlash('error''Недостаточно денег');
            else {
                
ShopItems::getNewItem($id$typeYii::app()->user->id);
                
$user->money -= $price;
                if (!
$user->save(false)) {
                    throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении данных пользователя!'));
                }
                
Yii::app()->user->setFlash('info''Покупка отправлена на почту');
            }
    }
        
$this->redirect('/shop/');
        
Yii::app()->end();
    }

        public function 
actionAjaxGetItems($id_set$type) {
        
$type = ((int)$type && (int)$type>&& (int)$type<? (int)$type 3);
        
$percents = array(3=>99140195275);
        
$prices = array(
            
4=>array(3=>50100200300),
            
6=>array(3=>100200400600),
            
7=>array(3=>100200400600),
            
8=>array(3=>100200400600),
            
9=>array(3=>100200400600),
        );
        
$percent=$percents[$type]; 
        
$price=$prices[$id_set][$type];

        
$all=FuncHelper::Money($price*10);
        
$sale=FuncHelper::Money($price*2);

        
$criteria = new CDbCriteria;
        
$criteria->compare('id_set'$id_set);
        
$shop_items ShopItems::model()->findAll($criteria);
        if (
$shop_items) {
            foreach (
$shop_items as $item) {
                
$item->price FuncHelper::Money($price);
                
/*
                 * Выбираем аналогичную надетую шмотку у пользователя
                 */
                
$item->sum 0;
                foreach (
FuncHelper::mainParams() as $param => $name){
                    if (
$item->$param) {
                        
$item->sum += ShopItems::calcParam($item->id_item$param$percents[$type]);
                    }
                }
                
$user_item UserItems::findUserItem($item);
                if (
$user_item)
                    
$item->better = ($item->sum $user_item->sum $item->sum-$user_item->sum false);
                else 
                    
$item->better $item->sum;
            }
        }
        else 
$shop_items null;
        
$this->renderPartial('_items', array(
            
'items' => $shop_items
            
'id_set' => $id_set
            
'price' => $price,
            
'all' => $all,
            
'sale' => $sale
            
'type' => $type
        
));
    }
    
    public function 
loadModel($id$model 'model') {
        
$model $model::model()->findByPk($id);
        if (
$model === null)
            throw new 
CHttpException(404Yii::t('admin_layout''Страница не найдена!'));
        return 
$model;
    }
}
Онлайн: 1
Реклама