public function __construct($aRequestPath) { parent::__construct($aRequestPath); $sBase = Manager::usePath(); $iId = Manager::usePath(); // Base path "newsletter" > display newsletter if ($sBase === 'newsletter') { $iId = is_numeric($sBase) ? $sBase : $iId; $this->oNewsletter = NewsletterQuery::create()->findPk($iId); if ($this->oNewsletter === null) { throw new Exception('No such newsletter exists'); } } else { if ($sBase === 'mailing') { $this->oMailing = NewsletterMailingQuery::create()->findPk($iId); if ($this->oMailing === null) { throw new Exception('No such mailing exists'); } $this->oNewsletter = $this->oMailing->getNewsletter(); } elseif (is_numeric($sBase)) { $this->oNewsletter = NewsletterQuery::create()->findPk($sBase); } } // Throw exception if no newsletter is found if ($this->oNewsletter === null) { throw new Exception('Error in DisplayNewsletterFileModule::__construct(): No such newsletter exists'); } // Optional handling of authentication FilterModule::getFilters()->handleNewsletterDisplayRequested($this->oNewsletter); }
/** * Removes this object from datastore and sets delete attribute. * * @param PropelPDO $con * @return void * @throws PropelException * @throws Exception * @see BaseObject::setDeleted() * @see BaseObject::isDeleted() */ public function delete(PropelPDO $con = null) { if ($this->isDeleted()) { throw new PropelException("This object has already been deleted."); } if ($con === null) { $con = Propel::getConnection(NewsletterPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); } $con->beginTransaction(); try { $deleteQuery = NewsletterQuery::create()->filterByPrimaryKey($this->getPrimaryKey()); $ret = $this->preDelete($con); // denyable behavior if (!(NewsletterPeer::isIgnoringRights() || $this->mayOperate("delete"))) { throw new PropelException(new NotPermittedException("delete.by_role", array("role_key" => "newsletters"))); } if ($ret) { $deleteQuery->delete($con); $this->postDelete($con); $con->commit(); $this->setDeleted(true); } else { $con->commit(); } } catch (Exception $e) { $con->rollBack(); throw $e; } }
/** * Get the associated Newsletter object * * @param PropelPDO $con Optional Connection object. * @param $doQuery Executes a query to get the object if required * @return Newsletter The associated Newsletter object. * @throws PropelException */ public function getNewsletter(PropelPDO $con = null, $doQuery = true) { if ($this->aNewsletter === null && $this->newsletter_id !== null && $doQuery) { $this->aNewsletter = NewsletterQuery::create()->findPk($this->newsletter_id, $con); /* The following can be used additionally to guarantee the related object contains a reference to this object. This level of coupling may, however, be undesirable since it could result in an only partially populated collection in the referenced object. $this->aNewsletter->addNewsletterMailings($this); */ } return $this->aNewsletter; }
/** * Returns a new NewsletterQuery object. * * @param string $modelAlias The alias of a model in the query * @param NewsletterQuery|Criteria $criteria Optional Criteria to build the query from * * @return NewsletterQuery */ public static function create($modelAlias = null, $criteria = null) { if ($criteria instanceof NewsletterQuery) { return $criteria; } $query = new NewsletterQuery(null, null, $modelAlias); if ($criteria instanceof Criteria) { $query->mergeWith($criteria); } return $query; }
public function saveData($aNewsletterData) { $oNewsletter = NewsletterQuery::create()->findPk($this->iNewsletterId); if ($oNewsletter === null) { $oNewsletter = new Newsletter(); $oNewsletter->setCreatedBy(Session::getSession()->getUserId()); $oNewsletter->setCreatedAt(date('c')); } // If language is not set (not multilingual), write session language, since it is default language $sLanguageId = isset($aNewsletterData['language_id']) ? $aNewsletterData['language_id'] : Session::language(); $oNewsletter->setLanguageId($sLanguageId); $oNewsletter->setTemplateName($aNewsletterData['template_name']); $oNewsletter->setSubject($aNewsletterData['subject']); $oRichtextUtil = new RichtextUtil(); $oRichtextUtil->setTrackReferences($oNewsletter); $oNewsletter->setNewsletterBody($oRichtextUtil->parseInputFromEditor($aNewsletterData['newsletter_body'])); $this->validate($aNewsletterData, $oNewsletter); if (!Flash::noErrors()) { throw new ValidationException(); } if (isset($aNewsletterData['is_approved'])) { $oNewsletter->setIsApproved($aNewsletterData['is_approved']); } if (isset($aNewsletterData['template_name'])) { $oNewsletter->setTemplateName($aNewsletterData['template_name']); } return $oNewsletter->save(); }
private function setNewsletter($aSubscriberGroupId) { if (self::$NEWSLETTER !== null) { return; } if (isset($_REQUEST[self::IDENTIFIER_DETAIL])) { self::$NEWSLETTER = NewsletterQuery::create()->findPk($_REQUEST[self::IDENTIFIER_DETAIL]); } else { self::$NEWSLETTER = NewsletterQuery::create()->joinNewsletterMailing()->useQuery('NewsletterMailing')->orderByDateSent(Criteria::DESC)->filterBySubscriberGroupId($aSubscriberGroupId)->endUse()->findOne(); } }
public function getCriteria() { return NewsletterQuery::create()->distinct()->joinNewsletterMailing(null, Criteria::LEFT_JOIN); }
/** sendNewsletter() * * @param int BatchNumber * * @return boolean full or partial success */ public function sendNewsletter($iBatchNumber = 0) { if ($this->aRecipients === null || $this->sSenderEmail === null || $this->aMailGroups === null) { throw new Exception("Error in sendNewsletter: prepare not called"); } // Send newsletter if newsletter is chosen and there are recipients $oNewsletter = NewsletterQuery::create()->findPk($this->iNewsletterId); if ($oNewsletter === null) { throw new LocalizedException("newsletter.mailing.newsletter_missing"); } if ($iBatchNumber === 0) { $this->aUnsuccessfulAttempts = array(); } if ($this->aRecipients instanceof PropelObjectCollection) { $this->aRecipients = $this->aRecipients->getData(); } $aRecipients = array_slice($this->aRecipients, $iBatchNumber * $this->iBatchSize, $this->iBatchSize); $bRequiresUnsubsribeLink = true; $oNewsletterMailer = new NewsletterMailer($oNewsletter, $aRecipients, $bRequiresUnsubsribeLink, $this->sSenderEmail, $this->sSenderName); if (!$oNewsletterMailer->send()) { $this->aUnsuccessfulAttempts = array_merge($this->aUnsuccessfulAttempts, $oNewsletterMailer->getInvalidEmails()); } if (count($aRecipients) === $this->iBatchSize) { return $iBatchNumber + 1; } else { // Return batch count/boolean and register Mailings per group $bOneGroupOnly = count($this->aMailGroups) === 1; foreach ($this->aMailGroups as $mMailGroupId) { $oNewsletterMailing = new NewsletterMailing(); $oNewsletterMailing->setDateSent(date('c')); if (is_numeric($mMailGroupId)) { $oNewsletterMailing->setSubscriberGroupId($mMailGroupId); } else { $oNewsletterMailing->setExternalMailGroupId($mMailGroupId); } // @todo check change jm > write recipient count if newsletter is sent to singe group only if ($bOneGroupOnly) { $oNewsletterMailing->setRecipientCount(count($this->aRecipients)); } $oNewsletterMailing->setNewsletterId($oNewsletter->getId()); $oNewsletterMailing->save(); } $this->aRecipients = null; $this->sSenderEmail = null; $this->aMailGroups = null; return count($this->aUnsuccessfulAttempts) === 0; } }