_dir = $dir; $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')))); } /** * Return the next X messages from the mail store * FIXME: in CiviCRM 2.2 this always returns all the emails * * @param int $count number of messages to fetch FIXME: ignored in CiviCRM 2.2 (assumed to be 0, i.e., fetch all) * * @return array array of ezcMail objects */ function fetchNext($count = 0) { $mails = array(); $parser = new ezcMailParser; //set property text attachment as file CRM-5408 $parser->options->parseTextAttachmentsAsFiles = TRUE; foreach (array( 'cur', 'new') as $subdir) { $dir = $this->_dir . DIRECTORY_SEPARATOR . $subdir; foreach (scandir($dir) as $file) { if ($file == '.' or $file == '..') { continue; } $path = $dir . DIRECTORY_SEPARATOR . $file; if ($this->_debug) { print "retrieving message $path\n"; } $set = new ezcMailFileSet(array($path)); $single = $parser->parseMail($set); $mails[$path] = $single[0]; } } return $mails; } /** * Fetch the specified message to the local ignore folder * * @param integer $file file location of the message to fetch * * @return void */ function markIgnored($file) { if ($this->_debug) { print "moving $file to ignored folder\n"; } $target = $this->_ignored . DIRECTORY_SEPARATOR . basename($file); if (!rename($file, $target)) { throw new Exception("Could not rename $file to $target"); } } /** * Fetch the specified message to the local processed folder * * @param integer $file file location of the message to fetch * * @return void */ function markProcessed($file) { if ($this->_debug) { print "moving $file to processed folder\n"; } $target = $this->_processed . DIRECTORY_SEPARATOR . basename($file); if (!rename($file, $target)) { throw new Exception("Could not rename $file to $target"); } } }