initField($field); } public function initSettings() { $this->filenameLetters = 10; $this->sizes = []; $this->limit = 1000; $this->extensionsAllowed = ['jpg', 'jpeg', 'gif', 'png']; } /** * Инициализания настроек в зависимости от настроек поля Images * @param Images $field * @return void */ public function initField(Images $field) { $this->field = $field; $folder = $this->field->folder(); if (file_exists($folder) && is_dir($folder)) { $this->path = $folder; $this->url = str_replace(PATH_PUBLIC, SITEURL_STATIC . DS, $folder); } else { $this->path = $this->app->path($folder, 'images'); $this->url = $this->app->url($folder, 'images'); } $this->pathTmp = $this->app->path('tmp', 'images'); $this->urlTmp = $this->app->url('tmp', 'images'); if (! file_exists($this->path)) { UtilsFiles::makeDir($this->path); } if (! file_exists($this->path)) { $this->errors->set(_t('@', 'Can\'t create the folder: [path]', ['path' => $this->path])); return; } if (! is_writable($this->path)) { $this->errors->set(_t('@', 'Can\'t write to the folder: [path]', ['path' => $this->path])); return; } $this->setRecordID($this->field->recordID()); $this->setFolderByID($this->field->folderByID()); $this->setSizes($this->field->sizes()); $maxSize = $this->field->maxSize(); if (! empty($maxSize)) { $this->setMaxSize($maxSize); } if (! $field->unionID()) { $this->setLimit($field->limit()); } $extensions = $this->field->extensionsAllowed(); if (! empty($extensions)) { $this->extensionsAllowed = $extensions; } } /** * Получаем данные о записи * @param int $recordID ID записи * @return array */ protected function loadRecordData($recordID) { $saved = $this->field->loadRecordData(); $data[$this->field_images] = $saved; $data[$this->field_count] = ! empty($saved) ? count($saved) : 0; return $data; } /** * Сохраняем данные о записи * @param int $recordID ID записи * @param array $recordData данные * @return mixed|void */ protected function saveRecordData($recordID, array $recordData) { if (isset($recordData[$this->field_images]) && is_array($recordData[$this->field_images])) { $this->field->saveRecordData($recordData[$this->field_images]); } } /** * Формирование пути к временному файлу * @param string $filename * @param string $size * @return bool */ public function getPathTmp($filename, $size) { if (! $this->isTmp()) { return false; } return $this->getPath(['filename' => $filename], $size, true); } }