From ebeacf6edfdc2c475192e5fc335c4410194f8634 Mon Sep 17 00:00:00 2001 From: Roger Llopart Pla Date: Tue, 18 Sep 2012 12:58:41 +0200 Subject: [PATCH] Added methods for checking if a mailbox exists and to create a mailbox. --- src/Fetch/Server.php | 53 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/src/Fetch/Server.php b/src/Fetch/Server.php index 308329a..0b23252 100644 --- a/src/Fetch/Server.php +++ b/src/Fetch/Server.php @@ -230,25 +230,36 @@ class Server * @return string */ protected function getServerString() + { + $mailboxPath = $this->getServerSpecification(); + + if(isset($this->mailbox)) + $mailboxPath .= $this->mailbox; + + return $mailboxPath; + } + + /** + * Returns the server specification, without adding any mailbox. + * + * @return string + */ + protected function getServerSpecification() { $mailboxPath = '{' . $this->serverPath; - if(isset($this->port)) + if (isset($this->port)) $mailboxPath .= ':' . $this->port; - if($this->service != 'imap') + if ($this->service != 'imap') $mailboxPath .= '/' . $this->service; - foreach($this->flags as $flag) - { + foreach ($this->flags as $flag) { $mailboxPath .= '/' . $flag; } $mailboxPath .= '}'; - if(isset($this->mailbox)) - $mailboxPath .= $this->mailbox; - return $mailboxPath; } @@ -359,4 +370,32 @@ class Server { return imap_expunge($this->getImapStream()); } + + /** + * Checks if the given mailbox exists. + * + * @param $mailbox + * + * @return bool + */ + public function hasMailBox($mailbox) + { + return (boolean) imap_getmailboxes( + $this->getImapStream(), + $this->getServerString(), + $this->getServerSpecification() . $mailbox + ); + } + + /** + * Creates the given mailbox. + * + * @param $mailbox + * + * @return bool + */ + public function createMailBox($mailbox) + { + return imap_createmailbox($this->getImapStream(), $this->getServerSpecification() . $mailbox); + } }