Forumaire !

This commit is contained in:
Fred Tempez 2023-09-26 21:26:34 +02:00
parent 1bfcc4a282
commit 0fbfb50168
3 changed files with 54 additions and 34 deletions

View File

@ -22,6 +22,7 @@ class course extends common
'add' => self::GROUP_ADMIN, 'add' => self::GROUP_ADMIN,
'delete' => self::GROUP_ADMIN, 'delete' => self::GROUP_ADMIN,
'swap' => self::GROUP_VISITOR, 'swap' => self::GROUP_VISITOR,
'enrol' => self::GROUP_VISITOR,
]; ];
public static $courseAccess = [ public static $courseAccess = [
@ -261,6 +262,54 @@ class course extends common
* Fonction utilisée par le noyau * Fonction utilisée par le noyau
*/ */
public function swap() public function swap()
{
$courseId = $this->getUrl(2);
$message = '';
$redirect = helper::baseUrl();
$state = true;
// Afficher le cous
if (
// Sortir du cours et afficher l'accueil
$courseId === 'home'
// l'étudiant est inscrit dans le cours ET le cours est ouvert
||
(
$this->courseIsUserEnroled($courseId)
&& $this->courseIsAvailable($courseId))
) {
$_SESSION['ZWII_SITE_CONTENT'] = $courseId;
$message = sprintf(helper::translate('Bienvenue dans le cours %s'), $this->getData(['course', $courseId, 'shortTitle']));
}
// Le cours est fermé
if ($this->courseIsAvailable($courseId) === false) {
// Génération du message
$message = 'Ce cours est fermé.';
if ($this->getData(['course', $courseId, 'access']) === self::COURSE_ACCESS_DATE) {
$from = helper::dateUTF8('%m %B %Y', $this->getData(['course', $courseId, 'openingDate'])) . helper::translate(' à ') . helper::dateUTF8('%H:%M', $this->getData(['course', $courseId, 'openingDate']));
$to = helper::dateUTF8('%m %B %Y', $this->getData(['course', $courseId, 'closingDate'])) . helper::translate(' à ') . helper::dateUTF8('%H:%M', $this->getData(['course', $courseId, 'closingDate']));
$message = sprintf(helper::translate('Ce cours ouvre le <br>%s <br> et ferme le %s'), $from, $to);
$state = false;
}
}
// le cours est ouvert mais l'étudiant n'est pas inscrit, on affiche la bannière
if ($this->courseIsAvailable($courseId) && $this->courseIsUserEnroled($courseId) === false ) {
$redirect = $redirect . 'course/enrol/' . $courseId;
$message = helper::translate('Veuillez vous inscrire');
$state = true;
}
// Valeurs en sortie
$this->addOutput([
'redirect' => $redirect,
'notification' => helper::translate($message),
'state' => $state,
]);
}
// Génération du message d'inscription
public function enrol()
{ {
$courseId = $this->getUrl(2); $courseId = $this->getUrl(2);
$userId = $this->getUser('id'); $userId = $this->getUser('id');
@ -293,33 +342,6 @@ class course extends common
]); ]);
} }
} }
// Le cours est disponible ?
if (
$courseId === 'home' ||
$this->courseIsUserEnroled($courseId) === true
) {
$_SESSION['ZWII_SITE_CONTENT'] = $courseId;
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl(),
]);
return;
} else {
$message = 'Ce cours est fermé.';
if ($this->getData(['course', $courseId, 'access']) === self::COURSE_ACCESS_DATE) {
$from = helper::dateUTF8('%m %B %Y', $this->getData(['course', $courseId, 'openingDate'])) . helper::translate(' à ') . helper::dateUTF8('%H:%M', $this->getData(['course', $courseId, 'openingDate']));
$to = helper::dateUTF8('%m %B %Y', $this->getData(['course', $courseId, 'closingDate'])) . helper::translate(' à ') . helper::dateUTF8('%H:%M', $this->getData(['course', $courseId, 'closingDate']));
$message = sprintf(helper::translate('Ce cours ouvre le <br>%s <br> et ferme le %s'), $from, $to);
}
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl(),
'notification' => helper::translate($message),
'state' => false,
]);
}
// Génération du message d'inscription
// L'étudiant est-il inscrit // L'étudiant est-il inscrit
self::$swapMessage['submitLabel'] = 'Se connecter'; self::$swapMessage['submitLabel'] = 'Se connecter';
self::$swapMessage['enrolmentMessage'] = ''; self::$swapMessage['enrolmentMessage'] = '';
@ -346,12 +368,10 @@ class course extends common
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'title' => sprintf(helper::translate('Accéder au cours %s'), $this->getData(['course', $this->getUrl(2), 'shortTitle'])), 'title' => sprintf(helper::translate('Accéder au cours %s'), $this->getData(['course', $this->getUrl(2), 'shortTitle'])),
'view' => 'swap', 'view' => 'enrol',
'display' => self::DISPLAY_LAYOUT_LIGHT, 'display' => self::DISPLAY_LAYOUT_LIGHT,
]); ]);
// l'étudiant est inscrit
} }
} }
/** /**
@ -360,7 +380,7 @@ class course extends common
* @param string $userId identifiant de l'utilisateur * @param string $userId identifiant de l'utilisateur
* @param string $courseId identifiant du cours sollicité * @param string $courseId identifiant du cours sollicité
*/ */
private function courseIsUserEnroled($courseId) public function courseIsUserEnroled($courseId)
{ {
$userId = $this->getUser('id'); $userId = $this->getUser('id');
$group = $userId ? $this->getData(['user', $userId, 'group']) : false; $group = $userId ? $this->getData(['user', $userId, 'group']) : false;
@ -385,7 +405,7 @@ class course extends common
return $r; return $r;
} }
private function courseEnrolUser($courseId, $userId) public function courseEnrolUser($courseId, $userId)
{ {
$this->setData([ $this->setData([
'enrolment', 'enrolment',
@ -403,7 +423,7 @@ class course extends common
* @param @return bool le user a le droit d'entrée dans le cours * @param @return bool le user a le droit d'entrée dans le cours
* @param string $courseId identifiant du cours sollicité * @param string $courseId identifiant du cours sollicité
*/ */
private function courseIsAvailable($courseId) public function courseIsAvailable($courseId)
{ {
if ($courseId === 'home') { if ($courseId === 'home') {
return true; return true;

View File

@ -30,7 +30,7 @@
<div class="col3 offset7"> <div class="col3 offset7">
<?php echo template::submit('courseSwapSubmit', [ <?php echo template::submit('courseSwapSubmit', [
'value' => $module::$swapMessage['submitLabel'], 'value' => $module::$swapMessage['submitLabel'],
'disabled' => !$this->courseIsAvailable($this->getUrl(2)), 'disabled' => !$module->courseIsAvailable($this->getUrl(2)),
'ico' => '' 'ico' => ''
]); ?> ]); ?>
</div> </div>