Example #1
0
 public static function getInstance()
 {
     if (self::$instance === null) {
         self::$instance = new self();
     }
     return self::$instance;
 }
 protected function buildFrom()
 {
     $this->_selectBuilder->from->add(Gpf_Db_Table_MailOutbox::getName(), 'mo');
     $condition = 'mo.' . Gpf_Db_Table_MailOutbox::MAILACCOUNTID . ' = ' . 'ma.' . Gpf_Db_Table_MailAccounts::ID;
     $this->_selectBuilder->from->addInnerJoin(Gpf_Db_Table_MailAccounts::getName(), 'ma', $condition);
     $condition = 'mo.' . Gpf_Db_Table_MailOutbox::MAIL_ID . ' = ' . 'm.' . Gpf_Db_Table_Mails::ID;
     $this->_selectBuilder->from->addInnerJoin(Gpf_Db_Table_Mails::getName(), 'm', $condition);
 }
 /**
  *
  * @param $outboxid
  * @return Gpf_Db_Mail
  */
 private function loadMailFromOutbox($outboxid)
 {
     $select = new Gpf_SqlBuilder_SelectBuilder();
     $select->select->addAll(Gpf_Db_Table_Mails::getInstance(), 'm');
     $select->from->add(Gpf_Db_Table_MailOutbox::getName(), 'mo');
     $select->from->addInnerJoin(Gpf_Db_Table_Mails::getName(), 'm', 'm.' . Gpf_Db_Table_Mails::ID . ' = mo.' . Gpf_Db_Table_MailOutbox::MAIL_ID);
     $select->where->add("mo." . Gpf_Db_Table_MailOutbox::ID, "=", $outboxid);
     $mail = new Gpf_Db_Mail();
     $mail->fillFromSelect($select);
     return $mail;
 }
 /**
  *
  * @return Gpf_Data_RecordSet
  */
 private function getPendingEmail($outboxids)
 {
     $this->debug('Getting pending email...');
     $select = new Gpf_SqlBuilder_SelectBuilder();
     $select->select->add('o.' . Gpf_Db_Table_MailOutbox::ID, Gpf_Db_Table_MailOutbox::ID);
     $select->select->add('o.' . Gpf_Db_Table_MailOutbox::RETRY_NR, Gpf_Db_Table_MailOutbox::RETRY_NR);
     $select->select->add('m.*');
     $select->select->add('ma.*');
     $select->from->add(Gpf_Db_Table_MailOutbox::getName(), 'o');
     $select->from->addInnerJoin(Gpf_Db_Table_MailAccounts::getName(), 'ma', 'o.' . Gpf_Db_Table_MailOutbox::MAILACCOUNTID . ' = ma.' . Gpf_Db_Table_MailAccounts::ID);
     $select->from->addInnerJoin(Gpf_Db_Table_Mails::getName(), 'm', 'o.' . Gpf_Db_Table_MailOutbox::MAIL_ID . ' = m.' . Gpf_Db_Table_Mails::ID);
     if (!empty($outboxids)) {
         $select->where->add('o.' . Gpf_Db_Table_MailOutbox::ID, 'IN', $outboxids);
     } else {
         $select->where->add('o.' . Gpf_Db_Table_MailOutbox::ID, 'BETWEEN', $this->task->getWorkingAreaFrom() . ' AND ' . $this->task->getWorkingAreaTo(), 'AND', false);
     }
     //load just mails with status pending
     $select->where->add('o.' . Gpf_Db_Table_MailOutbox::STATUS, '=', Gpf_Db_Table_MailOutbox::STATUS_PENDING);
     // load just mails, which are already scheduled
     $select->where->add('o.' . Gpf_Db_Table_MailOutbox::SCHNEDULET_AT, '<=', $this->createDatabase()->getDateString());
     //if retry number is too high, don't repeat sending
     $select->where->add('o.' . Gpf_Db_Table_MailOutbox::RETRY_NR, '<', Gpf_Db_Table_MailOutbox::MAX_RETRY_NR);
     $this->debug('email select: ' . $select->toString());
     $select->limit->set(0, 1);
     return $select->getAllRows();
 }
Example #5
0
 function init()
 {
     $this->setTable(Gpf_Db_Table_Mails::getInstance());
     parent::init();
 }