Commit 6441f31558c5cd6c8788d7bb32bf2296307ca758

Authored by Thibaud Ajas
1 parent de013b4c

Bugfixes, améliorations visuelles du site et réadaptation de la fonctionnalité d…

…'envoi de mails, beaucoup plus simple à utiliser
database/labinvent_2.1_12-05-16.sql
... ... @@ -346,7 +346,7 @@ CREATE TABLE IF NOT EXISTS `configurations` (
346 346 `hasPrinter` tinyint(1) DEFAULT NULL,
347 347 `nom_groupe_thematique` varchar(50) DEFAULT 'Groupe thematique',
348 348 `nom_groupe_metier` varchar(50) DEFAULT 'Groupe metier',
349   - `envoi_mail_management_dev` tinyint(1) NOT NULL DEFAULT 1,
  349 + `envoi_mail` tinyint(1) NOT NULL DEFAULT 0,
350 350 `sender_mail` varchar(500) DEFAULT 'labinvent@irap.omp.eu',
351 351 `emailGuest1` varchar(45) DEFAULT NULL,
352 352 `emailGuest2` varchar(45) DEFAULT NULL,
... ... @@ -448,44 +448,8 @@ Insert into type_documents(nom) values ('Certificat de conformité');
448 448 Insert into type_documents(nom) values ('Manuel d\'utilisation');
449 449  
450 450 -- Insertion par défaut pour la table configuration
451   -Insert into `configurations`(
452   -`nom`,
453   -`mode_install`,
454   -`mode_debug`,
455   -`use_ldap`,
456   -`host_ldap`,
457   -`port_ldap`,
458   -`authentificationType_ldap`,
459   -`baseDn_ldap`,
460   -`filter_ldap`,
461   -`labName`,
462   -`labNameShort`,
463   -`labPresent`,
464   -`labUmr`,
465   -`hasPrinter`,
466   -`envoi_mail_management_dev`
467   -`emailGuest1`,
468   -`emailGuest2`,
469   -`emailGuest3`)
470   -values (
471   -'default',
472   -'1',
473   -'0',
474   -'0',
475   -'',
476   -'',
477   -'xxx',
478   -'',
479   -'',
480   -'LABONAME',
481   -'LABO',
482   -'du ',
483   -'',
484   -'0',
485   -'0',
486   -'',
487   -'',
488   -'');
  451 +Insert into `configurations`(`nom`, `mode_install`, `mode_debug`, `use_ldap`, `host_ldap`, `port_ldap`, `authentificationType_ldap`, `baseDn_ldap`, `filter_ldap`, `labName`, `labNameShort`, `labPresent`, `labUmr`, `hasPrinter`, `emailGuest1`, `emailGuest2`, `emailGuest3`)
  452 +values ('default', '1', '0', '0', '', '', 'xxx', '', '', 'LABONAME', 'LABO', 'du ', '', '0', '', '', '');
489 453  
490 454  
491 455  
... ...
database/update/db-update-2017-05-18.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-18.sql ./script_sql/db-update-2017-05-18-build.sql
  23 +
  24 +# Execute sql update script
  25 +sed -e "s/database/$database/" -i ./script_sql/db-update-2017-05-18-build.sql
  26 +mysql --user=$username --password=$password -h $host < ./script_sql/db-update-2017-05-18-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-18.sql 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +use database;
  2 +
  3 +ALTER TABLE `configurations` CHANGE `envoi_mail_management_dev` `envoi_mail` TINYINT( 1 ) NOT NULL DEFAULT '0';
... ...
src/Controller/AppController.php
... ... @@ -31,6 +31,7 @@ use PhpParser\Node\Expr\Include_;
31 31 */
32 32 class AppController extends Controller
33 33 {
  34 + public $confLabinvent;
34 35  
35 36 /**
36 37 * Initialization hook method.
... ... @@ -58,6 +59,7 @@ class AppController extends Controller
58 59 'action' => 'home',
59 60 ]
60 61 ]);
  62 + $this->confLabinvent = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
61 63 }
62 64  
63 65  
... ... @@ -70,7 +72,7 @@ class AppController extends Controller
70 72 */
71 73 public function isAuthorized($user)
72 74 {
73   - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  75 + $configuration = $this->confLabinvent;
74 76 $role = TableRegistry::get('Users')->find()->where(['username' => $user[$configuration->authentificationType_ldap][0]])->first()['role'];
75 77  
76 78 $action = $this->request->params['action'];
... ... @@ -201,194 +203,194 @@ class AppController extends Controller
201 203 * @param string $message
202 204 * @param string[] $to
203 205 */
204   - public function sendEmailTo($subject, $message, $to = null) {
  206 +// public function sendEmailTo($subject, $message, $to = null) {
205 207  
206   - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  208 +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
207 209  
208   - if ($to != null && !$configuration->test) {
  210 +// if ($to != null && !$configuration->test) {
209 211  
210   - for($i = 0; $i < sizeof($to); $i++) {
  212 +// for($i = 0; $i < sizeof($to); $i++) {
211 213  
212 214  
213   - if (filter_var($to[$i], FILTER_VALIDATE_EMAIL)) {
214   - $email = new Email();
  215 +// if (filter_var($to[$i], FILTER_VALIDATE_EMAIL)) {
  216 +// $email = new Email();
215 217  
216   - $etiquetteFrom = explode("@", $configuration->sender_mail);
  218 +// $etiquetteFrom = explode("@", $configuration->sender_mail);
217 219  
218   - if($configuration->envoi_mail_management_dev) {
219   - $email->transport('dev')
220   - ->from([$configuration->sender_mail => $etiquetteFrom[0]])
221   - ->to($to[$i])
222   - ->subject("[LabInvent] ".$subject)
223   - ->send($message);
224   - } else {
225   - $email->transport('default')
226   - ->from([$configuration->sender_mail => $etiquetteFrom[0]])
227   - ->to($to[$i])
228   - ->subject("[LabInvent] ".$subject)
229   - ->send($message);
230   - }
231   - }
  220 +// if($configuration->envoi_mail_management_dev) {
  221 +// $email->transport('dev')
  222 +// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  223 +// ->to($to[$i])
  224 +// ->subject("[LabInvent] ".$subject)
  225 +// ->send($message);
  226 +// } else {
  227 +// $email->transport('default')
  228 +// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  229 +// ->to($to[$i])
  230 +// ->subject("[LabInvent] ".$subject)
  231 +// ->send($message);
  232 +// }
  233 +// }
232 234  
233   - }
234   - }
  235 +// }
  236 +// }
235 237  
236   - }
  238 +// }
237 239  
238   - /**
239   - * Envoi d'un email à la gestion (et aux devs) pour prévenir qu'un matériel a été créé ou modifié
240   - * (cf howto dans http://book.cakephp.org/2.0/fr/core-utility-libraries/email.html)
241   - * @param string $subject
242   - * @param string $message
243   - */
244   - public function sendEmailToManagementWith($subject, $message) {
  240 +// /**
  241 +// * Envoi d'un email à la gestion (et aux devs) pour prévenir qu'un matériel a été créé ou modifié
  242 +// * (cf howto dans http://book.cakephp.org/2.0/fr/core-utility-libraries/email.html)
  243 +// * @param string $subject
  244 +// * @param string $message
  245 +// */
  246 +// public function sendEmailToManagementWith($subject, $message) {
245 247  
246   - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  248 +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
247 249  
248   - for($i = 1; $i < 11; $i++) {
249   - $t = 'emailGuest'.$i;
250   - $to = $configuration->$t;
  250 +// for($i = 1; $i < 11; $i++) {
  251 +// $t = 'emailGuest'.$i;
  252 +// $to = $configuration->$t;
251 253  
252   - if ($to != null && !$configuration->test) {
253   - if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
254   - $email = new Email();
  254 +// if ($to != null && !$configuration->test) {
  255 +// if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
  256 +// $email = new Email();
255 257  
256   - $etiquetteFrom = explode("@", $configuration->sender_mail);
  258 +// $etiquetteFrom = explode("@", $configuration->sender_mail);
257 259  
258   - if($configuration->envoi_mail_management_dev) {
259   - $email->transport('dev')
260   - ->from([$configuration->sender_mail => $etiquetteFrom[0]])
261   - ->to($to)
262   - ->subject("[LabInvent] ".$subject)
263   - ->send($message);
264   - } else {
265   - $email->transport('default')
266   - ->from([$configuration->sender_mail => $etiquetteFrom[0]])
267   - ->to($to)
268   - ->subject("[LabInvent] ".$subject)
269   - ->send($message);
270   - }
271   - }
  260 +// if($configuration->envoi_mail_management_dev) {
  261 +// $email->transport('dev')
  262 +// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  263 +// ->to($to)
  264 +// ->subject("[LabInvent] ".$subject)
  265 +// ->send($message);
  266 +// } else {
  267 +// $email->transport('default')
  268 +// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  269 +// ->to($to)
  270 +// ->subject("[LabInvent] ".$subject)
  271 +// ->send($message);
  272 +// }
  273 +// }
272 274  
273   - }
274   - }
  275 +// }
  276 +// }
275 277  
276   - }
  278 +// }
277 279  
278   - public function sendEmailToManagement($idObj = null) {
  280 +// public function sendEmailToManagement($idObj = null) {
279 281  
280   - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  282 +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
281 283  
282   - $userAuth = $this->LdapAuth->user($configuration->authentificationType_ldap)[0];
283   - $controller = substr($this->request->params['controller'], 0, -1); // materiel
284   - $action = $this->request->params['action']; // add or edit or delete or ...
285   - $userName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0];
286   - $userEmail = $this->LdapAuth->user('mail')[0];
287   - $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
288   - if($role == null) $role = 'Utilisateur';
  284 +// $userAuth = $this->LdapAuth->user($configuration->authentificationType_ldap)[0];
  285 +// $controller = substr($this->request->params['controller'], 0, -1); // materiel
  286 +// $action = $this->request->params['action']; // add or edit or delete or ...
  287 +// $userName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0];
  288 +// $userEmail = $this->LdapAuth->user('mail')[0];
  289 +// $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
  290 +// if($role == null) $role = 'Utilisateur';
289 291  
290   - $modelName = $this->modelClass; // 'Materiels'
291   - $id = $idObj;
  292 +// $modelName = $this->modelClass; // 'Materiels'
  293 +// $id = $idObj;
292 294  
293   - switch ($action) {
294   - case 'add':
295   - $actionFrench = ['Création d\'un ', 'été créé'];
296   - break;
297   - case 'edit':
298   - $actionFrench = ['Modification d\'un ', 'été modifié'];
299   - break;
300   - case 'delete':
301   - $actionFrench = ['Suppression d\'un ', 'été supprimé'];
302   - break;
303   - case 'statusValidated':
304   - $actionFrench = ['Validation d\'un ', 'été validé'];
305   - break;
306   - case 'statusToBeArchived':
307   - $actionFrench = ['Demande Archivage d\'un ', 'été demandé pour archivage'];
308   - break;
309   - case 'statusArchived':
310   - $actionFrench = ['Archivage d\'un ', 'été archivé'];
311   - break;
312   - case 'setLabelIsPlaced':
313   - $actionFrench = ['Etiquette posé sur un ', 'reçu une étiquette'];
314   - break;
315   - default:
316   - $actionFrench = [$action.' d\'un ', 'été '.$action];
317   - break;
318   - }
319   - $doneBy = $userName." (".$userEmail.", login=".$userAuth.", profil=".$role.").";
  295 +// switch ($action) {
  296 +// case 'add':
  297 +// $actionFrench = ['Création d\'un ', 'été créé'];
  298 +// break;
  299 +// case 'edit':
  300 +// $actionFrench = ['Modification d\'un ', 'été modifié'];
  301 +// break;
  302 +// case 'delete':
  303 +// $actionFrench = ['Suppression d\'un ', 'été supprimé'];
  304 +// break;
  305 +// case 'statusValidated':
  306 +// $actionFrench = ['Validation d\'un ', 'été validé'];
  307 +// break;
  308 +// case 'statusToBeArchived':
  309 +// $actionFrench = ['Demande Archivage d\'un ', 'été demandé pour archivage'];
  310 +// break;
  311 +// case 'statusArchived':
  312 +// $actionFrench = ['Archivage d\'un ', 'été archivé'];
  313 +// break;
  314 +// case 'setLabelIsPlaced':
  315 +// $actionFrench = ['Etiquette posé sur un ', 'reçu une étiquette'];
  316 +// break;
  317 +// default:
  318 +// $actionFrench = [$action.' d\'un ', 'été '.$action];
  319 +// break;
  320 +// }
  321 +// $doneBy = $userName." (".$userEmail.", login=".$userAuth.", profil=".$role.").";
320 322  
321   - $subject = $actionFrench[0].$controller;
  323 +// $subject = $actionFrench[0].$controller;
322 324  
323   - if($id != null) {
324   - $entityName = TableRegistry::get($modelName)->find('all')->where(['id =' => $id])->first();
  325 +// if($id != null) {
  326 +// $entityName = TableRegistry::get($modelName)->find('all')->where(['id =' => $id])->first();
325 327  
326   - if($modelName == 'Materiels') {
327   - $entityName = $entityName['designation'];
328   - }
329   - else if ($modelName == 'Suivis' || $modelName == 'Emprunts') {
330   - $entityName = $entityName['id'];
331   - }
332   - else {
333   - $entityName = $entityName['nom'];
334   - }
335   - }
336   - else {
337   - $entityName = NULL;
338   - }
  328 +// if($modelName == 'Materiels') {
  329 +// $entityName = $entityName['designation'];
  330 +// }
  331 +// else if ($modelName == 'Suivis' || $modelName == 'Emprunts') {
  332 +// $entityName = $entityName['id'];
  333 +// }
  334 +// else {
  335 +// $entityName = $entityName['nom'];
  336 +// }
  337 +// }
  338 +// else {
  339 +// $entityName = NULL;
  340 +// }
339 341  
340   - $message = $this->getArticle().$controller." ".$entityName." (id=".$id.") a ".$actionFrench[1]." par ".$doneBy;
  342 +// $message = $this->getArticle().$controller." ".$entityName." (id=".$id.") a ".$actionFrench[1]." par ".$doneBy;
341 343  
342   - $this->sendEmailToManagementWith($subject, $message);
  344 +// $this->sendEmailToManagementWith($subject, $message);
343 345  
344   - }
  346 +// }
345 347  
346   - /**
347   - * Envoi d'un email au propriétaire pour prévenir qu'un matériel a été créé
348   - * @param string $subject
349   - * @param string $message
350   - */
351   - public function sendEmailToCreate($idObj = null) {
  348 +// /**
  349 +// * Envoi d'un email au propriétaire pour prévenir qu'un matériel a été créé
  350 +// * @param string $subject
  351 +// * @param string $message
  352 +// */
  353 +// public function sendEmailToCreate($idObj = null) {
352 354  
353   - $id = $idObj;
  355 +// $id = $idObj;
354 356  
355   - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
356   - $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $id])->first();
  357 +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  358 +// $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $id])->first();
357 359  
358   - $createurName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0];
359   - $createurEmail = $this->LdapAuth->user('mail')[0];
360   - $toEmail = $materiel->email_responsable;
  360 +// $createurName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0];
  361 +// $createurEmail = $this->LdapAuth->user('mail')[0];
  362 +// $toEmail = $materiel->email_responsable;
361 363  
362   - $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
363   - if($role == null) $role = 'Utilisateur';
  364 +// $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
  365 +// if($role == null) $role = 'Utilisateur';
364 366  
365   - $subject = 'Ajout d\'un matériel';
366   - $message = $createurName.' (email = '.$createurEmail.', role = '.$role.') a ajouté le matériel "'.$materiel->designation.'" ('.$materiel->numero_laboratoire.') et vous a nommé propriétaire de ce matériel.';
  367 +// $subject = 'Ajout d\'un matériel';
  368 +// $message = $createurName.' (email = '.$createurEmail.', role = '.$role.') a ajouté le matériel "'.$materiel->designation.'" ('.$materiel->numero_laboratoire.') et vous a nommé propriétaire de ce matériel.';
367 369  
368   - if ($toEmail != null && !$configuration->test) {
369   - if (filter_var($toEmail, FILTER_VALIDATE_EMAIL)) {
370   - $email = new Email();
  370 +// if ($toEmail != null && !$configuration->test) {
  371 +// if (filter_var($toEmail, FILTER_VALIDATE_EMAIL)) {
  372 +// $email = new Email();
371 373  
372   - $etiquetteFrom = explode("@", $configuration->sender_mail);
  374 +// $etiquetteFrom = explode("@", $configuration->sender_mail);
373 375  
374   - if($configuration->envoi_mail_management_dev) {
375   - $email->transport('dev')
376   - ->from([$configuration->sender_mail => $etiquetteFrom[0]])
377   - ->to($toEmail)
378   - ->subject("[LabInvent] ".$subject)
379   - ->send($message);
380   - } else {
381   - $email->transport('default')
382   - ->from([$configuration->sender_mail => $etiquetteFrom[0]])
383   - ->to($toEmail)
384   - ->subject("[LabInvent] ".$subject)
385   - ->send($message);
386   - }
387   - }
  376 +// if($configuration->envoi_mail_management_dev) {
  377 +// $email->transport('dev')
  378 +// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  379 +// ->to($toEmail)
  380 +// ->subject("[LabInvent] ".$subject)
  381 +// ->send($message);
  382 +// } else {
  383 +// $email->transport('default')
  384 +// ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  385 +// ->to($toEmail)
  386 +// ->subject("[LabInvent] ".$subject)
  387 +// ->send($message);
  388 +// }
  389 +// }
388 390  
389   - }
  391 +// }
390 392  
391   - }
  393 +// }
392 394  
393 395  
394 396 static function isLabinventDebugMode() {
... ... @@ -405,129 +407,161 @@ class AppController extends Controller
405 407 // Les fonctions suivantes sont en cours de developpement
406 408 /**
407 409 * Envoi un mail avec un sujet, contenant un message à destination d'une liste de mails, selon l'action effectuée.
408   - * @param idObj -> ID du matériel concerné
409   - * @param nomObj -> A utiliser uniquement dans le cadre d'un supression de matériel
  410 + *
  411 + * @param $idObj : ID du matériel concerné
  412 + * @param $nomObj : A utiliser uniquement dans le cadre d'une supression de matériel, et mettre idObj à null
  413 + * @param $mailOwner : Idem
  414 + * @param $groupesMetier : Idem
  415 + * @param $groupesThematique : Idem
410 416 */
411   -// public function sendEmail($idObj = null, $nomObj = null) {
412   -// /*
413   -// * $_SESSION['Auth']['User'] pour retrouver TOUTES les infos de la session courante (tout est du string) :
414   -// * nom[sn]
415   -// * prennom[givenname]
416   -// * mail[mail]
417   -// * login[xxx]
418   -// * mdp[userpassword]
419   -// */
  417 + public function sendEmail($idObj, $nomObj = null, $mailOwner = null, $groupesMetier = null, $groupesThematique = null) {
  418 + /*
  419 + * $_SESSION['Auth']['User'] pour retrouver TOUTES les infos de la session courante (tout est du string) :
  420 + * nom['sn'][0]
  421 + * prenom['givenname'][0]
  422 + * mail['mail'][0]
  423 + * login['xxx'][0] /!\ Ce champ est suceptible de changer de nom, dans les tests ce champ est ['cn'][0]
  424 + * mdp['userpassword'][0]
  425 + */
  426 +
  427 + $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  428 + $action = $this->request->params['action']; // add or edit or delete or ...
420 429  
421   -// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
422   -// $action = $this->request->params['action']; // add or edit or delete or ...
  430 + if(!$configuration->envoi_mail) return null;
423 431  
424   -// if($idObj != null || $nomObj != null) {
  432 + // On détermine le message et le sujet du mail en fonction de l'action effectuee
  433 + if($idObj != null || $nomObj != null) {
425 434  
426   -// if($idObj != null) $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $idObj])->first();
427   -
428   -// Switch ($action) {
429   -// case 'add':
430   -// $subject = "Ajout d'un matériel";
431   -// $actionneur = $materiel->nom_createur;
432   -// $nom_materiel = $materiel->designation;
433   -// $msg = "$actionneur a ajouté le matériel $nom_materiel";
434   -// break;
435   -// case 'edit':
436   -// $subject = "Modification d'un matériel";
437   -// $actionneur= $materiel->nom_modificateur;
438   -// $nom_materiel = $materiel->designation;
439   -// $msg = "$actionneur a modifié le matériel $nom_materiel";
440   -// break;
441   -// case 'delete':
442   -// $subject = "Suppression d'un matériel";
443   -// $actionneur= $_SESSION['Auth']['User']['givenname'].' '.$_SESSION['Auth']['User']['sn'];
444   -// $nom_materiel = $nomObj;
445   -// $msg = "$actionneur a supprimé le matériel $nom_materiel";
446   -// break;
447   -// case 'statusValidated':
448   -// $subject = "Validation d'un matériel";
449   -// $actionneur= $_SESSION['Auth']['User']['givenname'].' '.$_SESSION['Auth']['User']['sn'];
450   -// $nom_materiel = $materiel->designation;
451   -// $msg = "$actionneur a validé le matériel $nom_materiel";
452   -// break;
453   -// case 'statusToBeArchived':
454   -// $subject = "Demande d'archivage d'un matériel";
455   -// $actionneur= $_SESSION['Auth']['User']['givenname'].' '.$_SESSION['Auth']['User']['sn'];
456   -// $nom_materiel = $materiel->designation;
457   -// $msg = "$actionneur a demandé l'archivage du matériel $nom_materiel";
458   -// break;
459   -// case 'statusArchived':
460   -// $subject = "Archivage d'un matériel";
461   -// $actionneur= $_SESSION['Auth']['User']['givenname'].' '.$_SESSION['Auth']['User']['sn'];
462   -// $nom_materiel = $materiel->designation;
463   -// $msg = "$actionneur a archivé le matériel $nom_materiel";
464   -// break;
465   -// case 'setLabelIsPlaced':
466   -// $subject = "Etiquette posée sur un matériel";
467   -// $msg = "Etiquette posée sur le matériel $nom_materiel";
468   -// break;
469   -// default:
470   -// $subject = "Action \"$action\" sur un matériel";
471   -// $actionneur= $_SESSION['Auth']['User']['givenname'].' '.$_SESSION['Auth']['User']['sn'];
472   -// $nom_materiel = $materiel->designation;
473   -// $msg = "$actionneur a effectué l'action \"$action\" sur le matériel $nom_materiel";
474   -// break;
475   -// }
  435 + if($idObj != null) $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $idObj])->first();
  436 + $actionneur= $_SESSION['Auth']['User']['givenname'][0].' '.$_SESSION['Auth']['User']['sn'][0];
  437 + Switch ($action) {
  438 + case 'add':
  439 + $subject = "Ajout d'un matériel";
  440 + $actionneur = $materiel->nom_createur;
  441 + $nom_materiel = $materiel->designation;
  442 + $msg = "$actionneur a ajouté le matériel $nom_materiel";
  443 + break;
  444 + case 'edit':
  445 + $subject = "Modification d'un matériel";
  446 + $actionneur= $materiel->nom_modificateur;
  447 + $nom_materiel = $materiel->designation;
  448 + $msg = "$actionneur a modifié le matériel $nom_materiel";
  449 + break;
  450 + case 'delete':
  451 + $subject = "Suppression d'un matériel";
  452 + $nom_materiel = $nomObj;
  453 + $msg = "$actionneur a supprimé le matériel $nom_materiel";
  454 + break;
  455 + case 'statusValidated':
  456 + $subject = "Validation d'un matériel";
  457 + $nom_materiel = $materiel->designation;
  458 + $msg = "$actionneur a validé le matériel $nom_materiel";
  459 + break;
  460 + case 'statusToBeArchived':
  461 + $subject = "Demande d'archivage d'un matériel";
  462 + $nom_materiel = $materiel->designation;
  463 + $msg = "$actionneur a demandé l'archivage du matériel $nom_materiel";
  464 + break;
  465 + case 'statusArchived':
  466 + $subject = "Archivage d'un matériel";
  467 + $nom_materiel = $materiel->designation;
  468 + $msg = "$actionneur a archivé le matériel $nom_materiel";
  469 + break;
  470 + case 'setLabelIsPlaced':
  471 + $subject = "Etiquette posée sur un matériel";
  472 + $nom_materiel = $materiel->designation;
  473 + $msg = "Etiquette posée sur le matériel $nom_materiel";
  474 + break;
  475 + default:
  476 + $subject = "Action \"$action\" sur un matériel";
  477 + $nom_materiel = $materiel->designation;
  478 + $msg = "$actionneur a effectué l'action \"$action\" sur le matériel $nom_materiel";
  479 + break;
  480 + }
  481 +
  482 + // Et maintenant on construit la liste de mails ...
  483 + $mailList = array();
  484 +
  485 + //mail owner
  486 + if($idObj != null) $mailList[0] = $materiel->email_responsable;
  487 + else $mailList[0] = $mailOwner;
476 488  
477   -// $mailList = array();
  489 + //mail resp
  490 + $mailsRespMetier = null;
  491 + $mailsRespMetier = null;
478 492  
479   -// //Envoi mail responsable
480   -// $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $materiel->groupes_metier_id])->orWhere(['role =' => 'Responsable', 'groupe_thematique_id =' => $materiel->groupes_thematique_id])->toArray();
481   -// for($i = 0; $i < sizeof($mailsResp); $i++) {
482   -// $mailList[$i] = $mailsResp[$i]['email'];
483   -// }
  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'];
  506 + }
  507 + }
484 508  
485   -// //Envoi mail administratif
486   -// $mailsAdmin = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration'])->toArray();
487   -// $size = sizeof($mailList);
488   -// $sizeMax = sizeof($mailList) + sizeof($mailsAdmin);
489   -// $taille = "$size | $sizeMax";
490   -// for($i = $size; $i < $sizeMax; $i++) {
491   -// $mailList[$i] = $mailsAdmin[$i]['email'];
492   -// }
  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'];
  514 + }
  515 + }
493 516  
494   -// // envoi de mail aux adresses spécifiés dans la config
495   -// for($i = 0; $i < 11; $i++) {
496   -// $mailList[$i + sizeof($mailList) + sizeof($mailsAdmin)] = 'emailGuest'.$i;
497   -// }
498   -
499   -// $j = 0;
500   -// foreach($mailList as $mail) {
501   -// $j += 1;
502   -// $this->sendEmailTo($subject, $msg, $mail, $configuration);
503   -// }
504   -// }
505   -// }
  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 + }
  522 +
  523 + //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 + $List = array_unique($mailList);
  525 +
  526 + // ... Pour envoyer les mails aux personnes concernees
  527 + foreach($List as $mail) {
  528 + //On envoi des mails à toute la liste, sauf pour "l'acteur", il sait ce qu'il a fait, pas besion de le spam non plus hein
  529 + if ($mail != $_SESSION['Auth']['User']['mail'][0]) {
  530 + $role = TableRegistry::get('Users')->find()->select('role')->where(['email =' => $mail])->first()['role'];
  531 + if ($role) $role = 'en tant que '.$role;
  532 + else $role = 'car vous avez demandé à le recevoir. Pour faire retirer votre mail de la liste, veuillez contacter un SuperAdmin';
  533 + $message =$msg."\n\n".'Vous recevez ce message '.$role;
  534 + $this->sendEmailTo("$subject", $message, $mail, $configuration);
  535 + }
  536 + }
  537 + }
  538 + return $List;
  539 + }
506 540  
507   -// private function sendEmailTo($subject, $msg, $mail, $config) {
  541 + // Fonction d'envoi de mails
  542 + private function sendEmailTo($subject, $msg, $mail, $config) {
508 543  
509   -// if ($mail != null && !$config->test) {
510   -// if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
511   -// $email = new Email();
  544 + if ($mail != null && !$config->test) {
  545 + if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
  546 + $email = new Email();
512 547  
513   -// $etiquetteFrom = explode("@", $config->sender_mail);
  548 + $etiquetteFrom = explode("@", $config->sender_mail);
514 549  
515   -// if($config->envoi_mail_management_dev) { // <-- Si la case est cochée
  550 +// if($config->envoi_mail) { // <-- Si la case "Envoi des mails de management en local " est cochée
516 551 // $email->transport('dev')
517 552 // ->from([$config->sender_mail => $etiquetteFrom[0]])
518 553 // ->to($mail)
519 554 // ->subject("[LabInvent] ".$subject)
520 555 // ->send($msg);
521 556 // } else { // <-- Si la case n'est pas cochée
522   -// $email->transport('default')
523   -// ->from([$config->sender_mail => $etiquetteFrom[0]])
524   -// ->to($mail)
525   -// ->subject("[LabInvent] ".$subject)
526   -// ->send($msg);
  557 + $email->transport('default')
  558 + ->from([$config->sender_mail => $etiquetteFrom[0]])
  559 + ->to($mail)
  560 + ->subject("[LabInvent] ".$subject)
  561 + ->send($msg);
527 562 // }
528   -// }
  563 + }
529 564  
530   -// }
531   -// }
532   -
533   -}
  565 + }
  566 + }
  567 +}
534 568 \ No newline at end of file
... ...
src/Controller/ConfigurationsController.php
... ... @@ -3,6 +3,7 @@ namespace App\Controller;
3 3  
4 4 use App\Controller\AppController;
5 5 use Cake\ORM\TableRegistry;
  6 +use Migrations\Table;
6 7  
7 8 /**
8 9 * Configurations Controller
... ... @@ -79,14 +80,15 @@ class ConfigurationsController extends AppController
79 80 if ($this->request->is(['patch', 'post', 'put'])) {
80 81 $configurationObj = $this->Configurations->patchEntity($configurationObj, $this->request->data);
81 82 if ($this->Configurations->save($configurationObj)) {
82   - $this->Flash->success(__('La configuration a bien été sauvegardé.'));
  83 + $this->Flash->success(__('La configuration a bien été sauvegardée.'));
  84 + $this->confLabinvent = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
83 85 if($configurationObj->get('mode_install')) {
84 86 return $this->redirect(['controller' => 'pages', 'action' => 'home']);
85 87 } else {
86 88 return $this->redirect(['action' => 'view', $id]);
87 89 }
88 90 } else {
89   - $this->Flash->error(__('La configuration n\'a pas pu être sauvegardé.'));
  91 + $this->Flash->error(__('La configuration n\'a pas pu être sauvegardée.'));
90 92 }
91 93 }
92 94  
... ...
src/Controller/MaterielsController.php
... ... @@ -171,7 +171,7 @@ class MaterielsController extends AppController
171 171 * @return \Cake\Network\Response|null
172 172 */
173 173 public function index()
174   - {
  174 + {
175 175 // Remplacement de $this->passedArgs[0] (deprecated)
176 176 // Par $this->request->params['pass'][0]
177 177 $condition = '';
... ... @@ -278,51 +278,51 @@ class MaterielsController extends AppController
278 278 *
279 279 * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise.
280 280 */
281   - public function add() {
282   -
  281 + public function add() {
  282 +
283 283 $materiel = $this->Materiels->newEntity();
284 284 if ($this->request->is('post')) {
285 285 $materiel = $this->Materiels->patchEntity($materiel, $this->request->data);
286 286 if ($this->Materiels->save($materiel)) {
287 287 $this->Flash->success(__('Le matériel a bien été ajouté.'));
288 288  
289   - $this->sendEmailToManagement($materiel->id);
  289 +// $this->sendEmailToManagement($materiel->id);
290 290  
291   - if($materiel->nom_createur != $materiel->nom_responsable) {
292   - $this->sendEmailToCreate($materiel->id);
293   - }
  291 +// if($materiel->nom_createur != $materiel->nom_responsable) {
  292 +// $this->sendEmailToCreate($materiel->id);
  293 +// }
294 294  
295   - $message = $materiel->get('nom_createur').' à ajouté le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')';
296   - $subject = 'Ajout de matériel';
297   - $listMails = [];
  295 +// $message = $materiel->get('nom_createur').' à ajouté le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')';
  296 +// $subject = 'Ajout de matériel';
  297 +// $listMails = [];
298 298  
299   - //Envoi mail responsable
300   - $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $materiel->get('groupes_metier_id')])->orWhere(['role =' => 'Responsable', 'groupe_thematique_id =' => $materiel->get('groupes_thematique_id')])->toArray();
301   - $mails = [];
302   - for($i = 0; $i < sizeof($mailsResp); $i++) {
303   - $mails[$i] = $mailsResp[$i]['email'];
304   - }
305   - $this->sendEmailTo('Ajout d\'un matériel', $message, $mails);
  299 +// //Envoi mail responsable
  300 +// $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Responsable', 'groupes_metier_id =' => $materiel->get('groupes_metier_id')])->orWhere(['role =' => 'Responsable', 'groupe_thematique_id =' => $materiel->get('groupes_thematique_id')])->toArray();
  301 +// $mails = [];
  302 +// for($i = 0; $i < sizeof($mailsResp); $i++) {
  303 +// $mails[$i] = $mailsResp[$i]['email'];
  304 +// }
  305 +// $this->sendEmailTo('Ajout d\'un matériel', $message, $mails);
306 306  
307   - //Envoi mail administratif
308   - //$mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->orWhere(['role =' => 'Administration'])->toArray();
309   - $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->toArray();
310   - $mails = [];
311   - for($i = 0; $i < sizeof($mailsResp); $i++) {
312   - $mails[$i] = $mailsResp[$i]['email'];
313   - }
  307 +// //Envoi mail administratif
  308 +// //$mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->orWhere(['role =' => 'Administration'])->toArray();
  309 +// $mailsResp = TableRegistry::get('Users')->find()->select('email')->where(['role =' => 'Administration Plus'])->toArray();
  310 +// $mails = [];
  311 +// for($i = 0; $i < sizeof($mailsResp); $i++) {
  312 +// $mails[$i] = $mailsResp[$i]['email'];
  313 +// }
314 314  
315 315  
316   - // Rajout condition d'envoi de mail ou pas
317   - $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  316 +// // Rajout condition d'envoi de mail ou pas
  317 +// $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
318 318  
319   - if(!$configuration['envoi_mail_management_dev']){ // Si false, on envoie les mails, sinon on les envoie pas
320   - $this->sendEmailTo('Ajout d\'un matériel', $message, $mails);
321   - }
322   -
323   -// $this->sendEmail($materiel->id);
  319 +// if(!$configuration['envoi_mail_management_dev']){ // Si false, on envoie les mails, sinon on les envoie pas
  320 +// $this->sendEmailTo('Ajout d\'un matériel', $message, $mails);
  321 +// }
  322 +
  323 + $this->sendEmail($materiel->id);
324 324  
325   - return $this->redirect(['action' => 'view', $materiel->id]);
  325 +// return $this->redirect(['action' => 'view', $materiel->id]);
326 326 } else {
327 327 $this->Flash->error(__('Le matériel n\'a pas pu être ajouté.'));
328 328 }
... ... @@ -344,6 +344,7 @@ class MaterielsController extends AppController
344 344 $utilisateurs[$users[$i]] = $users[$i];
345 345 }
346 346  
  347 + // Ne pas commenter la ligne suivante, on en a besoin dans add.cpt
347 348 $mail_responsable = TableRegistry::get('Users')->find()->select('email')->where(['username =' => $this->LdapAuth->user($this->request->session()->read('authType'))[0]])->first()['email'];
348 349  
349 350 if(isset($this->request->params['pass'][0])) {
... ... @@ -372,11 +373,12 @@ class MaterielsController extends AppController
372 373 $materiel = $this->Materiels->patchEntity($materiel, $this->request->data);
373 374 if ($this->Materiels->save($materiel)) {
374 375 $this->Flash->success(__('Le matériel a bien été édité.'));
375   - $this->sendEmailToManagement($id);
376   - if($materiel->nom_modificateur != $materiel->nom_responsable) {
377   - $message = $materiel->get('nom_modificateur').' a édité le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')';
378   - $this->sendEmailTo('Modification d\'un matériel', $message, [$materiel->get('email_responsable')]);
379   - }
  376 +// $this->sendEmailToManagement($id);
  377 +// if($materiel->nom_modificateur != $materiel->nom_responsable) {
  378 +// $message = $materiel->get('nom_modificateur').' a édité le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.')';
  379 +// $this->sendEmailTo('Modification d\'un matériel', $message, [$materiel->get('email_responsable')]);
  380 +// }
  381 + $this->sendEmail($id);
380 382 return $this->redirect(['action' => 'view', $id]);
381 383 } else {
382 384 $this->Flash->error(__('Le matériel n\'a pas pu être édité.'));
... ... @@ -491,9 +493,16 @@ class MaterielsController extends AppController
491 493 {
492 494 //$this->request->allowMethod(['post', 'delete']);
493 495 $materiel = $this->Materiels->get($id);
  496 + // On récupère les infos dont on a besoin pour l'envoi de mails AVANT la supression, on s'appelle pas Chuck Norris
  497 + $nom = $materiel->designation;
  498 + $grpMetier = $materiel->groupes_metier_id;
  499 + $mailOwner = $materiel->email_responsable;
  500 + $grpThematique = $materiel->groupes_thematique_id;
  501 +
494 502 if ($this->Materiels->delete($materiel)) {
495 503 $this->Flash->success(__('Le matériel a bien été supprimé.'));
496   - $this->sendEmailToManagement($id);
  504 +// $this->sendEmailToManagement($id);
  505 + $this->sendEmail(null, $nom, $mailOwner, $grpMetier, $grpThematique);
497 506 } else {
498 507 $this->Flash->error(__('Le matériel n\'a pas pu être supprimé.'));
499 508 }
... ... @@ -521,13 +530,18 @@ class MaterielsController extends AppController
521 530 $this->Flash->error('Pour valider un matériel, les champs suivants ne doivent pas être vide : Nom propriétaire, Fournisseur, Numéro de commande, Organisme, prix et date de reception');
522 531 return $this->redirect(['action' => 'edit', $id]);
523 532 }
524   - $message = 'Le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.') a été validé.';
525   - $this->sendEmailTo('Validation d\'un matériel', $message, [$materiel->get('email_responsable')]);
  533 + $role_session = TableRegistry::get('Users')->find()->select('id')->where(['email' => $_SESSION['Auth']['User']['mail'][0], 'role' => 'Administration'])->first();
  534 + if ($role_session) {
  535 + $nom_gest = $_SESSION['Auth']['User']['givenname'][0].' '.$_SESSION['Auth']['User']['sn'][0];
  536 + $materiel->set('nom_gestionnaire', $nom_gest );
  537 + }
  538 +// $message = 'Le matériel "'.$materiel->get('designation').'" ('.$materiel->numero_laboratoire.') a été validé.';
  539 +// $this->sendEmailTo('Validation d\'un matériel', $message, [$materiel->get('email_responsable')]);
526 540 }
527 541  
528 542 if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) {
529 543 $this->Flash->success(__($message));
530   - $this->sendEmailToManagement($id);
  544 +// $this->sendEmailToManagement($id);
531 545 }
532 546 else {
533 547 $this->Flash->error(__('Le statut n\'a pas pu être édité.'));
... ... @@ -545,6 +559,7 @@ class MaterielsController extends AppController
545 559 */
546 560 public function statusValidated($id = null, $from = 'index') {
547 561 $this->statusSetTo('VALIDATED', 'Le matériel a bien été validé', $id, $from);
  562 + $this->sendEmail($id);
548 563 }
549 564  
550 565 /**
... ... @@ -555,6 +570,7 @@ class MaterielsController extends AppController
555 570 */
556 571 public function statusToBeArchived($id = null, $from = 'index') {
557 572 $this->statusSetTo('TOBEARCHIVED', 'La sortie d\'inventaire a bien été demandée', $id, $from);
  573 + $this->sendEmail($id);
558 574 }
559 575  
560 576 /**
... ... @@ -565,6 +581,7 @@ class MaterielsController extends AppController
565 581 */
566 582 public function statusArchived($id = null, $from = 'index') {
567 583 $this->statusSetTo('ARCHIVED', 'Le matériel a bien été sorti de l\'inventaire', $id, $from);
  584 + $this->sendEmail($id);
568 585 }
569 586  
570 587 /**
... ... @@ -1042,14 +1059,15 @@ class MaterielsController extends AppController
1042 1059 $materiel = $this->Materiels->get($id)->set('etiquette', $printed);
1043 1060  
1044 1061 if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) {
1045   - $this->Flash->success(__('L\'étiquette a bien été éditer.'));
  1062 + $this->Flash->success(__('L\'étiquette a bien été éditée.'));
1046 1063 // Envoi email seulement si etiquette posée
1047 1064 if ($printed) {
1048 1065 // $this->sendEmailToManagement($id);
  1066 + $this->sendEmail($id);
1049 1067 }
1050 1068 }
1051 1069 else {
1052   - $this->Flash->error(__('L\'étiquette n\'a pas pu être édité.'));
  1070 + $this->Flash->error(__('L\'étiquette n\'a pas pu être éditée.'));
1053 1071 }
1054 1072  
1055 1073 return $this->redirect($this->referer());
... ...
src/Template/Configurations/edit.ctp
... ... @@ -52,7 +52,7 @@
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_management_dev', ['label' => 'Ne pas envoyer les mails de management']);
  55 + echo $this->Form->input('envoi_mail', ['label' => 'Activer l\'envoi des mails']);
56 56 echo $this->Form->input('sender_mail', ['label' => 'Attribut "sender" (mail)']);
57 57 echo $this->Form->input('emailGuest1', ['label' => 'Mail guest 1']);
58 58 echo $this->Form->input('emailGuest2', ['label' => 'Mail guest 2']);
... ...
src/Template/Configurations/view.ctp
... ... @@ -32,7 +32,7 @@
32 32 }else {
33 33 $ldap="Non";
34 34 }
35   - if(h($configurationObj->envoi_mail_management_dev) == 1) {
  35 + if(h($configurationObj->envoi_mail) == 0) {
36 36 $local="Non";
37 37 }else {
38 38 $local="Oui";
... ... @@ -102,7 +102,7 @@
102 102 echo '<div id="emprunts" style="margin-bottom: 20px;">';
103 103 echo '<table>';
104 104 echo '<tr><th style="width: 250px;"></th><th></th></tr>';
105   - $displayElement(__('Envoi des mails de management en local'), $local);
  105 + $displayElement(__('Activer l\'envoi des mails'), $local);
106 106 $displayElement(__('Attribut "sender" (mail)'), h($configurationObj->sender_mail));
107 107 $displayElement(__('Mail guest 1'), h($configurationObj->emailGuest1));
108 108 $displayElement(__('Mail guest 2'), h($configurationObj->emailGuest2));
... ...
src/Template/Layout/default.ctp
... ... @@ -33,6 +33,9 @@ $cakeDescription = &#39;Labinvent 2&#39;;
33 33 <?= $this->fetch('meta')?>
34 34 <?= $this->fetch('css')?>
35 35 <?= $this->fetch('script')?>
  36 + <style>
  37 + #footer a, #footer p, #footer font { font-size: x-small; }
  38 + </style>
36 39 </head>
37 40 <body>
38 41  
... ... @@ -95,6 +98,8 @@ $cakeDescription = &#39;Labinvent 2&#39;;
95 98 <td id="version">
96 99 <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) -->
97 100 <font color="black">VERSION 2.6.2 (12/05/2017)</font>
  101 + <br/>
  102 + <font color="black"><a href="<?php echo $this->request->webroot ?>webroot/doc/userguide/labinvent2_userguide.pdf" onclick="window.open(this.href); return false;">Documentation utilisateurs</a> | <a href="https://projects.irap.omp.eu/projects/inventirap/wiki/Installation" onclick="window.open(this.href); return false;">Wiki installation</a></font>
98 103 </td>
99 104 </tr>
100 105 </table>
... ...
src/Template/Materiels/add.ctp
... ... @@ -137,11 +137,14 @@ else {
137 137  
138 138 // Modif BD :
139 139 // ALTER TABLE `materiels` ADD `nom_gestionnaire` VARCHAR( 45 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL AFTER `email_responsable` ;
  140 + // Condition pour vérifier que se soit un admin qui est connecté : (!is_null($res)) ?
  141 + $res = TableRegistry::get('Users')->find()->where(['username' => $username, 'role' => 'Administration'])->first();
  142 + $administrateurs = TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom'])->where(['role =' => 'Administration'])->toArray();
140 143 echo $this->Form->input('nom_gestionnaire', [
141   - 'label' => 'Nom du gestionnaire de référence du matériel',
142   - 'empty' => 'Choisir un utilisateur',
143   - 'default' => $username,
144   - 'options' => TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom'])->where(['role =' => 'Administration'])
  144 + 'label' => 'Nom du gestionnaire de référence du matériel',
  145 + 'empty' => 'Choisir un gestionnaire',
  146 + 'default' => $_SESSION['Auth']['User']['sn'][0],
  147 + 'options' => $administrateurs
145 148 ]);
146 149  
147 150 echo $this->Form->input('fournisseur', ['label' => 'Fournisseur', 'default' => $Fournisseur]);
... ... @@ -214,7 +217,7 @@ $(document).ready(function () {
214 217 updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getAll", "Choisir une catégorie");
215 218 else
216 219 updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getBySurCategorie", "Choisir une catégorie");
217   - emptySelectOptions("#sous-categorie-id","Choisir une sous-catégorie");
  220 + emptySelectOptions("#sous-categorie-id","Choisir une sous-catégorie");
218 221 return false;
219 222 });
220 223 });
... ...
src/Template/Materiels/edit.ctp
... ... @@ -226,18 +226,15 @@ if ($IS_VALIDATED)
226 226 'readonly' => true,
227 227 'default' => $mail_responsable
228 228 ]);
229   -
  229 +
230 230 $res = TableRegistry::get('Users')->find()->where(['username' => $username, 'role' => 'Administration'])->first();
231   - $administrateurs = TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom'])->where(['role =' => 'Administration']);
232   - // Condition pour vérifier que se soit un admin qui est connecté : (!is_null($res)) ?
233   - echo $this->Form->input('nom_gestionnaire', [
234   - 'label' => 'Nom du gestionnaire de référence du matériel',
235   - 'disabled' => $isReadonlyField('nom_responsable', $myReadonlyFields),
236   - 'empty' => 'Choisir un gestionnaire',
  231 + $administrateurs = TableRegistry::get('Users')->find('list', [ 'keyField' => 'nom', 'valueField' => 'nom'])->where(['role =' => 'Administration'])->toArray();
  232 + echo $this->Form->input('nom_gestionnaire', [
  233 + 'label' => 'Nom du gestionnaire de référence du matériel',
  234 + 'empty' => 'Choisir un gestionnaire',
  235 + 'default' => $_SESSION['Auth']['User']['sn'][0],
237 236 'options' => $administrateurs
238 237 ]);
239   -
240   -
241 238  
242 239 echo $this->Form->input('fournisseur', [
243 240 'label' => 'Fournisseur',
... ... @@ -324,7 +321,14 @@ if ($IS_VALIDATED)
324 321 ?>
325 322  
326 323 <script type="text/javascript">
327   -
  324 +
  325 +// Mettre un gestionnaire par défaut si c'est un admin qui modifie la fiche. Sinon l'utilisateur aura a le rentrer à la mano
  326 +$(document).ready(function () {
  327 + if ( <?php echo (!is_null($res)) ? true : false ?>) $("#nom-gestionnaire").val("<?php echo $_SESSION['Auth']['User']['sn'][0]?>");
  328 + // Oui, c'est un bâtard entre du JavaScript et du PHP ... Mais au moins ca fonctionne en une seule ligne !
  329 +});
  330 +
  331 +
328 332 /**
329 333 * Event DOMAINE change
330 334 *
... ...
src/Template/Materiels/index.ctp
1 1 <?php
2 2 use Cake\I18n\Time;
3 3 use Cake\I18n\Date;
  4 +use Cake\ORM\TableRegistry;
4 5 ?>
5 6  
6 7  
... ... @@ -82,9 +83,9 @@ if (isset ( $STATUS )) {
82 83  
83 84 // Rajouté par Thibault Ajas, 20/04/2017
84 85 echo $this->Form->create();
85   - echo $this->Form->input('Afficher', [
86   - 'options' => ['20'=> 20, '30'=>30, '50'=>50, '100'=>100, '150'=>150, '200'=>200],
87   - 'onChange' => "changeNbrMateriels(document.getElementById('afficher').options[selectedIndex].value)"
  86 + echo $this->Form->input('aff_par_defaut', [
  87 + 'label' => 'Afficher',
  88 + 'options' => ['20'=> 20, '30'=>30, '50'=>50, '100'=>100, '150'=>150, '200'=>200],
88 89 ]);
89 90 $this->Form->end();
90 91 // Fin ajout
... ... @@ -183,7 +184,7 @@ if (isset ( $STATUS )) {
183 184 echo $this->Html->link('<i class="icon-ok-sign"></i>',
184 185 ['action' => 'statusValidated', $materiel->id],
185 186 ['title' => 'Valider', 'style' => 'margin: 0 2px', 'escape' => false,
186   - 'confirm' => 'Êtes-vous sur de vouloir validé '.$materiel->designation.' ?']);
  187 + 'confirm' => 'Êtes-vous sur de vouloir valider '.$materiel->designation.' ?']);
187 188 }
188 189 else if (h($materiel->status) == 'VALIDATED') {
189 190 echo $this->Html->link('<i class="icon-inbox"></i>',
... ... @@ -323,67 +324,74 @@ if (isset ( $STATUS )) {
323 324  
324 325  
325 326 <script type="text/javascript">
326   -function changeNbrMateriels(nbr) {
327   - var urlDeBase = window.location.href.split("?");
328   - var urlDecoupee = window.location.search.split("&"), i, j; // On sépare la chaine des paramètres en fonction du &
329   - var urlDecoupeeBis = new Array();
330   - var param = 0;
331   - var bool = false;
332   -
333   - for(i=0; i<urlDecoupee.length; ++i) {
334   - urlDecoupeeBis[i] = urlDecoupee[i].split("="); // On sépare les parametres de leurs valeurs
335   - for(j=0; j<urlDecoupeeBis[i].length; ++j){
336   - if(urlDecoupeeBis[i][0] == "aff" || urlDecoupeeBis[i][0] == "?aff") {
337   - bool = true;
338   - param = i; // Si le parametre "aff" est trouvé, on le récupère
339   - break;
  327 +
  328 +// Pour changer l'url lorsque le nombre d'éléments souhaités est modifié
  329 +$(document).ready(function () {
  330 + $("#aff-par-defaut").bind("change", function (event) {
  331 + var nbr=$("#aff-par-defaut :selected").val();
  332 + var urlDeBase = window.location.href.split("?");
  333 + var urlDecoupee = window.location.search.split("&"), i, j; // On sépare la chaine des paramètres en fonction du &
  334 + var urlDecoupeeBis = new Array();
  335 + var param = 0;
  336 + var bool = false;
  337 +
  338 + for(i=0; i<urlDecoupee.length; ++i) {
  339 + urlDecoupeeBis[i] = urlDecoupee[i].split("="); // On sépare les parametres de leurs valeurs
  340 + for(j=0; j<urlDecoupeeBis[i].length; ++j){
  341 + if(urlDecoupeeBis[i][0] == "aff" || urlDecoupeeBis[i][0] == "?aff") {
  342 + bool = true;
  343 + param = i; // Si le parametre "aff" est trouvé, on le récupère
  344 + break;
  345 + }
340 346 }
341 347 }
342   - }
343   -
344   - if(bool) { // Si le parametre recherche a ete trouve, ...
345   - urlDecoupeeBis[param][1] = nbr; //urlDecoupeeBis[i][0] c'est le nom du parametre, et urlDecoupeeBis[i][1] c'est la vaeur associée
346   - var url = "";
347   - for(i=0; i<urlDecoupee.length; ++i) { //... on reconstruit une url propre ...
348   - if(/^\?[a-zA-A0-9]*/.test(urlDecoupeeBis[0][0])) {
349   - if(i!=0) url += "&";
350   - // Sauf pour le 1er parametre, qui lui commence par un "?"
351   - } else url += "&";
352   - url += urlDecoupeeBis[i][0]+"="+urlDecoupeeBis[i][1];
353   - // On reforme les parametres "&nom=valeur" en les concatenant
354   - }
355   - window.location.href = urlDeBase[0]+url; // ... et on fait la redirection
356   - } else if(urlDecoupee[0]=="") window.location.href = window.location.href + '?aff=' + nbr; // Sinon on joute juste le parametre en fin d'url
357   - else window.location.href = window.location.href + '&aff=' + nbr;
  348 +
  349 + if(bool) { // Si le parametre recherche a ete trouve, ...
  350 + urlDecoupeeBis[param][1] = nbr; //urlDecoupeeBis[i][0] c'est le nom du parametre, et urlDecoupeeBis[i][1] c'est la valeur associée
  351 + var url = "";
  352 + for(i=0; i<urlDecoupee.length; ++i) { //... on reconstruit une url propre ...
  353 + if(/^\?[a-zA-A0-9]*/.test(urlDecoupeeBis[0][0])) {
  354 + if(i!=0) url += "&";
  355 + // Sauf pour le 1er parametre, qui lui commence par un "?"
  356 + } else url += "&";
  357 + url += urlDecoupeeBis[i][0]+"="+urlDecoupeeBis[i][1];
  358 + // On reforme les parametres "&nom=valeur" en les concatenant
  359 + }
  360 + window.location.href = urlDeBase[0]+url; // ... et on fait la redirection
  361 + } else if(urlDecoupee[0]=="") window.location.href = window.location.href + '?aff=' + nbr; // Sinon on joute juste le parametre en fin d'url
  362 + else window.location.href = window.location.href + '&aff=' + nbr;
358 363  
359   -}
  364 + });
  365 +});
360 366  
361   -function demarrage(){
  367 +// Pour lire l'url et actualiser l'option sélectionnée
  368 +$(document).ready(function () {
362 369 var affichage = parseInt($_GET('aff'));
363 370 switch(affichage) {
364 371 case 20 :
365   - document.getElementById('afficher').selectedIndex = 0;
  372 + document.getElementById('aff-par-defaut').selectedIndex = 0;
366 373 break;
367 374 case 30 :
368   - document.getElementById('afficher').selectedIndex = 1;
  375 + document.getElementById('aff-par-defaut').selectedIndex = 1;
369 376 break;
370 377 case 50 :
371   - document.getElementById('afficher').selectedIndex = 2;
  378 + document.getElementById('aff-par-defaut').selectedIndex = 2;
372 379 break;
373 380 case 100 :
374   - document.getElementById('afficher').selectedIndex = 3;
  381 + document.getElementById('aff-par-defaut').selectedIndex = 3;
375 382 break;
376 383 case 150 :
377   - document.getElementById('afficher').selectedIndex = 4;
  384 + document.getElementById('aff-par-defaut').selectedIndex = 4;
378 385 break;
379 386 case 200 :
380   - document.getElementById('afficher').selectedIndex = 5;
  387 + document.getElementById('aff-par-defaut').selectedIndex = 5;
381 388 break;
382   - default :
383   - document.getElementById('afficher').selectedIndex = 0;
  389 + default : // Par défaut, lorsque le parametre "aff" n'existe pas, au premier affichage
  390 + $("#aff-par-defaut").val(<?php echo $configuration->aff_par_defaut ?>);
  391 + // On récupère la valeur dans la BD directement, mais en PHP, faut pas déconner
384 392 break;
385 393 }
386   -}
  394 +});
387 395  
388 396 // La fonction suivante permet de recuperer les parametres d’une URL
389 397 function $_GET(param) {
... ... @@ -394,14 +402,12 @@ function $_GET(param) {
394 402 vars[key] = value !== undefined ? value : '';
395 403 }
396 404 );
397   -
  405 +
398 406 if ( param ) {
399 407 return vars[param] ? vars[param] : null;
400 408 }
401 409 return vars;
402 410 }
403 411  
404   -window.onload = demarrage();
405   -
406 412 </script>
407 413  
408 414 \ No newline at end of file
... ...
src/Template/Pages/acls.ctp
... ... @@ -140,7 +140,7 @@
140 140 <p class="P46">ACL (Access Control List)</p>
141 141 <p class="P11">(Etienne Pallier – 24/<span class="T22">06</span>/201<span class="T23">6</span>)</p>
142 142 <p class="P1"> </p>
143   - <p class="P1"> </p>
  143 + <p class="P4">Cette page n'est plus à jour, se référer à <a href="https://docs.google.com/document/d/1-OhEeoi96j6ueUl5NQCQ9ZsTfbJTFw3ZVaWU2iYly_o/edit" onclick="window.open(this.href); return false;">ce document</a> </p>
144 144 <p class="P1"> </p>
145 145 <p class="P1">I – Cycle de vie du statut du matériel</p>
146 146 <p class="P1"> </p>
... ...
src/Template/Pages/home_app.ctp
... ... @@ -12,7 +12,7 @@
12 12  
13 13 echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">';
14 14 echo '<tr><th></th></tr>';
15   - echo '<tr><td> '.$this->Html->link('Voir mes matériels', [
  15 + echo '<tr><td> '.$this->Html->link('Voir les matériels à mon nom', [
16 16 'controller' => 'materiels', 'action' => 'index', 'MY' => $username]).' </td></tr>';
17 17 echo '</table>';
18 18  
... ... @@ -20,9 +20,9 @@
20 20 if (in_array($role, ['Administration', 'Administration Plus'])) {
21 21 echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">';
22 22 echo '<tr><th></th></tr>';
23   - echo '<tr><td> '.$this->Html->link('Voir les matériels à valider', [
  23 + echo '<tr><td> '.$this->Html->link('Voir les matériels à valider dont je suis gestionnaire', [
24 24 'controller' => 'materiels', 'action' => 'index', 'CREATED']).' </td></tr>';
25   - echo '<tr><td> '.$this->Html->link('Voir les matériels à sortir de l\'inventaire', [
  25 + echo '<tr><td> '.$this->Html->link('Voir les matériels à sortir de l\'inventaire dont je suis gestionnaire', [
26 26 'controller' => 'materiels', 'action' => 'index', 'TOBEARCHIVED']).' </td></tr>';
27 27 echo '</table>';
28 28 }
... ... @@ -33,7 +33,7 @@
33 33 echo '<tr><th></th></tr>';
34 34 echo '<tr><td> '.$this->Html->link('Voir les matériels dont je suis responsable', [
35 35 'controller' => 'materiels', 'action' => 'index', 'GM' => $userConnected->groupes_metier_id, 'GT' => $userConnected->groupe_thematique_id]).' </td></tr>';
36   - echo '<tr><td> '.$this->Html->link('Voir les matériels à valider dont je suis responsable', [
  36 + echo '<tr><td> '.$this->Html->link('Voir les matériels à valider dont je suis responsable', [
37 37 'controller' => 'materiels', 'action' => 'index', 'GMV' => $userConnected->groupes_metier_id, 'GTV' => $userConnected->groupe_thematique_id]).' </td></tr>';
38 38 echo '<tr><td> '.$this->Html->link('Voir les suivis des materiels dont je suis responsable', [
39 39 'controller' => 'suivis', 'action' => 'index', 'GM' => $userConnected->groupes_metier_id, 'GT' => $userConnected->groupe_thematique_id]).' </td></tr>';
... ...