Example #1
0
 /**
  * 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());
 }