public function getMessages(ConditionInterface $search = null, int $sortCriteria = null, bool $descending = false, string $charset = null): MessageIteratorInterface
    {
        if (null === $search) {
            $search = new All();
        }
        $query = $search->toString();

        // We need to clear the stack to know whether imap_last_error()
        // is related to this imap_search
        \imap_errors();

        if (null !== $sortCriteria) {
            $params = [
                $this->resource->getStream(),
                $sortCriteria,
                $descending ? 1 : 0,
                \SE_UID,
                $query,
            ];
            if (null !== $charset) {
                $params[] = $charset;
            }
            $messageNumbers = \imap_sort(...$params);
        } else {
            $params = [
                $this->resource->getStream(),
                $query,
                \SE_UID,
            ];
            if (null !== $charset) {
                $params[] = $charset;
            }
            $messageNumbers = \imap_search(...$params);
        }
        if (false === $messageNumbers) {
            if (false !== \imap_last_error()) {
                throw new InvalidSearchCriteriaException(\sprintf('Invalid search criteria [%s]', $query));
            }

            // imap_search can also return false
            $messageNumbers = [];
        }

        return new MessageIterator($this->resource, $messageNumbers);
    }
public function getMessages(ConditionInterface $search = null, int $sortCriteria = null, bool $descending = false, string $charset = null): MessageIteratorInterface
    {
        if (null === $search) {
            $search = new All();
        }
        $query = $search->toString();

        // We need to clear the stack to know whether imap_last_error()
        // is related to this imap_search
        \imap_errors();

        if (null !== $sortCriteria) {
            $params = [
                $this->resource->getStream(),
                $sortCriteria,
                $descending ? 1 : 0,
                \SE_UID,
                $query,
            ];
            if (null !== $charset) {
                $params[] = $charset;
            }
            $messageNumbers = \imap_sort(...$params);
        } else {
            $params = [
                $this->resource->getStream(),
                $query,
                \SE_UID,
            ];
            if (null !== $charset) {
                $params[] = $charset;
            }
            $messageNumbers = \imap_search(...$params);
        }
        if (false === $messageNumbers) {
            if (false !== \imap_last_error()) {
                throw new InvalidSearchCriteriaException(\sprintf('Invalid search criteria [%s]', $query));
            }

            // imap_search can also return false
            $messageNumbers = [];
        }

        return new MessageIterator($this->resource, $messageNumbers);
    }
public function getMessages ( ConditionInterface $ search = null , int $ sortCriteria = null , bool $ descending = false , string $ charset = null ) : MessageIteratorInterface { if ( null === $ search ) { $ search = new All ( ) ; } $ query = $ search -> toString ( ) ; // We need to clear the stack to know whether imap_last_error() // is related to this imap_search \ imap_errors ( ) ; if ( null !== $ sortCriteria ) { $ params = [ $ this -> resource -> getStream ( ) , $ sortCriteria , $ descending ? 1 : 0 , \ SE_UID , $ query , ] ; if ( null !== $ charset ) { $ params [ ] = $ charset ; } $ messageNumbers = \ imap_sort ( ... $ params ) ; } else { $ params = [ $ this -> resource -> getStream ( ) , $ query , \ SE_UID , ] ; if ( null !== $ charset ) { $ params [ ] = $ charset ; } $ messageNumbers = \ imap_search ( ... $ params ) ; } if ( false === $ messageNumbers ) { if ( false !== \ imap_last_error ( ) ) { throw new InvalidSearchCriteriaException ( \ sprintf ( 'Invalid search criteria [%s]' , $ query ) ) ; } // imap_search can also return false $ messageNumbers = [ ] ; } return new MessageIterator ( $ this -> resource , $ messageNumbers ) ; }
Get message ids.

@param ConditionInterface $search Search expression (optional)

@return MessageIteratorInterface
Get message ids .