limit = 1; return true; } /** * @return ImageUploader */ public function uploader() { $this->uploader->setRecordID($this->form->recordID()); return $this->uploader; } /** * Список полей при построении запроса к БД * @return array */ public function fieldsList() { return [ $this->uploader()->fieldImage() ]; } /** * Получение данных о изображениях * @return array */ public function uploaderGetData() { $uploader = $this->uploader(); $field = $uploader->fieldImage(); $d = $this->form->_data(); if (! empty($d[$field])) { return [['filename' => $d[$field]]]; } return []; } /** * Удаление изображений * @param array $images данные об изображениях array(filename, ...) * @return int кол-во удаленных изображений */ public function uploaderDeleteImages($deleted) { if (! empty($deleted[0])) { $this->uploader()->delete(false, $deleted[0]); $filename = $this->uploader()->getRecordFilename(); if ($filename == $deleted[0]) { $this->uploader()->saveToDatabase(''); } return 1; } return 0; } /** * Удаление всех изображений связанных с записью * @param bool $updateQuery актуализировать ли данные о изображениях записи (после их удаления) * @return bool */ public function uploaderDeleteAllImages($updateQuery = false) { return $this->uploader()->delete($updateQuery); } /** * Загрузка(сохранение/обновление) изображения при помощи QQ-загрузчика * @return array информация об успешно загруженном файле изображения (@see save) или FALSE в случае ошибки */ public function uploaderUploadQQ() { return $this->uploader()->uploadQQ(true, true); } /** * Установить ID записи * @param $nRecordID */ public function uploaderSetRecordID($id) { $this->uploader()->setRecordID($id); } /** * Формирование URL изображения * @param array $aImage : filename - название файла gen(N).ext, dir - # папки, srv - ID сервера * @param string|array $mSize префикс размера или массив префиксов размеров * @param bool $bTmp tmp-изображение * @return string|array URL */ public function uploaderGetURL($image, $size, $tmp = false) { return $this->uploader()->getURL($image['filename'] ?? '', $size, $tmp); } /** * Формирование пути к изображению * @param array $aImage : filename - название файла gen(N).ext, dir - # папки, srv - ID сервера * @param string $sSize префикс размера * @param bool $bTmp tmp-изображение * @return string Путь */ public function uploaderGetPath($image, $size, $tmp = false) { return $this->uploader()->getPath($image['filename'] ?? '', $size, $tmp = false); } /** * Временный файл или нет * @return bool */ public function uploaderIsTmp() { return empty($this->form->recordID()); } /** * Удаление tmp изображения(-й) * @param string|array $mFilename имя файла (нескольких файлов) * @return bool */ public function uploaderDeleteTmpFile($filename) { $uploader = $this->uploader(); $sizes = array_keys($uploader->getSizes()); foreach ($sizes as $size) { $file = $uploader->getPath($filename, $size, true); if (file_exists($file)) { @unlink($file); } } return true; } /** * Переносим tmp-изображения в постоянную папку * @param string|array $mFieldname ключ в массиве $_POST, тип TYPE_ARRAY_STR или filename-массив * @param bool $bEdit используем при редактировании записи * @return mixed */ public function uploaderSaveTmp($fieldname = 'img', $edit = false) { if (is_array($fieldname) && ! empty($fieldname[0])) { return $this->uploader()->untemp($fieldname[0], true); } return false; } /** * Сохранение порядка изображений * @param array $images данные об изображениях array(filename, ...) * @return bool */ public function uploaderSaveOrder($images) { return true; } /** * Загрузка(сохранение/обновление) изображения на основе пути к уже загруженному файлу * @param string $filePath путь к файлу * @param bool $saveOriginalFile сохранять оригинальный файл * @return array информация об успешно загруженном файле изображения (@see save) или FALSE в случае ошибки */ public function uploaderUploadFromFile($path, $saveOrig = true) { return $this->uploader()->uploadFromFile($path, $saveOrig); } }