diff --git a/core/class/jsondb/JsonDb.class.php b/core/class/jsondb/JsonDb.class.php index c8aefde..c4d9923 100644 --- a/core/class/jsondb/JsonDb.class.php +++ b/core/class/jsondb/JsonDb.class.php @@ -143,7 +143,6 @@ class JsonDb extends \Prowebcraft\Dot public function save() { $v = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT ); - // $v = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT); $l = strlen($v); $t = 0; while ($t < 5) { diff --git a/core/core.php b/core/core.php index 5a44517..f7a1dda 100644 --- a/core/core.php +++ b/core/core.php @@ -447,7 +447,7 @@ class common } // Mise à jour des données core - include('core/include/update.inc.php'); + include ('core/include/update.inc.php'); } @@ -598,11 +598,49 @@ class common return file_put_contents(self::DATA_DIR . $path . '/content/' . $page . '.html', $value); } - public function getEnrolment($courseId, $keys =[]) { - $data = json_decode(file_get_contents(self::DATA_DIR . $courseId .'.json'), true); - return $data[$keys[0]]; + /** + * Lire les données des historiques + * @param string courseId + * @param array $keys Clé(s) des données + * @return array tableau demandé + */ + public function getEnrolment($courseId, $keys = []) + { + $data = json_decode(file_get_contents(self::DATA_DIR . $courseId . '/' . 'enrolment.json'), true); + + if ($keys === []) { + return $data['enrolment'][$courseId]; + } else { + // Récupérer la première clé + $result = $data['enrolment'][$courseId][$keys[0]]; + + // Parcourir les clés restantes pour naviguer dans la structure + for ($i = 1; $i < count($keys); $i++) { + // Vérifier si la clé existe + if (isset($result[$keys[$i]])) { + // Déplacer le pointeur + $result = $result[$keys[$i]]; + } else { + // Si la clé n'existe pas, retourner null + return null; + } + } + return $result; + } } + /** + * Ecrire les données de statistiques + * @param string pageId + * @param string contenu de la page + * @return int nombre d'octets écrits ou erreur + */ + public function setEnrolement($courseId, $value) + { + return file_put_contents(self::DATA_DIR . $courseId . '/enrolment.json', json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); + } + + /** * Effacer les données de la page @@ -638,7 +676,7 @@ class common { // Tableau avec les données vierges - require_once('core/module/install/ressource/defaultdata.php'); + require_once ('core/module/install/ressource/defaultdata.php'); // L'arborescence if (!file_exists(self::DATA_DIR . $path)) { @@ -673,7 +711,7 @@ class common public function saveConfig($module) { // Tableau avec les données vierges - require_once('core/module/install/ressource/defaultdata.php'); + require_once ('core/module/install/ressource/defaultdata.php'); // Installation des données des autres modules cad theme profil font config, admin et core $this->setData([$module, init::$defaultData[$module]]); common::$coreNotices[] = $module; @@ -709,65 +747,65 @@ class common * Fonction pour construire le tableau des pages */ - private function buildHierarchy() - { - - $pages = helper::arrayColumn($this->getData(['page']), 'position', 'SORT_ASC'); - // Parents - foreach ($pages as $pageId => $pagePosition) { - if ( - // Page parent - $this->getData(['page', $pageId, 'parentPageId']) === "" - // Ignore les pages dont l'utilisateur n'a pas accès - and ($this->getData(['page', $pageId, 'group']) === self::GROUP_VISITOR - or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') - //and $this->getUser('group') >= $this->getData(['page', $pageId, 'group']) - // Modification qui tient compte du profil de la page - and ($this->getUser('group') * self::MAX_PROFILS + $this->getUser('profil')) >= ($this->getData(['page', $pageId, 'group']) * self::MAX_PROFILS + $this->getData(['page', $pageId, 'profil'])) - - ) - ) - ) { - if ($pagePosition !== 0) { - $this->hierarchy['visible'][$pageId] = []; - } - if ($this->getData(['page', $pageId, 'block']) === 'bar') { - $this->hierarchy['bar'][$pageId] = []; - } - $this->hierarchy['all'][$pageId] = []; - } - } - // Enfants - foreach ($pages as $pageId => $pagePosition) { - - if ( - // Page parent - $parentId = $this->getData(['page', $pageId, 'parentPageId']) - // Ignore les pages dont l'utilisateur n'a pas accès - and ( - ( - $this->getData(['page', $pageId, 'group']) === self::GROUP_VISITOR - and - $this->getData(['page', $parentId, 'group']) === self::GROUP_VISITOR - ) - or ( - $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') - and - $this->getUser('group') * self::MAX_PROFILS + $this->getUser('profil')) >= ($this->getData(['page', $pageId, 'group']) * self::MAX_PROFILS + $this->getData(['page', $pageId, 'profil']) - - ) - ) - ) { - if ($pagePosition !== 0) { - $this->hierarchy['visible'][$parentId][] = $pageId; - } - if ($this->getData(['page', $pageId, 'block']) === 'bar') { - $this->hierarchy['bar'][$pageId] = []; - } - $this->hierarchy['all'][$parentId][] = $pageId; - } - } - } + private function buildHierarchy() + { + + $pages = helper::arrayColumn($this->getData(['page']), 'position', 'SORT_ASC'); + // Parents + foreach ($pages as $pageId => $pagePosition) { + if ( + // Page parent + $this->getData(['page', $pageId, 'parentPageId']) === "" + // Ignore les pages dont l'utilisateur n'a pas accès + and ($this->getData(['page', $pageId, 'group']) === self::GROUP_VISITOR + or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') + //and $this->getUser('group') >= $this->getData(['page', $pageId, 'group']) + // Modification qui tient compte du profil de la page + and ($this->getUser('group') * self::MAX_PROFILS + $this->getUser('profil')) >= ($this->getData(['page', $pageId, 'group']) * self::MAX_PROFILS + $this->getData(['page', $pageId, 'profil'])) + + ) + ) + ) { + if ($pagePosition !== 0) { + $this->hierarchy['visible'][$pageId] = []; + } + if ($this->getData(['page', $pageId, 'block']) === 'bar') { + $this->hierarchy['bar'][$pageId] = []; + } + $this->hierarchy['all'][$pageId] = []; + } + } + // Enfants + foreach ($pages as $pageId => $pagePosition) { + + if ( + // Page parent + $parentId = $this->getData(['page', $pageId, 'parentPageId']) + // Ignore les pages dont l'utilisateur n'a pas accès + and ( + ( + $this->getData(['page', $pageId, 'group']) === self::GROUP_VISITOR + and + $this->getData(['page', $parentId, 'group']) === self::GROUP_VISITOR + ) + or ( + $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') + and + $this->getUser('group') * self::MAX_PROFILS + $this->getUser('profil')) >= ($this->getData(['page', $pageId, 'group']) * self::MAX_PROFILS + $this->getData(['page', $pageId, 'profil']) + + ) + ) + ) { + if ($pagePosition !== 0) { + $this->hierarchy['visible'][$parentId][] = $pageId; + } + if ($this->getData(['page', $pageId, 'block']) === 'bar') { + $this->hierarchy['bar'][$pageId] = []; + } + $this->hierarchy['all'][$parentId][] = $pageId; + } + } + } /** * Génère un fichier json avec la liste des pages @@ -1439,8 +1477,8 @@ class common foreach ($courses as $courseId => $value) { // Affiche les espaces gérés par l'éditeur, les espaces où il participe et les espaces anonymes if ( - // le membre est inscrit - ( $this->getData(['enrolment', $courseId]) && array_key_exists($this->getUser('id'), $this->getData(['enrolment', $courseId])) ) + // le membre est inscrit + ($this->getData(['enrolment', $courseId]) && array_key_exists($this->getUser('id'), $this->getData(['enrolment', $courseId]))) // Il est l'auteur || $this->getUser('id') === $this->getData(['course', $courseId, 'author']) // Le cours est ouvert @@ -1454,7 +1492,7 @@ class common foreach ($courses as $courseId => $value) { // Affiche les espaces du participant et les espaces anonymes if ( - ($this->getData(['enrolment', $courseId]) && array_key_exists($this->getUser('id'), $this->getData(['enrolment', $courseId])) ) + ($this->getData(['enrolment', $courseId]) && array_key_exists($this->getUser('id'), $this->getData(['enrolment', $courseId]))) || $this->getData(['course', $courseId, 'enrolment']) === self::COURSE_ENROLMENT_GUEST ) { $filter[$courseId] = $courses[$courseId]; diff --git a/core/include/update.inc.php b/core/include/update.inc.php index 2389954..4b26f3f 100644 --- a/core/include/update.inc.php +++ b/core/include/update.inc.php @@ -43,6 +43,9 @@ if ( unlink(self::DATA_DIR . 'enrolment.json'); $this->setData(['core', 'dataVersion', 1800]); } -$t = $this->getEnrolment(['65d749713a217']); +/* +$t = $this->getEnrolment('6571b5913e87e', ['pablorodriguez', 'history', 'les-titres-ou-headers']); +echo"
"; var_dump($t); -dei(); \ No newline at end of file +die(); +*/ \ No newline at end of file