Server : Apache System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64 User : hednacluml ( 122243) PHP Version : 8.3.9 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/hednacluml/jobs/plugins-dist/forum/notifications/ |
<?php /* * Plugin Notifications * (c) 2009 SPIP * Distribue sous licence GPL * */ /** * Notification de message de forum posté * * @package SPIP\Forum\Notifications **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Cette notification s'exécute quand un message est posté * * @param string $quoi * @param int $id_forum * @param array $options */ function notifications_forumposte_dist($quoi, $id_forum, $options) { $t = sql_fetsel('*', 'spip_forum', 'id_forum=' . intval($id_forum)); if (!$t) { 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 !$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'] ?? '', (string) ",$s,") !== false or ($GLOBALS['meta']['prevenir_auteurs'] ?? '') === 'oui'); // compat } include_spip('inc/texte'); include_spip('inc/filtres'); include_spip('inc/autoriser'); // Qui va-t-on prevenir ? $tous = []; // 1. Les auteurs de l'objet lie au forum // seulement s'ils ont le droit de le moderer (les autres seront // avertis par la notifications_forumvalide). 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' ); while ($qui = sql_fetch($result)) { if ($qui['email'] and autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur'])) { $tous[] = $qui['email']; } } } $options['forum'] = $t; $destinataires = pipeline( 'notifications_destinataires', [ 'args' => ['quoi' => $quoi, 'id' => $id_forum, 'options' => $options], 'data' => $tous ] ); // Nettoyer le tableau // Ne pas ecrire au posteur du message ! notifications_nettoyer_emails($destinataires, [$t['email_auteur']]); // // Envoyer les emails // $email_notification_forum = charger_fonction('email_notification_forum', 'inc'); foreach ($destinataires as $email) { $texte = $email_notification_forum($t, $email); notifications_envoyer_mails($email, $texte); } // Notifier les autres si le forum est valide // est-ce que cet appel devrait bien etre la ? if ($t['statut'] == 'publie') { $notifications = charger_fonction('notifications', 'inc'); $notifications('forumvalide', $id_forum); } }