1.7.00 gestion RFM WIP

This commit is contained in:
Fred Tempez 2024-03-03 22:26:10 +01:00
parent 6d42f792e4
commit db0637ca1c
5 changed files with 180 additions and 178 deletions

View File

@ -142,8 +142,8 @@ class JsonDb extends \Prowebcraft\Dot
*/
public function save()
{
/// $v = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT | JSON_PRETTY_PRINT);
$v = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT);
$v = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT | JSON_PRETTY_PRINT);
// $v = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT);
$l = strlen($v);
$t = 0;
while ($t < 5) {

View File

@ -224,7 +224,7 @@ class init extends common
'1' => [
'name' => 'Membre simple',
'readonly' => false,
'permanent' => false,
'permanent' => true,
'comment' => 'Accède aux pages réservées',
'filemanager' => false,
'file' => [
@ -261,8 +261,8 @@ class init extends common
'copycut' => false,
'chmod' => false,
'share' => false,
'coursePath' => '',
'homePath' => ''
'coursePath' => 'none',
'homePath' => 'none'
],
'page' => [
'add' => false,
@ -357,7 +357,7 @@ class init extends common
'copycut' => false,
'chmod' => false,
'share' => true,
'coursePath' => '/site/file/source/partage/',
'coursePath' => 'none',
'homePath' => '/site/file/source/partage/'
],
'page' => [
@ -458,7 +458,7 @@ class init extends common
'copycut' => false,
'chmod' => false,
'share' => true,
'coursePath' => '',
'coursePath' => 'none',
'homePath' => '/site/file/source/partage/'
],
'page' => [
@ -518,7 +518,7 @@ class init extends common
'2' => [
'name' => 'Rédacteur',
'readonly' => false,
'permanent' => true,
'permanent' => false,
'comment' => 'Tous les droits d\'édition des espaces',
'filemanager' => true,
'file' => [
@ -555,7 +555,7 @@ class init extends common
'copycut' => true,
'chmod' => true,
'share' => true,
'coursePath' => '',
'coursePath' => 'none',
'homePath' => '/site/file/source/partage/'
],
'page' => [

View File

@ -692,8 +692,8 @@ class user extends common
'rename' => $this->getInput('profilEditFolderRename', helper::FILTER_BOOLEAN),
'copycut' => $this->getInput('profilEditFolderCopycut', helper::FILTER_BOOLEAN),
'chmod' => $this->getInput('profilEditFolderChmod', helper::FILTER_BOOLEAN),
'coursePath' => preg_replace('/^\\./', '', $this->getInput('profilEditCoursePath')), // Supprime le point pour préserver le chemin
'homePath' => preg_replace('/^\\./', '', $this->getInput('profilEditHomePath')), // Supprime le point pour préserver le chemin
'coursePath' => $this->getInput('profilEditCoursePath'), // Supprime le point pour préserver le chemin
'homePath' => $this->getInput('profilEditHomePath'), // Supprime le point pour préserver le chemin
],
'page' => [
'add' => $this->getInput('profilEditPageAdd', helper::FILTER_BOOLEAN),
@ -757,21 +757,20 @@ class user extends common
}
// Chemin vers les dossiers du gestionnaire de fichier
self::$sharePath = $this->getSubdirectories('./site/file/source');
self::$sharePath = $this->getSubdirectories('site/file/source');
// Exclure les espaces des cours
/*
foreach (array_keys($this->getData(['course'])) as $courseId) {
self::$sharePath = array_filter(self::$sharePath, function ($key) use ($courseId) {
return strpos($key, $courseId) === false;
});
}
*/
self::$sharePath = array_flip(self::$sharePath);
self::$sharePath = array_merge(['none' => 'Aucun Accès'], self::$sharePath);
self::$sharePath = array_merge(['' => 'Confiné dans le dossier de l\'espace ouvert'], self::$sharePath);
self::$sharePath = array_merge(['./site/file/source/' => 'Tout le gestionnaire de fichiers'], self::$sharePath);
self::$sharePath = array_merge(['course' => 'Confiné dans le dossier de l\'espace ouvert'], self::$sharePath);
self::$sharePath = array_merge(['/site/file/source/' => 'Tout le gestionnaire de fichiers'], self::$sharePath);
// Liste des modules installés
self::$listModules = helper::getModules();
@ -869,8 +868,8 @@ class user extends common
'rename' => $this->getInput('profilAddFolderRename', helper::FILTER_BOOLEAN),
'copycut' => $this->getInput('profilAddFolderCopycut', helper::FILTER_BOOLEAN),
'chmod' => $this->getInput('profilAddFolderChmod', helper::FILTER_BOOLEAN),
'coursePath' => preg_replace('/^\\./', '', $this->getInput('profilAddCoursePath')), // Supprime le point pour préserver le chemin
'homePath' => preg_replace('/^\\./', '', $this->getInput('profilAddHomePath')), // Supprime le point pour préserver le chemin
'coursePath' => $this->getInput('profilAddCoursePath'), // Supprime le point pour préserver le chemin
'homePath' => $this->getInput('profilAddHomePath'), // Supprime le point pour préserver le chemin
],
'page' => [
'add' => $this->getInput('profilAddPageAdd', helper::FILTER_BOOLEAN),
@ -959,7 +958,7 @@ class user extends common
}
// Chemin vers les dossiers du gestionnaire de fichier
self::$sharePath = $this->getSubdirectories('./site/file/source');
self::$sharePath = $this->getSubdirectories('site/file/source');
// Exclure les espaces des cours
/*
@ -972,7 +971,7 @@ class user extends common
self::$sharePath = array_flip(self::$sharePath);
self::$sharePath = array_merge(['none' => 'Aucun Accès'], self::$sharePath);
self::$sharePath = array_merge(['' => 'Confiné dans le dossier de l\'espace ouvert'], self::$sharePath);
self::$sharePath = array_merge(['course' => 'Confiné dans le dossier de l\'espace ouvert'], self::$sharePath);
self::$sharePath = array_merge(['./site/file/source/' => 'Tout le gestionnaire de fichiers'], self::$sharePath);
// Liste des modules installés

View File

@ -93,16 +93,14 @@
]); ?>
</div>
<div class="col5">
<?php echo template::select('profilEditCoursePath', $module::$sharePath, [
<?php var_dump ($this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'coursePath']));echo template::select('profilEditCoursePath', $module::$sharePath, [
'label' => 'Dossier depuis un espace',
'class' => 'filemanager',
/*
* 'none' interdit l'accès au gestionnaire de fichier
* Ce n'est pas un chemin donc on n'ajoute pas le .
*/
'selected' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'coursePath']) !== 'none'
? '.' . $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'coursePath'])
: $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'coursePath'])
'selected' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'coursePath'])
]); ?>
</div>
<div class="col5">
@ -110,9 +108,7 @@
'label' => 'Dossier depuis l\'accueil',
'class' => 'filemanager',
// 'none' interdit l'accès au gestionnaire de fichier au niveau de l'accueil
'selected' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'homePath']) !== 'none'
? '.' . $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'homePath'])
: $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'homePath'])
'selected' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'folder', 'homePath'])
]); ?>
</div>
</div>

View File

@ -52,28 +52,35 @@ if (!is_null($u) && !is_null($g) && !is_null($userId)) {
case 1:
// Accès contrôlés par le profil
$profil = $u['user'][$userId]['profil'];
$file = $g['profil'][$group][$profil]['file'];
$folder = $g['profil'][$group][$profil]['folder'];
// membre sans profil déclaré ou accès interdit, pas d'accès
if (
is_null($profil)
|| $g['profil'][$group][$profil]['filemanager'] === false
|| $folder = $g['profil'][$group][$profil]['folder'] === 'none'
) {
exit("<h1 style='color: red'>Accès interdit au gestionnaire de fichiers !</h1>");
}
$file = $g['profil'][$group][$profil]['file'];
$folder = $g['profil'][$group][$profil]['folder'];
// Chemin du dossier partagé dans le profil
$sharedPathKey = ($courseId === 'home') ? 'homePath' : 'coursePath';
$sharedPath = isset($folder[$sharedPathKey]) ? $folder[$sharedPathKey] : '';
// Un dossier renvoie vers le dossier confiné
$uploadDir = empty($sharedPath) ? '/site/file/source/' . $courseId . '/' : $sharedPath;
// Accès non partagé
if (
$folder[$sharedPathKey] === 'none'
) {
exit("<h1 style='color: red'>Accès interdit au gestionnaire de fichiers !</h1>");
}
$currentPath = '../../..' . $uploadDir . '/';
// Un dossier renvoie vers le dossier confiné
$uploadDir = $sharedPath === 'course' ? '/site/file/source/' . $courseId . '/' : $sharedPath;
$currentPath = '../../../' . $uploadDir;
// Affiche un message d'erreur du le dossier partagé a été supprimé.
if (is_dir($uploadDir) == false ) {
if (is_dir($currentPath) == false) {
exit("<h1 style='color: red'>Le dossier partagé est inexistant, contactez l'administrateur.</h1>");
}