Anciennes révisionsLiens de retourExporter en PDFHaut de page Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer RedditDerniers changementsSend via e-MailImprimerPermalien × mail de notification pages modifiées (via un job) dans concrete5 c5, c58 Objectif Notifier par email avec un sommaire des pages modifiées sur un site depuis XXX jours Documentation dev jobs https://documentation.concrete5.org/developers/jobs/creating-a-job Réalisation Créer le fichier dans /tools /application/tools/RRmJPf34wfn3rn7WHkn4C_notifyonaddpage.php RRmJPf34wfn3rn7WHkn4C_ est un code aléatoire pour éviter qu'un pirate ne lance votre job, il faut donc IMPERATIVEMENT le changer <?php use \Concrete\Core\Tree\Type\Topic as TopicTree; use \Concrete\Core\Tree\Node\Node as TreeNode; use \Concrete\Core\Tree\Node\Type\Topic as TopicTreeNode; //$nh = Loader::helper('navigation'); $mailService = Core::make('mail'); //$mailService->setTesting(false); // or true to throw an exception on error. //$mailService->setTesting(true); // or true to throw an exception on error. //adapt begin $delay=7; //how much days to consider this is a new page? default=1day; $site="unige.ch/arp"; $subject="Nouveautés sur le site : " .$site; $mailService->from('john@doe.com', 'passerelle'); $destinataire='mary@smith.org'; //prod //adapt end $compteur=0; $maintenant=date("U"); $list = new \Concrete\Core\Page\PageList(); $list-> sortByDateModifiedDescending(); $list->filterByPageTypeHandle('fiche'); //$list->sortByPublicDateDescending(); $pages = $list->getResults(); //c5 helpers $th = Core::make('helper/text'); $dh = Core::make('helper/date'); $mailContent="<p>Modifications sur le site: " .$site ." depuis " .$delay ." jour(s)</p><hr />"; $mailContent.= '<div class="grid-container">'; foreach ($pages as $page): $title = $page->getCollectionName(); //$dateU=$page->getCollectionDatePublic(); $dateU=$page->getCollectionDateLastModified(); $date = $dh->formatDateTime($dateU, true); $dateU=strtotime($dateU); $url = $page->getCollectionLink(); if($maintenant-$dateU<($delay*24*3600)){ //only if overlaid delay $compteur++; $mailContent.= "<div class=\"row\">"; $mailContent.= $date; $mailContent.= " : "; $mailContent.="<a href=\""; $mailContent.= $url; $mailContent.="\">"; $mailContent.= $title; $mailContent.= "</a>"; $mailContent.= "</div>"; } endforeach; $mailContent.= '</div>'; $mailContent.= "<hr /><p><em>Ceci est un mail automatique. Merci de ne pas y répondre.</em></p>"; echo $mailContent; $mailService->load('mailtemplate'); $bodyHTML .= '<!DOCTYPE html>'; $bodyHTML .= '<html lang="fr">'; $bodyHTML .= ' <head>'; $bodyHTML .= ' <meta charset="utf-8">'; $bodyHTML .= ' </head>'; $bodyHTML .= ' <body>'; $bodyHTML .= ' <div>'; $bodyHTML .= $mailContent; $bodyHTML .= ' </div>'; $bodyHTML .= ' </body>'; $bodyHTML .= '</html>'; $mailService->setBodyHTML($bodyHTML); $mailService->setSubject($subject $mailService->to($destinataire); if($compteur==0){ echo "<p>pas de nouveautés</p>"; }else{ echo "<p>il y a des nouveautés, envoi du mail</p>"; $mailService->sendMail(); } Créer le job fichier /application/jobs/notification_changed_pages.php <?php namespace Application\Job; use \Concrete\Core\Job\Job as AbstractJob; use \Concrete\Core\Routing\Redirect; class NotificationChangedPages extends AbstractJob { public function getJobName() { return t("Notification par email des pages modifiées"); } public function getJobDescription() { return t("Liste les pages modifiées depuis x jours et envoie un mail."); } public function run() { //Redirect::to('/tools/NkjK4sfdHsf3VJN4nqgTnotifyonaddpage'); header("Location: https://radeff.red/c58/tools/RRmJPf34wfn3rn7WHkn4C_notifyonaddpage"); } } Activer le cron Il va apparaître dans vos “Automated Jobs” doc https://documentation.concrete5.org/editors/dashboard/system-and-maintenance/jobs/automated-jobs info/concrete5/58/notifyonmodif.txt Dernière modification : 2020/05/08 06:55de radeff S'identifier