1.15 Nouveu calcule de la progression dans un espace
This commit is contained in:
parent
7d8d0d7a18
commit
124aeeeb98
@ -1,4 +1,4 @@
|
||||
# ZwiiCampus 1.14.07
|
||||
# ZwiiCampus 1.15.00
|
||||
|
||||
ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé.
|
||||
|
||||
|
@ -143,7 +143,7 @@ class JsonDb extends \Prowebcraft\Dot
|
||||
public function save()
|
||||
{
|
||||
// Encode les données au format JSON avec les options spécifiées
|
||||
$encoded_data = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT | JSON_PRETTY_PRINT);
|
||||
$encoded_data = json_encode($this->data, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT);
|
||||
|
||||
// Vérifie la longueur de la chaîne JSON encodée
|
||||
$encoded_length = strlen($encoded_data);
|
||||
|
@ -409,26 +409,41 @@ class core extends common
|
||||
exit();
|
||||
}
|
||||
|
||||
// Sauvegarde la dernière page visitée par l'utilisateur connecté et enregistre l'historique des consultations
|
||||
|
||||
/*
|
||||
* Récupère les statistiques de l'utilisateur non admin
|
||||
* en dehors de home
|
||||
* et si la connextion est nécessaire et que le membre est connecté
|
||||
* stocke la progression dans la base des inscriptions
|
||||
* */
|
||||
if (
|
||||
// L'utilisateur est renseigné
|
||||
$this->getUser('id')
|
||||
// L'accueil ne stocke pas lea progression
|
||||
&& common::$siteContent !== 'home'
|
||||
// La page existe
|
||||
&& in_array($this->getUrl(0), array_keys($this->getData(['page'])))
|
||||
// Le userId n'est pas celui d'un admis ni le prof du contenu
|
||||
// L'espace dispose d'un accès nécessitant un compte
|
||||
&& $this->getData(['course', self::$siteContent, 'enrolment']) > 0
|
||||
// Le userId n'est pas celui d'un admis ni le compte d'un gestionnaire de cet espace
|
||||
&& (
|
||||
$this->getUser('group') < common::GROUP_ADMIN
|
||||
|| $this->getUser('id') !== $this->getData(['course', common::$siteContent, 'author'])
|
||||
)
|
||||
) {
|
||||
|
||||
$course = new course();
|
||||
|
||||
// Met à jour la progression de l'utisateur et obtient le nombre de pages vues
|
||||
$userProgress = $course->setUserProgress(self::$siteContent, $this->getUser('id'));
|
||||
|
||||
// Stockage dans les données d'inscription du membre
|
||||
$this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'progress', $userProgress], false);
|
||||
|
||||
// Stocke la dernière page vue et sa date de consultation
|
||||
$this->setData(['enrolment', common::$siteContent, $this->getUser('id'), 'lastPageView', $this->getUrl(0)], false);
|
||||
$this->setData(['enrolment', common::$siteContent, $this->getUser('id'), 'datePageView', time()]);
|
||||
|
||||
// Stocke le rapport en CSV
|
||||
$file = fopen(common::DATA_DIR . common::$siteContent . '/report.csv', 'a+');
|
||||
fputcsv($file, [$this->getUser('id'), $this->getUrl(0), time()], ';');
|
||||
fclose($file);
|
||||
|
||||
}
|
||||
|
||||
// Journalisation
|
||||
@ -519,21 +534,6 @@ class core extends common
|
||||
header(header: 'Location:' . helper::baseUrl(true) . 'swap/' . self::$siteContent);
|
||||
exit();
|
||||
}
|
||||
/*
|
||||
* Récupère les statistiques de l'utilisateur non admin
|
||||
* en dehors de home
|
||||
* et si la connextion est nécessaire et que le membre est connecté
|
||||
* stocke la progression dans la base des inscriptions
|
||||
*
|
||||
if (
|
||||
$this->isConnected() === true
|
||||
and self::$siteContent !== 'home'
|
||||
and $this->getData(['course', self::$siteContent, 'enrolment']) > 0
|
||||
) {
|
||||
$course = new course();
|
||||
$userProgress = $course->userProgress(self::$siteContent, $this->getUser('id'));
|
||||
$this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'progress', $userProgress ]);
|
||||
}*/
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -51,7 +51,7 @@ class common
|
||||
const ACCESS_TIMER = 1800;
|
||||
|
||||
// Numéro de version
|
||||
const ZWII_VERSION = '1.14.09';
|
||||
const ZWII_VERSION = '1.15.00';
|
||||
|
||||
// URL autoupdate
|
||||
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/';
|
||||
|
@ -736,16 +736,14 @@ class course extends common
|
||||
'href' => helper::baseUrl() . 'course/userReport/' . $courseId . '/' . $userId,
|
||||
/** La lecture de la progression s'effectue selon la nouvelle méthode (progression dans la base des enrolements)
|
||||
* Soit avec l'ancienne méthode qui consiste à recalculer la progression.
|
||||
* TRANSITOIRE A SUPPRIMER EN FIN D'ANNEE
|
||||
*
|
||||
* Le pourcentage de progression est-il renseigné au format INT sinon il est recalculé
|
||||
*
|
||||
**/
|
||||
/*
|
||||
'value' => array_key_exists('progress', $userValue)
|
||||
? $userValue['progress']
|
||||
'value' => (array_key_exists('progress', $userValue) and is_int($userValue['progress']))
|
||||
? number_format($userValue['progress']) . ' %'
|
||||
: ($viewPages ? min(round(($viewPages * 100) / $sumPages, 1), 100) . ' %' : '0%'),
|
||||
'disable' => empty($userValue['datePageView']),
|
||||
*/
|
||||
'value' => $viewPages ? min(round(($viewPages * 100) / $sumPages, 1), 100) . ' %' : '0%',
|
||||
//'disable' => empty($viewPages)
|
||||
]),
|
||||
template::button('userDelete' . $userId, [
|
||||
'class' => 'userDelete buttonRed',
|
||||
@ -754,7 +752,6 @@ class course extends common
|
||||
'help' => 'Désinscrire'
|
||||
])
|
||||
];
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -2079,31 +2076,45 @@ class course extends common
|
||||
*
|
||||
* @param mixed $courseId
|
||||
* @param mixed $userId
|
||||
* @return string Ratio de pages vues
|
||||
* @return float Ratio de pages vues en décimales de pourcentages
|
||||
*/
|
||||
public function userProgress($courseId, $userId): string
|
||||
private function getUserProgress($courseId, $userId): float
|
||||
{
|
||||
|
||||
// Obtient les statistiques de l'ensemble de la cohorte
|
||||
$reports = $this->getReport($courseId, $userId);
|
||||
|
||||
// Nombre de pages dans l'espace
|
||||
// Nombre de pages dans l'espace vues par cet utilisateur
|
||||
$viewPages = array_key_exists($userId, $reports) ?
|
||||
count($reports[$userId]) :
|
||||
0;
|
||||
// Nombre de pages vues
|
||||
// Nombre de pages totales
|
||||
$sumPages = $this->countPages($this->getData(['page']));
|
||||
|
||||
// Calcule le ratio
|
||||
$ratio = ($viewPages *100) / $sumPages;
|
||||
$ratio = ($viewPages * 100) / $sumPages;
|
||||
// Arrondi le ratio à deux décimales
|
||||
$ratio = round($ratio, 2);
|
||||
// Transforme le ratio en pourcentage
|
||||
$ratio = number_format($ratio) . ' %';
|
||||
|
||||
return $ratio;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param mixed $courseId id de l'espace
|
||||
* @param mixed $userId id de l'utilisateur
|
||||
* @return float nombre de pages vues
|
||||
*/
|
||||
public function setUserProgress($courseId, $userId): float {
|
||||
// Stocke le rapport en CSV
|
||||
$file = fopen(common::DATA_DIR . $courseId. '/report.csv', 'a+');
|
||||
fputcsv($file, [$userId, $this->getUrl(0), time()], ';');
|
||||
fclose($file);
|
||||
|
||||
// Retourne le nombre de page vues
|
||||
return ($this->getUserProgress($courseId, $userId));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Compte les pages d'un espace
|
||||
|
Loading…
x
Reference in New Issue
Block a user