Commit 5bfeadcbb6b51b60ff2a70cba6dc333860226274

Authored by Thibaud Ajas
1 parent 02b1f815

Les 2 profils de mails (liste et général) sont configurables séparément.

database/update/db-update-2017-05-19.sh 0 → 100644
... ... @@ -0,0 +1,34 @@
  1 +#!/bin/bash
  2 +
  3 +# Pour Mac OS recent (10.10, Yosemite), la syntaxe du SED est differente
  4 +# Il faut donc faire une copie de ce fichier et transformer les instructions sed a l'interieur
  5 +# Pour cela, il suffit d'executer ces 2 lignes :
  6 +# cp ce_script.sh ce_script_macosx.sh
  7 +# sed -e "s/ -i / -i '' /" -i '' ce_script_macosx.sh
  8 +
  9 +if [ ! -f ../../config/app.php ] ; then
  10 +echo "Vous devez executer ce script depuis le dossier database/update/"
  11 +exit 1
  12 +fi
  13 +
  14 +
  15 +# Get login, pass, dbname, and hostname
  16 +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4)
  17 +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4)
  18 +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4)
  19 +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4)
  20 +
  21 +
  22 +cp -p ./script_sql/db-update-2017-05-19.sql ./script_sql/db-update-2017-05-19-build.sql
  23 +
  24 +# Execute sql update script
  25 +sed -e "s/database/$database/" -i ./script_sql/db-update-2017-05-19-build.sql
  26 +mysql --user=$username --password=$password -h $host < ./script_sql/db-update-2017-05-19-build.sql
  27 +
  28 +# Delete cakephp cache
  29 +sudo rm ../../tmp/cache/models/*
  30 +sudo rm ../../tmp/cache/persistent/*
  31 +
  32 +sudo chmod -R 777 ../../tmp
  33 +sudo chmod -R 777 ../../vendor
  34 +sudo chmod -R 777 ../../webroot
... ...
database/update/script_sql/db-update-2017-05-19.sql 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +use database;
  2 +
  3 +ALTER TABLE `configurations` ADD `envoi_mail_guests` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `envoi_mail` ;
... ...
src/Controller/AppController.php
... ... @@ -427,7 +427,8 @@ class AppController extends Controller
427 427 $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
428 428 $action = $this->request->params['action']; // add or edit or delete or ...
429 429  
430   - if(!$configuration->envoi_mail) return null;
  430 + // Si les deux cases "Activer l'envoi des mails.." sont décochée, on se fatigue pas à exécuter la fonction
  431 + if(!$configuration->envoi_mail && !$configuration->envoi_mail_guests) return null;
431 432  
432 433 // On détermine le message et le sujet du mail en fonction de l'action effectuee
433 434 if($idObj != null || $nomObj != null) {
... ... @@ -481,44 +482,49 @@ class AppController extends Controller
481 482  
482 483 // Et maintenant on construit la liste de mails ...
483 484 $mailList = array();
484   -
485   - //mail owner
486   - if($idObj != null) $mailList[0] = $materiel->email_responsable;
487   - else $mailList[0] = $mailOwner;
488   -
489   - //mail resp
490   - $mailsRespMetier = null;
491   - $mailsRespMetier = null;
492   -
493   - if ($idObj != null){
494   - if ($materiel->groupes_metier_id != null && $materiel->groupes_metier_id != 1) $mailsRespMetier = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $materiel->groupes_metier_id])->toArray();
495   - if ($materiel->groupes_thematique_id != null && $materiel->groupes_thematique_id != 1) $mailRespThematique = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupe_thematique_id =' => $materiel->groupes_thematique_id])->toArray();
496   - } else {
497   - if ($groupesMetier != null) $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $groupesMetier])->toArray();
498   - if ($groupesThematique != null) $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupe_thematique_id =' => $groupesThematique])->toArray();
499   - }
500   - // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe
501   -
502   - if ($mailsRespMetier != null && $mailsRespMetier != null) {
503   - $mailResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique));
504   - for($i = 0; $i < sizeof($mailsResp); $i++) {
505   - $mailList[sizeof($mailList)]= $mailsResp[$i]['email'];
  485 + // Si l'envoi général est activé :
  486 + if ($configuration->envoi_mail) {
  487 + //mail owner
  488 + if($idObj != null) $mailList[0] = $materiel->email_responsable;
  489 + else $mailList[0] = $mailOwner;
  490 +
  491 + //mail resp
  492 + $mailsRespMetier = null;
  493 + $mailsRespMetier = null;
  494 +
  495 + if ($idObj != null){
  496 + if ($materiel->groupes_metier_id != null && $materiel->groupes_metier_id != 1) $mailsRespMetier = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $materiel->groupes_metier_id])->toArray();
  497 + if ($materiel->groupes_thematique_id != null && $materiel->groupes_thematique_id != 1) $mailRespThematique = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupe_thematique_id =' => $materiel->groupes_thematique_id])->toArray();
  498 + } else {
  499 + if ($groupesMetier != null) $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $groupesMetier])->toArray();
  500 + if ($groupesThematique != null) $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupe_thematique_id =' => $groupesThematique])->toArray();
  501 + }
  502 + // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe
  503 +
  504 + if ($mailsRespMetier != null && $mailsRespMetier != null) {
  505 + $mailResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique));
  506 + for($i = 0; $i < sizeof($mailsResp); $i++) {
  507 + $mailList[sizeof($mailList)]= $mailsResp[$i]['email'];
  508 + }
  509 + }
  510 +
  511 + //mail admin de reference (ici appele gestionnaire)
  512 + if ($action != 'statusValidated' && $action != 'statusArchived') {
  513 + $mailsAdmin = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration'])->toArray();
  514 + for($i = 0; $i < sizeof($mailsAdmin); $i++) {
  515 + $mailList[sizeof($mailList)]= $mailsAdmin[$i]['email'];
  516 + }
506 517 }
507 518 }
508 519  
509   - //mail admin de reference (ici appele gestionnaire)
510   - if ($action != 'statusValidated' && $action != 'statusArchived') {
511   - $mailsAdmin = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration'])->toArray();
512   - for($i = 0; $i < sizeof($mailsAdmin); $i++) {
513   - $mailList[sizeof($mailList)]= $mailsAdmin[$i]['email'];
  520 + //Si l'envoi à la liste spécifiée est activé :
  521 + if ($configuration->envoi_mail_guests) {
  522 + //mail aux adresses specifiees dans la config
  523 + for($i = 0; $i < 11; $i++) {
  524 + if ($configuration['emailGuest'.$i]) $mailList[sizeof($mailList)] = $configuration['emailGuest'.$i];
  525 + // Le if vérifie que la ligne soit pas null
514 526 }
515   - }
516   -
517   - //de mail aux adresses specifiees dans la config
518   - for($i = 0; $i < 11; $i++) {
519   - if ($configuration['emailGuest'.$i]) $mailList[sizeof($mailList)] = $configuration['emailGuest'.$i];
520   - // Le if vérifie que la ligne soit pas null
521   - }
  527 + }
522 528  
523 529 //On dedoublonne la liste des mails, c'pas tres cool de se faire spam 2-3 fois pour la meme action sur le meme materiel, non mais !
524 530 $List = array_unique($mailList);
... ...
src/Template/Configurations/edit.ctp
... ... @@ -52,8 +52,9 @@
52 52 echo '<span style="text-decoration: underline;">Emails</span>';
53 53 echo '</h3>';
54 54 echo '<div id="emprunts" style="margin-bottom: 20px;">';
55   - echo $this->Form->input('envoi_mail', ['label' => 'Activer l\'envoi des mails']);
  55 + echo $this->Form->input('envoi_mail', ['label' => 'Activer l\'envoi des mails général']);
56 56 echo $this->Form->input('sender_mail', ['label' => 'Attribut "sender" (mail)']);
  57 + echo $this->Form->input('envoi_mail_guests', ['label' => 'Activer l\'envoi des mails pour la liste spécifique ci-dessous']);
57 58 echo $this->Form->input('emailGuest1', ['label' => 'Mail guest 1']);
58 59 echo $this->Form->input('emailGuest2', ['label' => 'Mail guest 2']);
59 60 echo $this->Form->input('emailGuest3', ['label' => 'Mail guest 3']);
... ...
src/Template/Configurations/view.ctp
... ... @@ -32,10 +32,17 @@
32 32 }else {
33 33 $ldap="Non";
34 34 }
  35 +
35 36 if(h($configurationObj->envoi_mail) == 0) {
36   - $local="Non";
  37 + $mail_general="Non";
  38 + }else {
  39 + $mail_general="Oui";
  40 + }
  41 +
  42 + if(h($configurationObj->envoi_mail_guests) == 0) {
  43 + $mail_guests="Non";
37 44 }else {
38   - $local="Oui";
  45 + $mail_guests="Oui";
39 46 }
40 47  
41 48 if(h($configurationObj->numero_labo_sans_annee) == 1) {
... ... @@ -102,8 +109,9 @@
102 109 echo '<div id="emprunts" style="margin-bottom: 20px;">';
103 110 echo '<table>';
104 111 echo '<tr><th style="width: 250px;"></th><th></th></tr>';
105   - $displayElement(__('Activer l\'envoi des mails'), $local);
  112 + $displayElement(__('Activer l\'envoi des mails général'), $mail_general);
106 113 $displayElement(__('Attribut "sender" (mail)'), h($configurationObj->sender_mail));
  114 + $displayElement(__('Activer l\'envoi des mails pour la liste spécifique ci-dessous'), $mail_guests);
107 115 $displayElement(__('Mail guest 1'), h($configurationObj->emailGuest1));
108 116 $displayElement(__('Mail guest 2'), h($configurationObj->emailGuest2));
109 117 $displayElement(__('Mail guest 3'), h($configurationObj->emailGuest3));
... ...