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 // Items de gauche
$leftItems = ''; $leftItems = '';
// Sélecteur de cours // 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) { 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 .= '<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>'; $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 .= '<option name="' . $value['shortTitle'] . '" value="' . helper::baseUrl(true) . 'course/swap/' . $key . '" ' . ($key === self::$siteContent ? 'selected' : '') . '>' . $value['shortTitle'] . '</option>';
} }
$leftItems .= '</select></li>'; $leftItems .= '</select></li>';
} }
}
// Bouton Gérer les cours // Bouton Gérer les cours
if ($this->getUser('group') >= self::GROUP_ADMIN) { if ($this->getUser('group') >= self::GROUP_ADMIN) {
$leftItems .= '<li>' . template::ico('cubes', [ $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 * 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 // Création de page ou de module
$this->setData([$module, $template[$module]]); $this->setData([$module, $template[$module]]);
// Création des pages // Création des pages
@ -1380,4 +1380,71 @@ class common
file_put_contents(self::DATA_DIR . 'journal.log', $dataLog, FILE_APPEND); 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), 'title' => $this->getInput('courseEditTitle', helper::FILTER_STRING_SHORT, true),
'shortTitle' => $this->getInput('courseEditShortTitle', 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), 'description' => $this->getInput('courseEditDescription', helper::FILTER_STRING_SHORT, true),
'access' => $this->getInput('courseEditAccess', helper::FILTER_INT), 'access' => $this->getInput('courseEditAccess', helper::FILTER_INT),
'openingDate' => $this->getInput('courseOpeningDate', helper::FILTER_DATETIME), '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 - lastPageId derrière page visitée
- lastDate date de la dernière vue - 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