/** * @param CAccount $oAccount * @param array $aFolderFullNamesRaw * @param array $aNewInboxData * @param string $sInboxUidnext = '' * * @return array */ public function FolderCountsFromArray($oAccount, $aFolderFullNamesRaw, &$aNewInboxData, $sInboxUidnext = '') { if (!is_array($aFolderFullNamesRaw) || 0 === count($aFolderFullNamesRaw)) { throw new CApiInvalidArgumentException(); } $oImapClient =& $this->getImapClient($oAccount); $aResult = array(); if (2 < count($aFolderFullNamesRaw) && $oImapClient->IsSupported('LIST-STATUS')) { $aFolders = $oImapClient->FolderStatusList(); if (is_array($aFolders)) { foreach ($aFolders as $oImapFolder) { $oFolder = CApiMailFolder::NewInstance($oImapFolder, true); if ($oFolder) { $mStatus = $oFolder->Status(); if (is_array($mStatus) && isset($mStatus['MESSAGES'], $mStatus['UNSEEN'], $mStatus['UIDNEXT'])) { $aResult[$oFolder->FullNameRaw()] = array((int) $mStatus['MESSAGES'], (int) $mStatus['UNSEEN'], (string) $mStatus['UIDNEXT'], \api_Utils::GenerateFolderHash($oFolder->FullNameRaw(), $mStatus['MESSAGES'], $mStatus['UNSEEN'], $mStatus['UIDNEXT'])); } } unset($oFolder); } } } else { foreach ($aFolderFullNamesRaw as $sFolderFullNameRaw) { $sFolderFullNameRaw = (string) $sFolderFullNameRaw; try { $aResult[$sFolderFullNameRaw] = $this->folderInformation($oImapClient, $sFolderFullNameRaw); } catch (\Exception $oException) { } } } if (0 < strlen($sInboxUidnext) && isset($aResult['INBOX'], $aResult['INBOX'][2]) && $aResult['INBOX'][2] !== $sInboxUidnext) { $aNewInboxData = $this->GetNextMessages($oAccount, 'INBOX', $sInboxUidnext); } return $aResult; }