From 7bd4c002bcb50ea5fcf4fd6bdb285227bef5b745 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 18 Nov 2020 13:14:45 +0100 Subject: [dozmod] Show (last, number of) lecture starts in actionlog --- .../dozmod/lang/de/template-tags.json | 2 + .../dozmod/lang/en/template-tags.json | 2 + modules-available/dozmod/pages/actionlog.inc.php | 99 +++++++++++----------- .../dozmod/templates/actionlog-lecture.html | 8 ++ 4 files changed, 62 insertions(+), 49 deletions(-) diff --git a/modules-available/dozmod/lang/de/template-tags.json b/modules-available/dozmod/lang/de/template-tags.json index 9b2b5653..39c37c08 100644 --- a/modules-available/dozmod/lang/de/template-tags.json +++ b/modules-available/dozmod/lang/de/template-tags.json @@ -43,6 +43,7 @@ "lang_hidden": "Versteckt", "lang_host": "Host", "lang_image": "VM", + "lang_lastBoot": "Letzter Start", "lang_lastEditor": "Zuletzt bearbeitet von", "lang_lastLogin": "Letzte Anmeldung", "lang_latestVersion": "Neuste Version", @@ -77,6 +78,7 @@ "lang_networksharesIntro": "Hier k\u00f6nnen Sie vordefinierte Netzlaufwerke anlegen, die den Nutzern der bwLehrpool-Suite zur Auswahl gestellt werden. Es ist den Nutzern der bwLehrpool-Suite weiterhin m\u00f6glich, komplett eigene Netzwerkfreigaben zu definieren. Die Angaben hier sollen lediglich das Hinzuf\u00fcgen h\u00e4ufig genutzter Laufwerke vereinfachen, bzw. das \u00c4ndern eines Netzwerkpfades vereinfachen, da in diesem Fall nur der Zentrale Eintrag hier angepasst werden muss, und nicht mehr wie zuvor jede Veranstaltung einzeln.", "lang_none": "(Keiner)", "lang_normal": "Normal", + "lang_numberBoots": "Anzahl Starts", "lang_organization": "Einrichtung", "lang_organizationListHeader": "Nutzungsrechte f\u00fcr den Satelliten festlegen", "lang_orphanDeleteButton": "Dateien l\u00f6schen", diff --git a/modules-available/dozmod/lang/en/template-tags.json b/modules-available/dozmod/lang/en/template-tags.json index 425ceefa..b4a1d9e8 100644 --- a/modules-available/dozmod/lang/en/template-tags.json +++ b/modules-available/dozmod/lang/en/template-tags.json @@ -43,6 +43,7 @@ "lang_hidden": "Hidden", "lang_host": "Host", "lang_image": "VM", + "lang_lastBoot": "Last started", "lang_lastEditor": "Edited by", "lang_lastLogin": "Last login", "lang_latestVersion": "Latest version", @@ -77,6 +78,7 @@ "lang_networksharesIntro": "This is the list of predefined network shares. bwLehrpool-Suite users can still add custom network shares to their lectures, however having commonly used network shares as predefined entries should be much more convenient. Another advantage is that changing the path of a network share centrally avoids having to edit a dozen lectures' configuration manually.", "lang_none": "(none)", "lang_normal": "Normal", + "lang_numberBoots": "Use count", "lang_organization": "Organization", "lang_organizationListHeader": "Set access permissions for organizations", "lang_orphanDeleteButton": "Delete files", diff --git a/modules-available/dozmod/pages/actionlog.inc.php b/modules-available/dozmod/pages/actionlog.inc.php index a014ddf7..abf617fc 100644 --- a/modules-available/dozmod/pages/actionlog.inc.php +++ b/modules-available/dozmod/pages/actionlog.inc.php @@ -20,15 +20,15 @@ class SubPage { Render::addTemplate('actionlog-header'); if (self::$action === '') { - self::generateLog("SELECT al.dateline, al.targetid, al.description," - . " img.displayname AS imgname, tu.firstname AS tfirstname, tu.lastname AS tlastname, l.displayname AS lecturename," - . " al.userid AS uuserid, usr.firstname AS ufirstname, usr.lastname AS ulastname" - . " FROM sat.actionlog al" - . " LEFT JOIN sat.imagebase img ON (img.imagebaseid = targetid)" - . " LEFT JOIN sat.user usr ON (usr.userid = al.userid)" - . " LEFT JOIN sat.user tu ON (tu.userid = al.targetid)" - . " LEFT JOIN sat.lecture l ON (l.lectureid = targetid)" - . " ORDER BY al.dateline DESC LIMIT 500", array(), true, true); + self::generateLog("SELECT al.dateline, al.targetid, al.description, + img.displayname AS imgname, tu.firstname AS tfirstname, tu.lastname AS tlastname, l.displayname AS lecturename, + al.userid AS uuserid, usr.firstname AS ufirstname, usr.lastname AS ulastname + FROM sat.actionlog al + LEFT JOIN sat.imagebase img ON (img.imagebaseid = targetid) + LEFT JOIN sat.user usr ON (usr.userid = al.userid) + LEFT JOIN sat.user tu ON (tu.userid = al.targetid) + LEFT JOIN sat.lecture l ON (l.lectureid = targetid) + ORDER BY al.dateline DESC LIMIT 500", array(), true, true); } elseif (self::$action === 'showuser') { self::listUser(); } else { @@ -39,11 +39,11 @@ class SubPage private static function listUser() { // Query user - $user = Database::queryFirst('SELECT userid, firstname, lastname, email, lastlogin,' - . ' organization.displayname AS orgname FROM sat.user' - . ' LEFT JOIN sat.organization USING (organizationid)' - . ' WHERE userid = :uuid' - . ' LIMIT 1', array('uuid' => self::$uuid)); + $user = Database::queryFirst('SELECT userid, firstname, lastname, email, lastlogin, + organization.displayname AS orgname FROM sat.user + LEFT JOIN sat.organization USING (organizationid) + WHERE userid = :uuid + LIMIT 1', array('uuid' => self::$uuid)); if ($user === false) { Message::addError('unknown-userid', self::$uuid); Util::redirect('?do=dozmod§ion=actionlog'); @@ -52,14 +52,14 @@ class SubPage $user['lastlogin_s'] = date('d.m.Y H:i', $user['lastlogin']); Render::addTemplate('actionlog-user', $user); // Finally add the actionlog - self::generateLog("SELECT al.dateline, al.targetid, al.description," - . " img.displayname AS imgname, usr.firstname AS tfirstname, usr.lastname AS tlastname, l.displayname AS lecturename" - . " FROM sat.actionlog al" - . " LEFT JOIN sat.imagebase img ON (img.imagebaseid = targetid)" - . " LEFT JOIN sat.user usr ON (usr.userid = targetid)" - . " LEFT JOIN sat.lecture l ON (l.lectureid = targetid)" - . " WHERE al.userid = :uuid" - . " ORDER BY al.dateline DESC LIMIT 500", array('uuid' => self::$uuid), false, true); + self::generateLog("SELECT al.dateline, al.targetid, al.description, + img.displayname AS imgname, usr.firstname AS tfirstname, usr.lastname AS tlastname, l.displayname AS lecturename + FROM sat.actionlog al + LEFT JOIN sat.imagebase img ON (img.imagebaseid = targetid) + LEFT JOIN sat.user usr ON (usr.userid = targetid) + LEFT JOIN sat.lecture l ON (l.lectureid = targetid) + WHERE al.userid = :uuid + ORDER BY al.dateline DESC LIMIT 500", array('uuid' => self::$uuid), false, true); } private static function listTarget() @@ -72,26 +72,26 @@ class SubPage } // Finally add the actionlog - self::generateLog("SELECT al.dateline, al.userid AS uuserid, al.description," - . " usr.firstname AS ufirstname, usr.lastname AS ulastname" - . " FROM sat.actionlog al" - . " LEFT JOIN sat.user usr ON (usr.userid = al.userid)" - . " WHERE al.targetid = :uuid" - . " ORDER BY al.dateline DESC LIMIT 500", array('uuid' => self::$uuid), true, false); + self::generateLog("SELECT al.dateline, al.userid AS uuserid, al.description, + usr.firstname AS ufirstname, usr.lastname AS ulastname + FROM sat.actionlog al + LEFT JOIN sat.user usr ON (usr.userid = al.userid) + WHERE al.targetid = :uuid + ORDER BY al.dateline DESC LIMIT 500", array('uuid' => self::$uuid), true, false); } private static function addImageHeader() { - $image = Database::queryFirst('SELECT o.userid AS ouserid, o.firstname AS ofirstname, o.lastname AS olastname,' - . ' u.userid AS uuserid, u.firstname AS ufirstname, u.lastname AS ulastname,' - . ' img.displayname, img.description, img.createtime, img.updatetime,' - . ' os.displayname AS osname' - . ' FROM sat.imagebase img' - . ' LEFT JOIN sat.user o ON (img.ownerid = o.userid)' - . ' LEFT JOIN sat.user u ON (img.updaterid = u.userid)' - . ' LEFT JOIN sat.operatingsystem os ON (img.osid = os.osid)' - . ' WHERE img.imagebaseid = :uuid' - . ' LIMIT 1', array('uuid' => self::$uuid)); + $image = Database::queryFirst('SELECT o.userid AS ouserid, o.firstname AS ofirstname, o.lastname AS olastname, + u.userid AS uuserid, u.firstname AS ufirstname, u.lastname AS ulastname, + img.displayname, img.description, img.createtime, img.updatetime, + os.displayname AS osname + FROM sat.imagebase img + LEFT JOIN sat.user o ON (img.ownerid = o.userid) + LEFT JOIN sat.user u ON (img.updaterid = u.userid) + LEFT JOIN sat.operatingsystem os ON (img.osid = os.osid) + WHERE img.imagebaseid = :uuid + LIMIT 1', array('uuid' => self::$uuid)); if ($image !== false) { // Mangle date and render $image['createtime_s'] = date('d.m.Y H:i', $image['createtime']); @@ -104,21 +104,22 @@ class SubPage private static function addLectureHeader() { - $lecture = Database::queryFirst('SELECT o.userid AS ouserid, o.firstname AS ofirstname, o.lastname AS olastname,' - . ' u.userid AS uuserid, u.firstname AS ufirstname, u.lastname AS ulastname,' - . ' l.displayname, l.description, l.createtime, l.updatetime,' - . ' img.displayname AS imgname, img.imagebaseid' - . ' FROM sat.lecture l' - . ' LEFT JOIN sat.user o ON (l.ownerid = o.userid)' - . ' LEFT JOIN sat.user u ON (l.updaterid = u.userid)' - . ' LEFT JOIN sat.imageversion ver ON (ver.imageversionid = l.imageversionid)' - . ' LEFT JOIN sat.imagebase img ON (img.imagebaseid = ver.imagebaseid)' - . ' WHERE l.lectureid = :uuid' - . ' LIMIT 1', array('uuid' => self::$uuid)); + $lecture = Database::queryFirst('SELECT o.userid AS ouserid, o.firstname AS ofirstname, o.lastname AS olastname, + u.userid AS uuserid, u.firstname AS ufirstname, u.lastname AS ulastname, + l.displayname, l.description, l.createtime, l.updatetime, l.usecount, l.lastused, + img.displayname AS imgname, img.imagebaseid + FROM sat.lecture l + LEFT JOIN sat.user o ON (l.ownerid = o.userid) + LEFT JOIN sat.user u ON (l.updaterid = u.userid) + LEFT JOIN sat.imageversion ver ON (ver.imageversionid = l.imageversionid) + LEFT JOIN sat.imagebase img ON (img.imagebaseid = ver.imagebaseid) + WHERE l.lectureid = :uuid + LIMIT 1', array('uuid' => self::$uuid)); if ($lecture !== false) { // Mangle date and render $lecture['createtime_s'] = date('d.m.Y H:i', $lecture['createtime']); $lecture['updatetime_s'] = date('d.m.Y H:i', $lecture['updatetime']); + $lecture['lastused_s'] = date('d.m.Y H:i', $lecture['lastused']); $lecture['descriptionHtml'] = nl2br(htmlspecialchars($lecture['description'])); Render::addTemplate('actionlog-lecture', $lecture); } diff --git a/modules-available/dozmod/templates/actionlog-lecture.html b/modules-available/dozmod/templates/actionlog-lecture.html index 4fb2b4d0..6b8701b7 100644 --- a/modules-available/dozmod/templates/actionlog-lecture.html +++ b/modules-available/dozmod/templates/actionlog-lecture.html @@ -24,6 +24,14 @@ {{lang_image}} {{imgname}} + + {{lang_lastBoot}} + {{lastused_s}} + + + {{lang_numberBoots}} + {{usecount}} + {{{descriptionHtml}}} -- cgit v1.2.3-55-g7522