Sélecteur de cours selon les droits dans admin bar

This commit is contained in:
Fred Tempez 2023-09-16 18:50:23 +02:00
parent 965b431e69
commit 3422f581d8
4 changed files with 95 additions and 52 deletions

View File

@ -894,14 +894,22 @@ 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) {
var_dump($this->getCoursesByUser($this->getUser('id'), $this->getUser('group')));
if ($this->getCoursesByUser($this->getUser('id'), $this->getUser('group'))) {
$leftItems .= '<li><select id="barSelectCourse" >';
$leftItems .= '<option name="' . helper::translate('Accueil') . '" value="' . helper::baseUrl(true) . 'course/swap/home" ' . ('home' === self::$siteContent ? 'selected' : '') . '>' . helper::translate('Accueil') . '</option>';
foreach ($this->getData(['course']) as $key => $value) {
foreach ($this->getCoursesByUser($this->getUser('id'), $this->getUser('group')) as $key => $value) {
$leftItems .= '<option name="' . $value['shortTitle'] . '" value="' . helper::baseUrl(true) . 'course/swap/' . $key . '" ' . ($key === self::$siteContent ? 'selected' : '') . '>' . $value['shortTitle'] . '</option>';
}
$leftItems .= '</select></li>';
}
}
// Bouton Gérer les cours
if ($this->getUser('group') >= self::GROUP_ADMIN) {
$leftItems .= '<li>' . template::ico('cubes', [

View File

@ -639,7 +639,7 @@ class common
/*
* Le site d'accueil, home ne dispose pas des mêmes modèles
*/
$template = self::$siteContent === 'home' ? init::$siteTemplate :init:: $courseDefault;
$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;
}
}
}

View File

@ -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;
}
}

View File

@ -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