Example #1
0
 /**
  * @param string $sEndTag = null
  * @param bool $bFindCapa = false
  *
  * @return array|bool
  */
 protected function parseResponse($sEndTag = null, $bFindCapa = false)
 {
     if (\is_resource($this->rConnect)) {
         $oImapResponse = null;
         $sEndTag = null === $sEndTag ? $this->getCurrentTag() : $sEndTag;
         while (true) {
             $oImapResponse = Response::NewInstance();
             $this->partialParseResponseBranch($oImapResponse);
             if ($oImapResponse) {
                 if (\MailSo\Imap\Enumerations\ResponseType::UNKNOWN === $oImapResponse->ResponseType) {
                     return false;
                 }
                 if ($bFindCapa) {
                     $this->initCapabilityImapResponse($oImapResponse);
                 }
                 $this->aPartialResponses[] = $oImapResponse;
                 if ($sEndTag === $oImapResponse->Tag || \MailSo\Imap\Enumerations\ResponseType::CONTINUATION === $oImapResponse->ResponseType) {
                     if (isset($this->aTagTimeouts[$sEndTag])) {
                         $this->writeLog(\microtime(true) - $this->aTagTimeouts[$sEndTag] . ' (' . $sEndTag . ')', \MailSo\Log\Enumerations\Type::TIME);
                         unset($this->aTagTimeouts[$sEndTag]);
                     }
                     break;
                 }
             } else {
                 return false;
             }
             unset($oImapResponse);
         }
     }
     $this->iResponseBufParsedPos = 0;
     $this->aLastResponse = $this->aPartialResponses;
     $this->aPartialResponses = array();
     return $this->aLastResponse;
 }