[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / notifications2 / notifications / forumvalide.php
index 994f880..3d06bee 100644 (file)
@@ -13,27 +13,29 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
  * 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
        }
 
@@ -44,117 +46,122 @@ function notifications_forumvalide_dist($quoi, $id_forum, $options) {
        // 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);
+               }
+       }
+///////////////////////////
 
 
 }
 
-?>