From b93e08e9a4bc343f280ee17ade99bc35449a6ac3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Thu, 5 Dec 2024 13:15:58 +0100 Subject: [PATCH] Blog 8.1 --- module/blog/blog.php | 147 ++++++++++++++------------- module/blog/changes.md | 5 +- module/blog/enum.json | 2 +- module/blog/view/article/article.php | 9 +- module/blog/view/index/index.php | 17 +++- module/blog/view/option/option.php | 19 ++-- 6 files changed, 114 insertions(+), 85 deletions(-) diff --git a/module/blog/blog.php b/module/blog/blog.php index 0f8bbb6..7a392ce 100755 --- a/module/blog/blog.php +++ b/module/blog/blog.php @@ -16,7 +16,7 @@ class blog extends common { - const VERSION = '8.0'; + const VERSION = '8.1'; const REALNAME = 'Blog'; const DELETE = true; const UPDATE = '0.0'; @@ -42,9 +42,6 @@ class blog extends common public static $articles = []; - // Signature de l'article - public static $articleSignature = ''; - // Signature du commentaire public static $editCommentSignature = ''; @@ -179,6 +176,7 @@ class blog extends common $this->setData(['module', $this->getUrl(0), 'config', 'buttonBack', true]); $this->setData(['module', $this->getUrl(0), 'config', 'showTime', true]); $this->setData(['module', $this->getUrl(0), 'config', 'showDate', true]); + $this->setData(['module', $this->getUrl(0), 'config', 'showPseudo', true]); $this->setData(['module', $this->getUrl(0), 'config', 'versionData', '8.0']); } } @@ -198,7 +196,7 @@ class blog extends common $feeds = new \FeedWriter\RSS2(); // En-tête - $feeds->setTitle($this->getData(['page', $this->getUrl(0), 'title']) ? $this->getData(['page', $this->getUrl(0), 'title']): ''); + $feeds->setTitle($this->getData(['page', $this->getUrl(0), 'title']) ? $this->getData(['page', $this->getUrl(0), 'title']) : ''); $feeds->setLink(helper::baseUrl() . $this->getUrl(0)); if ($this->getData(['page', $this->getUrl(0), 'metaDescription'])) { $feeds->setDescription($this->getData(['page', $this->getUrl(0), 'metaDescription'])); @@ -222,10 +220,10 @@ class blog extends common 'title' => $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'title']), 'link' => helper::baseUrl() . $this->getUrl(0) . '/' . $articleId, 'description' => '' . $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'title'])
-					. '' . - $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'content']), + . '" alt="' . $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'title']) + . '" title="' . $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'title']) + . '" />' . + $this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'content']), ]); $newsArticle->setAuthor($author, 'no@mail.com'); $newsArticle->setId(helper::baseUrl() . $this->getUrl(0) . '/' . $articleId); @@ -455,9 +453,12 @@ class blog extends common else { $approved = !$this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'comment', $this->getUrl(3), 'approval']); $this->setData([ - 'module', $this->getUrl(0), - 'posts', $this->getUrl(2), - 'comment', $this->getUrl(3), + 'module', + $this->getUrl(0), + 'posts', + $this->getUrl(2), + 'comment', + $this->getUrl(3), [ 'author' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'comment', $this->getUrl(3), 'author']), 'content' => $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(2), 'comment', $this->getUrl(3), 'content']), @@ -570,7 +571,8 @@ class blog extends common $this->isPost() ) { $this->setData([ - 'module', $this->getUrl(0), + 'module', + $this->getUrl(0), 'config', [ 'feeds' => $this->getInput('blogOptionShowFeeds', helper::FILTER_BOOLEAN), @@ -583,6 +585,7 @@ class blog extends common 'buttonBack' => $this->getInput('blogOptionButtonBack', helper::FILTER_BOOLEAN), 'showDate' => $this->getInput('blogOptionShowDate', helper::FILTER_BOOLEAN), 'showTime' => $this->getInput('blogOptionShowTime', helper::FILTER_BOOLEAN), + 'showPseudo' => $this->getInput('blogOptionShowPseudo', helper::FILTER_BOOLEAN), 'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']), ] ]); @@ -757,63 +760,69 @@ class blog extends common and password_verify($this->getInput('blogArticleCaptcha', helper::FILTER_INT), $this->getInput('blogArticleCaptchaResult')) === false ) { self::$inputNotices['blogArticleCaptcha'] = 'Incorrect'; - } - // Crée le commentaire - $commentId = helper::increment(uniqid(), $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'comment'])); - $content = $this->getInput('blogArticleContent', null, true); - $this->setData([ - 'module', $this->getUrl(0), - 'posts', $this->getUrl(1), - 'comment', - $commentId, - [ - 'author' => $this->getInput('blogArticleAuthor', helper::FILTER_STRING_SHORT, empty($this->getInput('blogArticleUserId')) ? TRUE : FALSE), - 'content' => $content, - 'createdOn' => time(), - 'userId' => $this->getInput('blogArticleUserId'), - 'approval' => !$this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentApproved']) // true commentaire publié false en attente de publication - ] - ]); - // Envoi d'une notification aux administrateurs - // Init tableau - $to = []; - // Liste des destinataires - foreach ($this->getData(['user']) as $userId => $user) { - if ($user['group'] >= $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentGroupNotification'])) { - $to[] = $user['mail']; - $firstname[] = $user['firstname']; - $lastname[] = $user['lastname']; - } - } - // Envoi du mail $sent code d'erreur ou de réussite - $notification = $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentApproved']) === true ? 'Commentaire déposé en attente d\'approbation' : 'Commentaire déposé'; - if ($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentNotification']) === true) { - $error = 0; - foreach ($to as $key => $adress) { - $sent = $this->sendMail( - $adress, - 'Nouveau commentaire déposé', - 'Bonjour' . ' ' . $firstname[$key] . ' ' . $lastname[$key] . ',

' . - 'L\'article ' . $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'title']) . ' a reçu un nouveau commentaire.

', - null, - $this->getData(['config', 'smtp', 'from']) - ); - if ($sent === false) - $error++; - } - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() . $this->getUrl() . '#comment', - 'notification' => ($error === 0 ? $notification . '
Une notification a été envoyée.' : $notification . '
Erreur de notification : ' . $sent), - 'state' => ($sent === true ? true : null) - ]); } else { - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() . $this->getUrl() . '#comment', - 'notification' => $notification, - 'state' => true + + // Création du commentaire et notifcation par email + $commentId = helper::increment(uniqid(), $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'comment'])); + $content = $this->getInput('blogArticleContent', null, true); + $this->setData([ + 'module', + $this->getUrl(0), + 'posts', + $this->getUrl(1), + 'comment', + $commentId, + [ + 'author' => $this->getInput('blogArticleAuthor', helper::FILTER_STRING_SHORT, empty($this->getInput('blogArticleUserId')) ? TRUE : FALSE), + 'content' => $content, + 'createdOn' => time(), + 'userId' => $this->getInput('blogArticleUserId'), + 'approval' => !$this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentApproved']) // true commentaire publié false en attente de publication + ] ]); + // Envoi d'une notification aux administrateurs + // Init tableau + $to = []; + // Liste des destinataires + foreach ($this->getData(['user']) as $userId => $user) { + if ($user['group'] >= $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentGroupNotification'])) { + $to[] = $user['mail']; + $firstname[] = $user['firstname']; + $lastname[] = $user['lastname']; + } + } + // Envoi du mail $sent code d'erreur ou de réussite + $notification = $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentApproved']) === true ? 'Commentaire déposé en attente d\'approbation' : 'Commentaire déposé'; + if ($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'commentNotification']) === true) { + $error = 0; + foreach ($to as $key => $adress) { + $sent = $this->sendMail( + $adress, + 'Nouveau commentaire déposé', + '

Bonjour' . ' ' . $firstname[$key] . ' ' . $lastname[$key] . ',

' . + '

L\'article ' . $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'title']) . ' a reçu un nouveau commentaire rédigé par ' . + $this->getInput('blogArticleAuthor', helper::FILTER_STRING_SHORT, empty($this->getInput('blogArticleUserId')) ? TRUE : FALSE) . '

' . + '

' . $content.'

', + null, + $this->getData(['config', 'smtp', 'from']) + ); + if ($sent === false) + $error++; + } + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() . $this->getUrl() . '#comment', + 'notification' => ($error === 0 ? $notification . '
Une notification a été envoyée.' : $notification . '
Erreur de notification : ' . $sent), + 'state' => ($sent === true ? true : null) + ]); + } else { + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() . $this->getUrl() . '#comment', + 'notification' => $notification, + 'state' => true + ]); + } } } // Ids des commentaires approuvés par ordre de publication @@ -831,8 +840,6 @@ class blog extends common $pagination = helper::pagination($commentIds, $this->getUrl(), $this->getData(['module', $this->getUrl(0), 'config', 'itemsperPage']), '#comment'); // Liste des pages self::$pages = $pagination['pages']; - // Signature de l'article - self::$articleSignature = $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'userId'])); // Signature du commentaire édité if ($this->isConnected() === true) { self::$editCommentSignature = $this->signature($this->getUser('id')); diff --git a/module/blog/changes.md b/module/blog/changes.md index 2e5e1f2..cbc5770 100755 --- a/module/blog/changes.md +++ b/module/blog/changes.md @@ -1,5 +1,8 @@ +# Version 8.01 +- Un mail de notification est seulement envoyé lorsque le captcha est passé et que le commentaire est déposé. +- Le mail de notification contient désormais le nom de l'auteur du commentaire ainsi que le commentaire. # Version 8.00 -- Ajoute deux nouvelles options pour afficher ou masquer la date et l'heure de l'article. +- Ajoute trois nouvelles options pour afficher ou masquer le pseudo, la date et l'heure de l'article. - Corrige un bug d'affichage des articles lorsque le thème Moderne est sélectionné. - Corrige un bug dans la méthode de tronquage de l'article, nécessite Zwii 13.5 - Corrige un mauvais format de la propriété buttonBack non stockée au type booléen. diff --git a/module/blog/enum.json b/module/blog/enum.json index ad09f84..548484a 100644 --- a/module/blog/enum.json +++ b/module/blog/enum.json @@ -1 +1 @@ -{"name":"blog","realName":"Blog","version":"7.12","update":"0.0","delete":true,"dataDirectory":""} \ No newline at end of file +{"name":"blog","realName":"Blog","version":"8.1","update":"0.0","delete":true,"dataDirectory":""} \ No newline at end of file diff --git a/module/blog/view/article/article.php b/module/blog/view/article/article.php index 770d356..dca58e3 100755 --- a/module/blog/view/article/article.php +++ b/module/blog/view/article/article.php @@ -19,8 +19,13 @@
- - + getData(['module', $this->getUrl(0), 'config', 'showPseudo']) === true + ): ?> + + signature($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'userId'])) ?> + + getData(['module', $this->getUrl(0), 'config', 'showDate']) === true diff --git a/module/blog/view/index/index.php b/module/blog/view/index/index.php index 16bea96..b6f7d13 100755 --- a/module/blog/view/index/index.php +++ b/module/blog/view/index/index.php @@ -25,8 +25,12 @@
- - signature($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'userId'])); ?> + getData(['module', $this->getUrl(0), 'config', 'showPseudo']) === true + ): ?> + + signature($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'userId'])); ?> + getData(['module', $this->getUrl(0), 'config', 'showDate']) === true @@ -157,9 +161,12 @@
- - signature($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'userId'])); ?> - + getData(['module', $this->getUrl(0), 'config', 'showPseudo']) === true + ): ?> + + signature($this->getData(['module', $this->getUrl(0), 'posts', $articleId, 'userId'])); ?> + getData(['module', $this->getUrl(0), 'config', 'showDate']) === true || $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true diff --git a/module/blog/view/option/option.php b/module/blog/view/option/option.php index 2d8f692..fd5d0bb 100755 --- a/module/blog/view/option/option.php +++ b/module/blog/view/option/option.php @@ -17,6 +17,18 @@

+
+
+ $this->getData(['module', $this->getUrl(0), 'config', 'buttonBack']) + ]); ?> +
+
+ $this->getData(['module', $this->getUrl(0), 'config', 'showPseudo']) + ]); ?> +
+
-
- $this->getData(['module', $this->getUrl(0), 'config', 'buttonBack']) - ]); ?> -
-
+
$this->getData(['module', $this->getUrl(0), 'config', 'feeds']), ]); ?>