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

class UserItems extends CActiveRecord {

    public 
$price;
    public 
$user;
    public 
$sum;
    public 
$better;
    public 
$id_set;

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

    public function 
rules() {
        return array(
            array(
'id_item, id_user, name, type, quality, level, strength, armor, health, energy, regeneration, shop_id, id_set''safe'),
        );
    }

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

    public function 
attributeLabels() {
        return array(
        );
    }

    public static function 
model($className __CLASS__) {
        return 
parent::model($className);
    }
    
    
/**
     * Проверяет есть ли поломаные вещи
     * @return type
     */
    
public static function checkForItemsHardness() {
        
$criteria = new CDbCriteria;
        
$criteria->compare('id_user'Yii::app()->user->id);
        
$criteria->compare('hardness'0);
        
$criteria->compare('status'ITEM_ON_BODY);
        return 
self::model()->count($criteria);
    }
    
    
/**
     * Проверяет есть ли вещь лучше
     * @return type
     */
    
public static function checkForBetterItem() {
        
$criteria = new CDbCriteria;
        
$criteria->select = array('id_item''type''(strength+energy+regeneration+health+armor+enchant_strength+enchant_energy+enchant_regeneration+enchant_health+enchant_armor) as sum');
        
$criteria->compare('id_user'Yii::app()->user->id);
        
$criteria->compare('status'ITEM_IN_BACKPACK);
        
$user_items self::model()->findAll($criteria);
        if (
$user_items) {
            foreach (
$user_items as $item) {
                
$user_item self::findUserItem($item);
                if (!
$user_item || $item->sum $user_item->sum)
                    return 
true;
            }
        }
        return 
false;
    }
    
/**
     * Считает сколько железа необходимо для починки вещей
     * @return type
     */
    
public static function countSummaryHardness() {
        
$summary 0;
        
$criteria = new CDbCriteria;
        
$criteria->compare('id_user'Yii::app()->user->id);
        
$criteria->addCondition('hardness < hardness_max');
        
$criteria->compare('status'ITEM_ON_BODY);
        
$items self::model()->findAll($criteria);
        foreach (
$items as $item) {
            
$summary += $item->hardness_max-$item->hardness;
        }
        return 
$summary;
    }
    
    
/**
     * Выводит обьект вещи
     * @param type $id_item
     * @return type
     */
    
public static function findItem($id_item) {
        
$criteria = new CDbCriteria;
        
$criteria->select = array('*''(strength+energy+regeneration+health+armor+enchant_strength+enchant_energy+enchant_regeneration+enchant_health+enchant_armor) as sum');
        
$criteria->compare('id_item'$id_item);
        return 
self::model()->find($criteria);
    }
    
    
/**
     * Выводит обьект вещи юзера аналогичной просматриваемой
     * @param type $item
     * @return type
     */
    
public static function findUserItem($item) {
        if (
$item->id_item) {
            
$criteria = new CDbCriteria;
            
$criteria->select = array('*''(strength+energy+regeneration+health+armor+enchant_strength+enchant_energy+enchant_regeneration+enchant_health+enchant_armor) as sum');
            
$criteria->condition 'id_item !='.$item->id_item;
            
$criteria->compare('id_user'Yii::app()->user->id);
            
$criteria->compare('type'$item->type);
            
$criteria->compare('status'ITEM_ON_BODY);
            return 
self::model()->find($criteria);
        }
        else {
            return new 
UserItems;
        }
    }
    
    
/**
     * Возврашает имя вещи
     * @param type $id_item
     * @param type $type вовращает с ссылкой или нет
     * @return type
     */
    
public static function itemName($id_item$type=1) {
        
$criteria = new CDbCriteria;
        
$criteria->select = (array('id_item''name''quality''enchant_type'));
        
$criteria->compare('id_item'$id_item);
        
$item self::model()->find($criteria);

        if (!isset(
$item->name)) {
            return 
'<span class="quality-0">предмет</span>';
        }
        
        if (
$type==1
            
$name CHtml::link($item->name, array('/item/index''id' => $item->id_item), array('class' => 'quality-'.$item->quality));
        else 
            
$name='<span class="quality-'.$item->quality.'">'.$item->name.'</span>';
        if (
$item->enchant_type)
            
$name .= '<img src="/images/icons/quality/'.$item->enchant_type.'.png" alt="*"/>';
        return 
'<img src="/images/icons/quality/'.$item->quality.'.png" alt="*"/> '.$name;
    }
    
    
/**
     * Выводит инфо по чарам
     * @param type $id_item
     * @return type
     */
    
public static function enchantInfo($id_item) {
        
$array = array('enchant_health' => 'здоровья''enchant_energy' => 'энергии''enchant_strength' => 'силы''enchant_armor' => 'брони''enchant_regeneration' => 'регенерации');
        
$criteria = new CDbCriteria;
        
$criteria->select = (array('id_item''enchant_type''enchant_health''enchant_energy''enchant_strength''enchant_armor''enchant_regeneration'));
        
$criteria->compare('id_item'$id_item);
        
$item self::model()->find($criteria);

        if (
$item->enchant_type) {
            foreach (
$array as $value => $name) {
                if (
$item->$value) {
                    return 
'+'.$item->$value.' '.$name;
                }
            }
        }
        return 
false;
    }

    public static function 
calcParam($value$id_item) {
        
$criteria = new CDbCriteria;
        
$criteria->select = array($value);
        
$criteria->compare('id_item'$id_item);
        
$item self::model()->find($criteria);
        return 
$item->$value;
    }
    
    
/**
     * Считает сумму статов по типу вещи для фильтра аука 
     * @param type $type
     * @return type
     */
    
public static function calcAllParamsByType($type) {
        
$criteria = new CDbCriteria;
        
$criteria->select = array('(strength+energy+regeneration+health+armor+enchant_strength+enchant_energy+enchant_regeneration+enchant_health+enchant_armor) as sum');
        
$criteria->compare('id_user'Yii::app()->user->id);
        
$criteria->compare('type'$type);
        
$criteria->compare('status'ITEM_ON_BODY);
        
$user_item self::model()->find($criteria);       
        return (
$user_item $user_item->sum 0);
    }
    
    public static function 
checkOwner($id_item$check_personal false) {
        
$criteria = new CDbCriteria;
        
$criteria->compare('id_item'$id_item);
        
$criteria->compare('id_user'Yii::app()->user->id);
        
$criteria->addInCondition('status', array(ITEM_IN_BACKPACKITEM_IN_STORE));   
        if (
$check_personal) {
            
$criteria->addCondition('personal = 0');
        }
        return 
self::model()->count($criteria);
    }
    
    
/**
     * Проверяет надета ли вещь на данного юзера
     * @param type $id_item
     * @return type
     */
    
public static function checkBodyItem($id_item) {
        
$criteria = new CDbCriteria;
        
$criteria->compare('id_item'$id_item);
        
$criteria->compare('id_user'Yii::app()->user->id);
        
$criteria->compare('status'ITEM_ON_BODY);   
        return 
self::model()->count($criteria);
    }
    
    
/**
     * Возвращает массив со случайно выбранной одетой вещью, нужно для поломок
     * @param type $id_user ID юзера, по которому удар
     * @return type
     */
    
public static function getRandomItem($id_user) {
        
$criteria = new CDbCriteria;
        
$criteria->compare('id_user'$id_user);
        
$criteria->compare('status'ITEM_ON_BODY);
        
$criteria->order 'RAND()';
        
$criteria->limit 1;
        return 
self::model()->find($criteria);
    }
}
Онлайн: 1
Реклама