<?php
/***************************************************************************
- * Copyright (C) 2003-2008 Polytechnique.org *
+ * Copyright (C) 2003-2009 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
function handlers()
{
return array(
- 'nl' => $this->make_hook('nl', AUTH_COOKIE),
- 'nl/show' => $this->make_hook('nl_show', AUTH_COOKIE),
- 'nl/submit' => $this->make_hook('nl_submit', AUTH_MDP),
- 'admin/newsletter' => $this->make_hook('admin_nl', AUTH_MDP, 'admin'),
- 'admin/newsletter/categories' => $this->make_hook('admin_nl_cat', AUTH_MDP, 'admin'),
+ 'nl' => $this->make_hook('nl', AUTH_COOKIE),
+ 'nl/show' => $this->make_hook('nl_show', AUTH_COOKIE),
+ 'nl/submit' => $this->make_hook('nl_submit', AUTH_MDP),
+ 'admin/newsletter' => $this->make_hook('admin_nl', AUTH_MDP, 'admin'),
+ 'admin/newsletter/categories' => $this->make_hook('admin_nl_cat', AUTH_MDP, 'admin'),
'admin/newsletter/edit' => $this->make_hook('admin_nl_edit', AUTH_MDP, 'admin'),
);
}
require_once 'newsletter.inc.php';
$page->changeTpl('newsletter/index.tpl');
- $page->assign('pl_title','Polytechnique.org - Lettres mensuelles');
+ $page->setTitle('Lettres mensuelles');
switch ($action) {
- case 'out': Newsletter::unsubscribe(); break;
- case 'in': Newsletter::subscribe(); break;
+ case 'out': NewsLetter::unsubscribe(); break;
+ case 'in': NewsLetter::subscribe(); break;
default: ;
}
- $page->assign('nls', Newsletter::subscriptionState());
- $page->assign('nl_list', Newsletter::listSent());
+ $page->assign('nls', NewsLetter::subscriptionState());
+ $page->assign('nl_list', NewsLetter::listSent());
}
function handler_nl_show(&$page, $nid = 'last')
require_once 'newsletter.inc.php';
- $nl = new NewsLetter($nid);
- if (Get::has('text')) {
- $nl->toText($page, S::v('prenom'), S::v('nom'), S::v('femme'));
- } else {
- $nl->toHtml($page, S::v('prenom'), S::v('nom'), S::v('femme'));
- }
- if (Post::has('send')) {
- $res = XDB::query("SELECT hash FROM newsletter_ins WHERE user_id = {?}", S::i('uid'));
- $nl->sendTo(S::v('prenom'), S::v('nom'),
- S::v('bestalias'), S::v('femme'),
- S::v('mail_fmt') != 'texte',
- $res->fetchOneCell());
+ try {
+ $nl = new NewsLetter($nid);
+ if (Get::has('text')) {
+ $nl->toText($page, S::v('prenom'), S::v('nom'), S::v('femme'));
+ } else {
+ $nl->toHtml($page, S::v('prenom'), S::v('nom'), S::v('femme'));
+ }
+ if (Post::has('send')) {
+ $res = XDB::query("SELECT hash
+ FROM newsletter_ins
+ WHERE user_id = {?}",
+ S::i('uid'));
+ $nl->sendTo(S::user()->login(), S::user()->bestEmail(),
+ S::v('prenom'), S::v('nom'),
+ S::v('femme'), S::v('mail_fmt') != 'texte',
+ $res->fetchOneCell());
+ }
+ } catch (MailNotFound $e) {
+ return PL_NOT_FOUND;
}
}
$page->changeTpl('newsletter/submit.tpl');
require_once 'newsletter.inc.php';
- require_once 'wiki.inc.php';
- wiki_require_page('Xorg.LettreMensuelle');
+ $wp = new PlWikiPage('Xorg.LettreMensuelle');
+ $wp->buildCache();
if (Post::has('see') || (Post::has('valid') && (!trim(Post::v('title')) || !trim(Post::v('body'))))) {
if (!Post::has('see')) {
$page->assign('art', $art);
} elseif (Post::has('valid')) {
require_once('validations.inc.php');
- $art = new NLReq(S::v('uid'), Post::v('title'),
+ $art = new NLReq(S::user(), Post::v('title'),
Post::v('body'), Post::v('append'));
$art->submit();
$page->assign('submited', true);
function handler_admin_nl(&$page, $new = false) {
$page->changeTpl('newsletter/admin.tpl');
- $page->assign('pl_title','Polytechnique.org - Administration - Newsletter : liste');
+ $page->setTitle('Administration - Newsletter : liste');
require_once("newsletter.inc.php");
if($new) {
- Newsletter::create();
+ NewsLetter::create();
pl_redirect("admin/newsletter");
}
- $page->assign('nl_list', Newsletter::listAll());
+ $page->assign('nl_list', NewsLetter::listAll());
}
function handler_admin_nl_edit(&$page, $nid = 'last', $aid = null, $action = 'edit') {
$page->changeTpl('newsletter/edit.tpl');
$page->addCssLink('nl.css');
- $page->assign('pl_title','Polytechnique.org - Administration - Newsletter : Edition');
- require_once("newsletter.inc.php");
+ $page->setTitle('Administration - Newsletter : Édition');
+ require_once 'newsletter.inc.php';
- $nl = new NewsLetter($nid);
+ $nl = new NewsLetter($nid);
if($action == 'delete') {
$nl->delArticle($aid);
}
if($aid == 'update') {
- $nl->_title = Post::v('title');
- $nl->_title_mail= Post::v('title_mail');
- $nl->_date = Post::v('date');
- $nl->_head = Post::v('head');
- $nl->_shortname = strlen(Post::v('shortname')) ? Post::v('shortname') : null;
+ $nl->_title = Post::v('title');
+ $nl->_title_mail = Post::v('title_mail');
+ $nl->_date = Post::v('date');
+ $nl->_head = Post::v('head');
+ $nl->_shortname = strlen(Post::v('shortname')) ? Post::v('shortname') : null;
if (preg_match('/^[-a-z0-9]*$/i', $nl->_shortname) && !is_numeric($nl->_shortname)) {
$nl->save();
} else {
- $page->trigError('Le nom de la NL n\'est pas valide');
+ $page->trigError("Le nom de la NL n'est pas valide.");
pl_redirect('admin/newsletter/edit/' . $nl->_id);
}
}
if(Post::v('save')) {
$art = new NLArticle(Post::v('title'), Post::v('body'), Post::v('append'),
- $aid, Post::v('cid'), Post::v('pos'));
+ $aid, Post::v('cid'), Post::v('pos'));
$nl->saveArticle($art);
pl_redirect("admin/newsletter/edit/$nid");
}
- if($action == 'edit' && $aid != 'update') {
+ if ($action == 'edit' && $aid != 'update') {
$eaid = $aid;
if(Post::has('title')) {
$art = new NLArticle(Post::v('title'), Post::v('body'), Post::v('append'),
- $eaid, Post::v('cid'), Post::v('pos'));
+ $eaid, Post::v('cid'), Post::v('pos'));
} else {
- $art = ($eaid == 'new') ? new NLArticle() : $nl->getArt($eaid);
+ $art = ($eaid == 'new') ? new NLArticle() : $nl->getArt($eaid);
}
$page->assign('art', $art);
}
- $page->assign_by_ref('nl',$nl);
+ if ($aid == 'blacklist_check') {
+ global $globals;
+ $ips_to_check = array();
+ $blacklist_host_resolution_count = 0;
+
+ foreach ($nl->_arts as $key => $articles) {
+ foreach ($articles as $article) {
+ $article_ips = $article->getLinkIps($blacklist_host_resolution_count);
+ if (!empty($article_ips)) {
+ $ips_to_check[$article->title()] = $article_ips;
+ }
+ }
+ }
+
+ $page->assign('ips_to_check', $ips_to_check);
+ if ($blacklist_host_resolution_count >= $globals->mail->blacklist_host_resolution_limit) {
+ $page->trigError("Toutes les url et adresses emails de la lettre"
+ . " n'ont pas été prises en compte car la"
+ . " limite du nombre de résolutions DNS"
+ . " autorisée a été atteinte.");
+ }
+ }
+
+ $page->assign_by_ref('nl', $nl);
}
function handler_admin_nl_cat(&$page, $action = 'list', $id = null) {
- $page->assign('pl_title','Polytechnique.org - Administration - Newsletter : Catégories');
+ $page->setTitle('Administration - Newsletter : Catégories');
$page->assign('title', 'Gestion des catégories de la newsletter');
$table_editor = new PLTableEditor('admin/newsletter/categories','newsletter_cat','cid');
$table_editor->describe('titre','intitulé',true);