/** * Validates the name of a file object. */ public static function validateFileName(FileInterface $file, ImceFM $fm) { $errors = array(); if (!$fm->validateFileName($file->getFileName(), TRUE)) { $errors[] = t('%filename contains invalid characters.', array('%filename' => $filename)); } return $errors; }
/** * 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; }
/** * 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(); } } }
/** * Operation handler: browse. */ public function opBrowse(ImceFM $fm) { if ($folder = $fm->activeFolder) { $folder->scan(); $uri = $folder->getUri(); $uri_prefix = substr($uri, -1) === '/' ? $uri : $uri . '/'; $content = array('props' => $fm->getFolderProperties($uri)); if ($folder->getPermission('browse_files')) { foreach ($folder->files as $name => $file) { $content['files'][$name] = $fm->getFileProperties($uri_prefix . $name); } } if ($folder->getPermission('browse_subfolders')) { foreach ($folder->subfolders as $name => $subfolder) { $content['subfolders'][$name] = $fm->getFolderProperties($uri_prefix . $name); } } $fm->addResponse('content', $content); } }
/** * 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; }