/** * Save new media * * @param array $file * @param array $fields * @return void */ public function save(array $file, array $fields) { $library = new MediaLibrary(); $library->getById($fields['library_id']); $folder = $_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . DIRECTORY_SEPARATOR . $library->folder; $fileName = (new Upload($folder))->upload($file); if (empty($fields['title'])) { $title = ucwords(str_replace(['_', '-'], [' ', ' '], substr($fileName, 0, strrpos($fileName, '.')))); } else { $title = $fields['title']; } if (null !== $library->adapter) { $class = 'Pop\\Image\\' . $library->adapter; $formats = array_keys($class::getFormats()); $fileParts = pathinfo($fileName); if (!empty($fileParts['extension']) && in_array(strtolower($fileParts['extension']), $formats)) { $this->processImage($fileName, $library); } } $media = new Table\Media(['library_id' => $fields['library_id'], 'title' => $title, 'file' => $fileName, 'size' => filesize($_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . DIRECTORY_SEPARATOR . $library->folder . DIRECTORY_SEPARATOR . $fileName), 'uploaded' => date('Y-m-d H:i:s'), 'order' => isset($fields['order']) ? (int) $fields['order'] : 0]); $media->save(); $this->data = array_merge($this->data, $media->getColumns()); }