Example #1
0
 /**
  * Deletes a list of imce items and returns succeeded ones.
  */
 public function deleteItems(ImceFM $fm, array $items)
 {
     $success = array();
     $ignore_usage = $fm->getConf('ignore_usage', FALSE);
     foreach ($items as $item) {
         if ($uri = $item->getUri()) {
             $result = $item->type === 'folder' ? $this->deleteFolderUri($uri, $ignore_usage) : $this->deleteFileUri($uri, $ignore_usage);
             if ($result) {
                 $item->removeFromJs();
                 $item->remove();
                 $success[] = $item;
             }
         }
     }
     return $success;
 }
Example #2
0
 /**
  * Operation handler: newfolder.
  */
 public function opNewfolder(ImceFM $fm)
 {
     $folder = $fm->activeFolder;
     if (!$folder || !$folder->getPermission('create_subfolders')) {
         return;
     }
     // Create folder
     $name = $fm->getPost('newfolder');
     if (is_string($name) && $fm->validateFileName($name)) {
         // Check existence
         $uri = Imce::joinPaths($folder->getUri(), $name);
         if (file_exists($uri)) {
             $fm->setMessage(t('%filename already exists.', array('%filename' => $name)));
         } elseif (mkdir($uri, $fm->getConf('chmod_directory', 0775))) {
             $folder->addSubfolder($name)->addToJs();
         }
     }
 }
Example #3
0
File: Upload.php Project: aakb/cfia
 /**
  * Operation handler: upload.
  */
 public function opUpload(ImceFM $fm)
 {
     $folder = $fm->activeFolder;
     if (!$folder || !$folder->getPermission('upload_files')) {
         return;
     }
     // Prepare save options
     $destination = $folder->getUri();
     $replace = $fm->getConf('replace', FILE_EXISTS_RENAME);
     $validators = array();
     // Extension validator
     $exts = $fm->getConf('extensions', '');
     $validators['file_validate_extensions'] = array($exts === '*' ? NULL : $exts);
     // File size and user quota validator
     $validators['file_validate_size'] = array($fm->getConf('maxsize'), $fm->getConf('quota'));
     // Image resolution validator.
     $width = $fm->getConf('maxwidth');
     $height = $fm->getConf('maxheight');
     if ($width || $height) {
         $validators['file_validate_image_resolution'] = array(($width ? $width : 10000) . 'x' . ($height ? $height : 10000));
     }
     // Name validator
     $validators[get_class($this) . '::validateFileName'] = array($fm);
     // Save files
     if ($files = file_save_upload('imce', $validators, $destination, NULL, $replace)) {
         $fs = \Drupal::service('file_system');
         foreach (array_filter($files) as $file) {
             // Set status and save
             $file->setPermanent();
             $file->save();
             // Add to the folder and to js response.
             $name = $fs->basename($file->getFileUri());
             $folder->addFile($name)->addToJs();
         }
     }
 }
Example #4
0
 /**
  * Resizes a list of imce items and returns succeeded ones.
  */
 public function resizeItems(ImceFM $fm, array $items, $width, $height, $copy = FALSE)
 {
     $factory = \Drupal::service('image.factory');
     $fs = \Drupal::service('file_system');
     $success = array();
     foreach ($items as $item) {
         $uri = $item->getUri();
         $image = $factory->get($uri);
         // Check vallidity
         if (!$image->isValid()) {
             continue;
         }
         // Check if resizing is needed.
         $resize = $image->getWidth() != $width || $image->getHeight() != $height;
         if (!$resize && !$copy) {
             continue;
         }
         if ($resize && !$image->resize($width, $height)) {
             continue;
         }
         // Save
         $destination = $copy ? file_create_filename($fs->basename($uri), $fs->dirname($uri)) : $uri;
         if (!$image->save($destination)) {
             continue;
         }
         // Create a new file record.
         if ($copy) {
             $filename = $fs->basename($destination);
             $values = array('uid' => $fm->user->id(), 'status' => 1, 'filename' => $filename, 'uri' => $destination, 'filesize' => $image->getFileSize(), 'filemime' => $image->getMimeType());
             $file = \Drupal::entityTypeManager()->getStorage('file')->create($values);
             // Check quota
             if ($errors = file_validate_size($file, 0, $fm->getConf('quota'))) {
                 file_unmanaged_delete($destination);
                 $fm->setMessage($errors[0]);
             } else {
                 $file->save();
                 // Add imce item
                 $item->parent->addFile($filename)->addToJs();
             }
         } else {
             if ($file = Imce::getFileEntity($uri)) {
                 $file->setSize($image->getFileSize());
                 $file->save();
             }
             // Add to js
             $item->addToJs();
         }
         $success[] = $item;
     }
     return $success;
 }