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

View File

@ -83,13 +83,13 @@ class common
'user' 'user'
]; ];
/* /*
Cette variable est supprimée du test dans le routeur. Cette variable est supprimée du test dans le routeur.
public static $accessExclude = [ public static $accessExclude = [
'login', 'login',
'logout', 'logout',
'maintenance', 'maintenance',
]; ];
*/ */
private $data = []; private $data = [];
private $hierarchy = [ private $hierarchy = [
'all' => [], 'all' => [],
@ -205,7 +205,7 @@ class common
'user' => '', 'user' => '',
'language' => '', 'language' => '',
'profil' => '', 'profil' => '',
'enrolment' => '', 'enrolment' => '',
]; ];
private $configFiles = [ private $configFiles = [
@ -219,7 +219,7 @@ class common
'user' => '', 'user' => '',
'language' => '', 'language' => '',
'profil' => '', 'profil' => '',
'enrolment' => '', 'enrolment' => '',
]; ];
private $contentFiles = [ private $contentFiles = [
@ -635,11 +635,11 @@ class common
if (!file_exists(self::DATA_DIR . self::$siteContent . '/content')) { if (!file_exists(self::DATA_DIR . self::$siteContent . '/content')) {
mkdir(self::DATA_DIR . self::$siteContent . '/content', 0755); mkdir(self::DATA_DIR . self::$siteContent . '/content', 0755);
} }
/* /*
* 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