/**
  * 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());
         }
     }
 }