X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fnewsletter.inc.php;h=f9146157dd8e9df8e899a4bad0435f98545a09c5;hb=28c20b86be8b40cecba0d83080879f81c49e07ad;hp=9fb1ec448af14eca3880d3656d71664117044c85;hpb=164ca57a4377e30f935e084237a79c56a3350e1f;p=platal.git diff --git a/include/newsletter.inc.php b/include/newsletter.inc.php index 9fb1ec4..f914615 100644 --- a/include/newsletter.inc.php +++ b/include/newsletter.inc.php @@ -1,6 +1,6 @@ addCssLink('css/nl.css'); -} - -define('FEMME', 1); -define('HOMME', 0); - -// }}} // {{{ class NewsLetter -class NewsLetter +class NewsLetter extends MassMailer { - // {{{ properties - - var $_id; - var $_date; - var $_title; - var $_head; - var $_cats = Array(); - var $_arts = Array(); + public $_date; + public $_cats = array(); + public $_arts = array(); - // }}} - // {{{ constructor - - function NewsLetter($id=null) + function __construct($id = null) { - global $globals; - - if (isset($id)) { - if ($id == 'last') { - $res = $globals->xdb->query("SELECT MAX(id) FROM newsletter WHERE bits!='new'"); + parent::__construct('newsletter/nl.mail.tpl', 'nl.css', 'nl/show', 'newsletter', 'newsletter_ins'); + if (isset($id)) { + if ($id == 'last') { + $res = XDB::query("SELECT MAX(id) FROM newsletter WHERE bits!='new'"); $id = $res->fetchOneCell(); - } - $res = $globals->xdb->query("SELECT * FROM newsletter WHERE id={?}", $id); - } else { - $res = $globals->xdb->query("SELECT * FROM newsletter WHERE bits='new'"); - } - $nl = $res->fetchOneAssoc(); - - $this->_id = $nl['id']; - $this->_date = $nl['date']; - $this->_title = $nl['titre']; - $this->_head = $nl['head']; - - $res = $globals->xdb->iterRow("SELECT cid,titre FROM newsletter_cat ORDER BY pos"); - while (list($cid, $title) = $res->next()) { - $this->_cats[$cid] = $title; - } - - $res = $globals->xdb->iterRow( + } + $res = XDB::query("SELECT * FROM newsletter WHERE id={?} OR short_name={?} LIMIT 1", $id, $id); + } else { + $res = XDB::query("SELECT * FROM newsletter WHERE bits='new'"); + if (!$res->numRows()) { + NewsLetter::create(); + } + $res = XDB::query("SELECT * FROM newsletter WHERE bits='new' ORDER BY id DESC LIMIT 1"); + } + if ($res->numRows() != 1) { + throw new MailNotFound(); + } + $nl = $res->fetchOneAssoc(); + + $this->_id = $nl['id']; + $this->_shortname = $nl['short_name']; + $this->_date = $nl['date']; + $this->_title = $nl['titre']; + $this->_title_mail = $nl['titre_mail']; + $this->_head = $nl['head']; + + $res = XDB::iterRow("SELECT cid,titre FROM newsletter_cat ORDER BY pos"); + while (list($cid, $title) = $res->next()) { + $this->_cats[$cid] = $title; + } + + $res = XDB::iterRow( "SELECT a.title,a.body,a.append,a.aid,a.cid,a.pos FROM newsletter_art AS a INNER JOIN newsletter AS n USING(id) LEFT JOIN newsletter_cat AS c ON(a.cid=c.cid) WHERE a.id={?} ORDER BY c.pos,a.pos", $this->_id); - while (list($title, $body, $append, $aid, $cid, $pos) = $res->next()) { - $this->_arts[$cid]["a$aid"] = new NLArticle($title, $body, $append, $aid, $cid, $pos); - } - } - - // }}} - // {{{ function setSent() - - function setSent() - { - global $globals; - $globals->xdb->execute("UPDATE newsletter SET bits='sent' WHERE id={?}", $this->_id); + while (list($title, $body, $append, $aid, $cid, $pos) = $res->next()) { + $this->_arts[$cid]["a$aid"] = new NLArticle($title, $body, $append, $aid, $cid, $pos); + } } - // }}} - // {{{ function save() - - function save() + public function save() { - global $globals; - $globals->xdb->execute('UPDATE newsletter SET date={?},titre={?},head={?} WHERE id={?}', - $this->_date, $this->_title, $this->_head, $this->_id); + XDB::execute('UPDATE newsletter SET date={?},titre={?},titre_mail={?},head={?},short_name={?} WHERE id={?}', + $this->_date, $this->_title, $this->_title_mail, $this->_head, $this->_shortname,$this->_id); } - // }}} - // {{{ function title() - - function title() - { return $this->_title; } - - // }}} - // {{{ function head() - - function head() - { return $this->_head; } - - // }}} - // {{{ function getArt() - - function getArt($aid) + public function getArt($aid) { - foreach ($this->_arts as $key=>$artlist) { - if (isset($artlist["a$aid"])) { + foreach ($this->_arts as $key=>$artlist) { + if (isset($artlist["a$aid"])) { return $artlist["a$aid"]; } - } - return null; + } + return null; } - // }}} - // {{{ function saveArticle() - - function saveArticle(&$a) + public function saveArticle(&$a) { - global $globals; - if ($a->_aid>=0) { - $globals->xdb->execute('REPLACE INTO newsletter_art (id,aid,cid,pos,title,body,append) - VALUES ({?},{?},{?},{?},{?},{?},{?})', - $this->_id, $a->_aid, $a->_cid, $a->_pos, - $a->_title, $a->_body, $a->_append); - $this->_arts['a'.$a->_aid] = $a; - } else { - $globals->xdb->execute( - 'INSERT INTO newsletter_art - SELECT {?},MAX(aid)+1,{?},'.($a->_pos ? intval($a->_pos) : 'MAX(pos)+1').',{?},{?},{?} - FROM newsletter_art AS a - WHERE a.id={?}', - $this->_id, $a->_cid, $a->_title, $a->_body, $a->_append, $this->_id); - $this->_arts['a'.$a->_aid] = $a; - } + if ($a->_aid >= 0) { + XDB::execute('REPLACE INTO newsletter_art (id, aid, cid, pos, title, body, append) + VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?})', + $this->_id, $a->_aid, $a->_cid, $a->_pos, + $a->_title, $a->_body, $a->_append); + $this->_arts['a' . $a->_aid] = $a; + } else { + XDB::execute('INSERT INTO newsletter_art + SELECT {?}, MAX(aid)+1, {?}, ' + . ($a->_pos ? intval($a->_pos) : 'MAX(pos)+1') + . ', {?}, {?}, {?} + FROM newsletter_art AS a + WHERE a.id = {?}', + $this->_id, $a->_cid, $a->_title, $a->_body, $a->_append, $this->_id); + $this->_arts['a' . $a->_aid] = $a; + } } - // }}} - // {{{ function delArticle() - - function delArticle($aid) + public function delArticle($aid) { - global $globals; - $globals->xdb->execute('DELETE FROM newsletter_art WHERE id={?} AND aid={?}', $this->_id, $aid); - foreach ($this->_arts as $key=>$art) { - unset($this->_arts[$key]["a$aid"]); - } + XDB::execute('DELETE FROM newsletter_art WHERE id={?} AND aid={?}', $this->_id, $aid); + foreach ($this->_arts as $key=>$art) { + unset($this->_arts[$key]["a$aid"]); + } } - // }}} - // {{{ function footer + protected function assignData(&$smarty) + { + $smarty->assign_by_ref('nl', $this); + } - function footer($html) + protected function setSent() { - global $globals; - $url = $globals->baseurl; - - if ($html) { - return '