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

/**
 * EImageValidator validates image with fix width and height
 *
 * @author turi
 * @version 1.1
 */
class EImageValidator extends CFileValidator {

    
/**
     * @var boolean the attribute requires a file to be uploaded or not.
     */
    
public $allowEmpty false;

    
/**
     * @var mixed a list of file name extensions that are allowed to be uploaded.
     * This can be either an array or a string consisting of file extension names
     * separated by space or comma (e.g. "gif, jpg").
     * Extension names are case-insensitive. Defaults to null, meaning all file name
     * extensions are allowed.
     */
    
public $types;

    
/**
     * @var string the error message used when the uploaded file has an extension name
     * that is not listed among {@link types}.
     */
    
public $typesError;

    
/**
     * @var int size of the image in kilo bytes
     */
    
public $size;

    
/**
     * @var string the size error message
     */
    
public $sizeError;

    
/**
     * @var int width of the image
     */
    
public $width;

    
/**
     * @var int height of the image
     */
    
public $height;

    
/**
     * @var string image dimension error message
     */
    
public $dimensionError;

    
/**
     * Validates the attribute of the object.
     * If there is any error, the error message is added to the object.
     * @param CModel $object the object being validated
     * @param string $attribute the attribute being validated
     */
    
protected function validateAttribute($object$attribute) {

        
$file $object->$attribute;

        if (!
$file instanceof CUploadedFile) {
            
$file CUploadedFile::getInstance($object$attribute);

            if (
null === $file)
                return 
$this->emptyAttribute($object$attribute);
        }

        if (
$this->types !== null) {
            if (
is_string($this->types))
                
$types preg_split('/[s,]+/'strtolower($this->types), -1PREG_SPLIT_NO_EMPTY);
            else
                
$types $this->types;
            if (!
in_array(strtolower($file->getExtensionName()), $types)) {
                
$message $this->typesError !== null $this->typesError Yii::t('yii''The file "{file}" cannot be uploaded. Only files with these extensions are allowed: {extensions}.');
                
$this->addError($object$attribute$message, array('{file}' => $file->getName(), '{extensions}' => implode(', '$types)));
                return;
            }
        }

        
$image_size $this->bytesToKilobytes($file->getSize());

        if (
$this->size !== null && $image_size != floor($this->size)) {
            
$message $this->sizeError $this->sizeError Yii::t('yii''The file "{file}" is either small or large. Its size should be {limit} kilo bytes.');
            
$this->addError($object$attribute$message, array('{file}' => $file->getName(), '{limit}' => $this->size));
            return;
        }

        
$data file_exists($file->tempName) ? getimagesize($file->tempName) : false;

        if (isset(
$this->width$this->height) && $data !== false) {
            if (
$data[0] < $this->width || $data[1] < $this->height) {
                
$message $this->dimensionError $this->dimensionError Yii::t('yii''Image dimension should be {width}x{height}');
                
$this->addError($object$attribute$message, array('{width}' => $this->width'{height}' => $this->height));
                return;
            }
        }
    }
    
    
/**
     * @param int $bytes the image size in bytes
     * @return int the images size in kilo bytes
     */
    
protected function bytesToKilobytes($bytes) {
        return 
floor(number_format($bytes 10242));
    }

    
/**
     * @param CModel $object the object being validated
     * @param string $attribute the attribute being validated
     * 
     * @return void
     */
    
protected function emptyAttribute($object$attribute) {
        if (!
$this->allowEmpty) {
            
$message $this->message !== null $this->message Yii::t('yii''{attribute} cannot be blank.');
            
$this->addError($object$attribute$message);
            return;
        }
    }

}

?>
Онлайн: 1
Реклама