Merge branch 'master' into feature-62607/konto_oh_beitrag_betrag_aus_eigener_tabelle

This commit is contained in:
Harald Bamberger
2026-05-04 15:41:52 +02:00
546 changed files with 57614 additions and 9313 deletions
+6 -6
View File
@@ -178,7 +178,7 @@ class File_CSV
return $field;
}
if ($quote && $field{0} == $quote && $field{strlen($field)-1} == $quote) {
if ($quote && $field[0] == $quote && $field[strlen($field) - 1] == $quote) {
return substr($field, 1, -1);
}
return $field;
@@ -230,7 +230,7 @@ class File_CSV
} elseif ($c == "\n" || $c == "\r") {
$sub = ($prev == "\r") ? 2 : 1;
if ((strlen($buff) >= $sub) &&
($buff{strlen($buff) - $sub} == $quote))
($buff[strlen($buff) - $sub] == $quote))
{
$in_quote = false;
}
@@ -312,9 +312,9 @@ class File_CSV
$last =& $fields[count($fields) - 1];
// Fallback to read the line with readQuoted when guess
// that the simple explode won't work right
if (($last{strlen($last) - 1} == "\n"
&& $last{0} == $conf['quote']
&& $last{strlen(rtrim($last)) - 1} != $conf['quote'])
if (($last[strlen($last) - 1] == "\n"
&& $last[0] == $conf['quote']
&& $last[strlen(rtrim($last)) - 1] != $conf['quote'])
||
(count($fields) != $conf['fields'])
// XXX perhaps there is a separator inside a quoted field
@@ -511,4 +511,4 @@ class File_CSV
return true;
}
}
?>
?>
+5 -5
View File
@@ -96,7 +96,7 @@ class File_Util
{
if (File_Util::isAbsolute($path)) {
if (FILE_WIN32) {
return substr($path, $path{3} == '\\' ? 4 : 3);
return substr($path, $path[3] == '\\' ? 4 : 3);
}
return ltrim($path, '/');
}
@@ -182,7 +182,7 @@ class File_Util
if (FILE_WIN32) {
return preg_match('/^[a-zA-Z]:(\\\|\/)/', $path);
}
return ($path{0} == '/') || ($path{0} == '~');
return ($path[0] == '/') || ($path[0] == '~');
}
/**
@@ -244,11 +244,11 @@ class File_Util
} else {
$cwd = getcwd();
$drive = substr($cwd, 0, 2);
if ($path{0} !== $separator{0}) {
if ($path[0] !== $separator[0]) {
$path = substr($cwd, 3) . $separator . $path;
}
}
} elseif ($path{0} !== $separator) {
} elseif ($path[0] !== $separator) {
$path = getcwd() . $separator . $path;
}
@@ -323,7 +323,7 @@ class File_Util
$entries = array();
for ($dir = dir($path); false !== $entry = $dir->read(); ) {
if ($list & FILE_LIST_DOTS || $entry{0} !== '.') {
if ($list & FILE_LIST_DOTS || $entry[0] !== '.') {
$isRef = ($entry === '.' || $entry === '..');
$isDir = $isRef || is_dir($path .'/'. $entry);
if ( ((!$isDir && $list & FILE_LIST_FILES) ||
+170 -72
View File
@@ -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 != '')
+12 -4
View File
@@ -888,9 +888,10 @@ class dokument extends basis_db
* Akzeptiert ein bestimmtes Dokument
* @param char $dokument_kurzbz Bezeichner Dokument.
* @param int $person_id Personenkennzeichen.
* @param array $studiengang_typen einschränken nach Studiengang Typ.
* @return boolean true wenn akzeptiert bzw geprüft ohne Akzeptieren, false wenn Fehler
*/
public function akzeptiereDokument($dokument_kurzbz, $person_id)
public function akzeptiereDokument($dokument_kurzbz, $person_id, $studiengang_typen = null)
{
$db = new basis_db();
$arrayDoksZuAkzeptieren = array();
@@ -902,7 +903,6 @@ class dokument extends basis_db
tbl_prestudent ps, tbl_studiengang sg
WHERE
ps.studiengang_kz = sg.studiengang_kz
AND sg.typ = 'm'
AND person_id = ".$this->db_add_param($person_id)."
AND not exists(
SELECT *
@@ -910,6 +910,11 @@ class dokument extends basis_db
where dok.prestudent_id = ps.prestudent_id
and dokument_kurzbz = ".$this->db_add_param($dokument_kurzbz).")";
if (isset($studiengang_typen) && is_array($studiengang_typen) && !empty($studiengang_typen))
{
$qry .= ' AND sg.typ IN ('. $db->db_implode4SQL($studiengang_typen).')';
}
//gibt ein Array von zu akzeptierenden Dokumenten zurück
if ($db->db_query($qry))
{
@@ -923,11 +928,14 @@ class dokument extends basis_db
}
//für alle prestudent_ids das Dokument akzeptieren
$qry = "INSERT INTO public.tbl_dokumentprestudent(dokument_kurzbz, prestudent_id) VALUES";
$qry = "INSERT INTO public.tbl_dokumentprestudent(dokument_kurzbz, prestudent_id, datum, insertamum) VALUES";
foreach ($arrayDoksZuAkzeptieren as $prestudent_id)
{
$qry .= "(".$this->db_add_param($dokument_kurzbz). ",". $prestudent_id. ")";
$qry .= "(".$this->db_add_param($dokument_kurzbz).
",".$this->db_add_param($prestudent_id, FHC_INTEGER).
",".$this->db_add_param(date('Y-m-d')).
",".$this->db_add_param(strftime('%Y-%m-%d %H:%M')). ")";
if (next($arrayDoksZuAkzeptieren) == true)
{
+3 -1
View File
@@ -364,9 +364,10 @@ class entwicklungsteam extends basis_db
$bismeldung_jahr = $datetime->format('Y');
//laden des Datensatzes
$qry = "SELECT *
$qry = "SELECT tbl_entwicklungsteam.*, tbl_besqual.*, tbl_studiengang.studiengang_kz, tbl_studiengang.melderelevant
FROM bis.tbl_entwicklungsteam
JOIN bis.tbl_besqual USING(besqualcode)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)."
AND (beginn is NULL OR beginn <= make_date(". $this->db_add_param($bismeldung_jahr). "::INTEGER, 12, 31))
AND (ende is NULL OR ende >= make_date(". $this->db_add_param($bismeldung_jahr). "::INTEGER, 1, 1))";
@@ -394,6 +395,7 @@ class entwicklungsteam extends basis_db
$obj->insertvon = $row->insertvon;
$obj->ext_id = $row->ext_id;
$obj->besqual = $row->besqualbez;
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$this->result[] = $obj;
}
+221
View File
@@ -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));
}
}
?>
+1 -1
View File
@@ -240,7 +240,7 @@ class filter extends basis_db
{
//$value->value = preg_replace('/(.*?)selected=.selected./', '$1', $value->value);
//$value->value = preg_replace('/(.*?)\s*[selected=?selected?]/', '$1', $value->value);
//$value->value = preg_replace('/(.*?)\s*selected="selected"\s*/', '${1}', $value->value);
//$value->value = preg_replace('/(.*?)\s*selected="selected"\s*/', '$[1]', $value->value);
//$value->value = preg_replace('/^\s*selected=.*?selected.*?\s*/', ' ', $value->value);
//$value->value = str_replace('selected=', '', $value->value);
+48 -1
View File
@@ -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
+164 -7
View File
@@ -552,9 +552,41 @@ class lehreinheitmitarbeiter extends basis_db
$beginn = new DateTime($beginn);
$ende = new DateTime($ende);
// get relevant Studiensemester
$studiensemester_kurzbz_arr = [];
$qry = '
SELECT
studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE
start BETWEEN
'. $this->db_add_param($beginn->format('Y-m-d')). ' AND
'. $this->db_add_param($ende->format('Y-m-d'));
if ($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$studiensemester_kurzbz_arr[] = $row->studiensemester_kurzbz;
}
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
$lehrgaengeDistr = $this->_getLehrgaengeForDistribution($studiensemester_kurzbz_arr);
if (!is_array($studiensemester_kurzbz_arr) || empty($studiensemester_kurzbz_arr)) return true;
$qry = '
WITH semester_sws_tbl AS (
SELECT DISTINCT lehreinheit_id, studiensemester_kurzbz, lema.semesterstunden, stg.studiengang_kz
SELECT
DISTINCT lehreinheit_id, studiensemester_kurzbz, lema.semesterstunden,
stg.studiengang_kz, stg.melde_studiengang_kz, stg.lgartcode, stg.melderelevant
FROM lehre.tbl_lehreinheitmitarbeiter lema
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
@@ -564,38 +596,104 @@ class lehreinheitmitarbeiter extends basis_db
JOIN public.tbl_studiengang stg ON stg.studiengang_kz = sto.studiengang_kz
JOIN public.tbl_studiensemester ss USING (studiensemester_kurzbz)
WHERE mitarbeiter_uid = '. $this->db_add_param($uid). '
AND (
ss.start BETWEEN
'. $this->db_add_param($beginn->format('Y-m-d')). ' AND
'. $this->db_add_param($ende->format('Y-m-d')). ')
AND ss.studiensemester_kurzbz IN ('.$this->implode4SQL($studiensemester_kurzbz_arr).')
-- nur lehre, die bisgemeldet wird
AND lema.bismelden
AND stg.melderelevant
-- keine lehreinheiten ohne semesterstunden
AND lema.semesterstunden != 0
AND lema.semesterstunden != 0
)
SELECT
studiengang_kz,
studiensemester_kurzbz,
melde_studiengang_kz,
lgartcode,
sum(semesterstunden) AS summe,
round(sum(semesterstunden) / 15, 2) AS sws
FROM
semester_sws_tbl
GROUP BY
studiengang_kz,
studiensemester_kurzbz
studiensemester_kurzbz,
melde_studiengang_kz,
lgartcode
ORDER BY
studiengang_kz;
';
if ($this->db_query($qry))
{
$additionalLehrgaenge = [];
while($row = $this->db_fetch_object())
{
$obj = new StdClass();
$obj->studiengang_kz = $row->studiengang_kz;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$obj->lgartcode = $row->lgartcode;
$obj->sws = $row->sws;
if (isset($lehrgaengeDistr[$uid][$row->studiensemester_kurzbz]))
{
$lehrgaenge = $lehrgaengeDistr[$uid][$row->studiensemester_kurzbz];
foreach ($lehrgaenge as $lehreinheit_id => $lehrgangKzArr)
{
// wenn lehrgang gefunden, zusammenhängende Lehrgaenge holen und sws aufteilen
if (array_key_exists($row->studiengang_kz, $lehrgangKzArr))
{
foreach ($lehrgangKzArr as $studiengang_kz => $lehrgang)
{
// check: nur eine Studiengangsverknüpfung pro Mitarbeiter, Semester, und Referenzstudiengang
if (
$studiengang_kz == $row->studiengang_kz
|| isset(
$additionalLehrgaenge[$uid][$row->studiensemester_kurzbz][$row->studiengang_kz][$studiengang_kz]
)
) continue;
// Lehrgang erstellen
$lg = new StdClass();
$lg->mitarbeiter_uid = $uid;
$lg->melde_studiengang_kz = $lehrgang->melde_studiengang_kz;
$lg->lgartcode = $lehrgang->lgartcode;
$lg->studiengang_kz = $lehrgang->studiengang_kz;
$lg->studiensemester_kurzbz = $lehrgang->studiensemester_kurzbz;
$lg->summe = $row->summe;
$lg->sws = $row->sws;
// Lehrgang, der mit Ursprungsstudiengang aufgrund lehreinheit "verknüpft" ist, hinzufügen
$additionalLehrgaenge[$uid][$row->studiensemester_kurzbz][$row->studiengang_kz][$studiengang_kz] = $lg;
}
}
}
// ignorieren, wenn für den Studiengang keine verknüpften Lehrgaenge hat
if (isset($additionalLehrgaenge[$uid][$row->studiensemester_kurzbz][$row->studiengang_kz]))
{
$addLehrgaenge = $additionalLehrgaenge[$uid][$row->studiensemester_kurzbz][$row->studiengang_kz];
// sws Durchschnitt über alle verknuepften Lehrgaenge berechnet
$summeSws = $row->summe/(count($addLehrgaenge) + 1);
$sws = $row->sws/(count($addLehrgaenge) + 1);
// neue sws zuweisen
$obj->summe = $summeSws;
$obj->sws = $sws;
foreach ($addLehrgaenge as $conn_ws_studiengang_kz => $lehrgang)
{
// sws fuer jeden verknuepften Lehrgang zuweisen
$lehrgang->summe = $summeSws;
$lehrgang->sws = $sws;
// neue lehrgang sws hinzufuegen
$this->result [] = $lehrgang;
}
}
}
$this->result []= $obj;
}
return true;
@@ -655,4 +753,63 @@ class lehreinheitmitarbeiter extends basis_db
return false;
}
/**
* Get "connected" Lehrgaenge for equal sws distribution.
* @param $studiensemester_kurzbz_arr all semester for which Lehrgaenge should be retrieved
* @return object success or error
*/
private function _getLehrgaengeForDistribution($studiensemester_kurzbz_arr)
{
if (!is_array($studiensemester_kurzbz_arr) || empty($studiensemester_kurzbz_arr)) return [];
$qry = "
WITH gruppen AS (
SELECT
mitarbeiter_uid, lehreinheit_id, lehrveranstaltung_id, studiensemester_kurzbz, sem.start, sem.ende,
lehreinheitgruppe_id, studiengang_kz, melde_studiengang_kz, lgartcode
FROM
lehre.tbl_lehreinheitmitarbeiter lema
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
JOIN lehre.tbl_lehreinheitgruppe legr USING (lehreinheit_id)
JOIN public.tbl_studiengang stg USING (studiengang_kz)
JOIN public.tbl_studiensemester sem USING (studiensemester_kurzbz)
WHERE
bismelden
AND stg.melderelevant
AND stg.typ = 'l'
AND le.studiensemester_kurzbz IN (".$this->implode4SQL($studiensemester_kurzbz_arr).")
)
SELECT
DISTINCT mitarbeiter_uid, studiensemester_kurzbz, lehreinheit_id, studiengang_kz, melde_studiengang_kz, lgartcode
FROM
gruppen gr
GROUP BY
mitarbeiter_uid, studiensemester_kurzbz, lehreinheit_id, studiengang_kz, melde_studiengang_kz, lgartcode
ORDER BY
mitarbeiter_uid, studiensemester_kurzbz, lehreinheit_id, studiengang_kz, melde_studiengang_kz, lgartcode";
$lehrgaengeDistributions = [];
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
// group by properties
$lehrgaengeDistributions
[$row->mitarbeiter_uid]
[$row->studiensemester_kurzbz]
[$row->lehreinheit_id]
[$row->studiengang_kz]
= $row;
}
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
return $lehrgaengeDistributions;
}
}
+2
View File
@@ -270,6 +270,8 @@ class LehreListHelper
} else if ($row->bisio_id != '' && $row->status != 'Incoming' && ($row->von > $stsemdatumvon || $row->von == '')) {
// if bis datum is not yet known but von is available already
$zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')';
} else if ($row->bisio_id != '' && $row->status != 'Incoming' && ($row->von <= $stsemdatumvon || $row->von == '') && ($row->bis == '' || $row->bis > date('Y-m-d'))){
$zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')';
}
+53 -3
View File
@@ -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;
@@ -2861,5 +2883,33 @@ class lehrveranstaltung extends basis_db
return false;
}
}
public function getStudienplanLehrveranstaltung($lehrveranstaltung_id, $studienplan_id)
{
$qry = "SELECT studienplan_lehrveranstaltung_id
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE lehrveranstaltung_id = ".$this->db_add_param($lehrveranstaltung_id)."
AND tbl_studienplan_lehrveranstaltung.studienplan_id = ".$this->db_add_param($studienplan_id);"";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->studienplan_lehrveranstaltung_id;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der studienplan_lehrveranstaltung_id';
return false;
}
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
}
return null;
}
}
?>
+2 -1
View File
@@ -705,6 +705,8 @@ class prestudent extends person
$rolle->studienplan_bezeichnung = $row->studienplan_bezeichnung;
$rolle->bestaetigtam = $row->bestaetigtam;
$rolle->bestaetigtvon = $row->bestaetigtvon;
$rolle->fgm = $row->fgm;
$rolle->faktiv = $this->db_parse_bool($row->faktiv);
$rolle->anmerkung_status = $row->anmerkung;
$rolle->bewerbung_abgeschicktamum = $row->bewerbung_abgeschicktamum;
$rolle->rt_stufe = $row->rt_stufe;
@@ -1051,7 +1053,6 @@ class prestudent extends person
//$ps->foto = $row->foto;
$ps->anmerkungen = $row->anmerkungen;
$ps->homepage = $row->homepage;
$ps->svnr = $row->svnr;
$ps->ersatzkennzeichen = $row->ersatzkennzeichen;
$ps->familienstand = $row->familienstand;
$ps->geschlecht = $row->geschlecht;
+32
View File
@@ -464,6 +464,7 @@ class pruefungCis extends basis_db
$obj->anmeldung_von= $row->anmeldung_von;
$obj->anmeldung_bis = $row->anmeldung_bis;
$obj->ort_kurzbz = $row->ort_kurzbz;
$obj->anderer_raum = $row->anderer_raum;
$obj->sammelklausur = $row->sammelklausur;
array_push($this->termine, $obj);
}
@@ -646,6 +647,37 @@ class pruefungCis extends basis_db
return false;
}
public function getPruefungByStudiensemester($studiensemester_kurzbz)
{
if(empty($studiensemester_kurzbz))
{
$this->errormsg = "Kein Studiensemester übergeben.</br>";
return false;
}
$qry = 'SELECT *
FROM campus.tbl_lehrveranstaltung_pruefung
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN campus.tbl_pruefung USING (pruefung_id)
WHERE tbl_pruefung.studiensemester_kurzbz = ' . $this->db_add_param($studiensemester_kurzbz);
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->lehrveranstaltung_pruefung_id = $row->lehrveranstaltung_pruefung_id;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->pruefung_id = $row->pruefung_id;
$obj->storniert = $row->storniert;
$obj->bezeichnung = $row->bezeichnung;
array_push($this->lehrveranstaltungen, $obj);
}
return true;
}
return false;
}
/**
* Lädt alle Prüfung-Lehrveranstaltung Kombinationen
* @return boolean true, wenn ok; false, im Fehlerfall
+9 -3
View File
@@ -39,6 +39,7 @@ class pruefungsanmeldung extends basis_db {
public $statusupdatevon; //varchar(32)
public $statusupdateamum; //timestamp
public $anrechnung_id; //integer
public $ects; //integer
public $pruefungstyp_kurzbz; //varchar(32)
public $insertamum; // timestamp
@@ -94,7 +95,7 @@ class pruefungsanmeldung extends basis_db {
if($new)
{
$qry = 'INSERT INTO campus.tbl_pruefungsanmeldung (uid, pruefungstermin_id, lehrveranstaltung_id, status_kurzbz, wuensche, reihung, kommentar, anrechnung_id, pruefungstyp_kurzbz) VALUES ('
$qry = 'INSERT INTO campus.tbl_pruefungsanmeldung (uid, pruefungstermin_id, lehrveranstaltung_id, status_kurzbz, wuensche, reihung, kommentar, anrechnung_id, pruefungstyp_kurzbz, ects) VALUES ('
. $this->db_add_param($this->uid).', '
. $this->db_add_param($this->pruefungstermin_id).', '
. $this->db_add_param($this->lehrveranstaltung_id).', '
@@ -103,7 +104,8 @@ class pruefungsanmeldung extends basis_db {
. $this->db_add_param($this->reihung).', '
. $this->db_add_param($this->kommentar).', '
. $this->db_add_param($this->anrechnung_id).', '
. $this->db_add_param($this->pruefungstyp_kurzbz).');';
. $this->db_add_param($this->pruefungstyp_kurzbz).', '
. $this->db_add_param($this->ects).');';
}
else
{
@@ -116,7 +118,8 @@ class pruefungsanmeldung extends basis_db {
. 'reihung='.$this->db_add_param($this->reihung).', '
. 'kommentar='.$this->db_add_param($this->kommentar).', '
. 'anrechnung_id='.$this->db_add_param($this->anrechnung_id).', '
. 'pruefungstyp_kurzbz='.$this->db_add_param($this->pruefungstyp_kurzbz)
. 'pruefungstyp_kurzbz='.$this->db_add_param($this->pruefungstyp_kurzbz).', '
. 'ects='.$this->db_add_param($this->ects)
. ' WHERE pruefungsanmeldung_id='.$this->db_add_param($this->pruefungsanmeldung_id).';';
}
@@ -167,6 +170,7 @@ class pruefungsanmeldung extends basis_db {
$this->statusupdatevon = $row->statusupdatevon;
$this->anrechnung_id = $row->anrechnung_id;
$this->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
$this->ects = $row->ects;
$this->insertamum = $row->insertamum;
}
return true;
@@ -221,6 +225,7 @@ class pruefungsanmeldung extends basis_db {
$anmeldung->statusupdatevon = $row->statusupdatevon;
$anmeldung->anrechnung_id = $row->anrechnung_id;
$anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
$anmeldung->ects = $row->ects;
array_push($anmeldungen, $anmeldung);
}
return $anmeldungen;
@@ -280,6 +285,7 @@ class pruefungsanmeldung extends basis_db {
$anmeldung->statusupdatevon = $row->statusupdatevon;
$anmeldung->anrechnung_id = $row->anrechnung_id;
$anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
$anmeldung->ects = $row->ects;
$anmeldung->datum_anmeldung = $row->datum_anmeldung;
array_push($anmeldungen, $anmeldung);
}
+21 -1
View File
@@ -37,6 +37,7 @@ class pruefungstermin extends basis_db{
public $anmeldung_von; //date
public $anmeldung_bis; //date
public $ort_kurzbz; //varchar(16)
public $anderer_raum; //text
public $sammelklausur; //boolean
/**
@@ -93,6 +94,7 @@ class pruefungstermin extends basis_db{
$this->anmeldung_von= $row->anmeldung_von;
$this->anmeldung_bis = $row->anmeldung_bis;
$this->ort_kurzbz = $row->ort_kurzbz;
$this->anderer_raum = $row->anderer_raum;
$this->sammelklausur = $row->sammelklausur;
}
return true;
@@ -179,7 +181,8 @@ class pruefungstermin extends basis_db{
. 'teilnehmer_min='.$this->db_add_param($this->teilnehmer_min).', '
. 'anmeldung_von='.$this->db_add_param($this->anmeldung_von).', '
. 'anmeldung_bis='.$this->db_add_param($this->anmeldung_bis).', '
. 'ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).' '
. 'ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).', '
. 'anderer_raum='.$this->db_add_param($this->anderer_raum).' '
. 'WHERE pruefungstermin_id='.$this->db_add_param($this->pruefungstermin_id).';';
}
@@ -228,6 +231,7 @@ class pruefungstermin extends basis_db{
$obj->anmeldung_von= $row->anmeldung_von;
$obj->anmeldung_bis = $row->anmeldung_bis;
$obj->ort_kurzbz = $row->ort_kurzbz;
$obj->anderer_raum = $row->anderer_raum;
$obj->sammelklausur = $row->sammelklausur;
array_push($this->result, $obj);
}
@@ -240,4 +244,20 @@ class pruefungstermin extends basis_db{
}
}
public function delete($pruefungstermin_id)
{
$qry = "DELETE FROM campus.tbl_pruefungstermin WHERE pruefungstermin_id=".$this->db_add_param($pruefungstermin_id).";";
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg='Fehler beim Löschen des Eintrages';
return false;
}
}
}
+7 -3
View File
@@ -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).';';
}
+32
View File
@@ -322,5 +322,37 @@ class reservierung extends basis_db
}
}
public function getReservierungen($ort_kurzbz, $datum)
{
$datum_obj = new Datum();
if(!$datum_obj->checkDatum($datum))
{
$this->errormsg='Datum hat ein ungueltiges Format';
return false;
}
$qry = "SELECT stunde FROM campus.tbl_reservierung
WHERE
ort_kurzbz=".$this->db_add_param($ort_kurzbz)." AND
datum=".$this->db_add_param($datum);
if($this->db_query($qry))
{
$result = array();
while($row = $this->db_fetch_object())
{
$result[] = $row->stunde;
}
}
else
{
$this->errormsg = "Prüfungstypen konnten nicht geladen werden.";
return false;
}
return $result;
}
}
?>
+1 -1
View File
@@ -1532,7 +1532,7 @@ class WavFile
} else {
// replace
for ($i = 0; $i < $sampleBytes; ++$i) {
$this->_samples{$offset + $i} = $sampleBinary{$i};
$this->_samples[$offset + $i] = $sampleBinary[$i];
}
}
+1 -1
View File
@@ -1435,7 +1435,7 @@ class Securimage
$length = strlen($code['display']);
for($i = 0; $i < $length; ++$i) {
$letter = $code['display']{$i};
$letter = $code['display'][$i];
$letters[] = $letter;
}
}
+8 -1
View File
@@ -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))
{
+1 -3
View File
@@ -294,7 +294,6 @@ class student extends benutzer
$l->gebort=$row->gebort;
$l->gebzeit=$row->gebzeit;
$l->familienstand = $row->familienstand;
$l->svnr=$row->svnr;
$l->foto=$row->foto;
$l->anmerkungen=$row->anmerkung;
$l->aktiv=$this->db_parse_bool($row->aktiv);
@@ -649,7 +648,7 @@ class student extends benutzer
{
$sql_query = "SELECT
person_id, staatsbuergerschaft, geburtsnation, sprache, anrede, titelpost, titelpre,
nachname, vorname, vornamen, gebdatum, gebort, gebzeit, anmerkung, homepage, svnr,
nachname, vorname, vornamen, gebdatum, gebort, gebzeit, anmerkung, homepage,
ersatzkennzeichen, familienstand, geschlecht, anzahlkinder, tbl_person.aktiv, kurzbeschreibung,
tbl_benutzer.aktiv as bnaktiv, tbl_student.studiengang_kz, tbl_student.semester, tbl_student.verband,
tbl_student.gruppe, tbl_student.prestudent_id, tbl_benutzer.uid
@@ -691,7 +690,6 @@ class student extends benutzer
$l->gebzeit = $row->gebzeit;
$l->anmerkungen = $row->anmerkung;
$l->homepage = $row->homepage;
$l->svnr = $row->svnr;
$l->ersatzkennzeichen = $row->ersatzkennzeichen;
$l->familienstand = $row->familienstand;
$l->geschlecht = $row->geschlecht;
+21
View File
@@ -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 ****************