Guest User

Untitled

a guest
Jan 17th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.97 KB | None | 0 0
  1. <?php
  2. class UTIUpload
  3. {
  4.     /**
  5.      * Объект с кем связывается приклеплеяемый файл
  6.      * @var
  7.      */
  8.     private $_model;
  9.  
  10.     /**
  11.      * Сценарий валидации, правила хранятся в конфигурации
  12.      * @var
  13.      */
  14.     private $_scenario;
  15.  
  16.     /**
  17.      * Конфигурация для работы с изображениями
  18.      * @var
  19.      */
  20.     private $_imageConfig;
  21.  
  22.     /**
  23.      * Массив хранящий объекты модели Attachments
  24.      * @var array
  25.      */
  26.     private $_attachments = array();
  27.  
  28.     /**
  29.      * Флаг о прохождения всех файлов валидации
  30.      * @var bool
  31.      */
  32.     private $_valid = TRUE;
  33.  
  34.     /**
  35.      * Флаг для загрузки двух и более файлов
  36.      * @var bool
  37.      */
  38.     private $multiple = FALSE;
  39.  
  40.     /**
  41.      * Количество файлов для загрузков по умолчанию
  42.      * @var int
  43.      */
  44.     private $defaultInputsCount = 1;
  45.  
  46.     public function __construct(CActiveRecord $model, $fieldName = 'file', $scenario = 'default', $imageConfig = NULL, $options = NULL)
  47.     {
  48.         $this->_model = $model;
  49.         $this->_scenario = $scenario;
  50.         $this->_imageConfig = $imageConfig;
  51.  
  52.         if ($options !== NULL && is_array($options))
  53.             foreach ($options as $key => $value)
  54.                 if (isset($this->$key))
  55.                     $this->$key  = $value;
  56.  
  57.         $iterations = ($this->multiple === TRUE && $this->defaultInputsCount > 0) ? $this->defaultInputsCount : 1;
  58.         for ($i = 0; $i < $iterations; $i++)
  59.             $this->_attachments[$i] = new Attachments($this->_scenario);
  60.  
  61.     }
  62.  
  63.     public function validateFiles()
  64.     {
  65.         $files = Yii::app()->request->getPost('Attachments');
  66.  
  67.         foreach ($files as $i => $file)
  68.         {
  69.             // На случай динамического добавления инпутов для загрузки файлов
  70.             if (!isset($this->_attachments[$i]) || !$this->_attachments[$i] instanceof Attachments)
  71.                 $this->_attachments[$i] = new Attachments($this->_scenario);
  72.  
  73.             $this->_attachments[$i]->file = CUploadedFile::getInstance($this->_attachments[$i], '['.$i.']file');
  74.  
  75.             $this->_valid = $this->_attachments[$i]->validate() && $this->_valid === TRUE;
  76.         }
  77.  
  78.         return $this->_valid;
  79.     }
  80.  
  81.     public function saveFiles()
  82.     {
  83.         if ($this->_valid !== TRUE)
  84.             return FALSE;
  85.         // Загрузка
  86.     }
  87.  
  88.     /**
  89.      * Возвращает массив вложений или одно вложение ЕСЛИ multiple FALSE
  90.      * @return array
  91.      */
  92.     public function getAttachments()
  93.     {
  94.         return ($this->multiple === TRUE) ? $this->_attachments : current($this->_attachments);
  95.     }
  96.  
  97.     /**
  98.      * Прочие методы
  99.      */
  100.  
  101. }
Add Comment
Please, Sign In to add comment