Skip to content
Snippets Groups Projects
Commit 9a7b81b3 authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

Studip 5.1

parent 7582a9bd
No related branches found
No related tags found
No related merge requests found
<?php
require_once __DIR__ . '/bootstrap.php';
/**
* SysStats.php
*
......
<?php
require_once 'vendor/trails/trails.php';
require_once 'app/controllers/studip_controller.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,
$query = "SELECT `pluginid` AS id,
`pluginname` AS name,
COUNT(`seminare`.`Seminar_id`) AS quantity
FROM `plugins`
LEFT JOIN `plugins_activated` USING (`pluginid`)
LEFT JOIN `tools_activated`
ON `pluginid` = `plugin_id` AND `range_type` = 'course'
LEFT JOIN `seminare`
ON SUBSTR(`plugins_activated`.`poiid`, 4) = `seminare`.`Seminar_id`
WHERE `seminare`.`start_time` BETWEEN ? AND ?
AND `plugins_activated`.`state` = 'on'
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 `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`
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
$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);
......@@ -622,7 +601,6 @@ class StatisticsController extends PluginController
return $content;
}
private function setTitle($title)
{
$args = func_get_args();
......
pluginname=Systemstatistiken
pluginclassname=SysStats
origin=UOL
version=1.1.1
studipMinVersion=4.0
studipMaxVersion=4.5.99
version=1.2
studipMinVersion=5.0
......@@ -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): ?>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment