_transport = new ezcMailMboxTransport($file); flock($this->_transport->fh, LOCK_EX); $this->_leftToProcess = count($this->_transport->listMessages()); $this->_ignored = $this->maildir(implode(DIRECTORY_SEPARATOR, array( 'CiviMail.ignored', date('Y'), date('m'), date('d') ))); $this->_processed = $this->maildir(implode(DIRECTORY_SEPARATOR, array( 'CiviMail.processed', date('Y'), date('m'), date('d') ))); } /** * Empty the mail source (if it was processed fully) and unlock the file * * @return void */ public function __destruct() { if ($this->_leftToProcess === 0) { // FIXME: the ftruncate() call does not work for some reason if ($this->_debug) { print "trying to delete the mailbox\n"; } ftruncate($this->_transport->fh, 0); } flock($this->_transport->fh, LOCK_UN); } /** * Fetch the specified message to the local ignore folder * * @param int $nr * Number of the message to fetch. * * @return void */ public function markIgnored($nr) { if ($this->_debug) { print "copying message $nr to ignored folder\n"; } $set = new ezcMailStorageSet($this->_transport->fetchByMessageNr($nr), $this->_ignored); $parser = new ezcMailParser; $parser->parseMail($set); $this->_leftToProcess--; } /** * Fetch the specified message to the local processed folder * * @param int $nr * Number of the message to fetch. * * @return void */ public function markProcessed($nr) { if ($this->_debug) { print "copying message $nr to processed folder\n"; } $set = new ezcMailStorageSet($this->_transport->fetchByMessageNr($nr), $this->_processed); $parser = new ezcMailParser; $parser->parseMail($set); $this->_leftToProcess--; } }