From d2e3dfe700e9abd996ec42c0d1f646ac3200d99c Mon Sep 17 00:00:00 2001 From: fredtempez Date: Sat, 5 Aug 2023 14:50:05 +0200 Subject: [PATCH] Ordre des profils --- core/module/user/user.php | 201 +++++++++++------- .../user/view/profilEdit/profilEdit.php | 21 +- 2 files changed, 139 insertions(+), 83 deletions(-) diff --git a/core/module/user/user.php b/core/module/user/user.php index 083edb75..cce4c696 100644 --- a/core/module/user/user.php +++ b/core/module/user/user.php @@ -71,6 +71,8 @@ class user extends common public static $listModules = []; + public static $profils = []; + /** * Ajout */ @@ -508,23 +510,23 @@ class user extends common $groupId == self::GROUP_EDITOR ) { // Enumérer les sous groupes MEMBER et MODERATOR - foreach ($groupData as $subGroupId => $subGroupData) { - self::$userGroups[$groupId . '.' . $subGroupId] = [ - $groupId . '-' . $subGroupId, - self::$groups[$groupId] . '
Profil : ' . $subGroupData['name'], - nl2br($subGroupData['comment']), - template::button('profilEdit' . $groupId . $subGroupId, [ - 'href' => helper::baseUrl() . 'user/profilEdit/' . $groupId . '/' . $subGroupId, + foreach ($groupData as $profilId => $profilData) { + self::$userGroups[$groupId . '.' . $profilId] = [ + $groupId . '-' . $profilId, + self::$groups[$groupId] . '
Profil : ' . $profilData['name'], + nl2br($profilData['comment']), + template::button('profilEdit' . $groupId . $profilId, [ + 'href' => helper::baseUrl() . 'user/profilEdit/' . $groupId . '/' . $profilId, 'value' => template::ico('pencil'), 'help' => 'Éditer', - 'disabled' => $subGroupData['readonly'], + 'disabled' => $profilId === 1 ? true : $profilData['readonly'], ]), - template::button('profilDelete' . $groupId . $subGroupId, [ + template::button('profilDelete' . $groupId . $profilId, [ 'class' => 'userDelete buttonRed', - 'href' => helper::baseUrl() . 'user/profilDelete/' . $groupId . '/' . $subGroupId, + 'href' => helper::baseUrl() . 'user/profilDelete/' . $groupId . '/' . $profilId, 'value' => template::ico('trash'), 'help' => 'Supprimer', - 'disabled' => $subGroupData['permanent'], + 'disabled' => $profilData['permanent'], ]) ]; } @@ -548,6 +550,15 @@ class user extends common $this->getUser('permission', __CLASS__, __FUNCTION__) === true && $this->isPost() ) { + + // Effacer les données du numéro de profil ancien + $group = $this->getInput('profilEditGroup', helper::FILTER_STRING_SHORT, true); + $profil = $this->getInput('profilEditProfil', helper::FILTER_STRING_SHORT, true); + $oldProfil = $this->getInput('profilEditOldProfil', helper::FILTER_STRING_SHORT); + if ($profil !== $profil) { + $this->deleteData(['profil', $group, $oldProfil]); + } + // Données du formulaire $data = [ 'name' => $this->getInput('profilEditName', helper::FILTER_STRING_SHORT, true), @@ -606,14 +617,14 @@ class user extends common //Sauvegarder le données $this->setData([ 'profil', - $this->getInput('profilEditGroup', helper::FILTER_STRING_LONG, true), - $this->getInput('profilEditProfil', helper::FILTER_STRING_LONG, true), + $group, + $profil, $data ]); // Valeurs en sortie $this->addOutput([ - 'redirect' => helper::baseUrl() . 'user/profilEdit/' . $this->getUrl(2) . '/' . $this->getUrl(3), + 'redirect' => helper::baseUrl() . 'user/profil', 'notification' => helper::translate('Modifications enregistrées'), 'state' => true ]); @@ -630,6 +641,27 @@ class user extends common self::$listModules = array_keys(self::$listModules); sort(self::$listModules); + /** + * Génération des profils disponibles + * Tableau des profils attribués + * Extraire les numéros de profils + * Générer un tableau $p des profils possibles selon le plafond + * Ne garder que la différence sauf le profil de l'utilisateur édité que l'on ajoute + */ + self::$profils = $this->getData(['profil', $this->getUrl(2)]); + // Supprime le profil utilisateur + unset(self::$profils[$this->getUrl(3)]); + self::$profils = array_keys(self::$profils); + $p = range(1, self::MAX_PROFILS - 1); + self::$profils = array_diff($p, self::$profils); + sort(self::$profils); + // Restructure le tableau pour faire correspondre la clé et la valeur + $p = array(); + foreach (self::$profils as $key => $value) { + $p[$value] = $value; + } + self::$profils = $p; + // Valeurs en sortie; $this->addOutput([ 'title' => sprintf(helper::translate('Édition du profil %s'), $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'name'])), @@ -650,76 +682,89 @@ class user extends common ) { // Nombre de profils de ce groupe $group = $this->getInput('profilAddGroup'); - $profil = (string) (count($this->getData(['profil', $group])) + 1); + $profil = count($this->getData(['profil', $group])); + // Vérifier le quota du nombre de profils dans le groupe + var_dump($profil < self::MAX_PROFILS); - // Données du formulaire - $data = [ - 'name' => $this->getInput('profilAddName', helper::FILTER_STRING_SHORT, true), - 'readonly' => false, - 'permanent' => false, - 'comment' => $this->getInput('profilAddComment', helper::FILTER_STRING_SHORT, true), - 'filemanager' => $this->getInput('profilAddFileManager', helper::FILTER_BOOLEAN), - 'file' => [ - 'download' => $this->getInput('profilAddDownload', helper::FILTER_BOOLEAN), - 'edit' => $this->getInput('profilAddEdit', helper::FILTER_BOOLEAN), - 'create' => $this->getInput('profilAddCreate', helper::FILTER_BOOLEAN), - 'rename' => $this->getInput('profilAddRename', helper::FILTER_BOOLEAN), - 'upload' => $this->getInput('profilAddUpload', helper::FILTER_BOOLEAN), - 'delete' => $this->getInput('profilAddDelete', helper::FILTER_BOOLEAN), - 'preview' => $this->getInput('profilAddPreview', helper::FILTER_BOOLEAN), - 'duplicate' => $this->getInput('profilAddDuplicate', helper::FILTER_BOOLEAN), - 'extract' => $this->getInput('profilAddExtract', helper::FILTER_BOOLEAN), - 'copycut' => $this->getInput('profilAddCopycut', helper::FILTER_BOOLEAN), - 'chmod' => $this->getInput('profilAddChmod', helper::FILTER_BOOLEAN), - ], - 'folder' => [ - 'create' => $this->getInput('profilAddFolderCreate', helper::FILTER_BOOLEAN), - 'delete' => $this->getInput('profilAddFolderDelete', helper::FILTER_BOOLEAN), - 'rename' => $this->getInput('profilAddFolderRename', helper::FILTER_BOOLEAN), - 'copycut' => $this->getInput('profilAddFolderCopycut', helper::FILTER_BOOLEAN), - 'chmod' => $this->getInput('profilAddFolderChmod', helper::FILTER_BOOLEAN), - 'path' => $this->getInput('profilAddPath'), - ], - 'page' => [ - 'add' => $this->getInput('profilAddPageAdd', helper::FILTER_BOOLEAN), - 'edit' => $this->getInput('profilAddPageEdit', helper::FILTER_BOOLEAN), - 'delete' => $this->getInput('profilAddPageDelete', helper::FILTER_BOOLEAN), - 'duplicate' => $this->getInput('profilAddPageDuplicate', helper::FILTER_BOOLEAN), - 'module' => $this->getInput('profilAddPageModule', helper::FILTER_BOOLEAN), - 'cssEditor' => $this->getInput('profilAddPagecssEditor', helper::FILTER_BOOLEAN), - 'jsEditor' => $this->getInput('profilAddPagejsEditor', helper::FILTER_BOOLEAN), - ], - 'user' => [ - 'edit' => $this->getInput('profilAddUserEdit', helper::FILTER_BOOLEAN), - ] - ]; + if ($profil < self::MAX_PROFILS) { + $profil = (string) ($profil + 1); + // Données du formulaire + $data = [ + 'name' => $this->getInput('profilAddName', helper::FILTER_STRING_SHORT, true), + 'readonly' => false, + 'permanent' => false, + 'comment' => $this->getInput('profilAddComment', helper::FILTER_STRING_SHORT, true), + 'filemanager' => $this->getInput('profilAddFileManager', helper::FILTER_BOOLEAN), + 'file' => [ + 'download' => $this->getInput('profilAddDownload', helper::FILTER_BOOLEAN), + 'edit' => $this->getInput('profilAddEdit', helper::FILTER_BOOLEAN), + 'create' => $this->getInput('profilAddCreate', helper::FILTER_BOOLEAN), + 'rename' => $this->getInput('profilAddRename', helper::FILTER_BOOLEAN), + 'upload' => $this->getInput('profilAddUpload', helper::FILTER_BOOLEAN), + 'delete' => $this->getInput('profilAddDelete', helper::FILTER_BOOLEAN), + 'preview' => $this->getInput('profilAddPreview', helper::FILTER_BOOLEAN), + 'duplicate' => $this->getInput('profilAddDuplicate', helper::FILTER_BOOLEAN), + 'extract' => $this->getInput('profilAddExtract', helper::FILTER_BOOLEAN), + 'copycut' => $this->getInput('profilAddCopycut', helper::FILTER_BOOLEAN), + 'chmod' => $this->getInput('profilAddChmod', helper::FILTER_BOOLEAN), + ], + 'folder' => [ + 'create' => $this->getInput('profilAddFolderCreate', helper::FILTER_BOOLEAN), + 'delete' => $this->getInput('profilAddFolderDelete', helper::FILTER_BOOLEAN), + 'rename' => $this->getInput('profilAddFolderRename', helper::FILTER_BOOLEAN), + 'copycut' => $this->getInput('profilAddFolderCopycut', helper::FILTER_BOOLEAN), + 'chmod' => $this->getInput('profilAddFolderChmod', helper::FILTER_BOOLEAN), + 'path' => $this->getInput('profilAddPath'), + ], + 'page' => [ + 'add' => $this->getInput('profilAddPageAdd', helper::FILTER_BOOLEAN), + 'edit' => $this->getInput('profilAddPageEdit', helper::FILTER_BOOLEAN), + 'delete' => $this->getInput('profilAddPageDelete', helper::FILTER_BOOLEAN), + 'duplicate' => $this->getInput('profilAddPageDuplicate', helper::FILTER_BOOLEAN), + 'module' => $this->getInput('profilAddPageModule', helper::FILTER_BOOLEAN), + 'cssEditor' => $this->getInput('profilAddPagecssEditor', helper::FILTER_BOOLEAN), + 'jsEditor' => $this->getInput('profilAddPagejsEditor', helper::FILTER_BOOLEAN), + ], + 'user' => [ + 'edit' => $this->getInput('profilAddUserEdit', helper::FILTER_BOOLEAN), + ] + ]; - // Données des modules - $dataModules = helper::getModules(); - if (is_array($dataModules)) { - foreach ($dataModules as $moduleId => $moduleValue) { - if (file_exists('module/' . $moduleId . '/profil/main/add.inc.php')) { - include('module/' . $moduleId . '/profil/main/add.inc.php'); - if (is_array($moduleData[$moduleId])) { - $data = array_merge($data, [$moduleId => $moduleData[$moduleId]]); + // Données des modules + $dataModules = helper::getModules(); + if (is_array($dataModules)) { + foreach ($dataModules as $moduleId => $moduleValue) { + if (file_exists('module/' . $moduleId . '/profil/main/add.inc.php')) { + include('module/' . $moduleId . '/profil/main/add.inc.php'); + if (is_array($moduleData[$moduleId])) { + $data = array_merge($data, [$moduleId => $moduleData[$moduleId]]); + } } } } - } - // Sauvegarder les données - $this->setData([ - 'profil', - $group, - $profil, - $data - ]); - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() . 'user/profil', - 'notification' => helper::translate('Modifications enregistrées'), - 'state' => true - ]); + // Sauvegarder les données + $this->setData([ + 'profil', + $group, + $profil, + $data + ]); + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() . 'user/profil', + 'notification' => helper::translate('Modifications enregistrées'), + 'state' => true + ]); + } else { + + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() . 'user/profil', + 'notification' => helper::translate('Nombre de profils maximum : ') . self::MAX_PROFILS, + 'state' => false + ]); + } } // Chemin vers les dossiers du gestionnaire de fichier diff --git a/core/module/user/view/profilEdit/profilEdit.php b/core/module/user/view/profilEdit/profilEdit.php index 680e8bcc..73f12cdd 100644 --- a/core/module/user/view/profilEdit/profilEdit.php +++ b/core/module/user/view/profilEdit/profilEdit.php @@ -21,10 +21,21 @@
- 'Nom du profil', - 'value' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'name']) - ]); ?> +
+
+ 'Nom du profil', + 'value' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'name']) + ]); ?> +
+
+ 'Hiérarchie du profil', + 'help' => 'Les profils d\'ordre supérieurs sont de rang plus élevés que les profils d\'ordre inférieur', + 'selected' => $this->getUrl(3) + ]); ?> +
+
$this->getUrl(2), ]); ?> - $this->getUrl(3), ]); ?>