Esempio n. 1
0
 /**
  * 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;
 }