/** * @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); } } }
public function setFileFolder(FileFolder $folder) { $db = Loader::db(); $em = \ORM::entityManager('core'); $this->folderTreeNodeID = $folder->getTreeNodeID(); $em->persist($this); $em->flush(); }
public function addFolder(FileFolder $folder, $name) { return $folder->add($name, $folder); }
/** * 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; }