Valider 508364a9 rédigé par pierre.troller@gmail.com's avatar pierre.troller@gmail.com
Parcourir les fichiers

Deux nouvelles options de notifications des forums publics, les admins...

Deux nouvelles options de notifications des forums publics, les admins restreints (l'ancienne version ne prévenait que les admins de la rubrique, pas des parentes) et une liste d'adresses explicites (demande sur users)
parent c8715e6f
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+17 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -66,6 +66,23 @@
							<input type="text" name="moderateurs_forum" value="[(#ENV{moderateurs_forum}|entites_html)]" id="moderateurs_forum" class="text" />
							<p class="explication"><:notifications:forums_public_a_noter:></p>
						</li>
						<li class="editer editer_forums_admins_restreints">
							<div class="choix">
								<input type="checkbox" name="forums_admins_restreints"[(#ENV{forums_admins_restreints}|=={on}|oui)checked="checked"] id="forums_admins_restreints" class="checkbox" />
								<label for="forums_admins_restreints"><:notifications:forums_admins_restreints:></label>
							</div>
						</li>
						<li class='editer editer_forums_limiter_rubriques'>
							<label for="limiter_rubriques"><:notifications:forums_limiter_rubriques_label:></label>
							<p class="explication"><:notifications:forums_limiter_rubriques_explication:></p>
							<input type="text" name="forums_limiter_rubriques" value="[(#ENV{forums_limiter_rubriques}|entites_html)]" id="forums_limiter_rubriques" class="text" />
						</li>
						<li class="editer editer_forums_public_liste">
							<div class="choix">
							<label for="forums_public_liste"><:notifications:forums_public_liste:></label>
							<input type="text" name="forums_liste" value="[(#ENV{forums_liste}|entites_html)]" id="forums_liste" class="text" />
							</div>
						</li>
					</ul>
				</fieldset>
			</li>
+6 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -52,11 +52,15 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
	'forum_prives_auteur' => '<strong>Auteurs</strong> : les auteurs reçoivent les notifications des forums postés sous leurs articles ou leurs messages dans le site privé.',
	'forum_prives_moderateur' => 'Indiquez ci-dessous l’adresse email du modérateur des forums privés (ou plusieurs, séparées par des virgules).',
	'forum_prives_thread' => '<strong>Fil de discussion</strong> : les participants au même fil de discussion reçoivent les notifications des forums (privés).',
	'forums_admins_restreints' => '<strong>Administrateurs</strong> : Les administrateurs  reçoivent les notifications lors de nouveaux messages de forums dans leur rubrique.',
	'forums_limiter_rubriques_explication' => 'Renseignez ici les identifiants de chaque rubrique où vous voulez déclencher les notifications, séparé par une virgule. ex : "11,26"',
	'forums_limiter_rubriques_label' => 'Limiter à ces rubriques :',
	'forums_prives' => 'Forums privés',
	'forums_public' => 'Forums publics',
	'forums_public_a_noter' => 'À noter : dans le cas des forums modérés à priori, seuls les auteurs ayant le droit de valider les forums sont notifiés lors de l’envoi du forum ; les autres destinataires sont notifiés lors de la validation du message par le modérateur.',
	'forums_public_article' => '<strong>Réponse à l’article</strong> : les personnes ayant répondu publiquement à l’article recoivent les notifications des forums (publics) de l’article (utile pour les forums « à plat »). Sont exclus les messages supprimés ou marqués comme SPAM.',
	'forums_public_auteurs' => '<strong>Auteurs</strong> : les auteurs reçoivent les notifications des forums postés sous leurs articles dans le site public.',
	'forums_public_liste' => '<strong>Adresses explicites : </strong>une ou plusieurs adresses (séparées par des virgules) qui recevront les messages publiés en public.',
	'forums_public_moderateur' => 'Indiquez ci-dessous l’adresse email du modérateur des forums publics (ou plusieurs, séparées par des virgules).',
	'forums_public_thread' => '<strong>Fil de discussion</strong> : les participants au même fil de discussion reçoivent les notifications des forums (publics). Sont exclus les messages supprimés ou marqués comme SPAM.',

+71 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -63,6 +63,48 @@ function notifications_forumvalide_dist($quoi, $id_forum, $options) {
		}
	}


// 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 ($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 ($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'];
             }
         }
     }
/////////////////////////////

	$options['forum'] = $t;
	$destinataires = pipeline('notifications_destinataires',
		array(
@@ -85,6 +127,34 @@ function notifications_forumvalide_dist($quoi, $id_forum, $options) {
		notifications_envoyer_mails_texte_ou_html($email, $texte);
	}

// une liste d'adresses renseignées dans config possiblement liste de diffusion
	if ($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);
		}
	} 
///////////////////////////


}

?>
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<paquet
	prefix="notifications"
	categorie="communication"
	version="3.4.1"
	version="3.4.2"
	etat="stable"
	compatibilite="[3.0.0;3.1.*]"
	logo="notifications-32.png"