From 9a7b81b33b7ed2a4098fa1b29f96ac05bad4e293 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <jan.hendrik.willms@uni-oldenburg.de> Date: Sun, 4 Sep 2022 10:16:51 +0200 Subject: [PATCH] Studip 5.1 --- SysStats.php | 2 - bootstrap.php | 3 -- controllers/statistics.php | 86 ++++++++++++++------------------------ plugin.manifest | 5 +-- views/statistics/files.php | 2 +- 5 files changed, 35 insertions(+), 63 deletions(-) delete mode 100644 bootstrap.php diff --git a/SysStats.php b/SysStats.php index 177cc8c..0ae634b 100644 --- a/SysStats.php +++ b/SysStats.php @@ -1,6 +1,4 @@ <?php -require_once __DIR__ . '/bootstrap.php'; - /** * SysStats.php * diff --git a/bootstrap.php b/bootstrap.php deleted file mode 100644 index 3f933b9..0000000 --- a/bootstrap.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - require_once 'vendor/trails/trails.php'; - require_once 'app/controllers/studip_controller.php'; diff --git a/controllers/statistics.php b/controllers/statistics.php index 879cb60..5d4dad1 100644 --- a/controllers/statistics.php +++ b/controllers/statistics.php @@ -5,7 +5,6 @@ class StatisticsController extends PluginController const CACHE_DURATION = 60 * 60; const CLASS_IDENTIFIER = '__SERIALIZED_CLASS__'; - public function before_filter(&$action, &$args) { parent::before_filter($action, $args); @@ -35,39 +34,23 @@ class StatisticsController extends PluginController ); $this->getCached($this->semester->id, function () { - if (StudipVersion::olderThan('4.2')) { - $query = "SELECT `plugins`.`pluginid` AS id, - `plugins`.`pluginname` AS name, - COUNT(`seminare`.`Seminar_id`) AS quantity - FROM `plugins` - LEFT JOIN `plugins_activated` USING (`pluginid`) - LEFT JOIN `seminare` - ON SUBSTR(`plugins_activated`.`poiid`, 4) = `seminare`.`Seminar_id` - WHERE `seminare`.`start_time` BETWEEN ? AND ? - AND `plugins_activated`.`state` = 'on' - AND FIND_IN_SET('StandardPlugin', `plugintype`) - AND `plugins`.`enabled` = 'yes' - GROUP BY `plugins`.`pluginid` - ORDER BY quantity DESC"; - } else { - $query = "SELECT `plugins`.`pluginid` AS id, - `plugins`.`pluginname` AS name, - COUNT(`seminare`.`Seminar_id`) AS quantity - FROM `plugins` - LEFT JOIN `plugins_activated` USING (`pluginid`) - LEFT JOIN `seminare` - ON `plugins_activated`.`range_type` = 'sem' - AND `plugins_activated`.`range_id` = `seminare`.`Seminar_id` - WHERE `seminare`.`start_time` BETWEEN ? AND ? - AND `plugins_activated`.`state` = 1 - AND FIND_IN_SET('StandardPlugin', `plugins`.`plugintype`) - AND `plugins`.`enabled` = 'yes' - GROUP BY `plugins`.`pluginid` - ORDER BY quantity DESC"; - } + $query = "SELECT `pluginid` AS id, + `pluginname` AS name, + COUNT(`seminare`.`Seminar_id`) AS quantity + FROM `plugins` + LEFT JOIN `tools_activated` + ON `pluginid` = `plugin_id` AND `range_type` = 'course' + LEFT JOIN `seminare` + ON `range_id` = `Seminar_id` + LEFT JOIN `semester_courses` + ON `Seminar_id` = `course_id` + WHERE `semester_courses`.`semester_id` = ? + AND FIND_IN_SET('StandardPlugin', `plugintype`) + AND `plugins`.`enabled` = 'yes' + GROUP BY `pluginid` + ORDER BY quantity DESC"; $plugins = DBManager::get()->fetchAll($query, [ - $this->semester->beginn, - $this->semester->ende + $this->semester->id, ]); return array_merge(compact('plugins'), [ @@ -87,23 +70,17 @@ class StatisticsController extends PluginController $semester->name )); - if (StudipVersion::olderThan('4.2')) { - $condition = "JOIN plugins_activated AS pa - ON (SUBSTR(pa.poiid, 4) = Seminar_id AND pa.pluginid = :pluginid) - WHERE start_time BETWEEN :begin AND :end - AND pa.state = 'on' - ORDER BY VeranstaltungsNummer, Name"; - } else { - $condition = "JOIN plugins_activated AS pa - ON (pa.pluginid = :pluginid AND pa.range_type = 'sem' AND pa.range_id = Seminar_id) - WHERE start_time BETWEEN :begin AND :end - AND pa.state = 1 - ORDER BY VeranstaltungsNummer, Name"; - } + $condition = "JOIN semester_courses + ON course_id = Seminar_id + AND semester_id = :semester_id + JOIN tools_activated + ON range_id = Seminar_id + AND range_type = 'course' + AND plugin_id = :plugin_id + ORDER BY VeranstaltungsNummer, Name"; $this->courses = Course::findBySQL($condition, [ - ':begin' => $semester->beginn, - ':end' => $semester->ende, - ':pluginid' => $plugin_id, + ':semester_id' => $semester->id, + ':plugin_id' => $plugin_id, ]); if ($info['class'] === 'TutorienPlugin') { @@ -128,15 +105,17 @@ class StatisticsController extends PluginController COUNT(DISTINCT `su0`.`user_id`) AS `teacher_count`, COUNT(DISTINCT `su1`.`user_id`) AS `student_count` FROM `semester_data` AS `sd` + JOIN `semester_courses` AS sc + ON sd.`semester_id` = sc.`semester_id` LEFT JOIN `seminare` AS `s` - ON `s`.`start_time` BETWEEN `sd`.`beginn` AND `sd`.`ende` + ON sc.`course_id` = s.`Seminar_id` LEFT JOIN `seminar_user` AS `su0` ON `s`.`seminar_id` = `su0`.`seminar_id` AND `su0`.`status` = 'dozent' LEFT JOIN `seminar_user` AS `su1` ON `s`.`seminar_id` = `su1`.`seminar_id` AND `su1`.`status` IN ('user', 'autor', 'tutor') WHERE `s`.`status` != 99 - GROUP BY `sd`.`semester_id` + GROUP BY `sd`.`semester_id`, sd.`beginn` ORDER BY `beginn` DESC"; $statement = DBManager::get()->query($query); $data = $statement->fetchAll(PDO::FETCH_ASSOC); @@ -586,8 +565,8 @@ class StatisticsController extends PluginController foreach ($content as $index => $value) { if ($value instanceof SimpleORMap) { $value = $value->toRawArray() + [ - self::CLASS_IDENTIFIER => get_class($value), - ]; + self::CLASS_IDENTIFIER => get_class($value), + ]; } elseif (is_array($value)) { $value = $this->serializeContent($value); } else { @@ -622,7 +601,6 @@ class StatisticsController extends PluginController return $content; } - private function setTitle($title) { $args = func_get_args(); diff --git a/plugin.manifest b/plugin.manifest index 1164392..6609235 100644 --- a/plugin.manifest +++ b/plugin.manifest @@ -1,6 +1,5 @@ pluginname=Systemstatistiken pluginclassname=SysStats origin=UOL -version=1.1.1 -studipMinVersion=4.0 -studipMaxVersion=4.5.99 +version=1.2 +studipMinVersion=5.0 diff --git a/views/statistics/files.php b/views/statistics/files.php index 04bce9b..a0312e7 100644 --- a/views/statistics/files.php +++ b/views/statistics/files.php @@ -26,7 +26,7 @@ </thead> <tbody> <? foreach ($semesters as $semester): ?> - <tr <? if ($semester->getcurrent()) echo 'class="current"'; ?>> + <tr <? if ($semester->current) echo 'class="current"'; ?>> <td><?= htmlReady($semester->name) ?></td> <td><?= number_format($data[$semester->id]['total'], 0, ',', '.') ?></td> <? foreach (array_keys($licenses) as $id): ?> -- GitLab