mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-22 17:32:18 +00:00
Merge branch 'master' into feature-69541/PHP8_Vilesci_Studiengang
This commit is contained in:
+170
-72
@@ -479,91 +479,182 @@ class anwesenheit extends basis_db
|
||||
*/
|
||||
public function loadAnwesenheitStudiensemester($studiensemester_kurzbz, $student_uid=null, $lehrveranstaltung_id=null)
|
||||
{
|
||||
$qry = "SELECT
|
||||
lehrveranstaltung_id, vorname, nachname, wahlname, student_uid as uid, bezeichnung,
|
||||
gesamt as gesamtstunden, anwesend, nichtanwesend, trunc(100-(nichtanwesend/gesamt)*100,2) as prozent
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
vorname, nachname, wahlname, lehrveranstaltung_id, bezeichnung, gruppe, student_uid,
|
||||
count(stundenplan_id) as gesamt,
|
||||
case when anwesend.summe is null then 0 else anwesend.summe end as anwesend,
|
||||
case when nichtanwesend.summe is null then 0 else nichtanwesend.summe end as nichtanwesend
|
||||
$qry = "SELECT
|
||||
lehrveranstaltung_id,
|
||||
vorname,
|
||||
nachname,
|
||||
wahlname,
|
||||
student_uid AS uid,
|
||||
bezeichnung,
|
||||
gesamt AS gesamtstunden,
|
||||
anwesend,
|
||||
nichtanwesend,
|
||||
CASE WHEN gesamt = 0 THEN 100.00 ELSE trunc(100-(nichtanwesend/(gesamt))*100,2) END AS prozent
|
||||
|
||||
FROM(
|
||||
SELECT
|
||||
vorname,
|
||||
nachname,
|
||||
wahlname,
|
||||
lehrveranstaltung_id,
|
||||
bezeichnung,
|
||||
student_uid,
|
||||
--COUNT(stundenplan_id) AS gesamts,
|
||||
COALESCE(anwesend.summe, 0) + COALESCE(nichtanwesend.summe, 0) AS gesamt,
|
||||
COALESCE(anwesend.summe, 0) AS anwesend,
|
||||
COALESCE(nichtanwesend.summe, 0) AS nichtanwesend
|
||||
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
sum(stundenplan_id) as stundenplan_id, datum, stunde, lehrveranstaltung_id,
|
||||
bezeichnung, studiensemester_kurzbz, studiengang_kz,
|
||||
TRIM(
|
||||
CASE WHEN stp.gruppe_kurzbz is not null then stp.gruppe_kurzbz
|
||||
else stp.semester||(case when verband is null then '' else stp.verband end)||(case when stp.gruppe is null then '' else stp.gruppe end) end) as gruppe
|
||||
SELECT
|
||||
SUM(stundenplan_id) AS stundenplan_id,
|
||||
datum,
|
||||
stunde,
|
||||
lehrveranstaltung_id,
|
||||
bezeichnung,
|
||||
studiensemester_kurzbz,
|
||||
studiengang_kz
|
||||
|
||||
FROM
|
||||
lehre.tbl_lehrveranstaltung lv
|
||||
JOIN lehre.tbl_lehreinheit le using (lehrveranstaltung_id)
|
||||
JOIN lehre.tbl_stundenplan stp using (lehreinheit_id,studiengang_kz)
|
||||
JOIN
|
||||
lehre.tbl_lehreinheit le USING (lehrveranstaltung_id)
|
||||
JOIN
|
||||
lehre.tbl_stundenplan stp USING (lehreinheit_id,studiengang_kz)
|
||||
|
||||
WHERE
|
||||
studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
AND (titel not like '%Nebenprüfung%' OR titel is null)
|
||||
|
||||
group by datum, stunde, lehrveranstaltung_id, bezeichnung, studiensemester_kurzbz, studiengang_kz, stp.gruppe_kurzbz, stp.semester, stp.verband, stp.gruppe
|
||||
AND (titel NOT LIKE '%Nebenprüfung%' OR titel IS NULL)
|
||||
|
||||
GROUP BY
|
||||
datum,
|
||||
stunde,
|
||||
lehrveranstaltung_id,
|
||||
bezeichnung,
|
||||
studiensemester_kurzbz,
|
||||
studiengang_kz,
|
||||
stp.gruppe_kurzbz,
|
||||
stp.semester,
|
||||
stp.verband,
|
||||
stp.gruppe
|
||||
)x
|
||||
JOIN (
|
||||
SELECT semester::text as gruppe, public.tbl_studentlehrverband.studiensemester_kurzbz, student_uid, studiengang_kz
|
||||
FROM
|
||||
public.tbl_studentlehrverband
|
||||
WHERE studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
|
||||
UNION
|
||||
|
||||
SELECT semester||verband as gruppe, public.tbl_studentlehrverband.studiensemester_kurzbz, student_uid, studiengang_kz
|
||||
FROM
|
||||
public.tbl_studentlehrverband
|
||||
WHERE
|
||||
studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
|
||||
UNION
|
||||
|
||||
SELECT semester||verband||gruppe as gruppe, public.tbl_studentlehrverband.studiensemester_kurzbz, student_uid, studiengang_kz
|
||||
FROM
|
||||
public.tbl_studentlehrverband
|
||||
WHERE
|
||||
studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
|
||||
UNION
|
||||
|
||||
SELECT gruppe_kurzbz as gruppe, public.tbl_benutzergruppe.studiensemester_kurzbz, uid as student_uid, studiengang_kz
|
||||
FROM
|
||||
public.tbl_benutzergruppe
|
||||
JOIN
|
||||
public.tbl_gruppe using (gruppe_kurzbz)
|
||||
WHERE studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
|
||||
)a using (gruppe, studiensemester_kurzbz, studiengang_kz)
|
||||
JOIN public.tbl_benutzer b on b.uid = student_uid
|
||||
JOIN public.tbl_person p using(person_id)
|
||||
LEFT JOIN(
|
||||
SELECT
|
||||
lehrveranstaltung_id, studiensemester_kurzbz, uid as student_uid, sum(einheiten) as summe
|
||||
FROM
|
||||
campus.tbl_anwesenheit a
|
||||
JOIN lehre.tbl_lehreinheit le using (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv using (lehrveranstaltung_id)
|
||||
WHERE
|
||||
anwesend = true AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
le.lehrveranstaltung_id,
|
||||
slv.student_uid,
|
||||
le.studiensemester_kurzbz,
|
||||
st.prestudent_id
|
||||
|
||||
FROM
|
||||
public.tbl_studentlehrverband slv
|
||||
JOIN
|
||||
lehre.tbl_lehreinheitgruppe leg
|
||||
ON slv.studiengang_kz = leg.studiengang_kz
|
||||
AND slv.semester = leg.semester
|
||||
AND (
|
||||
NULLIF(btrim(leg.verband::text), '') IS NULL
|
||||
OR NULLIF(btrim(slv.verband::text), '') = NULLIF(btrim(leg.verband::text), '')
|
||||
)
|
||||
AND (
|
||||
NULLIF(btrim(leg.gruppe::text), '') IS NULL
|
||||
OR NULLIF(btrim(slv.gruppe::text), '') = NULLIF(btrim(leg.gruppe::text), '')
|
||||
)
|
||||
JOIN
|
||||
lehre.tbl_lehreinheit le USING (lehreinheit_id, studiensemester_kurzbz)
|
||||
JOIN
|
||||
public.tbl_student st USING(student_uid)
|
||||
|
||||
WHERE
|
||||
leg.gruppe_kurzbz IS NULL
|
||||
AND le.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
|
||||
GROUP BY
|
||||
lehrveranstaltung_id, bezeichnung, uid, studiensemester_kurzbz
|
||||
)anwesend using(lehrveranstaltung_id, student_uid, studiensemester_kurzbz)
|
||||
le.lehrveranstaltung_id,
|
||||
slv.student_uid,
|
||||
le.studiensemester_kurzbz,
|
||||
st.prestudent_id
|
||||
|
||||
UNION
|
||||
|
||||
SELECT
|
||||
le.lehrveranstaltung_id,
|
||||
bg.uid AS student_uid,
|
||||
bg.studiensemester_kurzbz,
|
||||
st.prestudent_id
|
||||
|
||||
FROM
|
||||
public.tbl_benutzergruppe bg
|
||||
JOIN
|
||||
lehre.tbl_lehreinheitgruppe leg USING (gruppe_kurzbz)
|
||||
JOIN
|
||||
lehre.tbl_lehreinheit le USING(lehreinheit_id, studiensemester_kurzbz)
|
||||
JOIN
|
||||
public.tbl_student st ON bg.uid = st.student_uid
|
||||
|
||||
WHERE
|
||||
bg.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
|
||||
GROUP BY
|
||||
le.lehrveranstaltung_id,
|
||||
bg.uid,
|
||||
bg.studiensemester_kurzbz,
|
||||
st.prestudent_id
|
||||
|
||||
)a USING (lehrveranstaltung_id, studiensemester_kurzbz)
|
||||
JOIN
|
||||
public.tbl_benutzer b on b.uid = student_uid
|
||||
JOIN
|
||||
public.tbl_person p using(person_id)
|
||||
LEFT JOIN(
|
||||
SELECT lehrveranstaltung_id, studiensemester_kurzbz, uid as student_uid, sum(einheiten) as summe
|
||||
SELECT
|
||||
lehrveranstaltung_id,
|
||||
studiensemester_kurzbz,
|
||||
uid AS student_uid,
|
||||
SUM(einheiten) AS summe
|
||||
|
||||
FROM
|
||||
campus.tbl_anwesenheit a
|
||||
JOIN lehre.tbl_lehreinheit le using (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung lv using (lehrveranstaltung_id)
|
||||
JOIN
|
||||
lehre.tbl_lehreinheit le USING(lehreinheit_id)
|
||||
JOIN
|
||||
lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
|
||||
|
||||
WHERE
|
||||
anwesend = false AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
anwesend = true
|
||||
AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
|
||||
GROUP BY
|
||||
lehrveranstaltung_id, bezeichnung, uid, studiensemester_kurzbz
|
||||
)nichtanwesend using(lehrveranstaltung_id, student_uid, studiensemester_kurzbz)
|
||||
lehrveranstaltung_id,
|
||||
bezeichnung,
|
||||
uid,
|
||||
studiensemester_kurzbz
|
||||
|
||||
)anwesend USING(lehrveranstaltung_id, student_uid, studiensemester_kurzbz)
|
||||
LEFT JOIN(
|
||||
SELECT
|
||||
lehrveranstaltung_id,
|
||||
studiensemester_kurzbz,
|
||||
uid AS student_uid,
|
||||
SUM(einheiten) AS summe
|
||||
|
||||
FROM
|
||||
campus.tbl_anwesenheit a
|
||||
JOIN
|
||||
lehre.tbl_lehreinheit le USING (lehreinheit_id)
|
||||
JOIN
|
||||
lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
|
||||
|
||||
WHERE
|
||||
anwesend = false
|
||||
AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
|
||||
|
||||
GROUP BY
|
||||
lehrveranstaltung_id,
|
||||
bezeichnung,
|
||||
uid,
|
||||
studiensemester_kurzbz
|
||||
)nichtanwesend USING(lehrveranstaltung_id, student_uid, studiensemester_kurzbz)
|
||||
|
||||
WHERE
|
||||
lehrveranstaltung_id > 0
|
||||
";
|
||||
@@ -573,8 +664,15 @@ class anwesenheit extends basis_db
|
||||
if(!is_null($lehrveranstaltung_id))
|
||||
$qry.=" AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id);
|
||||
|
||||
$qry.="group by
|
||||
vorname, nachname, wahlname, lehrveranstaltung_id, bezeichnung, gruppe, student_uid, anwesend.summe, nichtanwesend.summe
|
||||
$qry.=" GROUP BY
|
||||
vorname,
|
||||
nachname,
|
||||
wahlname,
|
||||
lehrveranstaltung_id,
|
||||
bezeichnung,
|
||||
student_uid,
|
||||
anwesend.summe,
|
||||
nichtanwesend.summe
|
||||
)m";
|
||||
|
||||
if($lehrveranstaltung_id != '')
|
||||
|
||||
@@ -0,0 +1,221 @@
|
||||
<?php
|
||||
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
require_once(dirname(__FILE__).'/prestudent.class.php');
|
||||
require_once(dirname(__FILE__).'/person.class.php');
|
||||
require_once(dirname(__FILE__).'/reihungstest.class.php');
|
||||
|
||||
require_once(dirname(__FILE__).'/../vendor/autoload.php');
|
||||
use Firebase\JWT\JWT;
|
||||
|
||||
class externeUeberwachung extends basis_db
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function getStatusByPrestudent($prestudent_id)
|
||||
{
|
||||
$session_id = $this->getSessionByPrestudent($prestudent_id);
|
||||
return $this->getSessionStatus($session_id);
|
||||
}
|
||||
public function start($prestudent_id, $reihungstest_id, $sprache)
|
||||
{
|
||||
$session_id = $this->getSessionByPrestudent($prestudent_id);
|
||||
|
||||
if (!$session_id)
|
||||
{
|
||||
$session_id = $this->createSession($prestudent_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
$status = $this->getSessionStatus($session_id);
|
||||
|
||||
if (in_array($status, array('late_to_start', 'finished')))
|
||||
{
|
||||
$session_id = $this->createSession($prestudent_id);
|
||||
}
|
||||
}
|
||||
|
||||
$payload = $this->getPayload($session_id, $prestudent_id, $reihungstest_id, $sprache);
|
||||
return $this->getStartUrl($payload);
|
||||
}
|
||||
|
||||
|
||||
private function createSession($prestudent_id)
|
||||
{
|
||||
if (is_null($prestudent_id))
|
||||
{
|
||||
$this->errormsg = 'Falsche Parameterübergabe';
|
||||
return false;
|
||||
}
|
||||
|
||||
$uuid = $this->genereateUUID();
|
||||
|
||||
$qry = "INSERT INTO testtool.tbl_externe_ueberwachung (prestudent_id, session_id)
|
||||
VALUES (".
|
||||
$this->db_add_param($prestudent_id).",".
|
||||
$this->db_add_param($uuid).")";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return $uuid;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern der Antwort';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public function getSessionByPrestudent($prestudent_id)
|
||||
{
|
||||
if (is_null($prestudent_id))
|
||||
{
|
||||
$this->errormsg = 'Falsche Parameterübergabe';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT session_id
|
||||
FROM testtool.tbl_externe_ueberwachung
|
||||
WHERE prestudent_id = ".$this->db_add_param($prestudent_id, FHC_INTEGER) . "
|
||||
ORDER BY insertamum DESC
|
||||
LIMIT 1";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
return $row->session_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Daten konnten nicht geladen werden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei einer Abfrage';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function getSessionStatus($session_id)
|
||||
{
|
||||
$payload = $this->getSessionPayload($session_id);
|
||||
$jwt = $this->createToken($payload);
|
||||
|
||||
$url = $this->getSessionUrl($session_id);
|
||||
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
||||
"Authorization: JWT {$jwt}",
|
||||
"Content-Type: application/json",
|
||||
]);
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
|
||||
|
||||
$response = curl_exec($ch);
|
||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
|
||||
curl_close($ch);
|
||||
|
||||
$data = json_decode($response, true);
|
||||
return isset($data['status']) ? $data['status'] : false;
|
||||
}
|
||||
|
||||
private function getSessionPayload($session_id)
|
||||
{
|
||||
return [
|
||||
"session_id" => $session_id,
|
||||
"iat" => time(),
|
||||
"exp" => time() + 120,
|
||||
];
|
||||
}
|
||||
|
||||
private function getPayload($session_id, $prestudent_id, $reihungstest_id, $sprache)
|
||||
{
|
||||
$prestudent = new prestudent($prestudent_id);
|
||||
$person = new Person($prestudent->person_id);
|
||||
|
||||
$reihungstest = new Reihungstest($reihungstest_id);
|
||||
|
||||
$datetime = new DateTime();
|
||||
$today = $datetime->format('Y-m-d');
|
||||
|
||||
$payload = [
|
||||
"userId" => $prestudent_id,
|
||||
"lastName" => $person->nachname,
|
||||
"firstName" => $person->vorname,
|
||||
"language" => $sprache === 'German' ? 'de' : 'en',
|
||||
"accountName" => "technikum_wien",
|
||||
"accountId" => "technikum_wien",
|
||||
"examId" => $reihungstest_id . '_' . $today,
|
||||
"examName" => !is_null(trim($reihungstest->anmerkung)) ? ($reihungstest->anmerkung . '_' . $today) : ($reihungstest_id . '_' . $today),
|
||||
"duration" => 1440,
|
||||
"schedule" => false,
|
||||
"trial" => EXTERNE_UEBERWACHUNG_TRIAL_TEST,
|
||||
"proctoring" => "offline",
|
||||
"startDate" => $reihungstest->datum . 'T00:00:00Z',
|
||||
"endDate" => $reihungstest->datum . 'T23:59:59Z',
|
||||
"sessionId" => $session_id,
|
||||
"sessionUrl" => EXTERNE_UEBERWACHUNG_SESSION_URL
|
||||
];
|
||||
|
||||
if (defined('EXTERNE_UEBERWACHUNG_EXAM_PARAMS'))
|
||||
{
|
||||
$payload = array_merge($payload, EXTERNE_UEBERWACHUNG_EXAM_PARAMS);
|
||||
}
|
||||
|
||||
if (defined('EXTERNE_UEBERWACHUNG_EXAM_WARNINGS'))
|
||||
{
|
||||
$payload['visibleWarnings'] = EXTERNE_UEBERWACHUNG_EXAM_WARNINGS;
|
||||
}
|
||||
|
||||
if (defined('EXTERNE_UEBERWACHUNG_EXAM_RULES'))
|
||||
{
|
||||
$payload['rules'] = EXTERNE_UEBERWACHUNG_EXAM_RULES;
|
||||
}
|
||||
|
||||
if (defined('EXTERNE_UEBERWACHUNG_EXAM_SCORE'))
|
||||
{
|
||||
$payload['scoreConfig'] = EXTERNE_UEBERWACHUNG_EXAM_SCORE;
|
||||
}
|
||||
|
||||
return $payload;
|
||||
}
|
||||
|
||||
private function getSessionUrl($session_id)
|
||||
{
|
||||
return EXTERNE_UEBERWACHUNG_PROTOCOL_URL . "/api/v2/integration/simple/". EXTERNE_UEBERWACHUNG_INTEGRATION_NAME . "/sessions/". urlencode($session_id) ."/status/";
|
||||
}
|
||||
|
||||
private function getStartUrl($payload)
|
||||
{
|
||||
$token = $this->createToken($payload);
|
||||
$query = http_build_query(['token' => $token]);
|
||||
|
||||
return EXTERNE_UEBERWACHUNG_PROTOCOL_URL . '/integration/simple/'. EXTERNE_UEBERWACHUNG_INTEGRATION_NAME .'/start?' . $query;
|
||||
}
|
||||
|
||||
private function createToken($payload)
|
||||
{
|
||||
return JWT::encode($payload, EXTERNE_UEBERWACHUNG_SECRET_KEY, 'HS256');
|
||||
}
|
||||
|
||||
private function genereateUUID()
|
||||
{
|
||||
$data = openssl_random_pseudo_bytes(16);
|
||||
|
||||
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
|
||||
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
|
||||
|
||||
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
||||
@@ -345,6 +345,7 @@ class gebiet extends basis_db
|
||||
}
|
||||
|
||||
//Pruefen ob jede Fragen mindestens 2 Vorschlaege hat
|
||||
//Angepasst am 28.01.2026 auf ein Warning.
|
||||
$qry = "SELECT frage_id, nummer FROM testtool.tbl_frage
|
||||
WHERE (SELECT count(*) as anzahl FROM testtool.tbl_vorschlag WHERE frage_id=tbl_frage.frage_id)<2
|
||||
AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND NOT demo;";
|
||||
@@ -352,7 +353,7 @@ class gebiet extends basis_db
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->errormsg .= "Frage Nummer $row->nummer (ID: $row->frage_id) hat weniger als 2 Vorschlaege.\n";
|
||||
$this->warningmsg .= "Frage Nummer $row->nummer (ID: $row->frage_id) hat weniger als 2 Vorschlaege.\n";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -448,6 +449,52 @@ class gebiet extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
//Pruefen ob es leere Fragen (ohne Text, Bild oder Audio) gibt
|
||||
$qry = "SELECT
|
||||
fr.frage_id,
|
||||
fr.nummer,
|
||||
fs.sprache
|
||||
FROM
|
||||
testtool.tbl_frage fr
|
||||
JOIN testtool.tbl_frage_sprache fs
|
||||
USING (frage_id)
|
||||
WHERE
|
||||
(fs.text IS NULL
|
||||
OR fs.text = '')
|
||||
AND fs.bild IS NULL
|
||||
AND fs.audio IS NULL
|
||||
AND demo = false
|
||||
AND gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)."
|
||||
AND EXISTS (
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
testtool.tbl_frage fr2
|
||||
JOIN testtool.tbl_frage_sprache fs2
|
||||
USING (frage_id)
|
||||
WHERE
|
||||
fs2.sprache = fs.sprache
|
||||
AND fr2.gebiet_id = fr.gebiet_id
|
||||
AND fr2.frage_id != fr.frage_id
|
||||
AND (
|
||||
(fs2.text IS NOT NULL
|
||||
AND fs2.text != '')
|
||||
OR fs2.bild IS NOT NULL
|
||||
OR fs2.audio IS NOT NULL
|
||||
)
|
||||
AND demo = false
|
||||
)
|
||||
ORDER BY
|
||||
fs.sprache,
|
||||
fr.nummer;";
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->warningmsg .= "Frage Nummer $row->nummer (ID: $row->frage_id), Sprache $row->sprache hat keinen Text, Bild oder Audio.\n";
|
||||
}
|
||||
}
|
||||
|
||||
if($this->errormsg=='')
|
||||
return true;
|
||||
else
|
||||
|
||||
@@ -70,6 +70,7 @@ class lehrveranstaltung extends basis_db
|
||||
public $farbe;
|
||||
public $lehrauftrag=true;
|
||||
public $lehrveranstaltung_template_id; // integer
|
||||
public $evaluierung=true; // boolean
|
||||
|
||||
|
||||
public $studienplan_lehrveranstaltung_id;
|
||||
@@ -170,6 +171,7 @@ class lehrveranstaltung extends basis_db
|
||||
$this->benotung = $this->db_parse_bool($row->benotung);
|
||||
$this->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$this->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$this->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
// FIXME: LV-Bezeichnung richtig mehrsprachig machen
|
||||
// Zwischenzeitlich 'Italian' zum bezeichnung_arr dazugegeben
|
||||
@@ -244,6 +246,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -394,6 +397,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$lv_obj->bezeichnung_arr['Italian'] = $row->bezeichnung;
|
||||
@@ -524,6 +528,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -607,6 +612,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -779,7 +785,7 @@ class lehrveranstaltung extends basis_db
|
||||
insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort,
|
||||
zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz, incoming, lehrtyp_kurzbz, oe_kurzbz,
|
||||
raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe, lehrveranstaltung_template_id,sws,lvs,alvs,lvps,las,benotung,lvinfo,
|
||||
lehrauftrag, lehrmodus_kurzbz) VALUES ('.
|
||||
lehrauftrag, lehrmodus_kurzbz, evaluierung) VALUES ('.
|
||||
$this->db_add_param($this->studiengang_kz). ', '.
|
||||
$this->db_add_param($this->bezeichnung). ', '.
|
||||
$this->db_add_param($this->kurzbz). ', '.
|
||||
@@ -824,7 +830,8 @@ class lehrveranstaltung extends basis_db
|
||||
$this->db_add_param($this->benotung, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->lvinfo, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->lehrmodus_kurzbz)
|
||||
$this->db_add_param($this->lehrmodus_kurzbz).','.
|
||||
$this->db_add_param($this->evaluierung, FHC_BOOLEAN)
|
||||
.');';
|
||||
}
|
||||
else
|
||||
@@ -880,7 +887,8 @@ class lehrveranstaltung extends basis_db
|
||||
'las = '.$this->db_add_param($this->las).', '.
|
||||
'benotung = '.$this->db_add_param($this->benotung, FHC_BOOLEAN).', '.
|
||||
'lvinfo = '.$this->db_add_param($this->lvinfo, FHC_BOOLEAN).', '.
|
||||
'lehrauftrag = '.$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN).' '.
|
||||
'lehrauftrag = '.$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN).', '.
|
||||
'evaluierung = '.$this->db_add_param($this->evaluierung, FHC_BOOLEAN).' '.
|
||||
'WHERE lehrveranstaltung_id = ' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER, false) . ';';
|
||||
}
|
||||
|
||||
@@ -991,6 +999,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -1086,6 +1095,7 @@ class lehrveranstaltung extends basis_db
|
||||
$l->benotung = $this->db_parse_bool($row->benotung);
|
||||
$l->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$l->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$l->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$l->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$l->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -1170,6 +1180,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -1271,6 +1282,7 @@ class lehrveranstaltung extends basis_db
|
||||
$obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -1396,6 +1408,7 @@ class lehrveranstaltung extends basis_db
|
||||
$obj->lvinfo =$this->db_parse_bool( $lv->lvinfo);
|
||||
$obj->zeugnis = $this->db_parse_bool($lv->zeugnis);
|
||||
$obj->lehrauftrag = $this->db_parse_bool($lv->lehrauftrag);
|
||||
$obj->evaluierung = $this->db_parse_bool($lv->evaluierung);
|
||||
|
||||
$values[] = $obj;
|
||||
|
||||
@@ -1422,6 +1435,7 @@ class lehrveranstaltung extends basis_db
|
||||
$obj->lvinfo =$this->db_parse_bool( $this->lvinfo);
|
||||
$obj->zeugnis = $this->db_parse_bool($this->zeugnis);
|
||||
$obj->lehrauftrag = $this->db_parse_bool($this->lehrauftrag);
|
||||
$obj->evaluierung = $this->db_parse_bool($this->evaluierung);
|
||||
|
||||
$values[] = $obj;
|
||||
}
|
||||
@@ -1476,6 +1490,7 @@ class lehrveranstaltung extends basis_db
|
||||
$obj->export = $lv->export;
|
||||
$obj->genehmigung = $lv->genehmigung;
|
||||
$obj->lehrauftrag = $lv->lehrauftrag;
|
||||
$obj->evaluierung = $lv->evaluierung;
|
||||
$obj->lehre = $lv->lehre;
|
||||
$obj->children = array();
|
||||
if(count($lv->childs) > 0)
|
||||
@@ -1507,6 +1522,7 @@ class lehrveranstaltung extends basis_db
|
||||
$obj->zeugnis = $this->db_parse_bool($this->zeugnis);
|
||||
$obj->curriculum = $this->db_parse_bool($this->curriculum);
|
||||
$obj->lehrauftrag = $this->lehrauftrag;
|
||||
$obj->evaluierung = $this->db_parse_bool($this->evaluierung);
|
||||
|
||||
$values[] = $obj;
|
||||
}
|
||||
@@ -1613,6 +1629,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -1700,6 +1717,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -1873,6 +1891,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -2003,6 +2022,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->studiengang_kurzbzlang = $row->studiengang_kurzbzlang;
|
||||
|
||||
@@ -2131,6 +2151,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
@@ -2402,6 +2423,7 @@ class lehrveranstaltung extends basis_db
|
||||
$obj->benotung = $this->db_parse_bool($row->benotung);
|
||||
$obj->lvinfo = $this->db_parse_bool($row->lvinfo);
|
||||
$obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
|
||||
$obj->evaluierung = $this->db_parse_bool($row->evaluierung);
|
||||
|
||||
$obj->bezeichnung_arr['German'] = $row->bezeichnung;
|
||||
$obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
|
||||
|
||||
@@ -63,6 +63,7 @@ class reihungstest extends basis_db
|
||||
|
||||
public $zugangs_ueberpruefung = false; //boolean
|
||||
public $zugangscode; //smallint
|
||||
public $externe_ueberwachung = false; //boolean
|
||||
|
||||
|
||||
/**
|
||||
@@ -119,6 +120,7 @@ class reihungstest extends basis_db
|
||||
$this->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
|
||||
$this->zugangs_ueberpruefung = $this->db_parse_bool($row->zugangs_ueberpruefung);
|
||||
$this->zugangscode = $row->zugangscode;
|
||||
$this->externe_ueberwachung = $this->db_parse_bool($row->externe_ueberwachung);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -234,7 +236,7 @@ class reihungstest extends basis_db
|
||||
|
||||
$qry = 'BEGIN; INSERT INTO public.tbl_reihungstest (studiengang_kz, ort_kurzbz, anmerkung, datum, uhrzeit,
|
||||
insertamum, insertvon, updateamum, updatevon, max_teilnehmer, oeffentlich, freigeschaltet,
|
||||
studiensemester_kurzbz, stufe, anmeldefrist, aufnahmegruppe_kurzbz, zugangs_ueberpruefung, zugangscode) VALUES('.
|
||||
studiensemester_kurzbz, stufe, anmeldefrist, aufnahmegruppe_kurzbz, zugangs_ueberpruefung, zugangscode, externe_ueberwachung) VALUES('.
|
||||
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->ort_kurzbz).', '.
|
||||
$this->db_add_param($this->anmerkung).', '.
|
||||
@@ -250,7 +252,8 @@ class reihungstest extends basis_db
|
||||
$this->db_add_param($this->anmeldefrist).','.
|
||||
$this->db_add_param($this->aufnahmegruppe_kurzbz). ',' .
|
||||
$this->db_add_param($this->zugangs_ueberpruefung, FHC_BOOLEAN).','.
|
||||
$this->db_add_param($this->zugangscode) . ');';
|
||||
$this->db_add_param($this->zugangscode) . ','.
|
||||
$this->db_add_param($this->externe_ueberwachung, FHC_BOOLEAN) . ');';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -270,7 +273,8 @@ class reihungstest extends basis_db
|
||||
'anmeldefrist='.$this->db_add_param($this->anmeldefrist).', '.
|
||||
'aufnahmegruppe_kurzbz='.$this->db_add_param($this->aufnahmegruppe_kurzbz).', '.
|
||||
'zugangs_ueberpruefung='.$this->db_add_param($this->zugangs_ueberpruefung, FHC_BOOLEAN).', '.
|
||||
'zugangscode='.$this->db_add_param($this->zugangscode).' '.
|
||||
'zugangscode='.$this->db_add_param($this->zugangscode).', '.
|
||||
'externe_ueberwachung='.$this->db_add_param($this->externe_ueberwachung, FHC_BOOLEAN).' '.
|
||||
'WHERE reihungstest_id='.$this->db_add_param($this->reihungstest_id, FHC_INTEGER, false).';';
|
||||
}
|
||||
|
||||
|
||||
@@ -513,6 +513,7 @@ class statistik extends basis_db
|
||||
$this->json=array();
|
||||
$this->countRows=0;
|
||||
set_time_limit(600);
|
||||
$parseHtml = (strpos($this->preferences, 'parseHTML: true') !== false);
|
||||
|
||||
// In case a decryption function is used then perform password substitution
|
||||
$this->sql = $this->replaceSQLDecryptionPassword($this->sql);
|
||||
@@ -565,7 +566,13 @@ class statistik extends basis_db
|
||||
for($spalte=0;$spalte<$anzahl_spalten;$spalte++)
|
||||
{
|
||||
$name = $this->db_field_name($this->data,$spalte);
|
||||
$this->html.= '<td>'.$this->convert_html_chars($row->$name).'</td>';
|
||||
if ($parseHtml) {
|
||||
// HTML direkt rendern
|
||||
$this->html .= '<td>'.($row->$name).'</td>';
|
||||
} else {
|
||||
// wie bisher escapen
|
||||
$this->html .= '<td>'.$this->convert_html_chars($row->$name).'</td>';
|
||||
}
|
||||
// Umwandeln von Punkt in Komma bei Float-Werten
|
||||
if (is_numeric($row->$name))
|
||||
{
|
||||
|
||||
@@ -500,6 +500,27 @@ if((!defined('CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN') || CIS_LEHRVERANSTALTU
|
||||
);
|
||||
}
|
||||
|
||||
// LV-Evaluierung NEU
|
||||
if(defined('CIS_LEHRVERANSTALTUNG_EVALUIERUNG_ANZEIGEN')
|
||||
&& CIS_LEHRVERANSTALTUNG_EVALUIERUNG_ANZEIGEN
|
||||
&& $angemeldet
|
||||
&& (!defined('CIS_EVALUIERUNG_ANZEIGEN_STG') || in_array($lv->studiengang_kz, unserialize(CIS_EVALUIERUNG_ANZEIGEN_STG)))
|
||||
&& ($rechte->isBerechtigt('extension/lvevaluierung_init')))
|
||||
{
|
||||
$text='(Pilotphase)';
|
||||
|
||||
$link= APP_ROOT. 'index.ci.php/extensions/FHC-Core-Evaluierung/Initiierung?lehrveranstaltung_id='. urlencode($lv->lehrveranstaltung_id).'&studiensemester_kurzbz='.urlencode($angezeigtes_stsem);
|
||||
|
||||
$menu[]=array
|
||||
(
|
||||
'id'=>'extension_lvevaluierung_menu_initiierung',
|
||||
'position'=>'140',
|
||||
'name'=>$p->t('lvevaluierung/lvevaluierung'). ' - '. strtoupper($p->t('global/neu')),
|
||||
'icon'=>'../../../skin/images/button_lvevaluierung.png',
|
||||
'link'=> $link,
|
||||
'text'=>$text
|
||||
);
|
||||
}
|
||||
|
||||
//************* Menuepunkte anzeigen ****************
|
||||
|
||||
|
||||
Reference in New Issue
Block a user