diff --git a/core/class/layout.class.php b/core/class/layout.class.php index 16a8cd9..bc06a8b 100644 --- a/core/class/layout.class.php +++ b/core/class/layout.class.php @@ -894,13 +894,21 @@ class layout extends common // Items de gauche $leftItems = ''; // Sélecteur de cours + /** + * Les admins voient tous les cours + * Les enseignants les cours dont ils sont auteurs + * Les étudiants les cours dans lesquels ils sont inscrits + */ if ($this->getUser('group') >= self::GROUP_TEACHER) { - $leftItems .= '
  • '; + $leftItems .= ''; + foreach ($this->getCoursesByUser($this->getUser('id'), $this->getUser('group')) as $key => $value) { + $leftItems .= ''; + } + $leftItems .= '
  • '; } - $leftItems .= ''; } // Bouton Gérer les cours if ($this->getUser('group') >= self::GROUP_ADMIN) { diff --git a/core/core.php b/core/core.php index 5a9d81c..24cb867 100644 --- a/core/core.php +++ b/core/core.php @@ -83,13 +83,13 @@ class common 'user' ]; /* - Cette variable est supprimée du test dans le routeur. - public static $accessExclude = [ - 'login', - 'logout', - 'maintenance', - ]; - */ + Cette variable est supprimée du test dans le routeur. + public static $accessExclude = [ + 'login', + 'logout', + 'maintenance', + ]; + */ private $data = []; private $hierarchy = [ 'all' => [], @@ -205,7 +205,7 @@ class common 'user' => '', 'language' => '', 'profil' => '', - 'enrolment' => '', + 'enrolment' => '', ]; private $configFiles = [ @@ -219,7 +219,7 @@ class common 'user' => '', 'language' => '', 'profil' => '', - 'enrolment' => '', + 'enrolment' => '', ]; private $contentFiles = [ @@ -635,11 +635,11 @@ class common if (!file_exists(self::DATA_DIR . self::$siteContent . '/content')) { mkdir(self::DATA_DIR . self::$siteContent . '/content', 0755); } - + /* - * Le site d'accueil, home ne dispose pas des mêmes modèles - */ - $template = self::$siteContent === 'home' ? init::$siteTemplate :init:: $courseDefault; + * Le site d'accueil, home ne dispose pas des mêmes modèles + */ + $template = self::$siteContent === 'home' ? init::$siteTemplate : init::$courseDefault; // Création de page ou de module $this->setData([$module, $template[$module]]); // Création des pages @@ -1380,4 +1380,71 @@ class common file_put_contents(self::DATA_DIR . 'journal.log', $dataLog, FILE_APPEND); } } + + // Fonctions pour la gestion des cours + + + /** + * Retourne un tableau de tous les cours selon les autorisations + * @param string $access + * - 0 le cours est ouvert + * - 1 le cours est ouvert entre les dates + * - 2 le cours est fermé + * @param string $enrolment + * - 0 accès est anonyme + * - 1 accès libre + * - 2 accès avec clé + * - 3 manuel, le prof inscrits + */ + public function getCourses($access = null, $enrolment = null) + { + $courses = $this->getData(['course']); + $response = []; + foreach ($courses as $courseId => $courseValues) { + $response[] = ($access === $courseValues['access'] || $access === null) + ? $courseId : ''; + $response[] = ($enrolment === $courseValues['enrolment'] || $enrolment === null) + ? $courseId : ''; + } + $response = array_unique($response); + $response = array_filter($response, function ($value) { + // Supprime les éléments vides (null, "", 0, false, etc.) + return !empty($value); + }); + return $response; + } + + /** + * Retourne les cours d'un utilisateur + * @param string $userId identifiant + * @param string $serStatus teacher ou student ou admin + */ + public function getCoursesByUser($userId, $userStatus) + { + $c = $this->getData([('course')]); + switch ($userStatus) { + case self::GROUP_ADMIN: + return $c; + case self::GROUP_TEACHER: + foreach ($c as $courseId => $value) { + var_dump( $this->getData(['enrolment', $courseId, 'teacher'])); + if ($this->getData(['enrolment', $courseId, 'teacher']) !== $userId) { + unset($c[$courseId]); + } + } + return $c; + case self::GROUP_STUDENT: + foreach ($c as $courseId => $value) { + $students = $this->getData(['enrolment', $courseId, 'students']); + if (in_array($userId, $students) === false) { + unset($c[$courseId]); + } + } + return $c; + default: + return null; + } + + } + } \ No newline at end of file diff --git a/core/module/course/course.php b/core/module/course/course.php index db669c2..f7c2948 100644 --- a/core/module/course/course.php +++ b/core/module/course/course.php @@ -188,7 +188,7 @@ class course extends common [ 'title' => $this->getInput('courseEditTitle', helper::FILTER_STRING_SHORT, true), 'shortTitle' => $this->getInput('courseEditShortTitle', helper::FILTER_STRING_SHORT, true), - 'author' =>$author, + 'author' => $author, 'description' => $this->getInput('courseEditDescription', helper::FILTER_STRING_SHORT, true), 'access' => $this->getInput('courseEditAccess', helper::FILTER_INT), 'openingDate' => $this->getInput('courseOpeningDate', helper::FILTER_DATETIME), @@ -256,34 +256,4 @@ class course extends common ]); } - /** - * Retourne un tableau des cours - * @param string $access - * - 0 le cours est ouvert - * - 1 le cours est ouvert entre les dates - * - 2 le cours est fermé - * @param string $enrolment - * - 0 accès est anonyme - * - 1 accès libre - * - 2 accès avec clé - * - 3 manuel, le prof inscrits - */ - public function getCourseHierarchy($access = null, $enrolment = null) - { - $courses = $this->getData(['course']); - $response = []; - foreach ($courses as $courseId => $courseValues) { - $response[] = ($access === $courseValues['access'] || $access === null) - ? $courseId : ''; - $response[] = ($enrolment === $courseValues['enrolment'] || $enrolment === null) - ? $courseId : ''; - } - $response = array_unique($response); - $response = array_filter($response, function ($value) { - // Supprime les éléments vides (null, "", 0, false, etc.) - return !empty($value); - }); - return $response; - } - } \ No newline at end of file diff --git a/notes.txt b/notes.txt index 8f36440..b955b38 100644 --- a/notes.txt +++ b/notes.txt @@ -30,7 +30,5 @@ Détermine la liste des inscrits - lastPageId derrière page visitée - lastDate date de la dernière vue +Règle de gestion : -Modules : -autoinscription devient enrolment à mettre à jour -créer un module qui affiche les cours avec leur status