diff --git a/database/update/db-update-2017-05-19.sh b/database/update/db-update-2017-05-19.sh new file mode 100644 index 0000000..b497799 --- /dev/null +++ b/database/update/db-update-2017-05-19.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Pour Mac OS recent (10.10, Yosemite), la syntaxe du SED est differente +# Il faut donc faire une copie de ce fichier et transformer les instructions sed a l'interieur +# Pour cela, il suffit d'executer ces 2 lignes : +# cp ce_script.sh ce_script_macosx.sh +# sed -e "s/ -i / -i '' /" -i '' ce_script_macosx.sh + +if [ ! -f ../../config/app.php ] ; then +echo "Vous devez executer ce script depuis le dossier database/update/" +exit 1 +fi + + +# Get login, pass, dbname, and hostname +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4) +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4) +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4) +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4) + + +cp -p ./script_sql/db-update-2017-05-19.sql ./script_sql/db-update-2017-05-19-build.sql + +# Execute sql update script +sed -e "s/database/$database/" -i ./script_sql/db-update-2017-05-19-build.sql +mysql --user=$username --password=$password -h $host < ./script_sql/db-update-2017-05-19-build.sql + +# Delete cakephp cache +sudo rm ../../tmp/cache/models/* +sudo rm ../../tmp/cache/persistent/* + +sudo chmod -R 777 ../../tmp +sudo chmod -R 777 ../../vendor +sudo chmod -R 777 ../../webroot diff --git a/database/update/script_sql/db-update-2017-05-19.sql b/database/update/script_sql/db-update-2017-05-19.sql new file mode 100644 index 0000000..6866f69 --- /dev/null +++ b/database/update/script_sql/db-update-2017-05-19.sql @@ -0,0 +1,3 @@ +use database; + +ALTER TABLE `configurations` ADD `envoi_mail_guests` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `envoi_mail` ; diff --git a/src/Controller/AppController.php b/src/Controller/AppController.php index 6347739..2035ed5 100755 --- a/src/Controller/AppController.php +++ b/src/Controller/AppController.php @@ -427,7 +427,8 @@ class AppController extends Controller $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first(); $action = $this->request->params['action']; // add or edit or delete or ... - if(!$configuration->envoi_mail) return null; + // Si les deux cases "Activer l'envoi des mails.." sont décochée, on se fatigue pas à exécuter la fonction + if(!$configuration->envoi_mail && !$configuration->envoi_mail_guests) return null; // On détermine le message et le sujet du mail en fonction de l'action effectuee if($idObj != null || $nomObj != null) { @@ -481,44 +482,49 @@ class AppController extends Controller // Et maintenant on construit la liste de mails ... $mailList = array(); - - //mail owner - if($idObj != null) $mailList[0] = $materiel->email_responsable; - else $mailList[0] = $mailOwner; - - //mail resp - $mailsRespMetier = null; - $mailsRespMetier = null; - - if ($idObj != null){ - 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(); - 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(); - } else { - if ($groupesMetier != null) $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $groupesMetier])->toArray(); - if ($groupesThematique != null) $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupe_thematique_id =' => $groupesThematique])->toArray(); - } - // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe - - if ($mailsRespMetier != null && $mailsRespMetier != null) { - $mailResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique)); - for($i = 0; $i < sizeof($mailsResp); $i++) { - $mailList[sizeof($mailList)]= $mailsResp[$i]['email']; + // Si l'envoi général est activé : + if ($configuration->envoi_mail) { + //mail owner + if($idObj != null) $mailList[0] = $materiel->email_responsable; + else $mailList[0] = $mailOwner; + + //mail resp + $mailsRespMetier = null; + $mailsRespMetier = null; + + if ($idObj != null){ + 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(); + 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(); + } else { + if ($groupesMetier != null) $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $groupesMetier])->toArray(); + if ($groupesThematique != null) $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupe_thematique_id =' => $groupesThematique])->toArray(); + } + // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe + + if ($mailsRespMetier != null && $mailsRespMetier != null) { + $mailResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique)); + for($i = 0; $i < sizeof($mailsResp); $i++) { + $mailList[sizeof($mailList)]= $mailsResp[$i]['email']; + } + } + + //mail admin de reference (ici appele gestionnaire) + if ($action != 'statusValidated' && $action != 'statusArchived') { + $mailsAdmin = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration'])->toArray(); + for($i = 0; $i < sizeof($mailsAdmin); $i++) { + $mailList[sizeof($mailList)]= $mailsAdmin[$i]['email']; + } } } - //mail admin de reference (ici appele gestionnaire) - if ($action != 'statusValidated' && $action != 'statusArchived') { - $mailsAdmin = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration'])->toArray(); - for($i = 0; $i < sizeof($mailsAdmin); $i++) { - $mailList[sizeof($mailList)]= $mailsAdmin[$i]['email']; + //Si l'envoi à la liste spécifiée est activé : + if ($configuration->envoi_mail_guests) { + //mail aux adresses specifiees dans la config + for($i = 0; $i < 11; $i++) { + if ($configuration['emailGuest'.$i]) $mailList[sizeof($mailList)] = $configuration['emailGuest'.$i]; + // Le if vérifie que la ligne soit pas null } - } - - //de mail aux adresses specifiees dans la config - for($i = 0; $i < 11; $i++) { - if ($configuration['emailGuest'.$i]) $mailList[sizeof($mailList)] = $configuration['emailGuest'.$i]; - // Le if vérifie que la ligne soit pas null - } + } //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 ! $List = array_unique($mailList); diff --git a/src/Template/Configurations/edit.ctp b/src/Template/Configurations/edit.ctp index ef999b1..8ccf1a9 100644 --- a/src/Template/Configurations/edit.ctp +++ b/src/Template/Configurations/edit.ctp @@ -52,8 +52,9 @@ echo 'Emails'; echo ''; echo '
'; - echo $this->Form->input('envoi_mail', ['label' => 'Activer l\'envoi des mails']); + echo $this->Form->input('envoi_mail', ['label' => 'Activer l\'envoi des mails général']); echo $this->Form->input('sender_mail', ['label' => 'Attribut "sender" (mail)']); + echo $this->Form->input('envoi_mail_guests', ['label' => 'Activer l\'envoi des mails pour la liste spécifique ci-dessous']); echo $this->Form->input('emailGuest1', ['label' => 'Mail guest 1']); echo $this->Form->input('emailGuest2', ['label' => 'Mail guest 2']); echo $this->Form->input('emailGuest3', ['label' => 'Mail guest 3']); diff --git a/src/Template/Configurations/view.ctp b/src/Template/Configurations/view.ctp index 8719479..1ff1132 100644 --- a/src/Template/Configurations/view.ctp +++ b/src/Template/Configurations/view.ctp @@ -32,10 +32,17 @@ }else { $ldap="Non"; } + if(h($configurationObj->envoi_mail) == 0) { - $local="Non"; + $mail_general="Non"; + }else { + $mail_general="Oui"; + } + + if(h($configurationObj->envoi_mail_guests) == 0) { + $mail_guests="Non"; }else { - $local="Oui"; + $mail_guests="Oui"; } if(h($configurationObj->numero_labo_sans_annee) == 1) { @@ -102,8 +109,9 @@ echo '
'; echo ''; echo ''; - $displayElement(__('Activer l\'envoi des mails'), $local); + $displayElement(__('Activer l\'envoi des mails général'), $mail_general); $displayElement(__('Attribut "sender" (mail)'), h($configurationObj->sender_mail)); + $displayElement(__('Activer l\'envoi des mails pour la liste spécifique ci-dessous'), $mail_guests); $displayElement(__('Mail guest 1'), h($configurationObj->emailGuest1)); $displayElement(__('Mail guest 2'), h($configurationObj->emailGuest2)); $displayElement(__('Mail guest 3'), h($configurationObj->emailGuest3)); -- libgit2 0.21.2