* dans ecrire/inc/forum_insert.php ; ici on va notifier ceux qui ne l'ont
* pas ete a la notification forumposte (sachant que les deux peuvent se
* suivre si le forum est valide directement ('pos' ou 'abo')
- * http://doc.spip.org/@notifications_forumvalide_dist
*
* @param string $quoi
* @param int $id_forum
*/
function notifications_forumvalide_dist($quoi, $id_forum, $options) {
- $t = sql_fetsel("*", "spip_forum", "id_forum=".intval($id_forum));
+ $t = sql_fetsel("*", "spip_forum", "id_forum=" . intval($id_forum));
if (!$t
// forum sur un message prive : pas de notification ici (cron)
- OR @$t['statut'] == 'perso')
+ OR @$t['statut'] == 'perso') {
return;
+ }
// plugin notification si present
$prevenir_auteurs = isset($GLOBALS['notifications']['prevenir_auteurs']) AND $GLOBALS['notifications']['prevenir_auteurs'];
// sinon voie normale
- if ($t['objet']=='article' AND $t['id_objet'] AND !$prevenir_auteurs){
- $s = sql_getfetsel('accepter_forum','spip_articles',"id_article=" . $t['id_objet']);
- if (!$s) $s = substr($GLOBALS['meta']["forums_publics"],0,3);
+ if ($t['objet'] == 'article' AND $t['id_objet'] AND !$prevenir_auteurs) {
+ $s = sql_getfetsel('accepter_forum', 'spip_articles', "id_article=" . $t['id_objet']);
+ if (!$s) {
+ $s = substr($GLOBALS['meta']["forums_publics"], 0, 3);
+ }
- $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'],",$s,")!==false
+ $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'], ",$s,") !== false
OR @$GLOBALS['meta']['prevenir_auteurs'] === 'oui'); // compat
}
// Qui va-t-on prevenir ?
$tous = array();
// Ne pas ecrire au posteur du message, ni au moderateur qui valide le forum,
- $pasmoi = array($t['email_auteur'],$GLOBALS['visiteur_session']['email']);
+ $pasmoi = array($t['email_auteur']);
+ if (!empty($GLOBALS['visiteur_session']['email'])) {
+ $pasmoi[] = $GLOBALS['visiteur_session']['email'];
+ }
// 1. Les auteurs de l'objet lie au forum
// seulement ceux qui n'ont
// pas le droit de le moderer (les autres l'ont recu plus tot)
if ($prevenir_auteurs) {
- $result = sql_select("auteurs.*","spip_auteurs AS auteurs, spip_auteurs_liens AS lien","lien.objet=".sql_quote($t['objet'])." AND lien.id_objet=".intval($t['id_objet'])." AND auteurs.id_auteur=lien.id_auteur");
+ $result = sql_select("auteurs.*", "spip_auteurs AS auteurs, spip_auteurs_liens AS lien", "lien.objet=" . sql_quote($t['objet']) . " AND lien.id_objet=" . intval($t['id_objet']) . " AND auteurs.id_auteur=lien.id_auteur");
while ($qui = sql_fetch($result)) {
if ($qui['email']) {
- if (!autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur']))
+ if (!autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur'])) {
$tous[] = $qui['email'];
- else
+ } else {
// Ne pas ecrire aux auteurs deja notifies precedemment
$pasmoi[] = $qui['email'];
+ }
+ }
+ }
+ }
+
+
+// Prevenir les admins restreints de la rubrique et des parentes lors de messages de forum d'article ou de rubrique
+// c'est ici because dans notifications_pipelines la fonction de dédoublonnage le fait sauter (?)
+
+ if (!empty($GLOBALS['notifications']['forums_admins_restreints'])) {
+ if ($t['objet'] == 'rubrique') {
+ $id_rubrique = $t['id_objet'];
+ }
+ if ($t['objet'] == 'article') {
+ include_spip('base/abstract_sql');
+ $t = sql_fetsel("id_rubrique", "spip_articles", "id_article=" . intval($t['id_objet']));
+ $id_rubrique = $t['id_rubrique'];
+ }
+ if (!empty($GLOBALS['notifications']['forums_limiter_rubriques'])) {
+ $limites = $GLOBALS['notifications']['forums_limiter_rubriques'];
+ $forums_limiter_rubriques = explode(",", $limites);
+ } else {
+ $forums_limiter_rubriques = array($id_rubrique);
+ }
+ if (in_array($id_rubrique, $forums_limiter_rubriques)) {
+ while ($id_rubrique) {
+ $hierarchie[] = $id_rubrique;
+ $res = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=" . intval($id_rubrique));
+ if (!$res) { // rubrique inexistante
+ $id_rubrique = 0;
+ break;
+ }
+ $id_parent = $res['id_parent'];
+ $id_rubrique = $id_parent;
+ }
+ //les admins de la rub et de ses parents
+ $result = sql_select(
+ "auteurs.email,auteurs.id_auteur,lien.id_objet as id_rubrique",
+ "spip_auteurs AS auteurs JOIN spip_auteurs_liens AS lien ON auteurs.id_auteur=lien.id_auteur ",
+ "lien.objet='rubrique' AND " . sql_in('lien.id_objet', sql_quote($hierarchie)) . " AND auteurs.statut='0minirezo'");
+ while ($qui = sql_fetch($result)) {
+ $tous[] = $qui['email'];
}
}
}
-\r
-\r
-// Prevenir les admins restreints de la rubrique et des parentes lors de messages de forum d'article ou de rubrique\r
-// c'est ici because dans notifications_pipelines la fonction de dédoublonnage le fait sauter (?)\r
-\r
-if ($GLOBALS['notifications']['forums_admins_restreints']) {\r
- if ($t['objet']=='rubrique'){\r
- $id_rubrique = $t['id_objet'];\r
- }\r
- if ($t['objet']=='article'){\r
- include_spip('base/abstract_sql');\r
- $t = sql_fetsel("id_rubrique", "spip_articles", "id_article=" . intval($t['id_objet']));\r
- $id_rubrique = $t['id_rubrique'];\r
- }\r
- if ($GLOBALS['notifications']['forums_limiter_rubriques']){\r
- $limites = $GLOBALS['notifications']['forums_limiter_rubriques'];\r
- $forums_limiter_rubriques = explode(",",$limites);\r
- } else {\r
- $forums_limiter_rubriques = array($id_rubrique);\r
- }\r
- if (in_array($id_rubrique,$forums_limiter_rubriques)){\r
- while ($id_rubrique){\r
- $hierarchie[] = $id_rubrique;\r
- $res = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=" . intval($id_rubrique));\r
- if (!$res){ // rubrique inexistante\r
- $id_rubrique = 0;\r
- break;\r
- }\r
- $id_parent = $res['id_parent'];\r
- $id_rubrique = $id_parent;\r
- }\r
- //les admins de la rub et de ses parents\r
- $result = sql_select(\r
- "auteurs.email,auteurs.id_auteur,lien.id_objet as id_rubrique",\r
- "spip_auteurs AS auteurs JOIN spip_auteurs_liens AS lien ON auteurs.id_auteur=lien.id_auteur ",\r
- "lien.objet='rubrique' AND ".sql_in('lien.id_objet',sql_quote($hierarchie))." AND auteurs.statut='0minirezo'");\r
- while ($qui = sql_fetch($result)) {\r
- $tous[] = $qui['email'];\r
- }\r
- }\r
- }\r
-/////////////////////////////\r
+/////////////////////////////
$options['forum'] = $t;
$destinataires = pipeline('notifications_destinataires',
array(
- 'args'=>array('quoi'=>$quoi,'id'=>$id_forum,'options'=>$options)
+ 'args' => array('quoi' => $quoi, 'id' => $id_forum, 'options' => $options)
,
- 'data'=>$tous)
+ 'data' => $tous)
);
// Nettoyer le tableau
// en enlevant les exclus
- notifications_nettoyer_emails($destinataires,$pasmoi);
+ notifications_nettoyer_emails($destinataires, $pasmoi);
//
// Envoyer les emails
//
- $email_notification_forum = charger_fonction('email_notification_forum','inc');
+ $email_notification_forum = charger_fonction('email_notification_forum', 'inc');
foreach ($destinataires as $email) {
- $contexte = array('notification_email'=>$email,'indiquer_email_auteur'=>'non');
+ $contexte = array('notification_email' => $email, 'indiquer_email_auteur' => 'non');
$texte = $email_notification_forum($t, $email, $contexte);
notifications_envoyer_mails_texte_ou_html($email, $texte);
- }\r
-\r
-// une liste d'adresses renseignées dans config possiblement liste de diffusion\r
- if ($GLOBALS['notifications']['forums_liste']){\r
-\r
- //construction du mail pour envoyer_mail\r
- $titre="$t[titre]";\r
- $sujet=""._T('forum:info_1_message_forum')." '$titre'";\r
- $charset = lire_meta('charset');\r
-\r
- if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui' AND $GLOBALS['meta']['facteur_adresse_envoi_email'])\r
- $from_email = $GLOBALS['meta']['facteur_adresse_envoi_email'];\r
- else\r
- $from_email = $email_webmaster;\r
- // nom denvoi depuis config facteur\r
- if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui' AND $GLOBALS['meta']['facteur_adresse_envoi_nom'])\r
- $from_nom = $GLOBALS['meta']['facteur_adresse_envoi_nom'];\r
-\r
- foreach (explode(',', $GLOBALS['notifications']['forums_liste']) as $to_email) {\r
- $email_notification_forum = charger_fonction('email_notification_forum','inc');\r
- $body = $email_notification_forum($t, $to_email);\r
- include_spip('classes/facteur');\r
- $body = Facteur::html2text($body);\r
- $envoyer_mail = charger_fonction('envoyer_mail','inc/');\r
- $envoyer_mail($to_email, $sujet, $body, $from_email, $headers);\r
- }\r
- } \r
-///////////////////////////\r
+ }
+
+// une liste d'adresses renseignées dans config possiblement liste de diffusion
+ if (!empty($GLOBALS['notifications']['forums_liste'])) {
+
+ //construction du mail pour envoyer_mail
+ $titre = "$t[titre]";
+ $sujet = "" . _T('forum:info_1_message_forum') . " '$titre'";
+ $charset = lire_meta('charset');
+
+ if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui' AND $GLOBALS['meta']['facteur_adresse_envoi_email']) {
+ $from_email = $GLOBALS['meta']['facteur_adresse_envoi_email'];
+ } else {
+ $from_email = $email_webmaster;
+ }
+ // nom denvoi depuis config facteur
+ if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui' AND $GLOBALS['meta']['facteur_adresse_envoi_nom']) {
+ $from_nom = $GLOBALS['meta']['facteur_adresse_envoi_nom'];
+ }
+
+ foreach (explode(',', $GLOBALS['notifications']['forums_liste']) as $to_email) {
+ $email_notification_forum = charger_fonction('email_notification_forum', 'inc');
+ $body = $email_notification_forum($t, $to_email);
+ include_spip('classes/facteur');
+ $body = Facteur::html2text($body);
+ $envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
+ $envoyer_mail($to_email, $sujet, $body, $from_email, $headers);
+ }
+ }
+///////////////////////////
}
-?>