Exemplo n.º 1
0
 /**
  * @return FileManager
  */
 public static function add()
 {
     // copy permissions from the other node.
     $rootNode = FileFolder::add();
     $treeID = parent::create($rootNode);
     $tree = self::getByID($treeID);
     return $tree;
 }
 protected function migrateFileSetManagerPermissions($fsID, FileFolder $folder)
 {
     $this->output(t('Migrating file set permissions...'));
     $r = $this->connection->executeQuery('select fpa.*, pk.pkHandle from FileSetPermissionAssignments fpa inner join PermissionKeys pk on fpa.pkID = pk.pkID where fsID = ?', array($fsID));
     $permissionsMap = array('view_file_set_file' => 'view_file_folder_file', 'search_file_set' => 'search_file_folder', 'edit_file_set_file_properties' => 'edit_file_folder_file_properties', 'edit_file_set_file_contents' => 'edit_file_folder_file_contents', 'edit_file_set_permissions' => 'edit_file_folder_permissions', 'copy_file_set_files' => 'copy_file_folder_files', 'delete_file_set' => 'delete_file_folder', 'delete_file_set_files' => 'delete_file_folder_files', '_add_file' => 'add_file');
     $count = $this->connection->fetchColumn('select count(*) from TreeNodePermissionAssignments where treeNodeID = ?', array($folder->getTreeNodeID()));
     if (!$count) {
         $folder->setTreeNodePermissionsToOverride();
         $this->connection->executeQuery('delete from TreeNodePermissionAssignments where treeNodeID = ?', array($folder->getTreeNodeID()));
         while ($row = $r->fetch()) {
             $mapped = $permissionsMap[$row['pkHandle']];
             $newPKID = $this->connection->fetchColumn('select pkID from PermissionKeys where pkHandle = ?', array($mapped));
             $v = array($folder->getTreeNodeID(), $newPKID, $row['paID']);
             $this->connection->executeQuery('insert into TreeNodePermissionAssignments (treeNodeID, pkID, paID) values (?, ?, ?)', $v);
         }
         // Add edit file folder.
         $pk1 = Key::getByHandle('edit_file_folder_permissions');
         $pk2 = Key::getByHandle('edit_file_folder');
         $pk1->setPermissionObject($folder);
         $pk2->setPermissionObject($folder);
         $pa = $pk1->getPermissionAccessObject();
         if (is_object($pa)) {
             $pt = $pk2->getPermissionAssignmentObject();
             $pt->clearPermissionAssignment();
             $pt->assignPermissionAccess($pa);
         }
     }
 }
Exemplo n.º 3
0
 public function setFileFolder(FileFolder $folder)
 {
     $db = Loader::db();
     $em = \ORM::entityManager('core');
     $this->folderTreeNodeID = $folder->getTreeNodeID();
     $em->persist($this);
     $em->flush();
 }
Exemplo n.º 4
0
 public function addFolder(FileFolder $folder, $name)
 {
     return $folder->add($name, $folder);
 }
Exemplo n.º 5
0
 /**
  * Imports a local file into the system. The file must be added to this path
  * somehow. That's what happens in tools/files/importers/.
  * If a $fr (FileRecord) object is passed, we assign the newly imported FileVersion
  * object to that File. If not, we make a new filerecord.
  *
  * @param string $pointer path to file
  * @param string|bool $filename
  * @param File|FileFolder|bool $fr
  *
  * @return number Error Code | \Concrete\Core\EntiFile\Version
  */
 public function import($pointer, $filename = false, $fr = false)
 {
     if ($filename == false) {
         // determine filename from $pointer
         $filename = basename($pointer);
     }
     $fh = Loader::helper('validation/file');
     $fi = Loader::helper('file');
     $cf = Core::make('helper/concrete/file');
     $sanitizedFilename = $fi->sanitize($filename);
     // test if file is valid, else return FileImporter::E_FILE_INVALID
     if (!$fh->file($pointer)) {
         return self::E_FILE_INVALID;
     }
     if (!$fh->extension($filename)) {
         return self::E_FILE_INVALID_EXTENSION;
     }
     if ($fr instanceof FileEntity) {
         $fsl = $fr->getFileStorageLocationObject();
     } else {
         $fsl = StorageLocation::getDefault();
     }
     if (!$fsl instanceof \Concrete\Core\Entity\File\StorageLocation\StorageLocation) {
         return self::E_FILE_INVALID_STORAGE_LOCATION;
     }
     // store the file in the file storage location.
     $filesystem = $fsl->getFileSystemObject();
     $prefix = $this->generatePrefix();
     try {
         $src = fopen($pointer, 'rb');
         $filesystem->writeStream($cf->prefix($prefix, $sanitizedFilename), $src, array('visibility' => AdapterInterface::VISIBILITY_PUBLIC, 'mimetype' => Core::make('helper/mime')->mimeFromExtension($fi->getExtension($sanitizedFilename))));
     } catch (\Exception $e) {
         return self::E_FILE_UNABLE_TO_STORE;
     }
     if (!$fr instanceof FileEntity) {
         // we have to create a new file object for this file version
         $fv = File::add($sanitizedFilename, $prefix, array('fvTitle' => $filename), $fsl, $fr);
         foreach ($this->importProcessors as $processor) {
             if ($processor->shouldProcess($fv)) {
                 $processor->process($fv);
             }
         }
         $fv->refreshAttributes($this->rescanThumbnailsOnImport);
     } else {
         // We get a new version to modify
         $fv = $fr->getVersionToModify(true);
         $fv->updateFile($sanitizedFilename, $prefix);
         $fv->refreshAttributes($this->rescanThumbnailsOnImport);
     }
     return $fv;
 }