/** * Deletes a folder and all related data permanently from the datastore. * * @todo The method will first try to delete the folder related data primary, * and signal a successfull operation even if other contextual data (such as * email items stored in this folder) could not be deleted. In this case, * a script should from time to time determine which email items etc. are * not related to a folder anymore. * * @param integer $id The id of the folder to delete * @param integer $userId The id of the user to delete the data for * @param boolean $checkForDeletable Check whether the folder may get deleted * * @return integer 0 if the folder was not deleted, otherwise 1 (equals to * the number of deleted folders) */ public function deleteFolder($id, $userId, $checkForDeletable = true) { $id = (int) $id; $userId = (int) $userId; if ($id <= 0 || $userId <= 0) { return 0; } // check first if the folder may get deleted if ($checkForDeletable && !$this->isFolderDeletable($id, $userId)) { return 0; } $where = $this->getAdapter()->quoteInto('id = ?', $id, 'INTEGER'); $affected = $this->delete($where); /** * @see Conjoon_Modules_Groupware_Email_Folder_Model_FoldersUsers */ require_once 'Conjoon/Modules/Groupware/Email/Folder/Model/FoldersUsers.php'; $faModel = new Conjoon_Modules_Groupware_Email_Folder_Model_FoldersUsers(); $faModel->deleteForFolder($id); /** * @see Conjoon_Modules_Groupware_Email_Folder_Model_FoldersAccounts */ require_once 'Conjoon/Modules/Groupware/Email/Folder/Model/FoldersAccounts.php'; $faModel = new Conjoon_Modules_Groupware_Email_Folder_Model_FoldersAccounts(); $faModel->deleteForFolder($id); /** * @see Conjoon_Modules_Groupware_Email_Item_Model_Item */ require_once 'Conjoon/Modules/Groupware/Email/Item/Model/Item.php'; $itemModel = new Conjoon_Modules_Groupware_Email_Item_Model_Item(); $itemModel->deleteItemsForFolder($id, $userId); return $affected; }