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