예제 #1
0
 /**
  * Автоматическая установка всех полей в записи из запроса
  *
  * @param array $array
  */
 public function setAttributes(array $array)
 {
     foreach ($this->fieldsProperty() as $field => $property) {
         if ($property['type'] == FIELD_UPLOADABLE) {
             // загрузка файлов из загружаемых полей
             if (array_key_exists($this::getClassName(), $_FILES)) {
                 if ($_FILES[$this::getClassName()]['tmp_name'][$field] !== "") {
                     $fileName = CUtils::toTranslit($_FILES[$this::getClassName()]['name'][$field]);
                     $fileName = date("dmY_His") . "_" . $fileName;
                     /**
                      * Проверяем, что upload_dir существует
                      * Если его нет, то создадим
                      */
                     $uploadDir = $property["upload_dir"];
                     $uploadDir = explode(CORE_DS, $uploadDir);
                     $checkPath = CORE_DS;
                     foreach ($uploadDir as $path) {
                         if ($path !== "") {
                             $checkPath .= $path . CORE_DS;
                             if (!file_exists($checkPath)) {
                                 mkdir($checkPath, 0777);
                             }
                         }
                     }
                     while (file_exists($property['upload_dir'] . $fileName)) {
                         $fileName = date("dmY_His") . "_" . $fileName;
                     }
                     move_uploaded_file($_FILES[$this::getClassName()]['tmp_name'][$field], $property['upload_dir'] . $fileName);
                     $array[$field] = $fileName;
                 }
             }
         }
     }
     foreach ($array as $key => $value) {
         $this->{$key} = $value;
     }
 }