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

class Auction extends CActiveRecord {
    public 
$price_step;
    public 
$price_step_gold;
    public 
$price_step_silver;
    public 
$min_price;
    public 
$min_price_gold;
    public 
$min_price_silver;
    public 
$max_price;
    public 
$max_price_gold;
    public 
$max_price_silver;
    public 
$max_level;
    public 
$level;
    public 
$quality;
    public 
$type;
    public 
$show_value;
    public 
$show;
    public 
$sort;
    public 
$name;
    public 
$all;
    public 
$trade;
    public 
$number;

    public function 
tableName() {
        return 
'auction';
    }

    public function 
rules() {
        return array(
            array(
'id_item''priceValidate''on' => 'insert'),
            array(
'min_price_silver, max_price_silver''numerical''integerOnly' => true'max' => 99'on' => 'insert'),
            array(
'lot''priceValidateTrade''on' => 'insertTrade'),
            array(
'number''required''on' => 'insertTrade'),
            array(
'number''numerical''integerOnly' => true'min' => 5'on' => 'insertTrade'),
            array(
'id_item, lot, id_user, price, price_out, end, last, 
                        min_price_gold, min_price_silver, max_price_gold, max_price_silver, max_level, price_step, 
                        price_step_gold, price_step_silver, number'
'numerical'),
            array(
'sort, name, trade''type''type' => 'string'),
            array(
'sort, name''type''type' => 'string''on' => 'search'),
            array(
'level, quality, type, show''numerical''on' => 'search'),
            array(
'time, all''safe'),
        );
    }

    public function 
priceValidate() {
        
$this->min_price $this->min_price_gold 100 $this->min_price_silver;
        
$this->max_price $this->max_price_gold 100 $this->max_price_silver;
        if (!
$this->min_price && !$this->max_price) {
            
$this->addError('min_price'Yii::t('layout''Укажите минимальную цену.'));
            
$this->addError('max_price'Yii::t('layout''Укажите цену для выкупа.'));
        } elseif (
$this->min_price 5) {
            
$this->addError('min_price'Yii::t('layout''Минимальная цена должна быть не ниже 5 серебра.'));
        } elseif (
$this->max_price 10) {
            
$this->addError('max_price'Yii::t('layout''Максимальная цена должна быть не ниже 10 серебра.'));
        } elseif (
$this->min_price >= $this->max_price) {
            
$this->addError('min_price'Yii::t('layout''Минимальная цена должна быть ниже цены выкупа.'));
        }
    }

    public function 
priceValidateTrade() {
        
$this->min_price $this->min_price_gold 100 $this->min_price_silver;
        if (!
$this->min_price_gold && !$this->min_price_silver) {
            
$this->addError('price_out'Yii::t('layout''Укажите цену для ресурса.'));
        }
        if (
$this->min_price 5) {
            
$this->addError('price_out'Yii::t('layout''Минимальная цена должна быть не ниже 5 серебра.'));
        }
    }

    public function 
relations() {
        return array(
            
'idUser' => array(self::BELONGS_TO'Users''id_user'),
            
'idItem' => array(self::BELONGS_TO'UserItems''id_item'),
        );
    }

    public function 
attributeLabels() {
        return array(
            
'min_price' => Yii::t('layout''Ставка'),
            
'min_price_gold' => Yii::t('layout''Ставка'),
            
'min_price_silver' => Yii::t('layout''Ставка'),
            
'max_price' => Yii::t('layout''Выкуп'),
            
'max_price_gold' => Yii::t('layout''Выкуп'),
            
'level' => Yii::t('layout''Уровень'),
            
'quality' => Yii::t('layout''Бонус'),
            
'type' => Yii::t('layout''Слот'),
            
'show' => Yii::t('layout''Показывать'),
            
'sort' => Yii::t('layout''Сортировка'),
            
'name' => Yii::t('layout''Название'),
            
'price_step' => Yii::t('layout''Повысить'),
            
'trade' => Yii::t('layout''Ресурсы'),
            
'number' => Yii::t('layout''Количество'),
            
'price_out' => Yii::t('layout''Выкуп'),
        );
    }

    protected function 
beforeSave() {
        if (
parent::beforeSave()) {
            if (
$this->isNewRecord) {
                
$this->time time() + 60 60 24;
                
$this->id_user Yii::app()->user->id;
            }
            return 
true;
        } else
            return 
false;
    }

    public function 
search() {
        
$criteria = new CDbCriteria;
        
$criteria->with = array('idItem');
        
$criteria->together true;

        
//$criteria->select = array('*', 'idItem.health+idItem.armor+idItem.strength+idItem.regeneration+idItem.energy as idItem.all');
        
if ($this->show == && $this->type) {
            
$all UserItems::calcAllParamsByType($this->type);
            
$criteria->condition '(idItem.health+idItem.armor+idItem.strength+idItem.regeneration+idItem.energy) > ' $all;
        } elseif (
$this->show == 2)
            
$criteria->condition 't.id_user !=' Yii::app()->user->id;
        elseif (
$this->show == 3)
            
$criteria->condition 't.id_user =' Yii::app()->user->id;
        elseif (
$this->show == 4)
            
$criteria->condition 't.last =' Yii::app()->user->id;

        
$criteria->addCondition("`time` > '" time() . "' AND `lot` = '1' AND `end` < '1'");

        if (
$this->name)
            
$criteria->compare('idItem.name'$this->name'LIKE');
        if (
$this->quality)
            
$criteria->compare('idItem.quality'$this->quality);
        if (
$this->type)
            
$criteria->compare('idItem.type'$this->type);
        if (
$this->level)
            
$criteria->addBetweenCondition('idItem.level'$this->level$this->max_level);
        if (
$this->sort) {
            if (
$this->sort == 'all')
                
$criteria->order '(idItem.health+idItem.armor+idItem.strength+idItem.regeneration+idItem.energy) DESC';
            else
                
$criteria->order $this->sort ' DESC';
        }
        else
            
$criteria->order 't.time DESC';

        return new 
CActiveDataProvider($this, array(
            
'criteria' => $criteria,
        ));
    }

    
//Поиск для ресурсов
    
public function searchTrade($sort 'iron') {
        
$criteria = new CDbCriteria;
        
$criteria->select = array('*, `price_out`/IF(`iron` > 0, `iron`, `bottles`) as `price_step`');
        if (
$sort == 'my') {
            
$criteria->condition 'id_user = ' Yii::app()->user->id;
        } else {
            
$criteria->condition $sort ' > 0';
            
$criteria->addCondition("id_user != " Yii::app()->user->id);
        }

        
$criteria->addCondition("`time` > '" time() . "' AND `lot` = '2' AND `end` < '1'");
        
$criteria->order '`price_step` ASC';

        return new 
CActiveDataProvider($this, array(
            
'criteria' => $criteria,
        ));
    }

    
/**
     * Returns the static model of the specified AR class.
     * Please note that you should have this exact method in all your CActiveRecord descendants!
     * @param string $className active record class name.
     * @return Files the static model class
     */
    
public static function model($className __CLASS__) {
        return 
parent::model($className);
    }

    public static function 
backItem($model) {
        
//Выбираем шмотку из аука
        
$item UserItems::model()->findByPk($model->id_item);
        if (!
$item) {
            return 
false;
        }
        
$item->status ITEM_IN_MAIL;
        if (!
$item->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 'Посылка (предмет)';
        if (!
$mail->save(false)) {
            throw new 
CHttpException(500Yii::t('layout''Ошибка при отправке почты!'));
        }
        return 
true;
    }

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