/** * Gathers all needed information to tranform an imap folder to a * Conjoon_Modules_Groupware_Email_Folder_Dto obejct. * * @param Zend_Mail_Storage_Folder $folder * @param Conjoon_Modules_Groupware_Email_Account_Dto $account * @param Zend_Mail_Protocol_Imap $protocol * @param boolean $isRootLevel Whether the folder is on the first level of * the mailbox hierarchy * * @return Conjoon_Modules_Groupware_Email_Folder_Dto */ private function _transformImapFolder(Zend_Mail_Storage_Folder $folder, Conjoon_Modules_Groupware_Email_Account_Dto $account, Zend_Mail_Protocol_Imap $protocol, $isRootLevel = false, $type = 'folder') { $delim = Conjoon_Modules_Groupware_Email_ImapHelper::getFolderDelimiterForImapAccount($account); $globalName = $folder->getGlobalName(); $path = explode($delim, $globalName); $path = $path[count($path) - 1]; $pendingCount = 0; if (!$this->itemListRequestFacade) { $this->itemListRequestFacade = Conjoon_Modules_Groupware_Email_Item_ItemListRequestFacade::getInstance(); } if ($folder->isSelectable()) { try { $pendingCount = $this->itemListRequestFacade->getPendingCountForGlobalName($account, $globalName); } catch (Exception $e) { // ignore } } $childCount = 0; if (!$folder->isLeaf()) { $protocol = Conjoon_Modules_Groupware_Email_ImapHelper::reuseImapProtocolForAccount($account); /** * @see Zend_Mail_Storage_Imap */ require_once 'Zend/Mail/Storage/Imap.php'; $imap = new Zend_Mail_Storage_Imap($protocol); /** * @ticket CN-595 */ if ($globalName === "INBOX") { $iFolders = $imap->getFolders(null)->getChildren(); } else { $iFolders = $imap->getFolders($globalName)->getChildren(); } foreach ($iFolders as $tmpFolder) { $childCount++; } } return Conjoon_Modules_Groupware_Email_ImapHelper::transformToFolderDto($folder, $isRootLevel, array('id' => $account->id . '_' . $globalName, 'idForPath' => $path, 'pendingCount' => $pendingCount, 'type' => $type, 'childCount' => $childCount)); }