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(); }
function init() { $this->setTable(Gpf_Db_Table_Mails::getInstance()); parent::init(); }