| | |
| | | * |
| | | * @param int Number of bytes sent, False on error |
| | | */ |
| | | function putLine($string, $endln = true, $anonymized = false) |
| | | protected function putLine($string, $endln = true, $anonymized = false) |
| | | { |
| | | if (!$this->fp) { |
| | | return false; |
| | |
| | | * |
| | | * @return int|bool Number of bytes sent, False on error |
| | | */ |
| | | function putLineC($string, $endln=true, $anonymized=false) |
| | | protected function putLineC($string, $endln=true, $anonymized=false) |
| | | { |
| | | if (!$this->fp) { |
| | | return false; |
| | |
| | | * |
| | | * @return string Line of text response |
| | | */ |
| | | function readLine($size = 1024) |
| | | protected function readLine($size = 1024) |
| | | { |
| | | $line = ''; |
| | | |
| | |
| | | } |
| | | |
| | | $line .= $buffer; |
| | | } while (substr($buffer, -1) != "\n"); |
| | | } |
| | | while (substr($buffer, -1) != "\n"); |
| | | |
| | | return $line; |
| | | } |
| | |
| | | * |
| | | * @return string Line of text response |
| | | */ |
| | | function multLine($line, $escape = false) |
| | | protected function multLine($line, $escape = false) |
| | | { |
| | | $line = rtrim($line); |
| | | if (preg_match('/\{([0-9]+)\}$/', $line, $m)) { |
| | |
| | | * |
| | | * @return string Response text |
| | | */ |
| | | function readBytes($bytes) |
| | | protected function readBytes($bytes) |
| | | { |
| | | $data = ''; |
| | | $len = 0; |
| | |
| | | * |
| | | * @return string Response text |
| | | */ |
| | | function readReply(&$untagged = null) |
| | | protected function readReply(&$untagged = null) |
| | | { |
| | | do { |
| | | $line = trim($this->readLine(1024)); |
| | |
| | | if ($line[0] == '*') { |
| | | $untagged[] = $line; |
| | | } |
| | | } while ($line[0] == '*'); |
| | | } |
| | | while ($line[0] == '*'); |
| | | |
| | | if ($untagged) { |
| | | $untagged = join("\n", $untagged); |
| | |
| | | * |
| | | * @return int Response status |
| | | */ |
| | | function parseResult($string, $err_prefix = '') |
| | | protected function parseResult($string, $err_prefix = '') |
| | | { |
| | | if (preg_match('/^[a-z0-9*]+ (OK|NO|BAD|BYE)(.*)$/i', trim($string), $matches)) { |
| | | $res = strtoupper($matches[1]); |
| | |
| | | list($code, $response) = $this->execute('STATUS', array($this->escape($mailbox), |
| | | '(' . implode(' ', (array) $items) . ')')); |
| | | |
| | | if ($code == self::ERROR_OK && preg_match('/\* STATUS /i', $response)) { |
| | | if ($code == self::ERROR_OK && preg_match('/^\* STATUS /i', $response)) { |
| | | $result = array(); |
| | | $response = substr($response, 9); // remove prefix "* STATUS " |
| | | |
| | |
| | | !empty($args) ? '(' . implode(' ', (array) $args) . ')' : $this->escape(null) |
| | | )); |
| | | |
| | | if ($code == self::ERROR_OK && preg_match('/\* ID /i', $response)) { |
| | | if ($code == self::ERROR_OK && preg_match('/^\* ID /i', $response)) { |
| | | $response = substr($response, 5); // remove prefix "* ID " |
| | | $items = $this->tokenizeResponse($response, 1); |
| | | $result = null; |
| | |
| | | |
| | | list($code, $response) = $this->execute('ENABLE', $extension); |
| | | |
| | | if ($code == self::ERROR_OK && preg_match('/\* ENABLED /i', $response)) { |
| | | if ($code == self::ERROR_OK && preg_match('/^\* ENABLED /i', $response)) { |
| | | $response = substr($response, 10); // remove prefix "* ENABLED " |
| | | $result = (array) $this->tokenizeResponse($response); |
| | | |
| | |
| | | while (preg_match('/^BODY\[([0-9\.]+)\.'.$type.'\]/', $line, $matches)) { |
| | | $line = substr($line, strlen($matches[0])); |
| | | $result[$matches[1]] = trim($this->multLine($line)); |
| | | $line = ltrim($this->readLine(1024)); |
| | | $line = $this->readLine(1024); |
| | | } |
| | | } |
| | | } |