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,30 +52,37 @@ 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>");
}
}
break;
default:
@ -135,77 +142,77 @@ define('DEBUG_ERROR_MESSAGE', false); // TRUE or FALSE
$config = array(
/*
|--------------------------------------------------------------------------
| DON'T TOUCH (base url (only domain) of site).
|--------------------------------------------------------------------------
|
| without final / (DON'T TOUCH)
|
*/
|--------------------------------------------------------------------------
| DON'T TOUCH (base url (only domain) of site).
|--------------------------------------------------------------------------
|
| without final / (DON'T TOUCH)
|
*/
'base_url' => ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && !in_array(strtolower($_SERVER['HTTPS']), array('off', 'no'))) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . rtrim(str_replace('/core/vendor/filemanager', '', pathinfo($_SERVER['PHP_SELF'])['dirname']), ' /'),
/*
|--------------------------------------------------------------------------
| path from base_url to base of upload folder
|--------------------------------------------------------------------------
|
| with start and final /
|
*/
|--------------------------------------------------------------------------
| path from base_url to base of upload folder
|--------------------------------------------------------------------------
|
| with start and final /
|
*/
'upload_dir' => $uploadDir,
/*
|--------------------------------------------------------------------------
| relative path from filemanager folder to upload folder
|--------------------------------------------------------------------------
|
| with final /
|
*/
|--------------------------------------------------------------------------
| relative path from filemanager folder to upload folder
|--------------------------------------------------------------------------
|
| with final /
|
*/
'current_path' => $currentPath,
/*
|--------------------------------------------------------------------------
| relative path from filemanager folder to thumbs folder
|--------------------------------------------------------------------------
|
| with final /
| DO NOT put inside upload folder
|
*/
|--------------------------------------------------------------------------
| relative path from filemanager folder to thumbs folder
|--------------------------------------------------------------------------
|
| with final /
| DO NOT put inside upload folder
|
*/
'thumbs_base_path' => '../../../site/file/thumb/',
/*
|--------------------------------------------------------------------------
| path from base_url to base of thumbs folder
|--------------------------------------------------------------------------
|
| with final /
| DO NOT put inside upload folder
|
*/
|--------------------------------------------------------------------------
| path from base_url to base of thumbs folder
|--------------------------------------------------------------------------
|
| with final /
| DO NOT put inside upload folder
|
*/
'thumbs_upload_dir' => '/thumb/',
/*
|--------------------------------------------------------------------------
| mime file control to define files extensions
|--------------------------------------------------------------------------
|
| If you want to be forced to assign the extension starting from the mime type
|
*/
|--------------------------------------------------------------------------
| mime file control to define files extensions
|--------------------------------------------------------------------------
|
| If you want to be forced to assign the extension starting from the mime type
|
*/
'mime_extension_rename' => false,
/*
|--------------------------------------------------------------------------
| FTP configuration BETA VERSION
|--------------------------------------------------------------------------
|
| If you want enable ftp use write these parametres otherwise leave empty
| Remember to set base_url properly to point in the ftp server domain and
| upload dir will be ftp_base_folder + upload_dir so without final /
|
*/
|--------------------------------------------------------------------------
| FTP configuration BETA VERSION
|--------------------------------------------------------------------------
|
| If you want enable ftp use write these parametres otherwise leave empty
| Remember to set base_url properly to point in the ftp server domain and
| upload dir will be ftp_base_folder + upload_dir so without final /
|
*/
'ftp_host' => false,
//put the FTP host
'ftp_user' => "user",
@ -215,52 +222,52 @@ $config = array(
// Directory where place files before to send to FTP with final /
'ftp_temp_folder' => "../temp/",
/*
|---------------------------------------------------------------------------
| path from ftp_base_folder to base of thumbs folder with start and final /
|---------------------------------------------------------------------------
*/
|---------------------------------------------------------------------------
| path from ftp_base_folder to base of thumbs folder with start and final /
|---------------------------------------------------------------------------
*/
'ftp_thumbs_dir' => '/thumbs/',
'ftp_ssl' => false,
'ftp_port' => 21,
/* EXAMPLE
'ftp_host' => "host.com",
'ftp_user' => "test@host.com",
'ftp_pass' => "pass.1",
'ftp_base_folder' => "",
'ftp_base_url' => "http://host.com/testFTP",
*/
'ftp_host' => "host.com",
'ftp_user' => "test@host.com",
'ftp_pass' => "pass.1",
'ftp_base_folder' => "",
'ftp_base_url' => "http://host.com/testFTP",
*/
/*
|--------------------------------------------------------------------------
| Multiple files selection
|--------------------------------------------------------------------------
| The user can delete multiple files, select all files , deselect all files
*/
|--------------------------------------------------------------------------
| Multiple files selection
|--------------------------------------------------------------------------
| The user can delete multiple files, select all files , deselect all files
*/
'multiple_selection' => true,
/*
|
| The user can have a select button that pass a json to external input or pass the first file selected to editor
| If you use responsivefilemanager tinymce extension can copy into editor multiple object like images, videos, audios, links in the same time
|
*/
|
| The user can have a select button that pass a json to external input or pass the first file selected to editor
| If you use responsivefilemanager tinymce extension can copy into editor multiple object like images, videos, audios, links in the same time
|
*/
'multiple_selection_action_button' => true,
/*
|--------------------------------------------------------------------------
| Access keys
|--------------------------------------------------------------------------
|
| add access keys eg: array('myPrivateKey', 'someoneElseKey');
| keys should only containt (a-z A-Z 0-9 \ . _ -) characters
| if you are integrating lets say to a cms for admins, i recommend making keys randomized something like this:
| $username = 'Admin';
| $salt = 'dsflFWR9u2xQa' (a hard coded string)
| $akey = md5($username.$salt);
| DO NOT use 'key' as access key!
| Keys are CASE SENSITIVE!
|
*/
|--------------------------------------------------------------------------
| Access keys
|--------------------------------------------------------------------------
|
| add access keys eg: array('myPrivateKey', 'someoneElseKey');
| keys should only containt (a-z A-Z 0-9 \ . _ -) characters
| if you are integrating lets say to a cms for admins, i recommend making keys randomized something like this:
| $username = 'Admin';
| $salt = 'dsflFWR9u2xQa' (a hard coded string)
| $akey = md5($username.$salt);
| DO NOT use 'key' as access key!
| Keys are CASE SENSITIVE!
|
*/
'access_keys' => array($privateKey),
@ -269,51 +276,51 @@ $config = array(
//--------------------------------------------------------------------------------------------------------
/*
|--------------------------------------------------------------------------
| Maximum size of all files in source folder
|--------------------------------------------------------------------------
|
| in Megabytes
|
*/
|--------------------------------------------------------------------------
| Maximum size of all files in source folder
|--------------------------------------------------------------------------
|
| in Megabytes
|
*/
'MaxSizeTotal' => false,
/*
|--------------------------------------------------------------------------
| Maximum upload size
|--------------------------------------------------------------------------
|
| in Megabytes
|
*/
|--------------------------------------------------------------------------
| Maximum upload size
|--------------------------------------------------------------------------
|
| in Megabytes
|
*/
'MaxSizeUpload' => 20000,
/*
|--------------------------------------------------------------------------
| File and Folder permission
|--------------------------------------------------------------------------
|
*/
|--------------------------------------------------------------------------
| File and Folder permission
|--------------------------------------------------------------------------
|
*/
'filePermission' => 0644,
'folderPermission' => 0777,
/*
|--------------------------------------------------------------------------
| default language file name
|--------------------------------------------------------------------------
*/
|--------------------------------------------------------------------------
| default language file name
|--------------------------------------------------------------------------
*/
'default_language' => 'fr_FR',
/*
|--------------------------------------------------------------------------
| Icon theme
|--------------------------------------------------------------------------
|
| Default available: ico and ico_dark
| Can be set to custom icon inside filemanager/img
|
*/
|--------------------------------------------------------------------------
| Icon theme
|--------------------------------------------------------------------------
|
| Default available: ico and ico_dark
| Can be set to custom icon inside filemanager/img
|
*/
'icon_theme' => "ico",
@ -351,12 +358,12 @@ $config = array(
'image_max_height' => 0,
'image_max_mode' => 'auto',
/*
# $option: 0 / exact = defined size;
# 1 / portrait = keep aspect set height;
# 2 / landscape = keep aspect set width;
# 3 / auto = auto;
# 4 / crop= resize and crop;
*/
# $option: 0 / exact = defined size;
# 1 / portrait = keep aspect set height;
# 2 / landscape = keep aspect set width;
# 3 / auto = auto;
# 4 / crop= resize and crop;
*/
//Automatic resizing //
// If you set $image_resizing to TRUE the script converts all uploaded images exactly to image_resizing_width x image_resizing_height dimension
@ -491,13 +498,13 @@ $config = array(
'empty_filename' => false,
/*
|--------------------------------------------------------------------------
| accept files without extension
|--------------------------------------------------------------------------
|
| If you want to accept files without extension, remember to add '' extension on allowed extension
|
*/
|--------------------------------------------------------------------------
| accept files without extension
|--------------------------------------------------------------------------
|
| If you want to accept files without extension, remember to add '' extension on allowed extension
|
*/
'files_without_extension' => false,
/******************
@ -618,12 +625,12 @@ $config = array(
'fixed_image_creation_height' => array(480),
//height of image
/*
# $option: 0 / exact = defined size;
# 1 / portrait = keep aspect set height;
# 2 / landscape = keep aspect set width;
# 3 / auto = auto;
# 4 / crop= resize and crop;
*/
# $option: 0 / exact = defined size;
# 1 / portrait = keep aspect set height;
# 2 / landscape = keep aspect set width;
# 3 / auto = auto;
# 4 / crop= resize and crop;
*/
'fixed_image_creation_option' => array('auto', 'crop'),
//set the type of the crop
@ -646,12 +653,12 @@ $config = array(
'relative_image_creation_height' => array(200, 300),
//height of image
/*
# $option: 0 / exact = defined size;
# 1 / portrait = keep aspect set height;
# 2 / landscape = keep aspect set width;
# 3 / auto = auto;
# 4 / crop= resize and crop;
*/
# $option: 0 / exact = defined size;
# 1 / portrait = keep aspect set height;
# 2 / landscape = keep aspect set width;
# 3 / auto = auto;
# 4 / crop= resize and crop;
*/
'relative_image_creation_option' => array('crop', 'crop'),
//set the type of the crop