Commit aec79c69bd4708192fad9c0b94a5329111941efd
1 parent
6aca6d83
Exists in
master
and in
2 other branches
Refactorisation add() et edit() de Materiels + BUGFIX gestionnaire
DESCRIPTION : - Refactorisation des actions add() et edit() de MaterielsController en une seule fonction add_or_edit() car elles étaient très semblables - Gestionnaire de reference : maintenant bien sauvegardé (avant il était perdu...) IMPORTANT : - Pour connaitre la version actuelle, taper "./VERSION" - Pour mettre à jour le code, utiliser ./UPDATE depuis la racine du projet (ne plus se contenter de faire "git pull") (UPDATE fait "git pull" mais il met aussi à jour la BD, seulement si nécessaire) - Pour s'assurer que la version récupérée est stable, taper "./TESTS.sh" (tout doit passer ok) - En cas de problème, taper ./SHOW_LOGS pour voir si les logs d'erreur peuvent aider - Pour que "./TESTS.sh" s'exécute sans "deprecated error", il faut ajouter cette ligne dans la clé 'Error' de votre fichier config/app.php 'Error' => [ ... 'errorLevel' => E_ALL & ~E_USER_DEPRECATED, ... ],
Showing
6 changed files
with
425 additions
and
39 deletions
Show diff stats
README.md
... | ... | @@ -54,11 +54,15 @@ Logiciel testé et validé sur les configurations suivantes : |
54 | 54 | VERSION ACTUELLE |
55 | 55 | |
56 | 56 | Date: 25/03/2019 |
57 | -Version: 2.11.1 | |
57 | +Version: 2.11.2 | |
58 | 58 | Author: EP |
59 | - Bugfix searchLdap() | |
59 | + Refactorisation des actions add() et edit() de MaterielsController + BUGFIX gestionnaire | |
60 | 60 | |
61 | - IMPORTANT: | |
61 | + DESCRIPTION : | |
62 | + - Refactorisation des actions add() et edit() de MaterielsController en une seule fonction add_or_edit() car elles étaient très semblables | |
63 | + - Gestionnaire de reference : maintenant bien sauvegardé (avant il était perdu...) | |
64 | + | |
65 | + IMPORTANT : | |
62 | 66 | - Pour connaitre la version actuelle, taper "./VERSION" |
63 | 67 | - Pour mettre à jour le code, utiliser ./UPDATE depuis la racine du projet (ne plus se contenter de faire "git pull") |
64 | 68 | (UPDATE fait "git pull" mais il met aussi à jour la BD, seulement si nécessaire) | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -695,33 +695,399 @@ class MaterielsController extends AppController |
695 | 695 | $this->set('_serialize', [ |
696 | 696 | 'materiel' |
697 | 697 | ]); |
698 | - } | |
699 | - | |
698 | + } // view | |
699 | + | |
700 | + | |
700 | 701 | /** |
701 | - * Add method | |
702 | + * Add or Edit method (do either add() or edit()) | |
703 | + * => Factorisation de add() et edit() | |
704 | + * (voir aussi https://book.cakephp.org/3.0/en/orm.html) | |
702 | 705 | * |
703 | - * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. | |
706 | + * @param $IS_ADD: True = add ; False = edit | |
707 | + * @return \Cake\Network\Response|void Redirects on successful add/edit, renders view otherwise. | |
704 | 708 | */ |
705 | - public function add($valeurs = null, $erreurs = null) | |
709 | + public function add_or_edit($is_add, $id = null, $valeurs = null, $erreurs = null) | |
706 | 710 | { |
707 | - $materiel = $this->Materiels->newEntity(); | |
708 | - if ($this->request->is('post')) { | |
711 | + $usersTable = TableRegistry::getTableLocator()->get('Users'); | |
712 | + | |
713 | + // ADD | |
714 | + if ($is_add) { | |
715 | + $materiel = $this->Materiels->newEntity(); | |
716 | + } | |
717 | + // EDIT | |
718 | + else { | |
719 | + $materiel = $this->Materiels->get($id, [ | |
720 | + 'contain' => [] | |
721 | + ]); | |
722 | + } | |
723 | + | |
724 | + /* SI POST | |
725 | + * Les données ont été saisies et postées | |
726 | + * On va donc les sauvegarder | |
727 | + */ | |
728 | + if ( | |
729 | + | |
730 | + // ADD | |
731 | + // Nouveau materiel saisi et posted | |
732 | + ($is_add && $this->request->is('post')) | |
733 | + | |
734 | + || | |
735 | + | |
736 | + // EDIT | |
737 | + // materiel modifié et posted | |
738 | + ( (!$is_add) && $this->request->is(['patch','post','put']) ) | |
739 | + | |
740 | + ) { | |
741 | + | |
742 | + // (1) On rempli $materiel avec les données de ce materiel | |
709 | 743 | $materiel = $this->Materiels->patchEntity($materiel, $this->request->getData()); |
710 | - if (in_array($_SESSION['Auth']['User']['sn'][0], TableRegistry::get('Users')->find('list', [ | |
744 | + | |
745 | + // (2) Si l'utilisateur courant est un "administratif" => le mettre comme gestionnaire du materiel | |
746 | + // (tout ça pour ça !!! Faudra réduire ce bazarre) | |
747 | + $current_user_name = $_SESSION['Auth']['User']['sn'][0]; | |
748 | + if (in_array( | |
749 | + $current_user_name, | |
750 | + $usersTable | |
751 | + ->find('list', [ | |
752 | + 'keyField' => 'id', | |
753 | + 'valueField' => 'nom' | |
754 | + ]) | |
755 | + ->where([ | |
756 | + 'role =' => 'Administration' | |
757 | + ]) | |
758 | + ->toArray() | |
759 | + )) { | |
760 | + $materiel->gestionnaire_id = $usersTable | |
761 | + ->find() | |
762 | + ->where([ | |
763 | + 'nom' => $current_user_name | |
764 | + ]) | |
765 | + ->first()->id; | |
766 | + } | |
767 | + | |
768 | + // (3) On l'ajoute en BD, on envoie un email, et on affiche ok sur page accueil | |
769 | + $action = $is_add ? "ajouté" : "modifié"; | |
770 | + if ($this->Materiels->save($materiel)) { | |
771 | + $this->Flash->success(__("Le matériel a bien été $action".".")); | |
772 | + if ($is_add) { | |
773 | + $this->sendEmail($materiel); | |
774 | + $id = $materiel->id; | |
775 | + } | |
776 | + /* | |
777 | + * EDIT | |
778 | + //En attendant un remaniement complet de la fonction | |
779 | + //1 = img, doc = 2, mail normal = tout autre argument | |
780 | + //$this->sendmail($materiel,5); | |
781 | + */ | |
782 | + return $this->redirect([ | |
783 | + 'action' => 'view', | |
784 | + $id | |
785 | + ]); | |
786 | + } else | |
787 | + $this->Flash->error(__("Le matériel n'a pas pu être $action".".")); | |
788 | + } // if POST | |
789 | + | |
790 | + | |
791 | + /* SINON (PAS POST) | |
792 | + * C'est la première fois qu'on vient sur cette vue, | |
793 | + * donc on va préparer le formulaire de saisie) | |
794 | + */ | |
795 | + | |
796 | + //--- 1) INITIALISATION DE LISTES POUR ASSISTER LA SAISIE (listes de choix proposés) | |
797 | + | |
798 | + $surCategories = $this->Materiels->SurCategories->find('list', [ | |
799 | + 'keyField' => 'id', | |
800 | + 'valueField' => 'nom', | |
801 | + 'order' => 'SurCategories.nom', | |
802 | + // only for add() (was not in edit()) : | |
803 | + 'conditions' => array( | |
804 | + 'nom !=' => 'N/A' | |
805 | + ) | |
806 | + ]); | |
807 | + $categories = $this->Materiels->Categories->find('list', [ | |
808 | + 'keyField' => 'id', | |
809 | + 'valueField' => 'nom', | |
810 | + 'order' => 'Categories.nom' | |
811 | + ]); | |
812 | + $sousCategories = $this->Materiels->SousCategories->find('list', [ | |
813 | + 'keyField' => 'id', | |
814 | + 'valueField' => 'nom', | |
815 | + 'order' => 'SousCategories.nom' | |
816 | + ]); | |
817 | + $groupesThematiques = $this->Materiels->GroupesThematiques->find('list', [ | |
818 | + 'keyField' => 'id', | |
819 | + 'valueField' => 'nom', | |
820 | + 'order' => 'GroupesThematiques.nom' | |
821 | + ]); | |
822 | + $groupesMetiers = $this->Materiels->GroupesMetiers->find('list', [ | |
823 | + 'keyField' => 'id', | |
824 | + 'valueField' => 'nom', | |
825 | + 'order' => 'GroupesMetiers.nom' | |
826 | + ]); | |
827 | + $organismes = $this->Materiels->Organismes->find('list', [ | |
828 | + 'keyField' => 'id', | |
829 | + 'valueField' => 'nom', | |
830 | + 'order' => 'Organismes.nom' | |
831 | + ]); | |
832 | + $sites = $this->Materiels->Sites->find('list', [ | |
833 | + 'keyField' => 'id', | |
834 | + 'valueField' => 'nom', | |
835 | + 'order' => 'Sites.nom' | |
836 | + ]); | |
837 | + $designation = $this->Materiels->find('list', [ | |
838 | + 'keyField' => 'designation', | |
839 | + 'valueField' => 'designation', | |
840 | + 'conditions' => array( | |
841 | + 'designation !=' => '' | |
842 | + ), | |
843 | + 'order' => 'designation', | |
844 | + 'group' => 'designation' | |
845 | + ]); | |
846 | + | |
847 | + // autocomplete + saisie sites | |
848 | + $lieu_detail = $this->Materiels->find('list', [ | |
849 | + 'keyField' => 'lieu_detail', | |
850 | + 'valueField' => 'lieu_detail', | |
851 | + 'conditions' => array( | |
852 | + 'lieu_detail !=' => '' | |
853 | + ), | |
854 | + 'order' => 'lieu_detail', | |
855 | + // only for add() (was not in edit()) : | |
856 | + 'group' => 'lieu_detail' | |
857 | + ]); | |
858 | + | |
859 | + // Liste fournisseurs | |
860 | + $fournisseurs = $this->Materiels->Fournisseurs->find('list', [ | |
861 | + 'keyField' => 'id', | |
862 | + 'valueField' => 'nom', | |
863 | + 'order' => 'Fournisseurs.nom' | |
864 | + ]); | |
865 | + | |
866 | + // Liste des gestionnaires (admin) | |
867 | + //$administrateurs = TableRegistry::get('Users')->find('list', [ | |
868 | + $administrateurs = $usersTable | |
869 | + ->find('list', [ | |
870 | + //'keyField' => 'nom', | |
711 | 871 | 'keyField' => 'id', |
712 | 872 | 'valueField' => 'nom' |
713 | 873 | ]) |
714 | - ->where([ | |
874 | + ->where([ | |
715 | 875 | 'role =' => 'Administration' |
716 | 876 | ]) |
717 | - ->toArray())) { | |
718 | - $gestionnaireID = TableRegistry::get('Users')->find() | |
719 | - ->where([ | |
720 | - 'nom' => $_SESSION['Auth']['User']['sn'][0] | |
721 | - ]) | |
722 | - ->first()->id; | |
723 | - $materiel->gestionnaire_id = $gestionnaireID; | |
877 | + ->toArray(); | |
878 | + | |
879 | + $domaineresp = $usersTable->find() | |
880 | + ->select('sur_categorie_id') | |
881 | + ->where([ | |
882 | + 'username =' => $this->LdapAuth->user($this->request->getSession() | |
883 | + ->read('authType'))[0] | |
884 | + ]) | |
885 | + ->first()['sur_categorie_id']; | |
886 | + if ($domaineresp == null) $domaineresp = false; | |
887 | + | |
888 | + // EDIT only | |
889 | + if (! $is_add) { | |
890 | + | |
891 | + $designation_edit = $this->Materiels->find('list', [ | |
892 | + 'keyField' => 'id', | |
893 | + 'valueField' => 'designation', | |
894 | + 'conditions' => array( | |
895 | + 'id =' => $materiel->id | |
896 | + ) | |
897 | + ])->toArray(); | |
898 | + //$designation_edit = $designation_edit->toArray(); | |
899 | + | |
900 | + $lieu_detail_edit = $this->Materiels->find('list', [ | |
901 | + 'keyField' => 'id', | |
902 | + 'valueField' => 'lieu_detail', | |
903 | + 'conditions' => array( | |
904 | + 'id =' => $materiel->id | |
905 | + ) | |
906 | + ])->toArray(); | |
907 | + //$lieu_detail_edit = $lieu_detail_edit->toArray(); | |
908 | + | |
909 | + //(EP) TODO: debug ce truc, c'est du grand n'importe nawak ! | |
910 | + $dom = TableRegistry::get('Materiels')->find() | |
911 | + ->select('sur_categorie_id') | |
912 | + ->where([ | |
913 | + 'id =' => $materiel->id | |
914 | + ]) | |
915 | + ->first()['sur_categorie_id']; | |
916 | + $domaines = TableRegistry::get('Users')->find() | |
917 | + ->select('sur_categorie_id') | |
918 | + ->where([ | |
919 | + 'username =' => $this->LdapAuth->user($this->request->getSession() | |
920 | + ->read('authType'))[0] | |
921 | + ]) | |
922 | + ->first()['sur_categorie_id']; | |
923 | + $role = TableRegistry::get('Users')->find() | |
924 | + ->select('role') | |
925 | + ->where([ | |
926 | + 'username =' => $this->LdapAuth->user($this->request->getSession() | |
927 | + ->read('authType'))[0] | |
928 | + ]) | |
929 | + ->first()['role']; | |
930 | + $domaineresp = ($dom == $domaines); | |
931 | + } // EDIT only | |
932 | + | |
933 | + //--- 2) INITIALISATION DE VARIABLES QU'ON VA PASSER A LA VUE (add.ctp ou edit.ctp) | |
934 | + | |
935 | + // not used | |
936 | + //$utilisateurconnect = $usersTable->find('all')->toArray(); | |
937 | + | |
938 | + // TODO: code redondant avec edit(), à factoriser | |
939 | + // HOWTO: https://book.cakephp.org/3.0/en/orm.html | |
940 | + //$users = TableRegistry::get('LdapConnections')->getListUsers(); | |
941 | + //$users = TableRegistry::get('LdapConnections')->getUsersWithNameAndEmail(); | |
942 | + $users_name_and_email = TableRegistry::getTableLocator()->get('LdapConnections')->getUsersWithNameAndEmail(); | |
943 | + $users_name = array_keys($users_name_and_email); | |
944 | + $users_option_list = []; | |
945 | + for ($i = 0; $i < sizeof($users_name); $i ++) { | |
946 | + // $users_option_list["Etienne Pallier"] = "Etienne Pallier" | |
947 | + $users_option_list[$users_name[$i]] = $users_name[$i]; | |
948 | + } | |
949 | + | |
950 | + $mail_responsable = $usersTable->find() | |
951 | + ->select('email') | |
952 | + ->where([ | |
953 | + 'username =' => $this->LdapAuth->user($this->request->getSession() | |
954 | + ->read('authType'))[0] | |
955 | + ]) | |
956 | + ->first()['email']; | |
957 | + | |
958 | + // ADD only | |
959 | + if ( $is_add) { | |
960 | + if (isset($this->request->getAttribute('params')['pass'][0])) { | |
961 | + $cpMateriel = $this->Materiels->get($this->request->getAttribute('params')['pass'][0]); | |
962 | + $this->set('cpMateriel', $cpMateriel); | |
724 | 963 | } |
964 | + } | |
965 | + | |
966 | + // EDIT only | |
967 | + else { | |
968 | + | |
969 | + if (! empty($materiel->get('nom_responsable'))) { | |
970 | + //if (! in_array($materiel->get('nom_responsable'), $utilisateurs)) { | |
971 | + if (! in_array($materiel->get('nom_responsable'), $users_name)) { | |
972 | + $nom_ancien_responsable = $materiel->get('nom_responsable'); | |
973 | + $this->set(compact('nom_ancien_responsable')); | |
974 | + } | |
975 | + } | |
976 | + | |
977 | + // (EP) Fonction utilisée dans la vue, déclarée ici pour éviter les problèmes de tests | |
978 | + $isReadonlyField = function ($fieldName, $myReadonlyFields) { | |
979 | + if (! empty($myReadonlyFields) && $myReadonlyFields[0] == '*') { | |
980 | + $modifiableFields = $myReadonlyFields; | |
981 | + array_shift($modifiableFields); | |
982 | + return ! in_array($fieldName, $modifiableFields); | |
983 | + } | |
984 | + return in_array($fieldName, $myReadonlyFields); | |
985 | + }; | |
986 | + | |
987 | + $this->set('isReadonlyField', $isReadonlyField); | |
988 | + $this->set('IS_CREATED', $materiel->status == 'CREATED'); | |
989 | + $this->set('IS_VALIDATED', $materiel->status == 'VALIDATED'); | |
990 | + $this->set('IS_ARCHIVED_OR_TOBE', in_array($materiel->status, [ | |
991 | + 'TOBEARCHIVED', | |
992 | + 'ARCHIVED' | |
993 | + ])); | |
994 | + | |
995 | + $this->set(compact( | |
996 | + 'role', | |
997 | + 'designation_edit', | |
998 | + 'lieu_detail_edit' | |
999 | + )); | |
1000 | + | |
1001 | + } // EDIT only | |
1002 | + | |
1003 | + /* About set and compact : | |
1004 | + * | |
1005 | + * The compact (php) function returns an associative array, built by taking the names specified in the input array, | |
1006 | + * using them as keys, and taking the values of the variables referenced by those names and making those the values. | |
1007 | + * For example: | |
1008 | + * $fred = 'Fred Flinstone'; | |
1009 | + * $barney = 'Barney Rubble'; | |
1010 | + * $names = compact('fred', 'barney'); | |
1011 | + * => is equivalent to: $names = array('fred' => 'Fred Flinstone', 'barney' => 'Barney Rubble') | |
1012 | + * | |
1013 | + * So when you use compact in conjunction with set, | |
1014 | + * you're using the single parameter form of the set function, | |
1015 | + * by passing it an associative array of key-value pairs. | |
1016 | + * | |
1017 | + * If you just have one variable you want to set on the view, and you want to use the single parameter form, you must invoke set in the same way: | |
1018 | + * $variable_to_pass = 'Fred'; | |
1019 | + * $this->set(compact('variable_to_pass')); | |
1020 | + * | |
1021 | + * Otherwise, the two parameter form of set can be used: | |
1022 | + * $variable_to_pass = 'Fred'; | |
1023 | + * $this->set('variable_to_pass', $variable_to_pass); | |
1024 | + * | |
1025 | + * Both achieve the same thing. | |
1026 | + */ | |
1027 | + //$this->set(compact('designation', 'utilisateurconnect', 'users', 'materiel', 'surCategories', 'categories', 'sousCategories', 'groupesThematiques', 'groupesMetiers', 'organismes', 'sites', 'utilisateurs', 'mail_responsable', 'domaineresp', 'lieu_detail', 'fournisseurs')); | |
1028 | + $this->set(compact( | |
1029 | + 'materiel', | |
1030 | + // not used | |
1031 | + //'utilisateurconnect', | |
1032 | + 'surCategories', 'categories', 'sousCategories', | |
1033 | + 'groupesThematiques', 'groupesMetiers', | |
1034 | + 'organismes', 'sites', | |
1035 | + 'mail_responsable', | |
1036 | + 'domaineresp', | |
1037 | + 'designation', | |
1038 | + 'lieu_detail', | |
1039 | + 'fournisseurs', | |
1040 | + //'utilisateurs', | |
1041 | + 'users_name_and_email', 'users_option_list', | |
1042 | + // Gestionnaires (id=>name): | |
1043 | + 'administrateurs' | |
1044 | + )); | |
1045 | + | |
1046 | + $this->set('_serialize', [ | |
1047 | + 'materiel' | |
1048 | + ]); | |
1049 | + | |
1050 | + } //add_or_edit() | |
1051 | + | |
1052 | + | |
1053 | + /** | |
1054 | + * Add method | |
1055 | + * | |
1056 | + * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. | |
1057 | + */ | |
1058 | + public function add($valeurs = null, $erreurs = null) { $this->add_or_edit(TRUE, null, $valeurs, $erreurs); } | |
1059 | + /* | |
1060 | + { | |
1061 | + $usersTable = TableRegistry::getTableLocator()->get('Users'); | |
1062 | + $materiel = $this->Materiels->newEntity(); | |
1063 | + | |
1064 | + // Nouveau materiel saisi et posted | |
1065 | + if ($this->request->is('post')) { | |
1066 | + // (1) On rempli $materiel avec les données de ce materiel | |
1067 | + $materiel = $this->Materiels->patchEntity($materiel, $this->request->getData()); | |
1068 | + // (2) Si l'utilisateur courant est un "administratif" => le mettre comme gestionnaire du materiel | |
1069 | + // (tout ça pour ça !!! Faudra réduire ce bazarre) | |
1070 | + $current_user_name = $_SESSION['Auth']['User']['sn'][0]; | |
1071 | + if (in_array( | |
1072 | + $current_user_name, | |
1073 | + $usersTable | |
1074 | + ->find('list', [ | |
1075 | + 'keyField' => 'id', | |
1076 | + 'valueField' => 'nom' | |
1077 | + ]) | |
1078 | + ->where([ | |
1079 | + 'role =' => 'Administration' | |
1080 | + ]) | |
1081 | + ->toArray() | |
1082 | + )) { | |
1083 | + $materiel->gestionnaire_id = $usersTable | |
1084 | + ->find() | |
1085 | + ->where([ | |
1086 | + 'nom' => $current_user_name | |
1087 | + ]) | |
1088 | + ->first()->id; | |
1089 | + } | |
1090 | + // (3) On l'ajoute en BD | |
725 | 1091 | if ($this->Materiels->save($materiel)) { |
726 | 1092 | $this->Flash->success(__('Le matériel a bien été ajouté.')); |
727 | 1093 | $this->sendEmail($materiel); |
... | ... | @@ -733,6 +1099,7 @@ class MaterielsController extends AppController |
733 | 1099 | $this->Flash->error(__('Le matériel n\'a pas pu être ajouté.')); |
734 | 1100 | } |
735 | 1101 | |
1102 | + // Dans tous les cas (posted ou pas) | |
736 | 1103 | $surCategories = $this->Materiels->SurCategories->find('list', [ |
737 | 1104 | 'keyField' => 'id', |
738 | 1105 | 'valueField' => 'nom', |
... | ... | @@ -794,7 +1161,7 @@ class MaterielsController extends AppController |
794 | 1161 | 'order' => 'designation', |
795 | 1162 | 'group' => 'designation' |
796 | 1163 | ]); |
797 | - $domaineresp = TableRegistry::getTableLocator()->get('Users')->find() | |
1164 | + $domaineresp = $usersTable->find() | |
798 | 1165 | ->select('sur_categorie_id') |
799 | 1166 | ->where([ |
800 | 1167 | 'username =' => $this->LdapAuth->user($this->request->getSession() |
... | ... | @@ -803,7 +1170,7 @@ class MaterielsController extends AppController |
803 | 1170 | ->first()['sur_categorie_id']; |
804 | 1171 | if ($domaineresp == null) |
805 | 1172 | $domaineresp = false; |
806 | - $utilisateurconnect = TableRegistry::getTableLocator()->get('Users')->find('all')->toArray(); | |
1173 | + $utilisateurconnect = $usersTable->find('all')->toArray(); | |
807 | 1174 | |
808 | 1175 | // TODO: code redondant avec edit(), à factoriser |
809 | 1176 | // HOWTO: https://book.cakephp.org/3.0/en/orm.html |
... | ... | @@ -820,7 +1187,7 @@ class MaterielsController extends AppController |
820 | 1187 | $users_name = NULL; //unset($users_name); |
821 | 1188 | |
822 | 1189 | // Ne pas commenter la ligne suivante, on en a besoin dans add.cpt |
823 | - $mail_responsable = TableRegistry::get('Users')->find() | |
1190 | + $mail_responsable = $usersTable->find() | |
824 | 1191 | ->select('email') |
825 | 1192 | ->where([ |
826 | 1193 | 'username =' => $this->LdapAuth->user($this->request->getSession() |
... | ... | @@ -847,7 +1214,8 @@ class MaterielsController extends AppController |
847 | 1214 | $this->set('_serialize', [ |
848 | 1215 | 'materiel' |
849 | 1216 | ]); |
850 | - } | |
1217 | + } // add() | |
1218 | + */ | |
851 | 1219 | |
852 | 1220 | /** |
853 | 1221 | * Edit method |
... | ... | @@ -857,12 +1225,13 @@ class MaterielsController extends AppController |
857 | 1225 | * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise. |
858 | 1226 | * @throws \Cake\Network\Exception\NotFoundException When record not found. |
859 | 1227 | */ |
860 | - public function edit($id = null) | |
1228 | + public function edit($id = null) { $this->add_or_edit(FALSE, $id); } | |
1229 | + /* | |
861 | 1230 | { |
862 | 1231 | $materiel = $this->Materiels->get($id, [ |
863 | 1232 | 'contain' => [] |
864 | 1233 | ]); |
865 | - if ($this->request->is([ | |
1234 | + if ($this->request->is([ | |
866 | 1235 | 'patch', |
867 | 1236 | 'post', |
868 | 1237 | 'put' |
... | ... | @@ -994,12 +1363,11 @@ class MaterielsController extends AppController |
994 | 1363 | ]) |
995 | 1364 | ->first()['role']; |
996 | 1365 | |
997 | - /* NUL, franchement faudrait reflechir un peu quand meme, ya des limites !!! | |
998 | - if ($dom == $domaines) | |
999 | - $domaineresp = true; | |
1000 | - else | |
1001 | - $domaineresp = false; | |
1002 | - */ | |
1366 | + // NUL, franchement faudrait reflechir un peu quand meme, ya des limites !!! | |
1367 | + //if ($dom == $domaines) | |
1368 | + // $domaineresp = true; | |
1369 | + //else | |
1370 | + // $domaineresp = false; | |
1003 | 1371 | $domaineresp = ($dom == $domaines); |
1004 | 1372 | |
1005 | 1373 | // TODO: code redondant avec add(), à factoriser |
... | ... | @@ -1059,7 +1427,8 @@ class MaterielsController extends AppController |
1059 | 1427 | $this->set('_serialize', [ |
1060 | 1428 | 'materiel' |
1061 | 1429 | ]); |
1062 | - } | |
1430 | + } // edit() | |
1431 | + */ | |
1063 | 1432 | |
1064 | 1433 | /** |
1065 | 1434 | * Administrer method | ... | ... |
src/Model/Table/LdapConnectionsTable.php
... | ... | @@ -615,8 +615,10 @@ class LdapConnectionsTable extends AppTable |
615 | 615 | // En cas de LDAP anonyme, binding quand même pour vérifier le mot de passe de l'utilisateur. |
616 | 616 | // Sans cette ligne, on passe avec n'importe quel password !!! |
617 | 617 | if ($user_login && $user_password) |
618 | - $ldapbind = ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password) | |
619 | - or die("Could not bind to LDAP server.". ldap_error($ldapConnection) ); | |
618 | + $ldapbind = ldap_bind($ldapConnection, $this->authenticationType . '=' . $user_login . ',' . $this->baseDn, $user_password); | |
619 | + // or die("Could not bind to LDAP server: ". ldap_error($ldapConnection) ); | |
620 | + // (EP) Ne pas faire die() ici car ça stopperait net la mauvaise connexion d'un utilisateur, avec ce message d'erreur | |
621 | + // Il vaut mieux retourner FALSE et afficher un joli message de refus sur la page d'accueil | |
620 | 622 | /* |
621 | 623 | else { |
622 | 624 | $ldapbind = TRUE; | ... | ... |
src/Model/Table/MaterielsTable.php
... | ... | @@ -101,16 +101,21 @@ class MaterielsTable extends AppTable |
101 | 101 | 'foreignKey' => 'fournisseur_id' |
102 | 102 | ]); |
103 | 103 | |
104 | - // 9/6/17 EP added : | |
105 | - $this->belongsTo('Users', [ | |
106 | - 'foreignKey' => 'gestionnaire_id' | |
107 | - ]); | |
108 | 104 | // 14/1/19 cake bake auto added: |
109 | 105 | /* |
110 | 106 | $this->belongsTo('Gestionnaires', [ |
111 | 107 | 'foreignKey' => 'gestionnaire_id' |
112 | 108 | ]); |
113 | 109 | */ |
110 | + // 9/6/17 EP added : | |
111 | + $this->belongsTo('Users', [ | |
112 | + 'foreignKey' => 'gestionnaire_id' | |
113 | + ]); | |
114 | + /* EP TODO: | |
115 | + update `materiels` set gestionnaire_id = null where gestionnaire_id = 0; | |
116 | + ALTER TABLE `materiels` | |
117 | + ADD CONSTRAINT `fk_materiels_gestionnaire_id` FOREIGN KEY (`gestionnaire_id`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; | |
118 | + */ | |
114 | 119 | $this->belongsTo('Photos', [ |
115 | 120 | 'foreignKey' => 'photo_id' |
116 | 121 | ]); | ... | ... |
src/Template/Materiels/add.ctp
... | ... | @@ -232,6 +232,7 @@ if (isset($cpMateriel)) { |
232 | 232 | ]) |
233 | 233 | ->first(); |
234 | 234 | */ |
235 | + /* | |
235 | 236 | $administrateurs = TableRegistry::get('Users')->find('list', [ |
236 | 237 | 'keyField' => 'id', |
237 | 238 | 'valueField' => 'nom' |
... | ... | @@ -240,6 +241,7 @@ if (isset($cpMateriel)) { |
240 | 241 | 'role =' => 'Administration' |
241 | 242 | ]) |
242 | 243 | ->toArray(); |
244 | + */ | |
243 | 245 | |
244 | 246 | echo $this->Form->control('gestionnaire_id', [ |
245 | 247 | 'label' => 'Nom du gestionnaire de référence du matériel', | ... | ... |
src/Template/Materiels/edit.ctp
... | ... | @@ -301,12 +301,15 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
301 | 301 | 'readonly' => true, |
302 | 302 | 'default' => $mail_responsable |
303 | 303 | ]); |
304 | + | |
305 | + // (EP) TODO: Pour Javascript only (bidouille sale à éviter...) | |
304 | 306 | $res = TableRegistry::get('Users')->find() |
305 | 307 | ->where([ |
306 | 308 | 'username' => $username, |
307 | 309 | 'role' => 'Administration' |
308 | 310 | ]) |
309 | - ->first(); | |
311 | + ->first(); | |
312 | + /* | |
310 | 313 | $administrateurs = TableRegistry::get('Users')->find('list', [ |
311 | 314 | 'keyField' => 'nom', |
312 | 315 | 'valueField' => 'nom' |
... | ... | @@ -315,6 +318,7 @@ if ($IS_VALIDATED && $materiel->numero_serie) |
315 | 318 | 'role =' => 'Administration' |
316 | 319 | ]) |
317 | 320 | ->toArray(); |
321 | + */ | |
318 | 322 | echo $this->Form->control('gestionnaire_id', [ |
319 | 323 | 'label' => 'Nom du gestionnaire de référence du matériel', |
320 | 324 | 'empty' => 'Choisir un gestionnaire', | ... | ... |