addCssLink('nl.css'); } define('FEMME', 1); define('HOMME', 0); // }}} // {{{ class NewsLetter class NewsLetter { // {{{ properties var $_id; var $_shortname; var $_date; var $_title; var $_title_mail; var $_head; var $_cats = Array(); var $_arts = Array(); // }}} // {{{ constructor function NewsLetter($id=null) { if (isset($id)) { if ($id == 'last') { $res = XDB::query("SELECT MAX(id) FROM newsletter WHERE bits!='new'"); $id = $res->fetchOneCell(); } $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()) { insert_new_nl(); } $res = XDB::query("SELECT * FROM newsletter WHERE bits='new'"); } $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() { XDB::execute("UPDATE newsletter SET bits='sent' WHERE id={?}", $this->_id); } // }}} // {{{ function save() function save() { 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 id() function id() { return is_null($this->_shortname) ? $this->_id : $this->_shortname; } // }}} // {{{ function title() function title($mail = false) { if ($mail) { return $this->_title_mail; } return $this->_title; } // }}} // {{{ function head() function head() { return $this->_head; } // }}} // {{{ function getArt() function getArt($aid) { foreach ($this->_arts as $key=>$artlist) { if (isset($artlist["a$aid"])) { return $artlist["a$aid"]; } } return null; } // }}} // {{{ function saveArticle() function saveArticle(&$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) { 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 function footer($html) { global $globals; $url = 'https://www.polytechnique.org'; if ($html) { return '