Вход Регистрация
Файл: silawar.ru/protected/controllers/AuctionController.php
Строк: 199
<?php
class AuctionController extends Controller {
    public function 
accessRules() {
        return array(
            array(
'deny',
                
'roles' => array('banned'),
                
'deniedCallback' => array(Yii::app()->controller'redirectToHome'),
            ),
            array(
'allow',
                
'actions' => array('index''back''in''out''step''view'),
                
'users' => array('@'),
            ),
            array(
'deny',
                
'users' => array('*'),
                
'deniedCallback' => array(Yii::app()->controller'redirectToHome'),
            )
        );
    }
    
    public function 
actionIndex() {
        
$model = new Auction('search');
        
$model->unsetAttributes();
        
$filter FuncHelper::auctionFilters();
        if (isset(
$_POST['Auction'])) {
            
$model->attributes $_POST['Auction'];
            if (
$model->level) {
                
$model->max_level $model->level 4;
            }
        }
        
$this->render('index', array('model' => $model'filter' => $filter,));
    }

    
/*
     * Продаем предмет на аук
     */

    
public function actionIn($id) {
        
$model = new Auction;
        
$user Users::findUser();
        
$criteria = new CDbCriteria;
        
$criteria->addInCondition('status', array(ITEM_IN_BACKPACKITEM_IN_STORE));
        
$criteria->compare('id_item'$id);
        
$criteria->compare('id_user'Yii::app()->user->id);
        
$criteria->addCondition('personal = 0');
        
$item UserItems::model()->find($criteria);
        if (!
$item) {
            
$this->redirect(Yii::app()->user->returnUrl);
            
Yii::app()->end();
        }
        
$item->user Users::getLoginWithLink($item->id_user);

        if (isset(
$_POST['Auction'])) {
            
$model->attributes $_POST['Auction'];
            
$model->lot AUCTION_ITEM;
            
$model->id_item $id;
            
$model->price $model->min_price_gold 100 $model->min_price_silver;
            
$model->price_out $model->max_price_gold 100 $model->max_price_silver;
            if (
$model->save()) {
                
$item->status ITEM_IN_AUCTION;
                if (!
$item->save(false)) {
                    throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении предмета!'));
                }
//                $user->money -= 5;
//                if (!$user->save(false)) {
//                    throw new CHttpException(500, Yii::t('layout', 'Ошибка при сохранении пользователя!'));
//                }
                
Yii::app()->user->setFlash('info''Ваш товар выставлен на аукцион.');
                
$this->redirect(array('/auction/index'));
                
Yii::app()->end();
            }
        }

        
$this->render('in', array(
            
'model' => $model,
            
'item' => $item,
            
'user' => $user)
        );
    }

    
/*
     * Выводит информацию о предмете
     */

    
public function actionView($id) {
        
$model Auction::model()->findByPk($id);
        if (!
$model || $model->time time()) {
            
$this->redirect(Yii::app()->user->returnUrl);
            
Yii::app()->end();
        }

        if (isset(
$_POST['Auction'])) {
            
$model->attributes $_POST['Auction'];
            
$user Users::findUser();
            
$money $model->price_step_gold 100 $model->price_step_silver;
            if (
$money $model->price_out)
                
$money $model->price_out;
            if (
$user->money $money) {
                
Yii::app()->user->setFlash('error''У вас недостаточно денег.');
                
$this->redirect(Yii::app()->request->urlReferrer);
                
Yii::app()->end();
            }
            if (
$model->last) {
                
$id_dialog Users::checkDialog($model->last100);
                
$mail = new UsersMessages();
                
$mail->id_dialog $id_dialog;
                
$mail->id_user 100;
                
$mail->users $model->last;
                
$mail->type 1;
                
$mail->message 'Вашу ставку перебили';
                
$mail->money $model->price;
                if (!
$mail->save(false)) {
                    throw new 
CHttpException(500Yii::t('layout''Ошибка при отправке почты!'));
                }
            }
            
$model->last Yii::app()->user->id;
            
$model->price $money;

            if (!
$model->save()) {
                throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении действий аукциона!'));
            }
            
$user->money -= $money;
            if (!
$user->save(false)) {
                throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении пользователя!'));
            }

            
Yii::app()->user->setFlash('info''Вы успешно повысили ставку.');
            
$this->redirect(Yii::app()->request->urlReferrer);
            
Yii::app()->end();
        }
        
$auction['nextStep'] = FuncHelper::auctionNextStep($model);
        
$model->price_step_gold $auction['nextStep']['gold'];
        
$model->price_step_silver $auction['nextStep']['silver'];

        
$auction['step'] = FuncHelper::money($auction['nextStep']['step']);
        
$auction['price'] = FuncHelper::money($model->price);
        
$auction['price_out'] = FuncHelper::money($model->price_out);
        
$auction['timeLeft'] = FuncHelper::auctionTimeLeft($model->time);

        
$user_item UserItems::findUserItem($model->idItem);        
        
$this->render('view', array(
            
'model' => $model
            
'auction' => $auction
            
'user_item' => $user_item,
        ));
    }

    
/*
     * Забираем вещь с аука
     */

    
public function actionBack($id) {
        
$model Auction::model()->findByPk($id);
        if (!
$model || $model->last 0) {
            
$this->redirect(Yii::app()->user->returnUrl);
            
Yii::app()->end();
        }

        if (
Auction::backItem($model)) {
            if (!
$model->delete()) {
                throw new 
CHttpException(500Yii::t('layout''Ошибка при операции с аукционом!'));
            }
        }

        
Yii::app()->user->setFlash('info''Вы забрали свою вещь с аукциона.');
        
$this->redirect(array('/auction/index'));
        
Yii::app()->end();
    }

    
/*
     * Повышаем ставку через ссылку
     */

    
public function actionStep($id) {
        
$model Auction::model()->findByPk($id);
        if (!
$model) {
            
$this->redirect(Yii::app()->user->returnUrl);
            
Yii::app()->end();
        }

        
$user Users::findUser();
        
$money FuncHelper::auctionNextStep($modeltrue);
        if (
$user->money $money) {
            
Yii::app()->user->setFlash('error''У вас недостаточно денег.');
            
$this->redirect(Yii::app()->request->urlReferrer);
            
Yii::app()->end();
        }
        if (
$model->last) {
            
$id_dialog Users::checkDialog($model->last100);
            
$mail = new UsersMessages();
            
$mail->id_dialog $id_dialog;
            
$mail->id_user 100;
            
$mail->users $model->last;
            
$mail->type 1;
            
$mail->message 'Вашу ставку перебили';
            
$mail->money $model->price;
            if (!
$mail->save(false)) {
                throw new 
CHttpException(500Yii::t('layout''Ошибка при отправке почты!'));
            }
        }
        
$model->last Yii::app()->user->id;
        
$model->price $money;
        if (!
$model->save(false)) {
            throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении действий аукциона!'));
        }
        
$user->money -= $money;
        if (!
$user->save(false)) {
            throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении пользователя!'));
        }
        
Yii::app()->user->setFlash('info''Вы успешно повысили ставку.');
        
$this->redirect(Yii::app()->request->urlReferrer);
        
Yii::app()->end();
    }

    
/*
     * Выкупаем товар
     */

    
public function actionOut($id) {
        
$model Auction::model()->findByPk($id);
        if (!
$model) {
            
$this->redirect(Yii::app()->user->returnUrl);
            
Yii::app()->end();
        }

        
$user Users::findUser();
        if (
$user->money $model->price_out) {
            
Yii::app()->user->setFlash('error''У вас недостаточно денег.');
            
$this->redirect(Yii::app()->request->urlReferrer);
            
Yii::app()->end();
        }

        
$user->money -= $model->price_out;
        if (!
$user->save(false)) {
            throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении пользователя!'));
        }

        if (
$model->last) {
            
$id_dialog Users::checkDialog($model->last100);
            
$mail = new UsersMessages();
            
$mail->id_dialog $id_dialog;
            
$mail->id_user 100;
            
$mail->users $model->last;
            
$mail->type 1;
            
$mail->message 'Ваша ставка возвращена, лот выкупили';
            
$mail->money $model->price;
            if (!
$mail->save(false)) {
                throw new 
CHttpException(500Yii::t('layout''Ошибка при отправке почты!'));
            }
        }

        
$id_dialog Users::checkDialog(Yii::app()->user->id100);
        
$mail = new UsersMessages();
        
$mail->id_dialog $id_dialog;
        
$mail->id_user 100;
        
$mail->users Yii::app()->user->id;
        
$mail->type 3;
        
$mail->message 'Покупка лота';
        
$mail->item $model->id_item;
        if (!
$mail->save(false)) {
            throw new 
CHttpException(500Yii::t('layout''Ошибка при отправке почты!'));
        }

        
//Назначаем вещи нового владельца
        
$item UserItems::model()->findByPk($model->id_item);
        
$item->id_user Yii::app()->user->id;
        
$item->status ITEM_IN_MAIL;
        if (!
$item->save(false)) {
            throw new 
CHttpException(500Yii::t('layout''Ошибка при отправке предмета!'));
        }

        
//Забираем процент
        
$price $model->price_out;
        
$percent = (round($price 20) < round($price 20));
        
$price -= $percent;

        
//Отправляем почту продавцу
        
$id_dialog Users::checkDialog($model->id_user100);
        
$mail = new UsersMessages();
        
$mail->id_dialog $id_dialog;
        
$mail->id_user 100;
        
$mail->users $model->id_user;
        
$mail->type 1;
        
$mail->message 'Лот выкуплен';
        
$mail->money $price;
        if (!
$mail->save(false)) {
            throw new 
CHttpException(500Yii::t('layout''Ошибка при отправке почты!'));
        }

        if (!
$model->delete()) {
            throw new 
CHttpException(500Yii::t('layout''Ошибка при удалении аукциона!'));
        }
        
Yii::app()->user->setFlash('info''Предмет отправлен на почту.');
        
$this->redirect('/auction/index');
        
Yii::app()->end();
    }

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