Commit e61b448a9a58afe681b1382eb143b6a81db0500d

Authored by Thibaud Ajas
1 parent cdc04d8e

bugfixes

src/Controller/AppController.php
... ... @@ -2,16 +2,16 @@
2 2  
3 3 /**
4 4 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
5   - * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
6   - *
  5 + * Copyright (c) Cake Software Foundation, Inc.
  6 + * (http://cakefoundation.org)
7 7 * Licensed under The MIT License
8 8 * For full copyright and license information, please see the LICENSE.txt
9 9 * Redistributions of files must retain the above copyright notice.
10 10 *
11 11 * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
12   - * @link http://cakephp.org CakePHP(tm) Project
13   - * @since 0.2.9
14   - * @license http://www.opensource.org/licenses/mit-license.php MIT License
  12 + * @link http://cakephp.org CakePHP(tm) Project
  13 + * @since 0.2.9
  14 + * @license http://www.opensource.org/licenses/mit-license.php MIT License
15 15 */
16 16 namespace App\Controller;
17 17  
... ... @@ -24,598 +24,635 @@ use PhpParser\Node\Expr\Include_;
24 24  
25 25 /**
26 26 * Application Controller
27   - *
28 27 * Add your application-wide methods in the class below, your controllers
29 28 * will inherit them.
30 29 *
31 30 * @link http://book.cakephp.org/3.0/en/controllers.html#the-app-controller
32 31 */
33 32 class AppController extends Controller {
34   - public $confLabinvent;
35   -
36   - /**
37   - * Initialization hook method.
38   - *
39   - * Use this method to add common initialization code like loading components.
40   - *
41   - * e.g. `$this->loadComponent('Security');`
42   - *
43   - * @return void
44   - */
45   - public function initialize() {
46   - parent::initialize ();
47   -
48   - $this->loadComponent ( 'RequestHandler' );
49   - $this->loadComponent ( 'Flash' );
50   - $this->loadComponent ( 'LdapAuth', [
51   - 'authorize' => [
52   - 'Controller'
53   - ],
54   - 'loginRedirect' => [
55   - 'controller' => 'Pages',
56   - 'action' => 'home'
57   - ],
58   - 'logoutRedirect' => [
59   - 'controller' => 'Pages',
60   - 'action' => 'home'
61   - ]
62   - ] );
63   - $this->confLabinvent = TableRegistry::get ( 'Configurations' )->find ()->where ( [
64   - 'id =' => 1
65   - ] )->first ();
66   - }
67   -
68   - /**
69   - *
70   - * @param $user Give
71   - * authorization in general
72   - *
73   - * @return boolean
74   - */
75   - public function isAuthorized($user) {
76   - $configuration = $this->confLabinvent;
77   - $role = TableRegistry::get ( 'Users' )->find ()->where ( [
78   - 'username' => $user [$configuration->authentificationType_ldap] [0]
79   - ] )->first () ['role'];
80   -
81   - $action = $this->request->params ['action'];
82   -
83   - // error_log($action);
84   -
85   - // Super-Admin peut accéder à chaque action
86   - if ($role == 'Super Administrateur')
87   - return true;
88   -
89   - // Pour tout le monde
90   - if (in_array ( $action, [
91   - 'index',
92   - 'find',
93   - 'view',
94   - 'creer',
95   - 'add',
96   - 'getNextDate',
97   - 'getDateGarantie'
98   - ] ))
99   - return true;
100   -
101   - // Par défaut refuser
102   - return false;
103   - }
104   - function userHasRole($roleDefine) {
105   - $configuration = TableRegistry::get ( 'Configurations' )->find ()->where ( [
106   - 'id =' => 1
107   - ] )->first ();
108   - $role = TableRegistry::get ( 'Users' )->find ()->where ( [
109   - 'username' => $this->LdapAuth->user ( $configuration->authentificationType_ldap ) [0]
110   - ] )->first () ['role'];
111   -
112   - $isAuthorized = false;
113   -
114   - switch ($roleDefine) {
115   - case 'Super Administrateur' :
116   - if (in_array ( $role, [
117   - 'Super Administrateur'
118   - ] ))
119   - $isAuthorized = true;
120   - break;
121   -
122   - case 'Administration Plus' :
123   - if (in_array ( $role, [
124   - 'Administration Plus',
125   - 'Super Administrateur'
126   - ] ))
127   - $isAuthorized = true;
128   - break;
129   -
130   - case 'Administration' :
131   - if (in_array ( $role, [
132   - 'Administration',
133   - 'Administration Plus',
134   - 'Super Administrateur'
135   - ] ))
136   - $isAuthorized = true;
137   - break;
138   - case 'Responsable' :
139   - if (in_array ( $role, [
140   - 'Responsable',
141   - 'Administration',
142   - 'Administration Plus',
143   - 'Super Administrateur'
144   - ] ))
145   - $isAuthorized = true;
146   - break;
147   -
148   - case 'Utilisateur' :
149   - if (in_array ( $role, [
150   - 'Utilisateur',
151   - 'Responsable',
152   - 'Administration',
153   - 'Administration Plus',
154   - 'Super Administrateur'
155   - ] ))
156   - $isAuthorized = true;
157   - break;
158   - }
159   -
160   - return $isAuthorized;
161   - }
162   -
163   - /**
164   - *
165   - * {@inheritdoc}
166   - *
167   - * @see \Cake\Controller\Controller::beforeFilter()
168   - */
169   - public function beforeFilter(Event $event) {
170   - // !!! Ne jamais autoriser l'action 'login', sinon cela va créer des problèmes sur le fonctionnement normal de AuthComponent (cf doc) !!!
171   - $configuration = TableRegistry::get ( 'Configurations' )->find ()->where ( [
172   - 'id =' => 1
173   - ] )->first ();
174   -
175   - if ($configuration->mode_install) {
176   - $this->LdapAuth->allow ( [
177   - 'display',
178   - 'add',
179   - 'edit',
180   - 'installOff'
181   - ] );
182   - } else {
183   - $this->LdapAuth->allow ( [
184   - 'display'
185   - ] );
186   - }
187   -
188   - $this->LdapAuth->config ( 'authError', "Désolé, vous n'êtes pas autorisé à accéder à cette zone." );
189   - }
190   - public function afterFilter(Event $event) {
191   - if (in_array ( $this->request->params ['action'], [
192   - 'edit',
193   - 'add'
194   - ] )) {
195   - $this->request->session ()->write ( "retourForm1", true );
196   - } else if ($this->request->params ['action'] != 'creer') {
197   - $this->request->session ()->write ( "retourForm1", false );
198   - }
199   - }
200   -
201   - /**
202   - * Before render callback.
203   - *
204   - * @param \Cake\Event\Event $event
205   - * The beforeRender event.
206   - * @return void
207   - */
208   - public function beforeRender(Event $event) {
209   - if (! array_key_exists ( '_serialize', $this->viewVars ) && in_array ( $this->response->type (), [
210   - 'application/json',
211   - 'application/xml'
212   - ] )) {
213   - $this->set ( '_serialize', true );
214   - }
215   - $this->set ( 'username', $this->LdapAuth->user ( 'sn' ) [0] . ' ' . $this->LdapAuth->user ( 'givenname' ) [0] );
216   -
217   - $configuration = TableRegistry::get ( 'Configurations' )->find ()->where ( [
218   - 'id =' => 1
219   - ] )->first ();
220   - $this->set ( 'configuration', $configuration );
221   - $this->request->session ()->write ( "authType", $configuration->authentificationType_ldap );
222   -
223   - $user = TableRegistry::get ( 'Users' )->find ()->where ( [
224   - 'username' => $this->LdapAuth->user ( $configuration->authentificationType_ldap ) [0]
225   - ] )->first ();
226   -
227   - $role = $user ['role'];
228   - if ($role == null)
229   - $role = 'Utilisateur';
230   - $this->set ( 'role', $role );
231   -
232   - $this->set ( 'userConnected', $user );
233   -
234   - $this->set ( 'idGmNa', TableRegistry::get ( 'GroupesMetiers' )->find ()->where ( [
235   - 'nom =' => 'N/A'
236   - ] )->first () ['id'] );
237   - $this->set ( 'idGtNa', TableRegistry::get ( 'GroupesThematiques' )->find ()->where ( [
238   - 'nom =' => 'N/A'
239   - ] )->first () ['id'] );
240   -
241   - $displayElement = function ($nom, $valeur, $params = "") {
242   - $balise = ($params != "") ? '<td ' . $params . '>' : '<td>';
243   - // Ca c'est parce que sinon y'a au moins deux tests qui passent pas, a cause de l'espace dans la balise ...
244   - if ($valeur != "")
245   - echo '<tr><td><strong>' . $nom . ' </strong></td>' . $balise . $valeur . '</td></tr>';
246   - };
247   - $this->set ( 'displayElement', $displayElement );
248   - }
249   -
250   - // "le materiel", "le suivi"...
251   - protected function getArticle() {
252   - return "Le ";
253   - }
254   -
255   - /**
256   - *
257   - * @param string $subject
258   - * @param string $message
259   - * @param string[] $to
260   - */
261   - // public function sendEmailTo($subject, $message, $to = null) {
262   -
263   - // $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
264   -
265   - // if ($to != null && !$configuration->test) {
266   -
267   - // for($i = 0; $i < sizeof($to); $i++) {
268   -
269   - // if (filter_var($to[$i], FILTER_VALIDATE_EMAIL)) {
270   - // $email = new Email();
271   -
272   - // $etiquetteFrom = explode("@", $configuration->sender_mail);
273   -
274   - // if($configuration->envoi_mail_management_dev) {
275   - // $email->transport('dev')
276   - // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
277   - // ->to($to[$i])
278   - // ->subject("[LabInvent] ".$subject)
279   - // ->send($message);
280   - // } else {
281   - // $email->transport('default')
282   - // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
283   - // ->to($to[$i])
284   - // ->subject("[LabInvent] ".$subject)
285   - // ->send($message);
286   - // }
287   - // }
288   -
289   - // }
290   - // }
291   -
292   - // }
293   -
294   - // /**
295   - // * Envoi d'un email à la gestion (et aux devs) pour prévenir qu'un matériel a été créé ou modifié
296   - // * (cf howto dans http://book.cakephp.org/2.0/fr/core-utility-libraries/email.html)
297   - // * @param string $subject
298   - // * @param string $message
299   - // */
300   - // public function sendEmailToManagementWith($subject, $message) {
301   -
302   - // $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
303   -
304   - // for($i = 1; $i < 11; $i++) {
305   - // $t = 'emailGuest'.$i;
306   - // $to = $configuration->$t;
307   -
308   - // if ($to != null && !$configuration->test) {
309   - // if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
310   - // $email = new Email();
311   -
312   - // $etiquetteFrom = explode("@", $configuration->sender_mail);
313   -
314   - // if($configuration->envoi_mail_management_dev) {
315   - // $email->transport('dev')
316   - // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
317   - // ->to($to)
318   - // ->subject("[LabInvent] ".$subject)
319   - // ->send($message);
320   - // } else {
321   - // $email->transport('default')
322   - // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
323   - // ->to($to)
324   - // ->subject("[LabInvent] ".$subject)
325   - // ->send($message);
326   - // }
327   - // }
328   -
329   - // }
330   - // }
331   -
332   - // }
333   -
334   - // public function sendEmailToManagement($idObj = null) {
335   -
336   - // $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
337   -
338   - // $userAuth = $this->LdapAuth->user($configuration->authentificationType_ldap)[0];
339   - // $controller = substr($this->request->params['controller'], 0, -1); // materiel
340   - // $action = $this->request->params['action']; // add or edit or delete or ...
341   - // $userName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0];
342   - // $userEmail = $this->LdapAuth->user('mail')[0];
343   - // $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
344   - // if($role == null) $role = 'Utilisateur';
345   -
346   - // $modelName = $this->modelClass; // 'Materiels'
347   - // $id = $idObj;
348   -
349   - // switch ($action) {
350   - // case 'add':
351   - // $actionFrench = ['Création d\'un ', 'été créé'];
352   - // break;
353   - // case 'edit':
354   - // $actionFrench = ['Modification d\'un ', 'été modifié'];
355   - // break;
356   - // case 'delete':
357   - // $actionFrench = ['Suppression d\'un ', 'été supprimé'];
358   - // break;
359   - // case 'statusValidated':
360   - // $actionFrench = ['Validation d\'un ', 'été validé'];
361   - // break;
362   - // case 'statusToBeArchived':
363   - // $actionFrench = ['Demande Archivage d\'un ', 'été demandé pour archivage'];
364   - // break;
365   - // case 'statusArchived':
366   - // $actionFrench = ['Archivage d\'un ', 'été archivé'];
367   - // break;
368   - // case 'setLabelIsPlaced':
369   - // $actionFrench = ['Etiquette posé sur un ', 'reçu une étiquette'];
370   - // break;
371   - // default:
372   - // $actionFrench = [$action.' d\'un ', 'été '.$action];
373   - // break;
374   - // }
375   - // $doneBy = $userName." (".$userEmail.", login=".$userAuth.", profil=".$role.").";
376   -
377   - // $subject = $actionFrench[0].$controller;
378   -
379   - // if($id != null) {
380   - // $entityName = TableRegistry::get($modelName)->find('all')->where(['id =' => $id])->first();
381   -
382   - // if($modelName == 'Materiels') {
383   - // $entityName = $entityName['designation'];
384   - // }
385   - // else if ($modelName == 'Suivis' || $modelName == 'Emprunts') {
386   - // $entityName = $entityName['id'];
387   - // }
388   - // else {
389   - // $entityName = $entityName['nom'];
390   - // }
391   - // }
392   - // else {
393   - // $entityName = NULL;
394   - // }
395   -
396   - // $message = $this->getArticle().$controller." ".$entityName." (id=".$id.") a ".$actionFrench[1]." par ".$doneBy;
397   -
398   - // $this->sendEmailToManagementWith($subject, $message);
399   -
400   - // }
401   -
402   - // /**
403   - // * Envoi d'un email au propriétaire pour prévenir qu'un matériel a été créé
404   - // * @param string $subject
405   - // * @param string $message
406   - // */
407   - // public function sendEmailToCreate($idObj = null) {
408   -
409   - // $id = $idObj;
410   -
411   - // $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
412   - // $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $id])->first();
413   -
414   - // $createurName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0];
415   - // $createurEmail = $this->LdapAuth->user('mail')[0];
416   - // $toEmail = $materiel->email_responsable;
417   -
418   - // $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
419   - // if($role == null) $role = 'Utilisateur';
420   -
421   - // $subject = 'Ajout d\'un matériel';
422   - // $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.';
423   -
424   - // if ($toEmail != null && !$configuration->test) {
425   - // if (filter_var($toEmail, FILTER_VALIDATE_EMAIL)) {
426   - // $email = new Email();
427   -
428   - // $etiquetteFrom = explode("@", $configuration->sender_mail);
429   -
430   - // if($configuration->envoi_mail_management_dev) {
431   - // $email->transport('dev')
432   - // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
433   - // ->to($toEmail)
434   - // ->subject("[LabInvent] ".$subject)
435   - // ->send($message);
436   - // } else {
437   - // $email->transport('default')
438   - // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
439   - // ->to($toEmail)
440   - // ->subject("[LabInvent] ".$subject)
441   - // ->send($message);
442   - // }
443   - // }
444   -
445   - // }
446   -
447   - // }
448   - static function isLabinventDebugMode() {
449   - return TableRegistry::get ( 'Configurations' )->find ()->where ( [
450   - 'id =' => 1
451   - ] )->first ()->mode_debug;
452   - }
453   - function myDebug($arg, $stop = false) {
454   - if ($this->isLabinventDebugMode ()) {
455   - Configure::write ( 'debug', true );
456   - debug ( $arg );
457   - if ($stop)
458   - exit ();
459   - }
460   - }
461   -
462   - // Les fonctions suivantes sont en cours de developpement
463   - /**
464   - * Envoi un mail avec un sujet, contenant un message à destination d'une liste de mails, selon l'action effectuée.
465   - *
466   - * @param $obj :
467   - * Matériel concerné
468   - */
469   - public function sendEmail($obj) {
470   - /*
471   - * $_SESSION['Auth']['User'] pour retrouver TOUTES les infos de la session courante (tout est du string) :
472   - * nom['sn'][0]
473   - * prenom['givenname'][0]
474   - * mail['mail'][0]
475   - * login['xxx'][0] /!\ Ce champ est suceptible de changer de nom, dans les tests ce champ est ['cn'][0]
476   - * mdp['userpassword'][0]
477   - */
478   - $configuration = $this->confLabinvent;
479   - $action = $this->request->params ['action']; // add or edit or delete or ...
480   -
481   - // Si les deux cases "Activer l'envoi des mails.." sont décochée, on se fatigue pas à exécuter la fonction
482   - if (! $configuration->envoi_mail && ! $configuration->envoi_mail_guests)
483   - return null;
484   -
485   - $materiel = $obj;
486   - $mailList = array ();
487   -
488   - // On détermine le message et le sujet du mail en fonction de l'action effectuee
489   - $acteur = $_SESSION ['Auth'] ['User'] ['givenname'] [0] . ' ' . $_SESSION ['Auth'] ['User'] ['sn'] [0];
490   - $nom_materiel = $materiel->designation;
491   - Switch ($action) {
492   - case 'add' :
493   - $subject = "Ajout d'un matériel";
494   - $msg = "$acteur a ajouté le matériel $nom_materiel";
495   - break;
496   - case 'edit' :
497   - $subject = "Modification d'un matériel";
498   - $msg = "$acteur a modifié le matériel $nom_materiel";
499   - break;
500   - case 'delete' :
501   - $subject = "Suppression d'un matériel";
502   - $msg = "$acteur a supprimé le matériel $nom_materiel";
503   - break;
504   - case 'statusValidated' :
505   - $subject = "Validation d'un matériel";
506   - $msg = "$acteur a validé le matériel $nom_materiel";
507   - break;
508   - case 'statusToBeArchived' :
509   - $subject = "Demande d'archivage d'un matériel";
510   - $msg = "$acteur a demandé l'archivage du matériel $nom_materiel";
511   - break;
512   - case 'statusArchived' :
513   - $subject = "Archivage d'un matériel";
514   - $msg = "$acteur a archivé le matériel $nom_materiel";
515   - break;
516   - case 'setLabelIsPlaced' :
517   - $subject = "Etiquette posée sur un matériel";
518   - $msg = "Etiquette posée sur le matériel $nom_materiel";
519   - break;
520   - case 'printLabelRuban' :
521   - $subject = "Etiquette imprimée";
522   - $msg = "L'étiquette concerant votre matériel $nom_materiel a été imprimée. Veuillez vérifier et compléter si besoin la fiche corespondante.";
523   - $mailList [0] = $materiel->email_responsable;
524   - default :
525   - $subject = "Action \"$action\" sur un matériel";
526   - $msg = "$acteur a effectué l'action \"$action\" sur le matériel $nom_materiel";
527   - break;
528   - }
529   -
530   - // Et maintenant on construit la liste de mails ...
531   - // Si l'envoi général est activé (et que l'action ne correspond pas à 'printLabelRuban'):
532   - if ($configuration->envoi_mail && $action != 'printLabelRuban') {
533   - // mail owner
534   - $mailList [0] = $materiel->email_responsable;
535   -
536   - // mail resp
537   - $mailsRespMetier = null;
538   - $mailsRespMetier = null;
539   -
540   - if ($materiel->groupes_metier_id != null && $materiel->groupes_metier_id != 1)
541   - // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe
542   - $mailsRespMetier = TableRegistry::get ( 'Users' )->find ()->select ( 'email' )->where ( [
543   - 'role =' => 'Responsable',
544   - 'groupes_metier_id =' => $materiel->groupes_metier_id
545   - ] )->toArray ();
546   -
547   - if ($mailsRespMetier != null && $mailsRespMetier != null) {
548   - $mailResp = array_unique ( array_merge ( $mailsRespMetier, $mailRespThematique ) );
549   - for($i = 0; $i < sizeof ( $mailsResp ); $i ++) {
550   - $mailList [sizeof ( $mailList )] = $mailsResp [$i] ['email'];
551   - }
552   - }
553   -
554   - // mail admin de reference (ici appele gestionnaire)
555   - if ($action != 'statusValidated' && $action != 'statusArchived') {
556   - $mailsAdmin = TableRegistry::get ( 'Users' )->find ()->select ( 'email' )->where ( [
557   - 'role =' => 'Administration'
558   - ] )->toArray ();
559   - for($i = 0; $i < sizeof ( $mailsAdmin ); $i ++) {
560   - $mailList [sizeof ( $mailList )] = $mailsAdmin [$i] ['email'];
561   - }
562   - }
563   - }
564   -
565   - // Si l'envoi à la liste spécifiée est activé (et que l'action ne correspond pas à 'printLabelRuban'):
566   - if ($configuration->envoi_mail_guests && $action != 'printLabelRuban') {
567   - // mail aux adresses specifiees dans la config
568   - for($i = 0; $i < 11; $i ++) {
569   - if ($configuration ['emailGuest' . $i])
570   - $mailList [sizeof ( $mailList )] = $configuration ['emailGuest' . $i];
571   - // Le if vérifie que la ligne soit pas null
572   - }
573   - }
574   -
575   - // 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 !
576   - $List = array_unique ( $mailList );
577   -
578   - // ... Pour envoyer les mails aux personnes concernees
579   - foreach ( $List as $mail ) {
580   - // On envoi des mails à toute la liste, sauf pour "l'acteur", il sait ce qu'il a fait, pas besoin de le spam non plus hein
581   - if ($mail != $_SESSION ['Auth'] ['User'] ['mail'] [0]) {
582   - $message = $msg; // Sisi, cette variable $message est utile, m'enfin vous pouvez toujours essayer de la supprimer ..... Et pensez à regarder le contenu de vos mails !!! Sinon ca fait une tumeur
583   - if ($action != 'statusValidated')
584   - $message .= " Veuillez vérifier et compléter si besoin la fiche corespondante.";
585   - $role = TableRegistry::get ( 'Users' )->find ()->select ( 'role' )->where ( [
586   - 'email =' => $mail
587   - ] )->first () ['role'];
588   - if ($role)
589   - $role = 'en tant que ' . $role;
590   - else
591   - $role = 'car vous avez demandé à le recevoir. Pour faire retirer votre mail de la liste, veuillez contacter un SuperAdmin';
592   - $message .= "\n\n" . 'Vous recevez ce message ' . $role;
593   - $this->sendEmailTo ( "$subject", $message, $mail, $configuration );
594   - }
595   - }
596   - return $List;
597   - }
598   -
599   - // Fonction d'envoi de mails
600   - private function sendEmailTo($subject, $msg, $mail, $config) {
601   - if ($mail != null && ! $config->test) {
602   - if (filter_var ( $mail, FILTER_VALIDATE_EMAIL )) {
603   - $email = new Email ();
604   -
605   - $etiquetteFrom = explode ( "@", $config->sender_mail );
606   -
607   - // if($config->envoi_mail) { // <-- Si la case "Envoi des mails de management en local " est cochée
608   - // $email->transport('dev')
609   - // ->from([$config->sender_mail => $etiquetteFrom[0]])
610   - // ->to($mail)
611   - // ->subject("[LabInvent] ".$subject)
612   - // ->send($msg);
613   - // } else { // <-- Si la case n'est pas cochée
614   - $email->transport ( 'default' )->from ( [
615   - $config->sender_mail => $etiquetteFrom [0]
616   - ] )->to ( $mail )->subject ( "[LabInvent] " . $subject )->send ( $msg );
617   - // }
618   - }
619   - }
620   - }
  33 +
  34 + public $confLabinvent;
  35 +
  36 + /**
  37 + * Initialization hook method.
  38 + * Use this method to add common initialization code like loading components.
  39 + * e.g. `$this->loadComponent('Security');`
  40 + *
  41 + * @return void
  42 + */
  43 + public function initialize() {
  44 + parent::initialize();
  45 +
  46 + $this->loadComponent('RequestHandler');
  47 + $this->loadComponent('Flash');
  48 + $this->loadComponent('LdapAuth', [
  49 + 'authorize' => [
  50 + 'Controller'
  51 + ],
  52 + 'loginRedirect' => [
  53 + 'controller' => 'Pages',
  54 + 'action' => 'home'
  55 + ],
  56 + 'logoutRedirect' => [
  57 + 'controller' => 'Pages',
  58 + 'action' => 'home'
  59 + ]
  60 + ]);
  61 + $this->confLabinvent = TableRegistry::get('Configurations')->find()
  62 + ->where([
  63 + 'id =' => 1
  64 + ])
  65 + ->first();
  66 + }
  67 +
  68 + /**
  69 + *
  70 + * @param $user Give
  71 + * authorization in general
  72 + * @return boolean
  73 + */
  74 + public function isAuthorized($user) {
  75 + $configuration = $this->confLabinvent;
  76 + $role = TableRegistry::get('Users')->find()
  77 + ->where([
  78 + 'username' => $user[$configuration->authentificationType_ldap][0]
  79 + ])
  80 + ->first()['role'];
  81 +
  82 + $action = $this->request->params['action'];
  83 +
  84 + // error_log($action);
  85 +
  86 + // Super-Admin peut accéder à chaque action
  87 + if ($role == 'Super Administrateur')
  88 + return true;
  89 +
  90 + // Pour tout le monde
  91 + if (in_array($action, [
  92 + 'index',
  93 + 'find',
  94 + 'view',
  95 + 'creer',
  96 + 'add',
  97 + 'getNextDate',
  98 + 'getDateGarantie'
  99 + ]))
  100 + return true;
  101 +
  102 + // Par défaut refuser
  103 + return false;
  104 + }
  105 +
  106 + function userHasRole($roleDefine) {
  107 + $configuration = TableRegistry::get('Configurations')->find()
  108 + ->where([
  109 + 'id =' => 1
  110 + ])
  111 + ->first();
  112 + $role = TableRegistry::get('Users')->find()
  113 + ->where([
  114 + 'username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]
  115 + ])
  116 + ->first()['role'];
  117 +
  118 + $isAuthorized = false;
  119 +
  120 + switch ($roleDefine) {
  121 + case 'Super Administrateur':
  122 + if (in_array($role, [
  123 + 'Super Administrateur'
  124 + ]))
  125 + $isAuthorized = true;
  126 + break;
  127 +
  128 + case 'Administration Plus':
  129 + if (in_array($role, [
  130 + 'Administration Plus',
  131 + 'Super Administrateur'
  132 + ]))
  133 + $isAuthorized = true;
  134 + break;
  135 +
  136 + case 'Administration':
  137 + if (in_array($role, [
  138 + 'Administration',
  139 + 'Administration Plus',
  140 + 'Super Administrateur'
  141 + ]))
  142 + $isAuthorized = true;
  143 + break;
  144 + case 'Responsable':
  145 + if (in_array($role, [
  146 + 'Responsable',
  147 + 'Administration',
  148 + 'Administration Plus',
  149 + 'Super Administrateur'
  150 + ]))
  151 + $isAuthorized = true;
  152 + break;
  153 +
  154 + case 'Utilisateur':
  155 + if (in_array($role, [
  156 + 'Utilisateur',
  157 + 'Responsable',
  158 + 'Administration',
  159 + 'Administration Plus',
  160 + 'Super Administrateur'
  161 + ]))
  162 + $isAuthorized = true;
  163 + break;
  164 + }
  165 +
  166 + return $isAuthorized;
  167 + }
  168 +
  169 + /**
  170 + *
  171 + * {@inheritdoc}
  172 + *
  173 + * @see \Cake\Controller\Controller::beforeFilter()
  174 + */
  175 + public function beforeFilter(Event $event) {
  176 + // !!! Ne jamais autoriser l'action 'login', sinon cela va créer des problèmes sur le fonctionnement normal de AuthComponent (cf doc) !!!
  177 + $configuration = TableRegistry::get('Configurations')->find()
  178 + ->where([
  179 + 'id =' => 1
  180 + ])
  181 + ->first();
  182 +
  183 + if ($configuration->mode_install) {
  184 + $this->LdapAuth->allow([
  185 + 'display',
  186 + 'add',
  187 + 'edit',
  188 + 'installOff'
  189 + ]);
  190 + } else {
  191 + $this->LdapAuth->allow([
  192 + 'display'
  193 + ]);
  194 + }
  195 +
  196 + $this->LdapAuth->config('authError', "Désolé, vous n'êtes pas autorisé à accéder à cette zone.");
  197 + }
  198 +
  199 + public function afterFilter(Event $event) {
  200 + if (in_array($this->request->params['action'], [
  201 + 'edit',
  202 + 'add'
  203 + ])) {
  204 + $this->request->session()->write("retourForm1", true);
  205 + } else if ($this->request->params['action'] != 'creer') {
  206 + $this->request->session()->write("retourForm1", false);
  207 + }
  208 + }
  209 +
  210 + /**
  211 + * Before render callback.
  212 + *
  213 + * @param \Cake\Event\Event $event
  214 + * The beforeRender event.
  215 + * @return void
  216 + */
  217 + public function beforeRender(Event $event) {
  218 + if (! array_key_exists('_serialize', $this->viewVars) && in_array($this->response->type(), [
  219 + 'application/json',
  220 + 'application/xml'
  221 + ])) {
  222 + $this->set('_serialize', true);
  223 + }
  224 + $this->set('username', $this->LdapAuth->user('sn')[0] . ' ' . $this->LdapAuth->user('givenname')[0]);
  225 +
  226 + $configuration = TableRegistry::get('Configurations')->find()
  227 + ->where([
  228 + 'id =' => 1
  229 + ])
  230 + ->first();
  231 + $this->set('configuration', $configuration);
  232 + $this->request->session()->write("authType", $configuration->authentificationType_ldap);
  233 +
  234 + $user = TableRegistry::get('Users')->find()
  235 + ->where([
  236 + 'username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]
  237 + ])
  238 + ->first();
  239 +
  240 + $role = $user['role'];
  241 + if ($role == null)
  242 + $role = 'Utilisateur';
  243 + $this->set('role', $role);
  244 +
  245 + $this->set('userConnected', $user);
  246 +
  247 + $this->set('idGmNa', TableRegistry::get('GroupesMetiers')->find()
  248 + ->where([
  249 + 'nom =' => 'N/A'
  250 + ])
  251 + ->first()['id']);
  252 + $this->set('idGtNa', TableRegistry::get('GroupesThematiques')->find()
  253 + ->where([
  254 + 'nom =' => 'N/A'
  255 + ])
  256 + ->first()['id']);
  257 +
  258 + $displayElement = function ($nom, $valeur, $params = "") {
  259 + $balise = ($params != "") ? '<td ' . $params . '>' : '<td>';
  260 + // Ca c'est parce que sinon y'a au moins deux tests qui passent pas, a cause de l'espace dans la balise ...
  261 + if ($valeur != "")
  262 + echo '<tr><td><strong>' . $nom . ' </strong></td>' . $balise . $valeur . '</td></tr>';
  263 + };
  264 + $this->set('displayElement', $displayElement);
  265 + }
  266 +
  267 + // "le materiel", "le suivi"...
  268 + protected function getArticle() {
  269 + return "Le ";
  270 + }
  271 +
  272 + /**
  273 + *
  274 + * @param string $subject
  275 + * @param string $message
  276 + * @param string[] $to
  277 + */
  278 + // public function sendEmailTo($subject, $message, $to = null) {
  279 +
  280 + // $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  281 +
  282 + // if ($to != null && !$configuration->test) {
  283 +
  284 + // for($i = 0; $i < sizeof($to); $i++) {
  285 +
  286 + // if (filter_var($to[$i], FILTER_VALIDATE_EMAIL)) {
  287 + // $email = new Email();
  288 +
  289 + // $etiquetteFrom = explode("@", $configuration->sender_mail);
  290 +
  291 + // if($configuration->envoi_mail_management_dev) {
  292 + // $email->transport('dev')
  293 + // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  294 + // ->to($to[$i])
  295 + // ->subject("[LabInvent] ".$subject)
  296 + // ->send($message);
  297 + // } else {
  298 + // $email->transport('default')
  299 + // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  300 + // ->to($to[$i])
  301 + // ->subject("[LabInvent] ".$subject)
  302 + // ->send($message);
  303 + // }
  304 + // }
  305 +
  306 + // }
  307 + // }
  308 +
  309 + // }
  310 +
  311 + // /**
  312 + // * Envoi d'un email à la gestion (et aux devs) pour prévenir qu'un matériel a été créé ou modifié
  313 + // * (cf howto dans http://book.cakephp.org/2.0/fr/core-utility-libraries/email.html)
  314 + // * @param string $subject
  315 + // * @param string $message
  316 + // */
  317 + // public function sendEmailToManagementWith($subject, $message) {
  318 +
  319 + // $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  320 +
  321 + // for($i = 1; $i < 11; $i++) {
  322 + // $t = 'emailGuest'.$i;
  323 + // $to = $configuration->$t;
  324 +
  325 + // if ($to != null && !$configuration->test) {
  326 + // if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
  327 + // $email = new Email();
  328 +
  329 + // $etiquetteFrom = explode("@", $configuration->sender_mail);
  330 +
  331 + // if($configuration->envoi_mail_management_dev) {
  332 + // $email->transport('dev')
  333 + // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  334 + // ->to($to)
  335 + // ->subject("[LabInvent] ".$subject)
  336 + // ->send($message);
  337 + // } else {
  338 + // $email->transport('default')
  339 + // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  340 + // ->to($to)
  341 + // ->subject("[LabInvent] ".$subject)
  342 + // ->send($message);
  343 + // }
  344 + // }
  345 +
  346 + // }
  347 + // }
  348 +
  349 + // }
  350 +
  351 + // public function sendEmailToManagement($idObj = null) {
  352 +
  353 + // $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  354 +
  355 + // $userAuth = $this->LdapAuth->user($configuration->authentificationType_ldap)[0];
  356 + // $controller = substr($this->request->params['controller'], 0, -1); // materiel
  357 + // $action = $this->request->params['action']; // add or edit or delete or ...
  358 + // $userName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0];
  359 + // $userEmail = $this->LdapAuth->user('mail')[0];
  360 + // $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
  361 + // if($role == null) $role = 'Utilisateur';
  362 +
  363 + // $modelName = $this->modelClass; // 'Materiels'
  364 + // $id = $idObj;
  365 +
  366 + // switch ($action) {
  367 + // case 'add':
  368 + // $actionFrench = ['Création d\'un ', 'été créé'];
  369 + // break;
  370 + // case 'edit':
  371 + // $actionFrench = ['Modification d\'un ', 'été modifié'];
  372 + // break;
  373 + // case 'delete':
  374 + // $actionFrench = ['Suppression d\'un ', 'été supprimé'];
  375 + // break;
  376 + // case 'statusValidated':
  377 + // $actionFrench = ['Validation d\'un ', 'été validé'];
  378 + // break;
  379 + // case 'statusToBeArchived':
  380 + // $actionFrench = ['Demande Archivage d\'un ', 'été demandé pour archivage'];
  381 + // break;
  382 + // case 'statusArchived':
  383 + // $actionFrench = ['Archivage d\'un ', 'été archivé'];
  384 + // break;
  385 + // case 'setLabelIsPlaced':
  386 + // $actionFrench = ['Etiquette posé sur un ', 'reçu une étiquette'];
  387 + // break;
  388 + // default:
  389 + // $actionFrench = [$action.' d\'un ', 'été '.$action];
  390 + // break;
  391 + // }
  392 + // $doneBy = $userName." (".$userEmail.", login=".$userAuth.", profil=".$role.").";
  393 +
  394 + // $subject = $actionFrench[0].$controller;
  395 +
  396 + // if($id != null) {
  397 + // $entityName = TableRegistry::get($modelName)->find('all')->where(['id =' => $id])->first();
  398 +
  399 + // if($modelName == 'Materiels') {
  400 + // $entityName = $entityName['designation'];
  401 + // }
  402 + // else if ($modelName == 'Suivis' || $modelName == 'Emprunts') {
  403 + // $entityName = $entityName['id'];
  404 + // }
  405 + // else {
  406 + // $entityName = $entityName['nom'];
  407 + // }
  408 + // }
  409 + // else {
  410 + // $entityName = NULL;
  411 + // }
  412 +
  413 + // $message = $this->getArticle().$controller." ".$entityName." (id=".$id.") a ".$actionFrench[1]." par ".$doneBy;
  414 +
  415 + // $this->sendEmailToManagementWith($subject, $message);
  416 +
  417 + // }
  418 +
  419 + // /**
  420 + // * Envoi d'un email au propriétaire pour prévenir qu'un matériel a été créé
  421 + // * @param string $subject
  422 + // * @param string $message
  423 + // */
  424 + // public function sendEmailToCreate($idObj = null) {
  425 +
  426 + // $id = $idObj;
  427 +
  428 + // $configuration = TableRegistry::get('Configurations')->find()->where(['id =' => 1])->first();
  429 + // $materiel = TableRegistry::get('Materiels')->find()->where(['id =' => $id])->first();
  430 +
  431 + // $createurName = $this->LdapAuth->user('sn')[0].' '.$this->LdapAuth->user('givenname')[0];
  432 + // $createurEmail = $this->LdapAuth->user('mail')[0];
  433 + // $toEmail = $materiel->email_responsable;
  434 +
  435 + // $role = TableRegistry::get('Users')->find()->where(['username' => $this->LdapAuth->user($configuration->authentificationType_ldap)[0]])->first()['role'];
  436 + // if($role == null) $role = 'Utilisateur';
  437 +
  438 + // $subject = 'Ajout d\'un matériel';
  439 + // $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.';
  440 +
  441 + // if ($toEmail != null && !$configuration->test) {
  442 + // if (filter_var($toEmail, FILTER_VALIDATE_EMAIL)) {
  443 + // $email = new Email();
  444 +
  445 + // $etiquetteFrom = explode("@", $configuration->sender_mail);
  446 +
  447 + // if($configuration->envoi_mail_management_dev) {
  448 + // $email->transport('dev')
  449 + // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  450 + // ->to($toEmail)
  451 + // ->subject("[LabInvent] ".$subject)
  452 + // ->send($message);
  453 + // } else {
  454 + // $email->transport('default')
  455 + // ->from([$configuration->sender_mail => $etiquetteFrom[0]])
  456 + // ->to($toEmail)
  457 + // ->subject("[LabInvent] ".$subject)
  458 + // ->send($message);
  459 + // }
  460 + // }
  461 +
  462 + // }
  463 +
  464 + // }
  465 + static function isLabinventDebugMode() {
  466 + return TableRegistry::get('Configurations')->find()
  467 + ->where([
  468 + 'id =' => 1
  469 + ])
  470 + ->first()->mode_debug;
  471 + }
  472 +
  473 + function myDebug($arg, $stop = false) {
  474 + if ($this->isLabinventDebugMode()) {
  475 + Configure::write('debug', true);
  476 + debug($arg);
  477 + if ($stop)
  478 + exit();
  479 + }
  480 + }
  481 +
  482 + /**
  483 + * Envoi un mail avec un sujet, contenant un message à destination d'une liste de mails, selon l'action effectuée.
  484 + *
  485 + * @param $obj :
  486 + * Matériel concerné
  487 + */
  488 + public function sendEmail($obj) {
  489 + /*
  490 + * $_SESSION['Auth']['User'] pour retrouver TOUTES les infos de la session courante (tout est du string) :
  491 + * nom['sn'][0]
  492 + * prenom['givenname'][0]
  493 + * mail['mail'][0]
  494 + * login['xxx'][0] /!\ Ce champ est suceptible de changer de nom, dans les tests ce champ est ['cn'][0]
  495 + * mdp['userpassword'][0]
  496 + */
  497 + $configuration = $this->confLabinvent;
  498 + $action = $this->request->params['action']; // add or edit or delete or ...
  499 +
  500 + // Si les deux cases "Activer l'envoi des mails.." sont décochée, on se fatigue pas à exécuter la fonction
  501 + if (! $configuration->envoi_mail && ! $configuration->envoi_mail_guests)
  502 + return null;
  503 +
  504 + $materiel = $obj;
  505 + $mailList = array();
  506 +
  507 + // On détermine le message et le sujet du mail en fonction de l'action effectuee
  508 + $acteur = $_SESSION['Auth']['User']['givenname'][0] . ' ' . $_SESSION['Auth']['User']['sn'][0];
  509 + $nom_materiel = $materiel->designation;
  510 + Switch ($action) {
  511 + case 'add':
  512 + $subject = "Ajout d'un matériel";
  513 + $msg = "$acteur a ajouté le matériel $nom_materiel";
  514 + break;
  515 + case 'edit':
  516 + $subject = "Modification d'un matériel";
  517 + $msg = "$acteur a modifié le matériel $nom_materiel";
  518 + break;
  519 + case 'delete':
  520 + $subject = "Suppression d'un matériel";
  521 + $msg = "$acteur a supprimé le matériel $nom_materiel";
  522 + break;
  523 + case 'statusValidated':
  524 + $subject = "Validation d'un matériel";
  525 + $msg = "$acteur a validé le matériel $nom_materiel";
  526 + break;
  527 + case 'statusToBeArchived':
  528 + $subject = "Demande d'archivage d'un matériel";
  529 + $msg = "$acteur a demandé l'archivage du matériel $nom_materiel";
  530 + break;
  531 + case 'statusArchived':
  532 + $subject = "Archivage d'un matériel";
  533 + $msg = "$acteur a archivé le matériel $nom_materiel";
  534 + break;
  535 + case 'setLabelIsPlaced':
  536 + $subject = "Etiquette posée sur un matériel";
  537 + $msg = "Etiquette posée sur le matériel $nom_materiel";
  538 + break;
  539 + case 'printLabelRuban':
  540 + $subject = "Etiquette imprimée";
  541 + $msg = "L'étiquette concerant votre matériel $nom_materiel a été imprimée. Veuillez vérifier et compléter si besoin la fiche corespondante.";
  542 + $mailList[0] = $materiel->email_responsable;
  543 + default:
  544 + $subject = "Action \"$action\" sur un matériel";
  545 + $msg = "$acteur a effectué l'action \"$action\" sur le matériel $nom_materiel";
  546 + break;
  547 + }
  548 +
  549 + // Et maintenant on construit la liste de mails ...
  550 + // Si l'envoi général est activé (et que l'action ne correspond pas à 'printLabelRuban'):
  551 + if ($configuration->envoi_mail && $action != 'printLabelRuban') {
  552 + // mail owner
  553 + $mailList[0] = $materiel->email_responsable;
  554 +
  555 + // mail resp
  556 + $mailsRespMetier = null;
  557 + $mailsRespMetier = null;
  558 +
  559 + if ($materiel->groupes_metier_id != null && $materiel->groupes_metier_id != 1)
  560 + // Le ..!= 1 c'est parce que le groupe métier/thématique d'id 1 correspond au groupe N/A, soit aucun groupe
  561 + $mailsRespMetier = TableRegistry::get('Users')->find()
  562 + ->select('email')
  563 + ->where([
  564 + 'role =' => 'Responsable',
  565 + 'groupes_metier_id =' => $materiel->groupes_metier_id
  566 + ])
  567 + ->toArray();
  568 +
  569 + if ($mailsRespMetier != null && $mailsRespMetier != null) {
  570 + $mailResp = array_unique(array_merge($mailsRespMetier, $mailRespThematique));
  571 + for ($i = 0; $i < sizeof($mailsResp); $i ++) {
  572 + $mailList[sizeof($mailList)] = $mailsResp[$i]['email'];
  573 + }
  574 + }
  575 +
  576 + // mail admin de reference (ici appele gestionnaire) -> Partie administration
  577 + // Cela a été mis en commentaire car de toute façon l'utilisateur va voir un administratif pour faire valider sa fiche,
  578 + // Pas la peine de spam l'administration de mails non plus hein !
  579 +
  580 + /*
  581 + * if ($action != 'statusValidated' && $action != 'statusArchived') {
  582 + * $mailsAdmin = TableRegistry::get('Users')->find()
  583 + * ->select('email')
  584 + * ->where([
  585 + * 'role =' => 'Administration'
  586 + * ])
  587 + * ->toArray();
  588 + * for ($i = 0; $i < sizeof($mailsAdmin); $i ++) {
  589 + * $mailList[sizeof($mailList)] = $mailsAdmin[$i]['email'];
  590 + * }
  591 + * }
  592 + */
  593 + }
  594 +
  595 + // Si l'envoi à la liste spécifiée est activé (et que l'action ne correspond pas à 'printLabelRuban'):
  596 + if ($configuration->envoi_mail_guests && $action != 'printLabelRuban') {
  597 + // mail aux adresses specifiees dans la config
  598 + for ($i = 0; $i < 11; $i ++) {
  599 + if ($configuration['emailGuest' . $i])
  600 + $mailList[sizeof($mailList)] = $configuration['emailGuest' . $i];
  601 + // Le if vérifie que la ligne soit pas null
  602 + }
  603 + }
  604 +
  605 + // 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 !
  606 + $List = array_unique($mailList);
  607 +
  608 + // ... Pour envoyer les mails aux personnes concernees
  609 + foreach ($List as $mail) {
  610 + // On envoi des mails à toute la liste, sauf pour "l'acteur", il sait ce qu'il a fait, pas besoin de le spam non plus hein
  611 + if ($mail != $_SESSION['Auth']['User']['mail'][0]) {
  612 + $message = $msg; // Sisi, cette variable $message est utile, m'enfin vous pouvez toujours essayer de la supprimer ..... Et pensez à regarder le contenu de vos mails !!! Sinon ca fait une tumeur
  613 + if ($action != 'statusValidated')
  614 + $message .= " Veuillez vérifier et compléter si besoin la fiche corespondante.";
  615 + $role = TableRegistry::get('Users')->find()
  616 + ->select('role')
  617 + ->where([
  618 + 'email =' => $mail
  619 + ])
  620 + ->first()['role'];
  621 + if ($role)
  622 + $role = 'en tant que ' . $role;
  623 + else
  624 + $role = 'car vous avez demandé à le recevoir. Pour faire retirer votre mail de la liste, veuillez contacter un SuperAdmin';
  625 + $message .= "\n\n" . 'Vous recevez ce message ' . $role;
  626 + $this->sendEmailTo("$subject", $message, $mail, $configuration);
  627 + }
  628 + }
  629 + return $List;
  630 + }
  631 +
  632 + // Fonction d'envoi de mails
  633 + private function sendEmailTo($subject, $msg, $mail, $config) {
  634 + if ($mail != null && ! $config->test) {
  635 + if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
  636 + $email = new Email();
  637 +
  638 + $etiquetteFrom = explode("@", $config->sender_mail);
  639 +
  640 + // if($config->envoi_mail) { // <-- Si la case "Envoi des mails de management en local " est cochée
  641 + // $email->transport('dev')
  642 + // ->from([$config->sender_mail => $etiquetteFrom[0]])
  643 + // ->to($mail)
  644 + // ->subject("[LabInvent] ".$subject)
  645 + // ->send($msg);
  646 + // } else { // <-- Si la case n'est pas cochée
  647 + $email->transport('default')
  648 + ->from([
  649 + $config->sender_mail => $etiquetteFrom[0]
  650 + ])
  651 + ->to($mail)
  652 + ->subject("[LabInvent] " . $subject)
  653 + ->send($msg);
  654 + // }
  655 + }
  656 + }
  657 + }
621 658 }
622 659 \ No newline at end of file
... ...
src/Controller/SuivisController.php
... ... @@ -249,13 +249,13 @@ class SuivisController extends AppController {
249 249 'conditions' => [
250 250 'AND' => [
251 251 [
252   - 'nom !=' => 'Truc 1'
  252 + 'nom !=' => 'Etalonnage interne'
253 253 ],
254 254 [
255   - 'nom !=' => 'Truc 2'
  255 + 'nom !=' => 'Etalonnage externe'
256 256 ],
257 257 [
258   - 'nom !=' => 'Truc 3'
  258 + 'nom !=' => 'Vérification métrologique'
259 259 ]
260 260 ]
261 261 ]
... ...
src/Template/Configurations/edit.ctp
... ... @@ -38,6 +38,11 @@
38 38 echo '<span style="text-decoration: underline;">Divers</span>';
39 39 echo '</h3>';
40 40 echo '<div id="suivis" style="margin-bottom: 20px;">';
  41 +
  42 + echo $this->Form->input('procedure_sur_accueil', [
  43 + 'label' => 'Afficher la procédure à suivre sur l\'écran d\'accueil'
  44 + ]);
  45 +
41 46 echo $this->Form->input('hasPrinter', [
42 47 'label' => 'Imprimante disponible'
43 48 ]);
... ... @@ -73,6 +78,7 @@
73 78 echo '<span style="text-decoration: underline;">Emails</span>';
74 79 echo '</h3>';
75 80 echo '<div id="emprunts" style="margin-bottom: 20px;">';
  81 +
76 82 echo $this->Form->input('envoi_mail', [
77 83 'label' => 'Activer l\'envoi des mails général'
78 84 ]);
... ...
src/Template/Configurations/view.ctp
1 1  
2 2 <div class="configurations view">
3 3 <h2>Configuration générale de l'application</h2>
4   -
5   - <?php
6   - echo $this->Html->link(__('<i class="icon-pencil"></i> Editer la configuration'),
7   - ['action' => 'edit', $configurationObj->id],
8   - ['escape' => false,'onclick' => 'return true;']
9   - );
  4 +
  5 + <?php
  6 + echo $this->Html->link(__('<i class="icon-pencil"></i> Editer la configuration'), [
  7 + 'action' => 'edit',
  8 + $configurationObj->id
  9 + ], [
  10 + 'escape' => false,
  11 + 'onclick' => 'return true;'
  12 + ]);
10 13 echo '<br><br>';
11   -
12   - if(h($configurationObj->mode_install) == 1) {
13   - $install="Oui";
14   - }else {
15   - $install="Non";
  14 +
  15 + if (h($configurationObj->mode_install) == 1) {
  16 + $install = "Oui";
  17 + } else {
  18 + $install = "Non";
16 19 }
17   -
18   - if(h($configurationObj->mode_debug) == 1) {
19   - $debug="Oui";
20   - }else {
21   - $debug="Non";
  20 +
  21 + if (h($configurationObj->mode_debug) == 1) {
  22 + $debug = "Oui";
  23 + } else {
  24 + $debug = "Non";
22 25 }
23   -
24   - if(h($configurationObj->hasPrinter) == 1) {
25   - $print="Oui";
26   - }else {
27   - $print="Non";
  26 +
  27 + if (h($configurationObj->hasPrinter) == 1) {
  28 + $print = "Oui";
  29 + } else {
  30 + $print = "Non";
28 31 }
29   -
30   - if(h($configurationObj->use_ldap) == 1) {
31   - $ldap="Oui";
32   - }else {
33   - $ldap="Non";
  32 +
  33 + if (h($configurationObj->use_ldap) == 1) {
  34 + $ldap = "Oui";
  35 + } else {
  36 + $ldap = "Non";
34 37 }
35   -
36   - if(h($configurationObj->envoi_mail) == 0) {
37   - $mail_general="Non";
38   - }else {
39   - $mail_general="Oui";
  38 +
  39 + if (h($configurationObj->envoi_mail) == 0) {
  40 + $mail_general = "Non";
  41 + } else {
  42 + $mail_general = "Oui";
  43 + }
  44 +
  45 + if (h($configurationObj->envoi_mail_guests) == 0) {
  46 + $mail_guests = "Non";
  47 + } else {
  48 + $mail_guests = "Oui";
40 49 }
41   -
42   - if(h($configurationObj->envoi_mail_guests) == 0) {
43   - $mail_guests="Non";
44   - }else {
45   - $mail_guests="Oui";
  50 +
  51 + if (h($configurationObj->numero_labo_sans_annee) == 1) {
  52 + $numLab = "Oui";
  53 + } else {
  54 + $numLab = "Non";
46 55 }
47   -
48   - if(h($configurationObj->numero_labo_sans_annee) == 1) {
49   - $numLab="Oui";
50   - }else {
51   - $numLab="Non";
  56 + if (h($configurationObj->date_commande_facultative) == 1) {
  57 + $dateObl = "Oui";
  58 + } else {
  59 + $dateObl = "Non";
52 60 }
53   - if(h($configurationObj->date_commande_facultative) == 1) {
54   - $dateObl="Oui";
55   - }else {
56   - $dateObl="Non";
  61 + if (h($configurationObj->metrologie) == 1) {
  62 + $metro = "Oui";
  63 + } else {
  64 + $metro = "Non";
57 65 }
58   - if(h($configurationObj->metrologie) == 1) {
59   - $metro="Oui";
60   - }else {
61   - $metro="Non";
  66 + if (h($configurationObj->procedure_sur_accueil) == 1) {
  67 + $procedure_acc = "Oui";
  68 + } else {
  69 + $procedure_acc = "Non";
62 70 }
63   - echo '<h3 id="t_informations" style="cursor: pointer;">';
64   - echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations"></i>';
65   - echo '<span style="text-decoration: underline;">Modes</span>';
66   - echo '</h3>';
67   - echo '<div id="informations" style="margin-bottom: 20px;">';
68   - echo '<table>';
69   - echo '<tr><th style="width: 250px;"></th><th></th></tr>';
70   - $displayElement(__('Mode install'), $install);
71   - $displayElement(__('Mode debug'), $debug);
72   - echo '</table>';
73   - echo '</div>';
74   -
75   -
76   - echo '<h3 id="t_informations_admin" style="cursor: pointer;">';
77   - echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations_admin"></i>';
78   - echo '<span style="text-decoration: underline;">Laboratoire</span>';
79   - echo '</h3>';
80   - echo '<div id="informations_admin" style="margin-bottom: 20px;">';
81   - echo '<table>';
82   - echo '<tr><th style="width: 250px;"></th><th></th></tr>';
83   - $displayElement(__('Nom complet du Labo'), h($configurationObj->labName));
84   - $displayElement(__('Nom court du Labo'), h($configurationObj->labNameShort));
85   - $displayElement(__('Liaison présentation nom du Labo'), h($configurationObj->labPresent));
86   - $displayElement(__('UMR du Labo'), h($configurationObj->labUmr));
87   - echo '</table>';
88   - echo '</div>';
89   -
90   -
91   - echo '<h3 id="t_suivis" style="cursor: pointer;">';
92   - echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i>';
93   - echo '<span style="text-decoration: underline;">Divers</span>';
94   - echo '</h3>';
95   - echo '<div id="suivis" style="margin-bottom: 20px;">';
96   - echo '<table>';
97   - echo '<tr><th style="width: 250px;"></th><th></th></tr>';
98   - $displayElement(__('Imprimante disponible'), $print);
99   - $displayElement(__('Seuil (prix) Matériel administratif'), h($configurationObj->prix_inventaire_administratif));
100   - $displayElement(__('Taille max documents (octets)'), substr($configurationObj->taille_max_doc/(1024*1024), 0, 4).' Mo');
101   - $displayElement(__('Numero labo sans année'), $numLab);
102   - $displayElement(__('Champ date commande non obligatoire'), $dateObl);
103   - $displayElement(__('Label groupe thématique'), h($configurationObj->nom_groupe_thematique));
104   - $displayElement(__('Label groupe métier'), h($configurationObj->nom_groupe_metier));
105   - $displayElement(__('Partie métrologie'), $metro);
106   - echo '</table>';
107   - echo '</div>';
108   -
109   -
110   - echo '<h3 id="t_emprunts" style="cursor: pointer;">';
111   - echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_emprunts"></i>';
112   - echo '<span style="text-decoration: underline;">Emails</span>';
113   - echo '</h3>';
114   - echo '<div id="emprunts" style="margin-bottom: 20px;">';
115   - echo '<table>';
116   - echo '<tr><th style="width: 250px;"></th><th></th></tr>';
117   - $displayElement(__('Activer l\'envoi des mails général'), $mail_general);
118   - $displayElement(__('Attribut "sender" (mail)'), h($configurationObj->sender_mail));
119   - $displayElement(__('Activer l\'envoi des mails pour la liste spécifique ci-dessous'), $mail_guests);
120   - $displayElement(__('Mail guest 1'), h($configurationObj->emailGuest1));
121   - $displayElement(__('Mail guest 2'), h($configurationObj->emailGuest2));
122   - $displayElement(__('Mail guest 3'), h($configurationObj->emailGuest3));
123   - $displayElement(__('Mail guest 4'), h($configurationObj->emailGuest4));
124   - $displayElement(__('Mail guest 5'), h($configurationObj->emailGuest5));
125   - $displayElement(__('Mail guest 6'), h($configurationObj->emailGuest6));
126   - $displayElement(__('Mail guest 7'), h($configurationObj->emailGuest7));
127   - $displayElement(__('Mail guest 8'), h($configurationObj->emailGuest8));
128   - $displayElement(__('Mail guest 9'), h($configurationObj->emailGuest9));
129   - $displayElement(__('Mail guest 10'), h($configurationObj->emailGuest10));
130   - echo '</table>';
131   - echo '</div>';
132   -
133   - if ($configuration->use_ldap):
134   - echo '<h3 id="t_fichiers" style="cursor: pointer;">';
135   - echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_fichiers"></i>';
136   - echo '<span style="text-decoration: underline;">LDAP</span>';
137   - echo '</h3>';
138   - echo '<div id="fichiers" style="margin-bottom: 20px;">';
139   - echo '<table>';
140   - echo '<tr><th style="width: 250px;"></th><th></th></tr>';
141   - $displayElement(__('Utilisation du LDAP'), $ldap);
142   - $displayElement(__('Host du LDAP'), h($configurationObj->host_ldap));
143   - $displayElement(__('Port du LDAP'), h($configurationObj->port_ldap));
144   - $displayElement(__('Type d\'authentification du LDAP'), h($configurationObj->authentificationType_ldap));
145   - $displayElement(__('Base DN du LDAP'), h($configurationObj->baseDn_ldap));
146   - $displayElement(__('Filtre du LDAP'), h($configurationObj->filter_ldap));
147   -
148   - echo '</table>';
149   - echo '</div>';
  71 + echo '<h3 id="t_informations" style="cursor: pointer;">';
  72 + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations"></i>';
  73 + echo '<span style="text-decoration: underline;">Modes</span>';
  74 + echo '</h3>';
  75 + echo '<div id="informations" style="margin-bottom: 20px;">';
  76 + echo '<table>';
  77 + echo '<tr><th style="width: 250px;"></th><th></th></tr>';
  78 + $displayElement(__('Mode install'), $install);
  79 + $displayElement(__('Mode debug'), $debug);
  80 + echo '</table>';
  81 + echo '</div>';
  82 +
  83 + echo '<h3 id="t_informations_admin" style="cursor: pointer;">';
  84 + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations_admin"></i>';
  85 + echo '<span style="text-decoration: underline;">Laboratoire</span>';
  86 + echo '</h3>';
  87 + echo '<div id="informations_admin" style="margin-bottom: 20px;">';
  88 + echo '<table>';
  89 + echo '<tr><th style="width: 250px;"></th><th></th></tr>';
  90 + $displayElement(__('Nom complet du Labo'), h($configurationObj->labName));
  91 + $displayElement(__('Nom court du Labo'), h($configurationObj->labNameShort));
  92 + $displayElement(__('Liaison présentation nom du Labo'), h($configurationObj->labPresent));
  93 + $displayElement(__('UMR du Labo'), h($configurationObj->labUmr));
  94 + echo '</table>';
  95 + echo '</div>';
  96 +
  97 + echo '<h3 id="t_suivis" style="cursor: pointer;">';
  98 + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i>';
  99 + echo '<span style="text-decoration: underline;">Divers</span>';
  100 + echo '</h3>';
  101 + echo '<div id="suivis" style="margin-bottom: 20px;">';
  102 + echo '<table>';
  103 + echo '<tr><th style="width: 250px;"></th><th></th></tr>';
  104 + $displayElement(__('Afficher la procédure à suivre sur l\'écran d\'accueil'), $procedure_acc);
  105 + $displayElement(__('Imprimante disponible'), $print);
  106 + $displayElement(__('Seuil (prix) Matériel administratif'), h($configurationObj->prix_inventaire_administratif));
  107 + $displayElement(__('Taille max documents (octets)'), substr($configurationObj->taille_max_doc / (1024 * 1024), 0, 4) . ' Mo');
  108 + $displayElement(__('Numero labo sans année'), $numLab);
  109 + $displayElement(__('Champ date commande non obligatoire'), $dateObl);
  110 + $displayElement(__('Label groupe thématique'), h($configurationObj->nom_groupe_thematique));
  111 + $displayElement(__('Label groupe métier'), h($configurationObj->nom_groupe_metier));
  112 + $displayElement(__('Module métrologie'), $metro);
  113 + echo '</table>';
  114 + echo '</div>';
  115 +
  116 + echo '<h3 id="t_emprunts" style="cursor: pointer;">';
  117 + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_emprunts"></i>';
  118 + echo '<span style="text-decoration: underline;">Emails</span>';
  119 + echo '</h3>';
  120 + echo '<div id="emprunts" style="margin-bottom: 20px;">';
  121 + echo '<table>';
  122 + echo '<tr><th style="width: 250px;"></th><th></th></tr>';
  123 + $displayElement(__('Activer l\'envoi des mails général'), $mail_general);
  124 + $displayElement(__('Attribut "sender" (mail)'), h($configurationObj->sender_mail));
  125 + $displayElement(__('Activer l\'envoi des mails pour la liste spécifique ci-dessous'), $mail_guests);
  126 + $displayElement(__('Mail guest 1'), h($configurationObj->emailGuest1));
  127 + $displayElement(__('Mail guest 2'), h($configurationObj->emailGuest2));
  128 + $displayElement(__('Mail guest 3'), h($configurationObj->emailGuest3));
  129 + $displayElement(__('Mail guest 4'), h($configurationObj->emailGuest4));
  130 + $displayElement(__('Mail guest 5'), h($configurationObj->emailGuest5));
  131 + $displayElement(__('Mail guest 6'), h($configurationObj->emailGuest6));
  132 + $displayElement(__('Mail guest 7'), h($configurationObj->emailGuest7));
  133 + $displayElement(__('Mail guest 8'), h($configurationObj->emailGuest8));
  134 + $displayElement(__('Mail guest 9'), h($configurationObj->emailGuest9));
  135 + $displayElement(__('Mail guest 10'), h($configurationObj->emailGuest10));
  136 + echo '</table>';
  137 + echo '</div>';
  138 +
  139 + if ($configuration->use_ldap) :
  140 + echo '<h3 id="t_fichiers" style="cursor: pointer;">';
  141 + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_fichiers"></i>';
  142 + echo '<span style="text-decoration: underline;">LDAP</span>';
  143 + echo '</h3>';
  144 + echo '<div id="fichiers" style="margin-bottom: 20px;">';
  145 + echo '<table>';
  146 + echo '<tr><th style="width: 250px;"></th><th></th></tr>';
  147 + $displayElement(__('Utilisation du LDAP'), $ldap);
  148 + $displayElement(__('Host du LDAP'), h($configurationObj->host_ldap));
  149 + $displayElement(__('Port du LDAP'), h($configurationObj->port_ldap));
  150 + $displayElement(__('Type d\'authentification du LDAP'), h($configurationObj->authentificationType_ldap));
  151 + $displayElement(__('Base DN du LDAP'), h($configurationObj->baseDn_ldap));
  152 + $displayElement(__('Filtre du LDAP'), h($configurationObj->filter_ldap));
  153 +
  154 + echo '</table>';
  155 + echo '</div>';
150 156 endif;
151 157  
152   - echo '<h3 id="t_emprunts" style="cursor: pointer;">';
153   - echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_emprunts"></i>';
154   - echo '<span style="text-decoration: underline;">Affichage</span>';
155   - echo '</h3>';
156   - echo '<div id="emprunts" style="margin-bottom: 20px;">';
157   - echo '<table>';
158   - echo '<tr><th style="width: 250px;"></th><th></th></tr>';
159   - $displayElement(__('Nombre de materiel affichés par défaut'), h($configurationObj->aff_par_defaut));
160   - echo '</table>';
161   - echo '</div>';
  158 + echo '<h3 id="t_emprunts" style="cursor: pointer;">';
  159 + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_emprunts"></i>';
  160 + echo '<span style="text-decoration: underline;">Affichage</span>';
  161 + echo '</h3>';
  162 + echo '<div id="emprunts" style="margin-bottom: 20px;">';
  163 + echo '<table>';
  164 + echo '<tr><th style="width: 250px;"></th><th></th></tr>';
  165 + $displayElement(__('Nombre de materiel affichés par défaut'), h($configurationObj->aff_par_defaut));
  166 + echo '</table>';
  167 + echo '</div>';
162 168  
163 169 ?>
164   -
165   -
  170 +
  171 +
166 172 </div>
167 173  
168 174 <div class="actions">
169   - <?php echo $this->element('menu') ?>
  175 + <?php
  176 +
  177 +echo $this->element('menu')?>
170 178 </div>
... ...
src/Template/Materiels/edit.ctp
... ... @@ -51,18 +51,21 @@ else if ($IS_ARCHIVED_OR_TOBE) {
51 51  
52 52 <?php
53 53 // Version LATMOS - Désignation
54   - echo '<div class="input text required"><label for="designation">Désignation</label><input list="designa" disabled="' . $isReadonlyField('designation', $myReadonlyFields) . '" id="designation" name="designation" value="' . array_shift($designation_edit) . '" type="text" placeholder="choisir/ajouter une designation" autocomplete="off"><datalist id="designa">';
55   - foreach ($designation as $e) {
56   - echo "<option value=\"$e\">";
57   - }
58   - echo '</datalist> </div>';
59   - // Version IRAP - Désignation
60 54 /*
61   - * echo $this->Form->input ( 'designation', [
62   - * 'label' => 'Désignation',
63   - * 'disabled' => $isReadonlyField ( 'designation', $myReadonlyFields )
64   - * ] );
  55 + * echo '<div class="input text required"><label for="designation">Désignation</label><input list="designa" disabled="' . $isReadonlyField('designation', $myReadonlyFields) . '" id="designation" name="designation" value="' . array_shift($designation_edit) . '" type="text" placeholder="choisir/ajouter une designation" autocomplete="off"><datalist id="designa">';
  56 + * foreach ($designation as $e) {
  57 + * echo "<option value=\"$e\">";
  58 + * }
  59 + * echo '</datalist> </div>';
65 60 */
  61 +
  62 + // Version IRAP - Désignation
  63 +
  64 + echo $this->Form->input('designation', [
  65 + 'label' => 'Désignation',
  66 + 'disabled' => $isReadonlyField('designation', $myReadonlyFields)
  67 + ]);
  68 +
66 69 if (in_array($role, [
67 70 'Administration',
68 71 'Administration Plus',
... ...
src/Template/Pages/home_app.ctp
... ... @@ -64,7 +64,7 @@ if ($role == &#39;Responsable&#39;) {
64 64 }
65 65  
66 66 // A rendre configurable (pourquoi pas)
67   -if (($role == 'Responsable' || $role == 'Utilisateur')) {
  67 +if (($role == 'Responsable' || $role == 'Utilisateur') && $configuration->procedure_sur_accueil) {
68 68 ?>
69 69 <h5>Procédure à suivre pour la commande d’un nouveau matériel (8 étapes)</h5>
70 70 <br>
... ...