}
}
- return new NLIssue($id, &$this);
+ return new NLIssue($id, $this);
}
/** Create a new, empty, pending newsletter issue
FROM newsletter_issues
WHERE nlid = {?} AND state = \'new\'',
$this->id);
- if ($res->numRows()) {
- $id = $res->fetchOneCell();
+ $id = $res->fetchOneCell();
+ if ($id != null) {
return new NLIssue($id, $this);
} else if ($create) {
$id = $this->createPending();
WHERE id = {?}',
$this->id);
if ($success) {
+ global $globals;
+ $mailer = new PlMailer('newsletter/notify_scheduled.mail.tpl');
+ $mailer->assign('group', $this->nl->group);
+ $mailer->assign('nl_title', $this->title_mail);
+ $mailer->assign('nl_id', $this->id());
+ $mailer->assign('base', $globals->baseurl);
+ $mailer->assign('send_before', $this->send_before);
+ $mailer->send();
$this->refresh();
}
return $success;
{
if ($this->state == self::STATE_PENDING) {
$success = XDB::execute('UPDATE newsletter_issues
- SET send_before = NULL, state = \'new\'
+ SET state = \'new\'
WHERE id = {?}', $this->id);
if ($success) {
$this->refresh();
}
/** Save an article
- * @p &$a A reference to a NLArticle object (will be modified once saved)
+ * @p $a A reference to a NLArticle object (will be modified once saved)
*/
- public function saveArticle(&$a)
+ public function saveArticle($a)
{
$this->fetchArticles();
* @p $page Smarty object
* @return Either 'true' (if CSS was added to a page) or the raw CSS to add (when $page is null)
*/
- public function css(&$page = null)
+ public function css($page = null)
{
if (!is_null($page)) {
$page->addCssLink($this->nl->cssFile());
* @p $page Smarty object (using the $this->nl->tplFile() template)
* @p $user User to use when rendering the template
*/
- public function toText(&$page, $user)
+ public function toText($page, $user)
{
$this->fetchArticles();
* @p $page Smarty object (using the $this->nl->tplFile() template)
* @p $user User to use when rendering the template
*/
- public function toHtml(&$page, $user)
+ public function toHtml($page, $user)
{
$this->fetchArticles();
/** Set all 'common' data for the page (those which are required for both web and email rendering)
* @p $smarty Smarty object (e.g page) which should be filled
*/
- protected function assignData(&$smarty)
+ protected function assignData($smarty)
{
$this->fetchArticles();
// }}}
// {{{ Mailing
-
+
+ /** Check whether this issue is empty
+ * An issue is empty if the email has no title (or the default one), or no articles and an empty head.
+ */
+ public function isEmpty()
+ {
+ return $this->title_mail == '' || $this->title_mail == 'to be continued' || (count($this->arts) == 0 && strlen($this->head) == 0);
+ }
+
/** Retrieve the 'Send before' date, in a clean format.
*/
public function getSendBeforeDate()
$ufc = new PFC_And($this->getRecipientsUFC(), new UFC_NLSubscribed($this->nl->id, $this->id), new UFC_HasEmailRedirect());
$emailsCount = 0;
- $uf = new UserFilter($ufc);
+ $uf = new UserFilter($ufc, array(new UFO_IsAdmin(), new UFO_Uid()));
$limit = new PlLimit(self::BATCH_SIZE);
while (true) {