From 8bca440f822d1afe6eb85eb47d6c67ea36db4a36 Mon Sep 17 00:00:00 2001 From: llaffont <llaffont@afi-sa.fr> Date: Tue, 10 Nov 2015 17:33:07 +0100 Subject: [PATCH] rel #31761 notify article validators: add text substitutions in admin var --- .../admin/controllers/CmsController.php | 43 ++++++++++--------- library/Class/AdminVar.php | 6 +-- .../admin/controllers/CmsControllerTest.php | 11 +++-- 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/application/modules/admin/controllers/CmsController.php b/application/modules/admin/controllers/CmsController.php index b69685ae34e..f4bee15637e 100644 --- a/application/modules/admin/controllers/CmsController.php +++ b/application/modules/admin/controllers/CmsController.php @@ -321,11 +321,16 @@ class Admin_CmsController extends ZendAfi_Controller_Action { protected function prepareBodyMail($article, $message) { - $message = str_replace('TITRE_ARTICLE', $article->getTitre(), $message); - $message = str_replace('URL_ARTICLE', - $this->view->absoluteUrl($article->getUrl(), null, true), - $message); - return $message; + return + str_replace(['TITRE_ARTICLE', 'URL_ARTICLE', 'AUTHOR_ARTICLE', 'SAVED_BY_ARTICLE'], + + [ + $article->getTitre(), + $this->view->absoluteUrl($article->getUrl(), null, true), + $article->getNomCompletAuteur(), + $this->identity->getNomComplet(), + ], + $message); } @@ -359,28 +364,26 @@ class Admin_CmsController extends ZendAfi_Controller_Action { } - protected function _sendMailToValidators($article) { - $mails = Class_Permission::getWorkflow(Class_Article::STATUS_VALIDATED) - ->getUsersOnModel($article->getCategorie()) - ->collect('mail'); + protected function _getValidatorsMail($article) { + return array_unique( + Class_Permission::getWorkflow(Class_Article::STATUS_VALIDATED) + ->getUsersOnModel($article->getCategorie()) + ->collect('mail') + ->getArrayCopy()); + } - if ($mails->isEmpty()) - return; - $body = Class_AdminVar::getWorkflowTextMailArticlePending(); - $body = str_replace('TITRE_ARTICLE', - $article->getTitre(), - $body); - $body = str_replace('URL_ARTICLE', - $this->view->absoluteUrl($article->getUrl(), null, true), - $body); + protected function _sendMailToValidators($article) { + if (!$mails = $this->_getValidatorsMail($article)) + return; $mail = new ZendAfi_Mail('utf8'); $mail ->setFrom('no-reply@afi-sa.fr') - ->addTo(implode(',', array_unique($mails->getArrayCopy()))) + ->addTo(implode(',', $mails)) ->setSubject($this->_('[Bokeh] Validation d\'article en attente: ') . $article->getTitre()) - ->setBodyText($body); + ->setBodyText($this->prepareBodyMail($article, + Class_AdminVar::getWorkflowTextMailArticlePending())); if($this->_sendMail($mail)) $this->_helper->notify($this->_('Mail de validation envoyé aux validateurs.')); diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php index 1e029fe4334..ae2cb2a67ce 100644 --- a/library/Class/AdminVar.php +++ b/library/Class/AdminVar.php @@ -193,9 +193,9 @@ class Class_AdminVarLoader extends Storm_Model_Loader { 'Les identifiants 1 à 5 sont réservés']), ['validate' => 'ZendAfi_Validate_WorkflowVar', 'after_save' => 'setWorkflowPermissions']), - 'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification d\'article en attente de validation')), - 'WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification de refus d\'un article à valider')), - 'WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification de validation d\'un article')), + 'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification d\'article en attente de validation. Termes substitués: TITRE_ARTICLE, URL_ARTICLE, AUTHOR_ARTICLE, SAVED_BY_ARTICLE')), + 'WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification de refus d\'un article à valider. Termes substitués: TITRE_ARTICLE, URL_ARTICLE, AUTHOR_ARTICLE, SAVED_BY_ARTICLE')), + 'WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED' => Class_AdminVar_Meta::newDefault($this->_('Contenu de l\'email de notification de validation d\'un article. Termes substitués: TITRE_ARTICLE, URL_ARTICLE, AUTHOR_ARTICLE, SAVED_BY_ARTICLE')), ], 'album' => ['ALBUMS_LIST_MODE' => Class_AdminVar_Meta::newOnOff($this->_('Le gestionnaire de contenu affiche les albums sous forme de liste paginée au lieu de d\'une arborescence. Cet affichage est adapté lorsque le nombre d\'albums devient trop important')), diff --git a/tests/application/modules/admin/controllers/CmsControllerTest.php b/tests/application/modules/admin/controllers/CmsControllerTest.php index 4ad82618f13..b7824f3f15d 100644 --- a/tests/application/modules/admin/controllers/CmsControllerTest.php +++ b/tests/application/modules/admin/controllers/CmsControllerTest.php @@ -59,6 +59,8 @@ abstract class CmsControllerTestCase extends Admin_AbstractControllerTestCase { $this->_admin_bib = $this->fixture('Class_Users',['id' => 10, 'login' => 'AdminBibConnected', + 'nom' => 'Super', + 'prenom' => 'Mario', 'bib' => $this->annecy, 'role' => 'admin_bib', 'mail' => 'admin@afi-sa.fr', @@ -1505,10 +1507,10 @@ abstract class CmsControllerWorkflowTestCase extends CmsControllerWithPermission $this->fixture('Class_AdminVar', ['id' => 'WORKFLOW', 'valeur' => '1']); $this->fixture('Class_AdminVar', ['id' => 'WORKFLOW_TEXT_MAIL_ARTICLE_VALIDATED', - 'valeur' => 'L\'article TITRE_ARTICLE a été validé. URL_ARTICLE']); + 'valeur' => 'L\'article TITRE_ARTICLE a été validé par SAVED_BY_ARTICLE. URL_ARTICLE']); $this->fixture('Class_AdminVar', ['id' => 'WORKFLOW_TEXT_MAIL_ARTICLE_PENDING', - 'valeur' => 'Un nouvel article est à valider. TITRE_ARTICLE URL_ARTICLE']); + 'valeur' => 'Un nouvel article de AUTHOR_ARTICLE est à valider. TITRE_ARTICLE URL_ARTICLE']); $this->fixture('Class_AdminVar', ['id' => 'WORKFLOW_TEXT_MAIL_ARTICLE_REFUSED', 'valeur' => 'L\'article a été refusé.']); @@ -1614,6 +1616,7 @@ class CmsControllerNewsAddActionPostWithWorkflowTest ['id' => 1, 'login' => 'l', 'password' => 'l', + 'nom' => 'Batman', 'mail' => 'l@afi-sa.fr']);; $this->fixture('Class_Article', ['id' => 18, @@ -1670,7 +1673,7 @@ class CmsControllerNewsAddActionPostWithWorkflowTest /** @test */ public function sentMailToAuthorWhenNewsIsValidatedShouldContainsDefaultBody() { $this->postArticleValidated(); - $this->assertEquals('L\'article Katsuhiro Otomo en dédicace ! a été validé. http://localhost'.BASE_URL.'/cms/articleview/id/18',quoted_printable_decode($this->mock_transport->getSentMails()[0]->getBodyText()->getContent())); + $this->assertEquals('L\'article Katsuhiro Otomo en dédicace ! a été validé par Mario Super. http://localhost'.BASE_URL.'/cms/articleview/id/18',quoted_printable_decode($this->mock_transport->getSentMails()[0]->getBodyText()->getContent())); } @@ -1767,7 +1770,7 @@ class CmsControllerNewsAddActionPostWithWorkflowTest /** @test */ public function sentMailToAdminWhenValidationPendingShouldContainsDefaultText() { $this->postArticleAValider(); - $this->assertEquals('Un nouvel article est à valider. Katsuhiro Otomo en dédicace ! http://localhost'.BASE_URL.'/cms/articleview/id/18',quoted_printable_decode($this->mock_transport->getSentMails()[0]->getBodyText()->getContent())); + $this->assertEquals('Un nouvel article de Batman est à valider. Katsuhiro Otomo en dédicace ! http://localhost'.BASE_URL.'/cms/articleview/id/18',quoted_printable_decode($this->mock_transport->getSentMails()[0]->getBodyText()->getContent())); } -- GitLab