/** * additionnal cells * @param \TYPO3\CMS\Core\Resource\File|\TYPO3\CMS\Core\Resource\Folder $fileOrFolderObject Array with information about the file/directory for which to make the edit control section for the listing. */ protected function addAdditionalCells($fileOrFolderObject) { $cells = array(); if (is_a($fileOrFolderObject, 'TYPO3\\CMS\\Core\\Resource\\File') && $fileOrFolderObject->isIndexed() && $fileOrFolderObject->checkActionPermission('write')) { $metaData = $fileOrFolderObject->_getMetaData(); $data = array('sys_file_metadata' => array($metaData['uid'] => 'edit')); $editOnClick = BackendUtility::editOnClick(GeneralUtility::implodeArrayForUrl('edit', $data), $GLOBALS['BACK_PATH'], $this->listUrl()); if (version_compare(TYPO3_version, '7', '>=')) { $cells['editmetadata'] = '<a href="#" class="btn btn-default" onclick="' . htmlspecialchars($editOnClick) . '" title="Edit Metadata of this file">' . IconUtility::getSpriteIcon('actions-page-open') . '</a>'; } else { $cells['editmetadata'] = '<a href="#" onclick="' . $editOnClick . '" title="Edit Metadata of this file">' . IconUtility::getSpriteIcon('actions-document-open') . '</a>'; } } if (is_a($fileOrFolderObject, 'TYPO3\\CMS\\Core\\Resource\\Folder') && $fileOrFolderObject->checkActionPermission('write')) { $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery("uid", "tx_ameosfilemanager_domain_model_folder", "tx_ameosfilemanager_domain_model_folder.title like '" . $fileOrFolderObject->getName() . "'"); if (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) !== FALSE) { if (Tools::getFolderPathFromUid($row['uid']) . '/' == $fileOrFolderObject->getIdentifier()) { $folder = array('tx_ameosfilemanager_domain_model_folder' => array($row['uid'] => 'edit')); $editOnClick = BackendUtility::editOnClick(GeneralUtility::implodeArrayForUrl('edit', $folder), $GLOBALS['BACK_PATH'], $this->listUrl()); if (version_compare(TYPO3_version, '7', '>=')) { $cells['editmetadata'] = '<a href="#" class="btn btn-default" onclick="' . htmlspecialchars($editOnClick) . '" title="Edit Metadata of this folder">' . IconUtility::getSpriteIcon('actions-page-open') . '</a>'; } else { $cells['editmetadata'] = '<a href="#" onclick="' . $editOnClick . '" title="Edit Metadata of this folder">' . IconUtility::getSpriteIcon('actions-document-open') . '</a>'; } } } } return $cells; }
/** * Check user access to folder or file * * @param \Ameos\AmeosFilemanager\Domain\Model\File $file * @param \Ameos\AmeosFilemanager\Domain\Model\_Folder $folder * @param string $right * @param array $arguments Arguments * @return string the rendered string */ public function render($file = null, $folder = null, $right = null, $arguments = null) { $user = $GLOBALS['TSFE']->fe_user->user; if ($file == null && $folder == null || $right == null) { return $this->renderElseChild(); } if ($folder != null) { if ($right == "r") { return Tools::userHasFolderReadAccess($user, $folder, $arguments) ? $this->renderThenChild() : $this->renderElseChild(); } else { if ($right == "w") { return Tools::userHasFolderWriteAccess($user, $folder, $arguments) ? $this->renderThenChild() : $this->renderElseChild(); } else { return $this->renderElseChild(); } } } else { if ($file != null) { if ($right == "r") { return Tools::userHasFileReadAccess($user, $file, $arguments) ? $this->renderThenChild() : $this->renderElseChild(); } else { if ($right == "w") { return Tools::userHasFileWriteAccess($user, $file, $arguments) ? $this->renderThenChild() : $this->renderElseChild(); } else { return $this->renderElseChild(); } } } else { return $this->renderElseChild(); } } return $this->renderElseChild(); }
public static function parseFolderForNewElements($storage, $folderIdentifier, $folderName) { $slot = GeneralUtility::makeInstance('Ameos\\AmeosFilemanager\\Slots\\Slot'); $falFolder = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\Folder', $storage, $folderIdentifier, $folderName); $subfolders = $falFolder->getSubfolders(); foreach ($subfolders as $folder) { $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery("uid", "tx_ameosfilemanager_domain_model_folder", "tx_ameosfilemanager_domain_model_folder.title like '" . $folder->getName() . "'"); $exist = false; while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { // Si il n'existe on ne fait rien if (Tools::getFolderPathFromUid($row['uid']) . '/' == $folder->getIdentifier()) { $exist = true; $uid = $row['uid']; break; } } if (!$exist) { $slot->postFolderAdd($folder); } } $files = $falFolder->getFiles(); foreach ($files as $file) { $slot->postFileAdd($file, $falFolder); } }
/** * Renders icon of extension $type * * @param string $type * @param string $iconFolder * @return string */ public function render($type = null, $iconFolder = null) { return \Ameos\AmeosFilemanager\Tools\Tools::getImageIconeTagForType($type, $iconFolder); }
/** * Call after file move in filelist * Move the file to the correct folder in the database * @param File $file * @param Folder $targetFolder * @return void */ public function postFileMove($file, $targetFolder) { $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery("uid", "tx_ameosfilemanager_domain_model_folder", "tx_ameosfilemanager_domain_model_folder.identifier like '" . $targetFolder->getIdentifier() . "'"); if (($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) !== FALSE) { if (Tools::getFolderPathFromUid($row['uid']) . '/' == $targetFolder->getIdentifier()) { $res = $GLOBALS['TYPO3_DB']->exec_UPDATEquery('sys_file_metadata', 'sys_file_metadata.file = ' . $file->getUid(), array("folder_uid" => $row['uid']), $no_quote_fields = FALSE); break; } } }
public function getCategories() { $extbaseObjectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'); $repo = $extbaseObjectManager->get('TYPO3\\CMS\\Extbase\\Domain\\Repository\\CategoryRepository'); $uidsCat = $this->getCategoriesUids(); if (!empty($uidsCat)) { $categories = \Ameos\AmeosFilemanager\Tools\Tools::getByUids($repo, $uidsCat); return $categories; } else { return; } }
/** * Delete the file given in arguments * * @return void */ public function deleteFileAction() { if ($this->request->hasArgument('file')) { $file = $this->fileRepository->findByUid($this->request->getArgument('file')); if ($file && Tools::userHasFileWriteAccess($this->user, $file, array('folderRoot' => $this->startFolder))) { $this->storage->deleteFile($file->getOriginalResource()); } } }