/** * @param Folder $folder * @return bool */ function DeleteFolder(&$folder) { $result = $this->DbStorage->Connect(); if (!$result) { return false; } switch ($this->_account->MailProtocol) { case MAILPROTOCOL_WMSERVER: case MAILPROTOCOL_IMAP4: if ($folder->SyncType != FOLDERSYNC_DontSync) { if ($this->MailStorage->Connect()) { if ($this->MailStorage->DeleteFolder($folder)) { if (USE_LSUB) { $this->MailStorage->SubscribeFolder($folder, true); } if (USE_DB) { $result &= $this->DbStorage->DeleteFolderFilters($folder->IdDb, $this->_account->Id); $result &= $this->DbStorage->DeleteFolder($folder); } return $result; } } } else { $result &= $this->DbStorage->DeleteFolderFilters($folder->IdDb, $this->_account->Id); $result &= $this->DbStorage->DeleteFolder($folder); return $result; } return false; case MAILPROTOCOL_POP3: $rootFolders =& $this->GetFolders(); $folders = $rootFolders->CreateFolderListFromTree(); foreach (array_keys($folders->Instance()) as $key) { $fld =& $folders->Get($key); if ($fld->IdDb == $folder->IdDb) { $this->_deletePop3FolderTree($fld, $result); return $result; } unset($fld); } return true; } return false; }