Sélecteur de cours selon les droits dans admin bar
This commit is contained in:
parent
965b431e69
commit
3422f581d8
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
@ -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
|
|
||||||
|
Loading…
Reference in New Issue
Block a user