/** * Returns true if the folder may be deleted, otherwise false. * * @param integer $id The id of the folder to delete * @param integer $userId If specified, the owner status will also be * considered * * @return boolean true if the folder may be deleted, otherwise false */ public function isFolderDeletable($id, $userId = -1) { $where = $this->getAdapter()->quoteInto('id = ?', $id, 'INTEGER'); // check first if the folder may get deleted $select = $this->select()->from($this, array('is_locked'))->where($where); $row = $this->fetchRow($select); if ($row) { if ($row->is_locked) { return false; } } else { return false; } if ($userId != -1) { /** * @see Conjoon_Modules_Groupware_Email_Folder_Model_FoldersUsers */ require_once 'Conjoon/Modules/Groupware/Email/Folder/Model/FoldersUsers.php'; $foldersUsers = new Conjoon_Modules_Groupware_Email_Folder_Model_FoldersUsers(); $ret = $foldersUsers->getRelationShipForFolderAndUser($id, $userId); if ($ret === Conjoon_Modules_Groupware_Email_Folder_Model_FoldersUsers::OWNER) { return true; } } return true; }
/** * Returns false if the $folderEntity or any of its child folders is * not accessible by the user bound to this service. * * @param \Conjoon\Data\Entity\Mail\MailFolderEntity * @param bool $recurse * @return bool */ protected function checkFolderHierarchyAccessible(\Conjoon\Data\Entity\Mail\MailFolderEntity $folderEntity, $recurse = false) { /** * @refactor uses old implementation */ $OWNER_STR = \Conjoon_Modules_Groupware_Email_Folder_Model_FoldersUsers::OWNER; $foldersUsers = new \Conjoon_Modules_Groupware_Email_Folder_Model_FoldersUsers(); $checkNodeId = $folderEntity->getId(); $rel = $foldersUsers->getRelationShipForFolderAndUser($checkNodeId, $this->user->getId()); $isAccessible = $rel === $OWNER_STR; if ($isAccessible && $recurse) { $childFolders = $this->folderCommons->getChildFolderEntities($folderEntity); foreach ($childFolders as $childFolder) { $isAccessible = $this->checkFolderHierarchyAccessible($childFolder, $recurse); if (!$isAccessible) { break; } } } return $isAccessible; }