Merge branch 'master' into feature-26336/Composer_Twig_Dependency_Security_Issue

This commit is contained in:
Paolo
2026-06-10 14:24:24 +02:00
1470 changed files with 228568 additions and 13399 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) ||
+42
View File
@@ -575,5 +575,47 @@ class ampel extends basis_db
}
}
/**
* Zählt die Anzahl der UIDs, welche mit einer Ampel adressiert werden
* @param $ampel_id integer ID der Ampel, die geladen werden soll
*/
public function getAnzahlUserAmpel($ampel_id)
{
// Ampel laden
$qry_ampel = "SELECT benutzer_select FROM public.tbl_ampel WHERE ampel_id=".$this->db_add_param($ampel_id, FHC_INTEGER);
if($result_ampel = $this->db_query($qry_ampel))
{
// Anzahl User laden
if ($row_ampel = $this->db_fetch_object($result_ampel))
{
$qry_user = "SELECT count(*) AS anzahl FROM (SELECT uid FROM public.tbl_benutzer WHERE uid IN (".$row_ampel->benutzer_select."))subquery";
}
if ($result = $this->db_query($qry_user))
{
if ($row = $this->db_fetch_object($result))
{
return $row->anzahl;
}
else
{
$this->errormsg = 'Anzahl UIDs konnte nicht geladen werden';
return false;
}
}
else
{
$this->errormsg = 'Anzahl UIDs konnte nicht geladen werden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Ampel';
return false;
}
}
}
?>
+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 != '')
+38
View File
@@ -163,6 +163,44 @@ abstract class db extends basis
return $rows;
}
/**
* Replace the password names with the related passwords in a SQL string, to decrypt data from the DB
*/
protected function replaceSQLDecryptionPassword($sql)
{
$newSQL = null;
// If the global constant CI_ENVIRONMENT is not defined then return a failure
if (!defined('CI_ENVIRONMENT')) return null;
if(!defined('BASEPATH'))
define('BASEPATH', 'LEGACY_WORKAROUND'); // little trick to load a CI config file
// Tries to include the CI config file that contains password for the database encryption
// If the include fails then return a failure
if (!include(dirname(__FILE__).'/../application/config/'.CI_ENVIRONMENT.'/db_crypt.php')) return null;
// Array that will contains all the DB decryption password
$decryptionPasswordArray = array();
// Array that will contains all the DB decryption password names
$decryptionPasswordNamesArray = array();
// For each password found in the config array
foreach ($config['encryption_passwords'] as $name => $password)
{
// Copy the password name using this template: '{$'<password name>'}'
$decryptionPasswordArray[] = $password;
$decryptionPasswordNamesArray[] = '${'.$name.'}';
}
// Replace the password names with the password values
$newSQL = str_replace($decryptionPasswordNamesArray, $decryptionPasswordArray, $sql);
// In case the replacement is a failure
if ($newSQL == '' || $newSQL == null) return null;
return $newSQL; // OK
}
}
require_once(dirname(__FILE__).'/'.DB_SYSTEM.'.class.php');
+43 -5
View File
@@ -29,6 +29,10 @@ class berechtigung extends basis_db
public $rolle_kurzbz;
public $beschreibung;
public $berechtigung_kurzbz;
public $art;
public $anmerkung;
public $insertamum;
public $insertvon;
/**
* Konstruktor
@@ -79,7 +83,7 @@ class berechtigung extends basis_db
{
if(is_null($new))
$new = $this->new;
if($new)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES(".
@@ -103,14 +107,38 @@ class berechtigung extends basis_db
return false;
}
}
/**
* Loescht ein Recht
*
* @param $berechtigung_kurzbz
*/
public function delete($berechtigung_kurzbz)
{
$qry = "DELETE FROM system.tbl_berechtigung WHERE berechtigung_kurzbz=".$this->db_add_param($berechtigung_kurzbz).";";
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Löschen des Rechts:'.$this->db_last_error();
return false;
}
}
/**
* Holt alle BerechtigungsRollen
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function getRollen()
public function getRollen($order = null)
{
$qry = 'SELECT * FROM system.tbl_rolle';
if ($order != '')
{
$qry .= " ORDER BY $order";
}
if($this->db_query($qry))
{
@@ -152,6 +180,9 @@ class berechtigung extends basis_db
$obj->rolle_kurzbz = $row->rolle_kurzbz;
$obj->art = $row->art;
$obj->beschreibung = $row->beschreibung;
$obj->anmerkung = $row->anmerkung;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$this->result[] = $obj;
}
@@ -252,15 +283,22 @@ class berechtigung extends basis_db
if($this->db_num_rows()>0)
{
//Update
$qry = "UPDATE system.tbl_rolleberechtigung SET art=".$this->db_add_param($this->art)." WHERE rolle_kurzbz=".$this->db_add_param($this->rolle_kurzbz)." AND berechtigung_kurzbz=".$this->db_add_param($this->berechtigung_kurzbz).";";
$qry = "UPDATE system.tbl_rolleberechtigung SET art=".$this->db_add_param($this->art).",
anmerkung=".$this->db_add_param($this->anmerkung).",
insertamum=".$this->db_add_param($this->insertamum).",
insertvon=".$this->db_add_param($this->insertvon)."
WHERE rolle_kurzbz=".$this->db_add_param($this->rolle_kurzbz)." AND berechtigung_kurzbz=".$this->db_add_param($this->berechtigung_kurzbz).";";
}
else
{
//Insert
$qry = "INSERT INTO system.tbl_rolleberechtigung (rolle_kurzbz, berechtigung_kurzbz, art) VALUES(".
$qry = "INSERT INTO system.tbl_rolleberechtigung (rolle_kurzbz, berechtigung_kurzbz, art, anmerkung, insertamum, insertvon) VALUES(".
$this->db_add_param($this->rolle_kurzbz).",".
$this->db_add_param($this->berechtigung_kurzbz).",".
$this->db_add_param($this->art).");";
$this->db_add_param($this->art).",".
$this->db_add_param($this->anmerkung).",".
$this->db_add_param($this->insertamum).",".
$this->db_add_param($this->insertvon).");";
}
if($this->db_query($qry))
+109
View File
@@ -0,0 +1,109 @@
<?php
/* Copyright (C) 2013 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
require_once(dirname(__FILE__). '/basis_db.class.php');
require_once(dirname(__FILE__). '/sprache.class.php');
require_once(dirname(__FILE__). '/functions.inc.php');
class besqualcode extends basis_db
{
//Objekt besqualcode
public $result = array();
//Tabellenspalten
public $besqualcode;
public $besqualbez;
/**
* Konstruktor - Laedt optional einen besqualcode
* @param char $besqualcode Besqualcode der geladen werden soll.
*/
public function __construct($besqualcode = null)
{
parent::__construct();
if($besqualcode != null)
$this->load($besqualcode);
}
/**
* Liefert alle Lehrmodi aus der table tbl_besqualcode
* @return true wenn ok, false im Fehlerfall
*/
public function getAll()
{
$qry = "SELECT * FROM bis.tbl_besqual";
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$besqualcode = new besqualcode();
$besqualcode->besqualcode = $row->besqualcode;
$besqualcode->besqualbez = $row->besqualbez;
$this->result[] = $besqualcode;
}
return true;
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Laedt einen besqualcode
* @param char $besqualcode ID des Datensatzes der zu laden ist.
* @return true wenn ok, false im Fehlerfall
*/
public function load($besqualcode)
{
$qry = "SELECT
*
FROM
bis.tbl_besqual
WHERE
besqualcode=".$this->db_add_param($besqualcode).";";
if (!$this->db_query($qry))
{
$this->errormsg = 'Fehler beim Lesen vom besqualcode';
return false;
}
if ($row = $this->db_fetch_object())
{
$this->besqualcode = $row->besqualcode;
$this->besqualbez = $row->besqualbez;
}
else
{
$this->errormsg = 'Es ist kein besqualcode mit dieser ID vorhanden';
return false;
}
return true;
}
}
?>
+185
View File
@@ -0,0 +1,185 @@
<?php
/* Copyright (C) 2007 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Alexei Karpenko <karpenko@technikum-wien.at>,
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/studiensemester.class.php');
class bismeldestichtag extends basis_db
{
//Tabellenspalten
public $meldestichtag_id; // integer
public $meldestichtag; // date
public $studiensemester_kurzbz; // varchar(16)
public $insertamum; // timestamp
public $insertvon; // varchar(32)
public $updateamum; // timestamp
public $updatevon; // varchar(32)
// ErgebnisArray
public $result=array();
/**
* Konstruktor - Uebergibt die Connection und laedt optional einen Meldestichtag
* @param $meldestichtag_id Stichtag der geladen werden soll (default=null)
*/
public function __construct($meldestichtag_id=null)
{
parent::__construct();
if(!is_null($meldestichtag_id))
$this->load($meldestichtag_id);
}
/**
* Laedt Meldestichtag mit der uebergebenen ID
* @param $meldestichtag_id ID des Stichtags der geladen werden soll
*/
public function load($meldestichtag_id)
{
$qry = "SELECT * FROM bis.tbl_bismeldestichtag WHERE meldestichtag_id=".$this->db_add_param($meldestichtag_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->meldestichtag_id = $row->meldestichtag_id;
$this->meldestichtag = $row->meldestichtag;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
return true;
}
else
{
$this->errormsg = 'Kein Eintrag gefunden';
return false;
}
}
else
{
$this->errormsg = "Fehler beim Laden des Stichtags";
return false;
}
}
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
* @return true wenn ok, false im Fehlerfall
*/
protected function validate()
{
return true;
}
/**
* Liefert zuletzt erreichten Meldestichtag
*
* @param $studiensemester_kurzbz
* @return boolean
*/
public function getLastReachedMeldestichtag($studiensemester_kurzbz = null)
{
$qry = "SELECT
meldestichtag_id, meldestichtag, studiensemester_kurzbz, insertamum, insertvon, updateamum, updatevon
FROM
bis.tbl_bismeldestichtag
WHERE
meldestichtag < NOW()";
if (isset($studiensemester_kurzbz))
{
$qry .= "
AND
studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
}
$qry .= "
ORDER BY
meldestichtag DESC
LIMIT 1;";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new bismeldestichtag();
$obj->meldestichtag_id = $row->meldestichtag_id;
$obj->meldestichtag = $row->meldestichtag;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Meldestichtag konnte nicht geladen werden';
return false;
}
}
/**
* Prüft, ob Meldestichtag für ein bestimmtes Statusdatum und Studiensemester erreicht ist.
*
* @param $status_datum
* @param $studiensemester_kurzbz
* @return boolean true wenn erreicht, oder false
*/
public function checkMeldestichtagErreicht($status_datum, $studiensemester_kurzbz = null)
{
$erreicht = false;
if (isset($studiensemester_kurzbz))
{
// Studiensemester ende holen
$studiensemester = new studiensemester();
if ($studiensemester->load($studiensemester_kurzbz))
$studiensemester_ende = new DateTime($studiensemester->ende);
}
// letztes erreichtes Bismeldedatum holen
if ($this->getLastReachedMeldestichtag() && isset($this->result[0]))
$lastReachedMeldestichtag = new DateTime($this->result[0]->meldestichtag);
$statusDatum = new DateTime($status_datum);
// Prüfen, ob Studentstatusdatum oder Studiensemester vor dem Stichtagsdatum liegen
if (isset($statusDatum))
{
if (isset($lastReachedMeldestichtag))
$erreicht = $statusDatum < $lastReachedMeldestichtag;
if (isset($studiensemester_ende))
$erreicht = $erreicht || $studiensemester_ende < $lastReachedMeldestichtag;
}
return $erreicht;
}
}
?>
+372 -350
View File
File diff suppressed because it is too large Load Diff
+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)
{
+4
View File
@@ -200,6 +200,10 @@ class dokument_export
chdir($this->temp_folder);
file_put_contents($this->temp_folder . '/content.xml', $contentbuffer);
if ($this->xml_data->firstChild->tagName == 'error') {
$this->errormsg = $this->xml_data->firstChild->textContent;
return false;
}
// styles.xml erstellen
if(!is_null($this->styles_xsl))
{
+79 -27
View File
@@ -29,6 +29,7 @@ require_once(dirname(__FILE__).'/studiensemester.class.php');
require_once(dirname(__FILE__).'/adresse.class.php');
require_once(dirname(__FILE__).'/webservicelog.class.php');
require_once(dirname(__FILE__).'/prestudent.class.php');
require_once(dirname(__FILE__).'/kennzeichen.class.php');
require_once(dirname(__FILE__).'/errorhandler.class.php');
class dvb extends basis_db
@@ -39,9 +40,10 @@ class dvb extends basis_db
const DVB_URL_WEBSERVICE_NACHNAME = DVB_PORTAL.'/rws/0.2/simpleStudentByNachname.xml';
const DVB_URL_WEBSERVICE_NAME = DVB_PORTAL.'/rws/0.2/simpleStudentByName.xml';
const DVB_URL_WEBSERVICE_MATRIKELNUMMER = DVB_PORTAL.'/rws/0.2/simpleStudentByMatrikelnummer.xml';
const DVB_URL_WEBSERVICE_RESERVIERUNG = DVB_PORTAL.'/rws/0.5/matrikelreservierung.xml';
const DVB_URL_WEBSERVICE_MELDUNG = DVB_PORTAL.'/rws/0.5/matrikelmeldung.xml';
const DVB_URL_WEBSERVICE_BPK = DVB_PORTAL.'/rws/0.5/pruefebpk.xml';
const DVB_URL_WEBSERVICE_RESERVIERUNG = DVB_PORTAL.'/rws/0.6/matrikelreservierung.xml';
const DVB_URL_WEBSERVICE_MELDUNG = DVB_PORTAL.'/rws/0.6/matrikelmeldung.xml';
const DVB_URL_WEBSERVICE_BPK = DVB_PORTAL.'/rws/0.6/pruefebpk.xml';
const DVB_URL_WEBSERVICE_BPK_ALL = DVB_PORTAL.'/rws/0.8/pruefebpk.xml';
public $authentication;
private $username;
@@ -829,7 +831,8 @@ class dvb extends basis_db
if (ErrorHandler::isError($result))
return ErrorHandler::error();
}
$gebdat = str_replace("-", "", $person->geburtsdatum);
//$gebdat = str_replace("-", "", $person->geburtsdatum);
$gebdat = $person->geburtsdatum;
$data = '<?xml version="1.0" encoding="UTF-8"?>
<matrikelnummernmeldung xmlns="http://www.brz.gv.at/datenverbund-unis">
@@ -1038,7 +1041,7 @@ class dvb extends basis_db
<ausstellland>'.$reisepass->ausstellland.'</ausstellland>
<dokumentnr>'.$reisepass->dokumentnr.'</dokumentnr>
<dokumenttyp>'.$reisepass->dokumenttyp.'</dokumenttyp>
</ernpmeldung>
</ernpmeldung>
';
$data .= '</matrikelnummernmeldung>';
@@ -1148,15 +1151,29 @@ class dvb extends basis_db
*/
public function getBPK($person_id)
{
$vbpkTypes = defined('VBPK_TYPES') && is_array(VBPK_TYPES) ? VBPK_TYPES : null;
$person = new person();
if ($person->load($person_id))
{
if ($person->bpk != '')
{
// BPK exisitert bereits
$retval = new stdClass();
$retval->bpk = $person->bpk;
return ErrorHandler::success($retval);
// BPK existiert bereits
if (!isset($vbpkTypes)) return ErrorHandler::success($retval);
$kennzeichen = new kennzeichen();
if ($kennzeichen->load_pers($person_id, $vbpkTypes))
{
if (array_unique(array_column($kennzeichen->result, 'kennzeichentyp_kurzbz')) == array_values($vbpkTypes))
{
// BPKs exisiteren bereits
return ErrorHandler::success($retval);
}
}
}
if ($person->gebdatum == '')
@@ -1177,7 +1194,8 @@ class dvb extends basis_db
return ErrorHandler::error($errormsg);
}
$geburtsdatum = str_replace("-", "", $person->gebdatum);
//$geburtsdatum = str_replace("-", "", $person->gebdatum);
$geburtsdatum = $person->gebdatum;
$vorname = $person->vorname;
$nachname = $person->nachname;
$geschlecht = mb_strtoupper($person->geschlecht);
@@ -1257,6 +1275,8 @@ class dvb extends basis_db
*/
public function pruefeBPK($geburtsdatum, $vorname, $nachname, $geschlecht, $plz = null, $strasse = null)
{
$vbpkTypes = defined('VBPK_TYPES') && is_array(VBPK_TYPES) ? VBPK_TYPES : null;
if ($this->tokenIsExpired())
{
$result = $this->authenticate();
@@ -1270,7 +1290,7 @@ class dvb extends basis_db
$uuid = $this->getUUID();
$url = self::DVB_URL_WEBSERVICE_BPK;
$url = self::DVB_URL_WEBSERVICE_BPK_ALL;
$url .= '?geburtsdatum='.curl_escape($curl, $geburtsdatum);
$url .= '&vorname='.curl_escape($curl, $vorname);
$url .= '&nachname='.curl_escape($curl, $nachname);
@@ -1310,24 +1330,15 @@ class dvb extends basis_db
if ($curl_info['http_code'] == '200')
{
/* Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<simpleBpkResponse xmlns="http://www.brz.gv.at/datenverbund-unis">
<bpk>12345ABCDEFGHXXXXXXX=</bpk>
<personInfo>
<person>
<vorname>Hans</vorname>
<nachname>Huber</nachname>
<geschlecht>M</geschlecht>
<gebdat>1990-01-01</gebdat>
</person>
<adresse>
<staat></staat>
<plz>1100</plz>
<ort></ort>
<strasse></strasse>
</adresse>
</personInfo>
</simpleBpkResponse>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bpkResponse xmlns="http://www.brz.gv.at/datenverbund-unis">
<uuid>5cc93441-a46a-4f97-a5e3-e64891b39f10</uuid>
<bpk>12345ABCDEFG</bpk>
<vbpk bereich="AS" vkz="BBA-STA">12345ABCDEFG</vbpk>
<vbpk bereich="BF" vkz="BMBWF">12345ABCDEFG</vbpk>
<vbpk bereich="ZP-TD" vkz="BMF">12345ABCDEFG</vbpk>
<geprueft>true</geprueft>
</bpkResponse>
Example Error:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
@@ -1368,10 +1379,30 @@ class dvb extends basis_db
}
$domnodes_bpk = $dom->getElementsByTagNameNS($namespace, 'bpk');
if ($domnodes_bpk->length > 0)
{
$retval = new stdClass();
$retval->bpk = $domnodes_bpk->item(0)->textContent;
// vbpks auslesen
$domnodes_vbpks = $dom->getElementsByTagNameNS($namespace, 'vbpk');
$retval->vbpks = array();
if ($domnodes_vbpks->length > 0)
{
foreach ($domnodes_vbpks as $domnode_vbpk)
{
foreach ($domnode_vbpk->attributes as $attribute)
{
if ($attribute->nodeName == 'bereich' && isset($vbpkTypes[$attribute->nodeValue]))
{
$retval->vbpks[$vbpkTypes[$attribute->nodeValue]] = $domnode_vbpk->nodeValue;
}
}
}
}
return ErrorHandler::success($retval);
}
else
@@ -1384,6 +1415,27 @@ class dvb extends basis_db
$retval->multiple = true;
return ErrorHandler::error(null, $retval);
}
else
{
$errorTexts = array();
$domnodes_fehler = $dom->getElementsByTagNameNS($namespace, 'fehlerliste');
if ($domnodes_fehler->length > 0)
{
foreach ($domnodes_fehler as $domnode_fehler)
{
if ($domnode_fehler->childNodes->length > 0)
{
foreach ($domnode_fehler->childNodes as $childNode)
{
$errorTexts[] = $childNode->nodeValue;
}
}
}
$this->errormsg = count($errorTexts) > 0 ? implode('; ', $errorTexts) : null;
return ErrorHandler::error(null);
}
}
}
return ErrorHandler::error();
}
+146 -27
View File
@@ -16,8 +16,9 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>
* Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
@@ -27,7 +28,10 @@ class entwicklungsteam extends basis_db
public $result = array();
//Tabellenspalten
public $entwicklungsteam_id;
public $mitarbeiter_uid;
public $nachname;
public $vorname;
public $studiengang_kz;
public $besqualcode;
public $beginn;
@@ -43,38 +47,40 @@ class entwicklungsteam extends basis_db
/**
* Konstruktor
* @param mitarbeiter_uid ID des zu ladenden Datensatzes
* @param entwicklungsteam_id ID des zu ladenden Datensatzes
* studiengang_kz
*/
public function __construct($mitarbeiter_uid=null, $studiengang_kz=null)
public function __construct($entwicklungsteam_id = null)
{
parent::__construct();
if(!is_null($mitarbeiter_uid) && !is_null($studiengang_kz))
$this->load($mitarbeiter_uid, $studiengang_kz);
if(!is_null($entwicklungsteam_id))
$this->load($entwicklungsteam_id);
}
/**
* Laedt einen Datensatz
* @param mitarbeiter_uid ID des zu ladenden Datensatzes
* studiengang_kz
* @param entwicklungsteam_id ID des zu ladenden Datensatzes
*/
public function load($mitarbeiter_uid, $studiengang_kz)
public function load($entwicklungsteam_id)
{
if(!is_numeric($studiengang_kz) || $studiengang_kz == '')
if(!is_numeric($entwicklungsteam_id))
{
$this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein';
$this->errormsg = 'entwicklungsteam_id muss eine gueltige Zahl sein';
return false;
}
//laden des Datensatzes
$qry = "SELECT * FROM bis.tbl_entwicklungsteam JOIN bis.tbl_besqual USING(besqualcode)
WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER).";";
WHERE entwicklungsteam_id=".$this->db_add_param($entwicklungsteam_id);
$qry.=";";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->entwicklungsteam_id = $row->entwicklungsteam_id;
$this->mitarbeiter_uid = $row->mitarbeiter_uid;
$this->studiengang_kz = $row->studiengang_kz;
$this->besqualcode = $row->besqualcode;
@@ -103,19 +109,19 @@ class entwicklungsteam extends basis_db
/**
* Loescht einen Datensatz
* @param bisverwendung_id ID des zu loeschenden Datensatzes
* @param entwicklungsteam_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
public function delete($mitarbeiter_uid, $studiengang_kz)
public function delete($entwicklungsteam_id)
{
if(!is_numeric($studiengang_kz) || $studiengang_kz == '')
if(!is_numeric($entwicklungsteam_id))
{
$this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein';
$this->errormsg = 'entwicklungsteam_id muss eine gueltige Zahl sein';
return false;
}
$qry = "DELETE FROM bis.tbl_entwicklungsteam
WHERE mitarbeiter_uid = ".$this->db_add_param($mitarbeiter_uid)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER).";";
WHERE entwicklungsteam_id = ".$this->db_add_param($entwicklungsteam_id).";";
if($this->db_query($qry))
{
@@ -148,7 +154,12 @@ class entwicklungsteam extends basis_db
}
if($this->besqualcode=='')
{
$this->errormsg = 'BesondereQualifikation muss eingetragen werden';
$this->errormsg = 'Besondere Qualifikation muss eingetragen werden';
return false;
}
if($this->ende != '' && $this->beginn > $this->ende)
{
$this->errormsg = 'Endedatum darf nicht vor Anfangsdatum liegen';
return false;
}
return true;
@@ -160,7 +171,7 @@ class entwicklungsteam extends basis_db
* andernfalls wird der Datensatz mit der ID in $akte_id aktualisiert
* @return true wenn ok, false im Fehlerfall
*/
public function save($new=null)
public function save($new = null)
{
if(!$this->validate())
return false;
@@ -181,7 +192,6 @@ class entwicklungsteam extends basis_db
$this->db_add_param($this->updatevon).', '.
$this->db_add_param($this->insertamum).', '.
$this->db_add_param($this->insertvon).');';
}
else
{
@@ -196,7 +206,7 @@ class entwicklungsteam extends basis_db
" ende=".$this->db_add_param($this->ende).",".
" updateamum=".$this->db_add_param($this->updateamum).",".
" updatevon=".$this->db_add_param($this->updatevon).
" WHERE mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid)." AND studiengang_kz=".$this->db_add_param($this->studiengang_kz_old, FHC_INTEGER).";";
" WHERE entwicklungsteam_id=".$this->db_add_param($this->entwicklungsteam_id).";";
}
if($this->db_query($qry))
@@ -215,7 +225,7 @@ class entwicklungsteam extends basis_db
* @param $uid UID des Mitarbeiters
* @return true wenn ok, false wenn Fehler
*/
public function getEntwicklungsteam($mitarbeiter_uid, $studiengang_kz=null)
public function getEntwicklungsteam($mitarbeiter_uid, $studiengang_kz = null)
{
//laden des Datensatzes
$qry = "SELECT * FROM bis.tbl_entwicklungsteam JOIN bis.tbl_besqual USING(besqualcode)
@@ -232,6 +242,7 @@ class entwicklungsteam extends basis_db
{
$obj = new entwicklungsteam();
$obj->entwicklungsteam_id = $row->entwicklungsteam_id;
$obj->mitarbeiter_uid = $row->mitarbeiter_uid;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->besqualcode = $row->besqualcode;
@@ -256,16 +267,15 @@ class entwicklungsteam extends basis_db
}
/**
* Preuft ob der Eintrag schon existiert
* Prueft ob der Eintrag schon existiert
*
* @param $mitarbeiter_uid
* @param $studiengang_kz
* @param entwicklungsteam_id
* @return true wenn vorhanden, false wenn nicht
*/
public function exists($mitarbeiter_uid,$studiengang_kz)
public function exists($entwicklungsteam_id)
{
$qry = "SELECT count(*) as anzahl FROM bis.tbl_entwicklungsteam
WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER).";";
WHERE entwicklungsteam_id=".$this->db_add_param($entwicklungsteam_id).";";
if($this->db_query($qry))
{
@@ -288,5 +298,114 @@ class entwicklungsteam extends basis_db
return false;
}
}
/**
* Liefert alle Entwicklungsteameinträge
* @param int $studiengang_kz Studiengangkennzeichen.
* @param char $sort Parameter, nach dem sortiert werden soll.
* @return alle Entwicklungsteameinträge
*/
public function getAll($studiengang_kz = null, $sort = null)
{
$qry = "SELECT e.*, p.nachname, p.vorname FROM bis.tbl_entwicklungsteam e
JOIN public.tbl_benutzer b ON e.mitarbeiter_uid = b.uid
JOIN public.tbl_person p ON b.person_id = p.person_id
";
if ($studiengang_kz != null)
$qry .= " WHERE e.studiengang_kz = ".$this->db_add_param($studiengang_kz);
if ($sort != null)
{
$qry .= " ORDER BY ".$sort;
}
$qry .= ";";
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$obj = new entwicklungsteam();
$obj->entwicklungsteam_id = $row->entwicklungsteam_id;
$obj->mitarbeiter_uid = $row->mitarbeiter_uid;
$obj->nachname = $row->nachname;
$obj->vorname = $row->vorname;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->besqualcode = $row->besqualcode;
$obj->beginn = $row->beginn;
$obj->ende = $row->ende;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Entwicklungsteameinträge.';
return false;
}
}
/*
* Laedt alle Entwicklungsteameintraege eines Mitarbeiters für eine bestimmte Bisperiode
* @param $uid UID des Mitarbeiters
* @param $stichtag Stichtag im Format 'Y-m-d'
* @return true wenn ok, false wenn Fehler
*/
public function getEntwicklungsteamBis($mitarbeiter_uid, $stichtag, $studiengang_kz = null)
{
$datetime = new DateTime($stichtag);
$bismeldung_jahr = $datetime->format('Y');
//laden des Datensatzes
$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))";
if($studiengang_kz!=null)
$qry.=" AND studiengang_kz=".$this->db_add_param($studiengang_kz);
$qry.=";";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new entwicklungsteam();
$obj->entwicklungsteam_id = $row->entwicklungsteam_id;
$obj->mitarbeiter_uid = $row->mitarbeiter_uid;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->besqualcode = $row->besqualcode;
$obj->beginn = $row->beginn;
$obj->ende = $row->ende;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->insertamum = $row->insertamum;
$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;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
}
?>
+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));
}
}
?>
+67 -5
View File
@@ -184,13 +184,30 @@ class filter extends basis_db
}
/**
* Ausgabe des HTML Widgets
* @param kurzbz des Datensatzes, der gefunden werden soll
* Ausgabe des HTML Widgets. Parameter, die als GET übergeben werden, werden ausgelesen und vorselektiert
* @param $kurzbz String Kurzbz des Datensatzes, der gefunden werden soll
* @return boolean true wenn ok, false im Fehlerfall
*/
public function getHtmlWidget($kurzbz)
{
$html='';
// GET-Parameter parsen und in String rausschreiben
parse_str($this->getVars(), $getParams);
foreach ($getParams AS $key=>$value)
{
// Vordefinierte Parameter entfernen
if ($key == 'type' ||
$key == 'statistik_kurzbz' ||
$key == 'report_id' ||
$key == 'putlog' ||
$key == 'systemfilter_id' ||
$key == 'debug')
{
unset($getParams[$key]);
}
}
foreach ($this->result as $filter)
{
if ($filter->kurzbz==$kurzbz)
@@ -206,15 +223,58 @@ class filter extends basis_db
$sql = str_replace('$user', $this->db_add_param($user), $filter->sql);
$this->loadValues($sql, $filter->valuename, $filter->showvalue);
foreach ($this->values as $value)
$html.="\n\t\t\t\t".'<option value="'.$value->value.'">'.$value->text.'</option>';
{
// Wenn ein Attribut als GET-Parameter übergeben wurde, dann vorselektieren
if (isset($getParams[$filter->kurzbz]))
{
//GET-Parameter aufsplitten
$paramsArr = explode(',',$getParams[$filter->kurzbz]);
//echo '<pre>', var_dump($value->value), '</pre>';
//$value->value = preg_replace('/(.*?)\s*selected.*/im', '$1', $value->value);
$value->value = preg_replace('/"\s*.*/im', '', $value->value);
//echo '<pre>', var_dump($value->value), '</pre>';
if (in_array($value->value, $paramsArr))
$html .= "\n\t\t\t\t".'<option value="'.$value->value.'" selected="selected">'.$value->text.'</option>';
else
{
//$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*/', ' ', $value->value);
//$value->value = str_replace('selected=', '', $value->value);
//echo '<pre>', var_dump($value->value), '</pre>';
$html .= "\n\t\t\t\t".'<option value="'.$value->value.'">'.$value->text.'</option>';
}
}
else
{
//$value->value = str_replace('selected="selected', '', $value->value);
$html .= "\n\t\t\t\t".'<option value="'.$value->value.'">'.$value->text.'</option>';
}
}
$html.="\n\t\t\t</select>";
break;
case 'datepicker':
$html .= '<input type="text" id="' . $filter->kurzbz . '" name="' . $filter->kurzbz . '">';
$html .= '<input type="text" id="'.$filter->kurzbz.'" class="form-control" name="'.$filter->kurzbz.'"';
if (isset($getParams[$filter->kurzbz]))
{
$html .= ' value="'.$getParams[$filter->kurzbz].'"';
}
$html .= ' >';
$html .= '<script>';
$html .= '$("#' . $filter->kurzbz . '").datepicker({ dateFormat: \'yy-mm-dd\' });';
$html .= '</script>';
break;
case 'text':
$html .= '<input type="text" id="'.$filter->kurzbz.'" class="form-control" name="'.$filter->kurzbz.'" '.$filter->htmlattr;
if (isset($getParams[$filter->kurzbz]))
{
$html .= ' value="'.$getParams[$filter->kurzbz].'"';
}
$html .= '>';
break;
}
return $html;
}
@@ -230,9 +290,11 @@ class filter extends basis_db
*/
public function loadValues($sql, $valuename, $showvalue)
{
$this->values = array();
// In case a decryption function is used then perform password substitution
$sql = $this->replaceSQLDecryptionPassword($sql);
if($this->db_query($sql))
{
while($row = $this->db_fetch_row())
+24 -4
View File
@@ -1197,6 +1197,26 @@ function anzahlTage($date1, $date2)
return round($diff / 86400);
}
/**
* Checks if the provided SQL string contains PostgreSQL functions to decrypt data, returns a boolean
*/
function hasSQLDecryption($sql)
{
return stripos($sql, 'PGP_SYM_DECRYPT') !== false;
}
/**
* Checks if the provided SQL string contains PostgreSQL functions to decrypt data,
* and if it is used a variable instead of a readable password. Returns a boolean
*/
function isSQLDecryptionValid($sql)
{
// If the SQL string contains decryption functions and there are _no_ password variables
if (hasSQLDecryption($sql) && strpos($sql, '${') === false) return false; // then return false
return true; // in any other case return true
}
/**
* Gibt zurück, ob ein String ausschließlich erlaubte Zeichen enthält
* erlaubt: Buchstaben a-z, A-Z, 0-9, -, _
@@ -1205,10 +1225,10 @@ function anzahlTage($date1, $date2)
*/
function hasOnlyAllowedChars($stringToCheck)
{
if (!preg_match("#^[a-zA-Z0-9_-]+$#", $stringToCheck))
return false;
else
return true;
if (!preg_match("#^[a-zA-Z0-9_-]+$#", $stringToCheck))
return false;
else
return true;
}
?>
+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
+261
View File
@@ -0,0 +1,261 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Alexei Karpenko <karpenko@technikum-wien.at>,
*/
/**
* Klasse kennzeichen
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class kennzeichen extends basis_db
{
public $new; // boolean
public $result = array(); // adresse Objekt
//Tabellenspalten
public $kennzeichen_id; // integer
public $person_id; // integer
public $kennzeichentyp_kurzbz; // string
public $inhalt; // string
public $aktiv; // boolean
public $insertamum; // timestamp
public $insertvon; // string
public $updateamum; // timestamp
public $updatevon; // string
/**
* Konstruktor
* @param $kennzeichen_id ID des Kennzeichens das geladen werden soll (Default=null)
*/
public function __construct($kennzeichen_id=null)
{
parent::__construct();
$this->new = true;
if(!is_null($kennzeichen_id))
$this->load($kennzeichen_id);
}
/**
* Laedt ein Kennzeichen mit der ID $kennzeichen_id
* @param $kennzeichen_id ID des zu ladenden Kennzeichens
* @return true wenn ok, false im Fehlerfall
*/
public function load($kennzeichen_id)
{
if (!is_numeric($kennzeichen_id))
{
$this->errormsg = 'Kennzeichen Id ist ungueltig';
return false;
}
$qry = "SELECT
*
FROM
public.tbl_kennzeichen
WHERE
kennzeichen_id = " . $this->db_add_param($kennzeichen_id, FHC_INTEGER) . ";";
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
$this->kennzeichen_id = $row->kennzeichen_id;
$this->person_id = $row->person_id;
$this->kennzeichentyp_kurzbz = $row->kennzeichentyp_kurzbz;
$this->inhalt = $row->inhalt;
$this->aktiv = $this->db_parse_bool($row->aktiv);
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
return true;
}
else
{
$this->errormsg = 'Datensatz wurde nicht gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Prueft die Kennzeichen auf Gueltigkeit
* @return true wenn ok, false im Fehlerfall
*/
public function validate()
{
//Gesamtlaenge pruefen
if(mb_strlen($this->kennzeichentyp_kurzbz)>32)
{
$this->errormsg = 'Kennzeichentyp darf nicht länger als 32 Zeichen sein';
return false;
}
$this->errormsg = '';
return true;
}
/**
* Speichert den aktuellen Datensatz in die Datenbank
* Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
* andernfalls wird der Datensatz mit der ID in $kennzeichen_id aktualisiert
* @return true wenn ok, false im Fehlerfall
*/
public function save($new = null)
{
if(!is_null($new))
$this->new = $new;
//Variablen pruefen
if(!$this->validate())
return false;
if($this->new)
{
//Neuen Datensatz einfuegen
$qry='BEGIN;INSERT INTO public.tbl_kennzeichen (person_id, kennzeichentyp_kurzbz, inhalt, aktiv, insertamum, insertvon) VALUES('.
$this->db_add_param($this->person_id, FHC_INTEGER).', '.
$this->db_add_param($this->kennzeichentyp_kurzbz).', '.
$this->db_add_param($this->inhalt).', '.
$this->db_add_param($this->aktiv, FHC_BOOLEAN).', now(), '.
$this->db_add_param($this->insertvon).');';
}
else
{
//Updaten des bestehenden Datensatzes
//Pruefen ob kennzeichen_id eine gueltige Zahl ist
if(!is_numeric($this->kennzeichen_id))
{
$this->errormsg = 'kennzeichen_id muss eine gueltige Zahl sein';
return false;
}
$qry='UPDATE public.tbl_kennzeichen SET '.
'person_id='.$this->db_add_param($this->person_id,FHC_INTEGER).', '.
'kennzeichentyp_kurzbz='.$this->db_add_param($this->kennzeichentyp_kurzbz).', '.
'aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN).', '.
'updateamum= now(), '.
'updatevon='.$this->db_add_param($this->updatevon).' '.
'WHERE kennzeichen_id='.$this->db_add_param($this->kennzeichen_id, FHC_INTEGER).';';
}
if($this->db_query($qry))
{
//Sequence auslesen um die eingefuegte ID zu ermitteln
if($this->new)
{
$qry = "SELECT currval('public.tbl_kennzeichen_id_seq') as id;";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->kennzeichen_id = $row->id;
$this->db_query('COMMIT;');
return true;
}
else
{
$this->errormsg = 'Fehler beim Auslesen er Sequence';
$this->db_query('ROLLBACK;');
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK;');
return false;
}
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return false;
}
}
/**
* Laedt Kennzeichen einer Person
* @param person_id
* @param kennzeichentyp_kurzbz_arr filtern nach Kennzeichentyp
* @return boolean
*/
public function load_pers($person_id, $kennzeichentyp_kurzbz_arr)
{
if(!is_numeric($person_id))
{
$this->errormsg = 'Person_id ist ungueltig';
return false;
}
if(!is_array($kennzeichentyp_kurzbz_arr))
{
$this->errormsg = 'Kennzeichen sind ungueltig';
return false;
}
$qry = "
SELECT
kz.kennzeichen_id, kz.person_id, kz.kennzeichentyp_kurzbz, inhalt, aktiv, updateamum, updatevon, insertamum, insertvon
FROM
public.tbl_kennzeichen kz
WHERE
person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
AND aktiv = TRUE
AND kennzeichentyp_kurzbz IN (".$this->implode4SQL($kennzeichentyp_kurzbz_arr).")
ORDER BY
kz.kennzeichentyp_kurzbz, kz.kennzeichen_id;";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new kennzeichen();
$obj->kennzeichen_id = $row->kennzeichen_id;
$obj->person_id = $row->person_id;
$obj->kennzeichentyp_kurzbz = $row->kennzeichentyp_kurzbz;
$obj->inhalt = $row->inhalt;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+51 -4
View File
@@ -25,6 +25,7 @@
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/'.EXT_FKT_PATH.'/generateZahlungsreferenz.inc.php');
require_once(dirname(__FILE__).'/variable.class.php');
class konto extends basis_db
{
@@ -432,6 +433,8 @@ class konto extends basis_db
$qry.=" ORDER BY beschreibung";
$oehBeitrag = $this->_getOEHBeitrag();
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
@@ -440,7 +443,15 @@ class konto extends basis_db
$typ->buchungstyp_kurzbz = $row->buchungstyp_kurzbz;
$typ->beschreibung = $row->beschreibung;
$typ->standardbetrag = $row->standardbetrag;
if (strtolower($typ->buchungstyp_kurzbz) === 'oeh' && $oehBeitrag)
{
$typ->standardbetrag = $oehBeitrag;
}
else
{
$typ->standardbetrag = $row->standardbetrag;
}
$typ->standardtext = $row->standardtext;
$typ->credit_points = $row->credit_points;
$typ->aktiv = $this->db_parse_bool($row->aktiv);
@@ -965,17 +976,16 @@ class konto extends basis_db
}
}
public function checkDoppelteBuchung($person_ids, $stsem, $typ)
public function checkDoppelteBuchung($person_ids, $stsem, $typen)
{
$qry = "SELECT person.vorname, person.nachname
FROM public.tbl_konto konto
JOIN public.tbl_person person USING(person_id)
WHERE konto.person_id IN (".$this->implode4SQL(array_filter($person_ids)).")
AND studiensemester_kurzbz = ".$this->db_add_param($stsem)."
AND buchungstyp_kurzbz = ".$this->db_add_param($typ)."
AND buchungstyp_kurzbz IN (".$this->implode4SQL($typen) .")
GROUP BY person.vorname, person.nachname
ORDER BY person.nachname, person.vorname";
if ($result = $this->db_query($qry))
{
$persons = array();
@@ -991,6 +1001,43 @@ class konto extends basis_db
return false;
}
}
private function _getOEHBeitrag()
{
if(!is_user_logged_in())
{
return false;
}
$variablen_obj = new variable();
$variablen_obj->loadVariables(get_uid());
$qry = "WITH semstart AS (
SELECT start FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = '". $this->db_escape($variablen_obj->variable->semester_aktuell) . "'
)
SELECT * FROM bis.tbl_oehbeitrag oehb
JOIN public.tbl_studiensemester semvon ON oehb.von_studiensemester_kurzbz = semvon.studiensemester_kurzbz
LEFT JOIN public.tbl_studiensemester sembis ON oehb.bis_studiensemester_kurzbz = sembis.studiensemester_kurzbz
JOIN semstart ON semstart.start::date >= semvon.start::date AND (sembis.studiensemester_kurzbz IS NULL OR semstart.start::date <= sembis.start::date)
ORDER BY semvon.start
LIMIT 1";
if ($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$summe = ($row->studierendenbeitrag + $row->versicherung) * -1;
return number_format((float)$summe, 2, '.', '');
}
return false;
}
else
{
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
}
}
}
?>
+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;
}
}
+20 -6
View File
@@ -200,7 +200,7 @@ class LehreListHelper
//Studierende der LV laden und in ein Array schreiben
$qry = 'SELECT
distinct on(nachname, vorname, person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid,
distinct on(nachname, vorname, public.tbl_benutzer.person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid,
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(SELECT status_kurzbz FROM public.tbl_prestudentstatus
WHERE prestudent_id=tbl_student.prestudent_id
@@ -209,7 +209,8 @@ class LehreListHelper
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_person.geschlecht, tbl_studiengang.kurzbzlang,
tbl_mobilitaet.mobilitaetstyp_kurzbz, tbl_zeugnisnote.note,
(CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN 1 ELSE 0 END) as doubledegree,
(tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout
(tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout,
public.tbl_prestudent.gsstudientyp_kurzbz as ddtype
FROM
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
@@ -223,6 +224,7 @@ class LehreListHelper
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id)
LEFT JOIN public.tbl_prestudent USING(prestudent_id)
WHERE
vw_student_lehrveranstaltung.lehrveranstaltung_id='.$this->db->db_add_param($this->lvid, FHC_INTEGER).' AND
vw_student_lehrveranstaltung.studiensemester_kurzbz='.$this->db->db_add_param($this->studiensemester);
@@ -231,7 +233,7 @@ class LehreListHelper
if($this->lehreinheit!='')
$qry.=' AND vw_student_lehrveranstaltung.lehreinheit_id='.$this->db->db_add_param($this->lehreinheit, FHC_INTEGER);
$qry.=' ORDER BY nachname, vorname, person_id, daysout DESC, doubledegree DESC';
$qry.=' ORDER BY nachname, vorname, public.tbl_benutzer.person_id, daysout DESC, doubledegree DESC';
$stsem_obj = new studiensemester();
$stsem_obj->load($this->studiensemester);
@@ -263,8 +265,15 @@ class LehreListHelper
//Outgoing
if($row->bisio_id != '' && $row->status != 'Incoming' && ($row->bis > $stsemdatumvon || $row->bis == '')
&& $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30))
&& $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30)) {
$zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')';
} 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').')';
}
if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
$zusatz.= '('. $row->anmerkung. ')';
@@ -275,8 +284,13 @@ class LehreListHelper
if($row->stg_kz_student==$a_o_kz) //Außerordentliche Studierende
$zusatz.='(a.o.)';
if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) //Double Degree Student
$zusatz .= '(d.d.)';
if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) {
//Double Degree Student
$zusatz .= '(d.d.';
if($row->ddtype == 'Intern') $zusatz .= 'i.)';
else if ($row->ddtype == 'Extern') $zusatz .='o.)';
else $zusatz .= ')';
}
if(($row->wahlname != ''))
{
+5 -1
View File
@@ -41,6 +41,7 @@ class lehrstunde extends basis_db
public $unr; // @brief Unterrichtsnummer
public $lektor_uid; // @brief UID des Lektors
public $lektor_kurzbz; // @brief Kurzbezeichnung des Lektors
public $mitarbeiter_kurzbz; // @brief Kurzbezeichnung
public $datum; // @brief Datum
public $stunde; // @brief Unterrichts-Stunde des Tages
public $ort_kurzbz; // @brief Ort in dem der Unterricht stattfindet
@@ -116,6 +117,7 @@ class lehrstunde extends basis_db
$this->unr=$row->unr;
$this->lektor_uid=$row->uid;
$this->lektor_kurzbz=$row->lektor;
$this->mitarbeiter_kurzbz=$row->mitarbeiter_kurzbz;
$this->datum=$row->datum;
$this->stunde=$row->stunde;
$this->ort_kurzbz=$row->ort_kurzbz;
@@ -590,6 +592,7 @@ class lehrstunde extends basis_db
$stunde->unr=$row->unr;
$stunde->lektor_uid=$row->uid;
$stunde->lektor_kurzbz=$row->lektor;
$stunde->mitarbeiter_kurzbz=$row->mitarbeiter_kurzbz;
$stunde->datum=$row->datum;
$stunde->stunde=$row->stunde;
$stunde->ort_kurzbz=$row->ort_kurzbz;
@@ -663,6 +666,7 @@ class lehrstunde extends basis_db
$stunde->updateamum=$row->insertamum;
$stunde->updatevon=$row->insertvon;
$stunde->farbe='';
$stunde->mitarbeiter_kurzbz = $row->mitarbeiter_kurzbz;
$this->lehrstunden[]=$stunde;
}
}
@@ -1069,7 +1073,7 @@ class lehrstunde extends basis_db
}
/**
* Holt Studenplandaten.
* Holt Stundenplandaten.
*
* @param $db_stpl_table
* @param null $lehrveranstaltung_id
+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;
}
}
?>
+300
View File
@@ -0,0 +1,300 @@
<?php
require_once(dirname(__FILE__) . '/basis_db.class.php');
require_once(dirname(__FILE__) . '/functions.inc.php');
class lehrveranstaltung_faktor extends basis_db
{
public $lehrveranstaltung_faktor_id; // serial
public $lehrveranstaltung_id; // integer
public $faktor; // numeric
public $lehrform_kurzbz; // varchar(8)
public $studiensemester_kurzbz_von; // varchar(16)
public $studiensemester_kurzbz_bis; // varchar(16)
public $insertamum; // timestamp
public $insertvon; // varchar(32)
public $updateamum; // timestamp
public $updatevon; // varchar(32)
public $lv_faktoren = array(); // lehrveranstaltung Objekt
/**
* Konstruktor
* @param $lehrveranstaltung_faktor_id
*/
public function __construct($lehrveranstaltung_faktor_id = null)
{
parent::__construct();
if (!is_null($lehrveranstaltung_faktor_id))
$this->load($lehrveranstaltung_faktor_id);
}
public function load($lehrveranstaltung_faktor_id)
{
if (!is_numeric($lehrveranstaltung_faktor_id))
{
$this->errormsg = 'Lehrveranstaltung_faktor_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung_faktor
WHERE lehrveranstaltung_faktor_id=".$this->db_add_param($lehrveranstaltung_faktor_id, FHC_INTEGER);
if (!$this->db_query($qry)) {
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
if ($row = $this->db_fetch_object())
{
$this->lehrveranstaltung_faktor_id = $row->lehrveranstaltung_faktor_id;
$this->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$this->faktor = $row->faktor;
$this->studiensemester_kurzbz_von = $row->studiensemester_kurzbz_von;
$this->studiensemester_kurzbz_bis = $row->studiensemester_kurzbz_bis;
}
return true;
}
public function loadByLV($lv_id)
{
if (!is_numeric($lv_id))
{
$this->errormsg = 'Lehrveranstaltung_faktor_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT *
FROM lehre.tbl_lehrveranstaltung_faktor
LEFT JOIN public.tbl_studiensemester vonstsem
ON tbl_lehrveranstaltung_faktor.studiensemester_kurzbz_von = vonstsem.studiensemester_kurzbz
LEFT JOIN public.tbl_studiensemester bisstem
ON tbl_lehrveranstaltung_faktor.studiensemester_kurzbz_bis = bisstem.studiensemester_kurzbz
WHERE lehrveranstaltung_id = ".$this->db_add_param($lv_id, FHC_INTEGER);
if (!$result = $this->db_query($qry)) {
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object($result))
{
$lv_faktor_objekt = new lehrveranstaltung_faktor();
$lv_faktor_objekt->lehrveranstaltung_faktor_id = $row->lehrveranstaltung_faktor_id;
$lv_faktor_objekt->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$lv_faktor_objekt->faktor = $row->faktor;
$lv_faktor_objekt->lehrform_kurzbz = $row->lehrform_kurzbz;
$lv_faktor_objekt->studiensemester_kurzbz_von = $row->studiensemester_kurzbz_von;
$lv_faktor_objekt->studiensemester_kurzbz_bis = $row->studiensemester_kurzbz_bis;
$this->lv_faktoren[] = $lv_faktor_objekt;
}
return true;
}
public function checkIfExists($lv_id, $von = null, $bis = null, $id = null, $lehrform_kurzbz = null)
{
if (!is_numeric($lv_id))
{
$this->errormsg = 'Lehrveranstaltung_faktor_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT *
FROM lehre.tbl_lehrveranstaltung_faktor
LEFT JOIN public.tbl_studiensemester vonstsem
ON tbl_lehrveranstaltung_faktor.studiensemester_kurzbz_von = vonstsem.studiensemester_kurzbz
LEFT JOIN public.tbl_studiensemester bisstem
ON tbl_lehrveranstaltung_faktor.studiensemester_kurzbz_bis = bisstem.studiensemester_kurzbz
WHERE lehrveranstaltung_id = ".$this->db_add_param($lv_id, FHC_INTEGER);
if(!empty($von))
{
$qry .= "
AND (bisstem.ende >= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = " . $this->db_add_param($von, FHC_STRING) . "
)
OR bisstem.ende IS NULL
)";
}
if(!empty($bis) && $bis !== "")
{
$qry .= "
AND
(vonstsem.start <= (
SELECT ende
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = " . $this->db_add_param($bis, FHC_STRING) . "
))
";
}
if (!empty($id) && $id !== "")
{
$qry .= "
AND
lehrveranstaltung_faktor_id != ". $this->db_add_param($id, FHC_INTEGER);
}
if (!empty($lehrform_kurzbz) && $lehrform_kurzbz !== "")
{
$qry .= "
AND
lehrform_kurzbz = ". $this->db_add_param($lehrform_kurzbz);
}
else
{
$qry .= "
AND lehrform_kurzbz IS NULL
";
}
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
return true;
else
return false;
}
}
public function save($new = false)
{
if ($new)
{
$qry = 'INSERT INTO lehre.tbl_lehrveranstaltung_faktor (lehrveranstaltung_id, faktor, studiensemester_kurzbz_von, studiensemester_kurzbz_bis, lehrform_kurzbz, insertvon)
VALUES ('. $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER) . ', '.
$this->db_add_param($this->faktor, FHC_INTEGER) . ', '.
$this->db_add_param($this->studiensemester_kurzbz_von) . ', '.
$this->db_add_param($this->studiensemester_kurzbz_bis) . ', '.
$this->db_add_param($this->lehrform_kurzbz) . ', '.
$this->db_add_param($this->insertvon) . ');';
}
else
{
$qry = "UPDATE lehre.tbl_lehrveranstaltung_faktor
SET faktor = ". $this->db_add_param($this->faktor) ." ,
studiensemester_kurzbz_von = ". $this->db_add_param($this->studiensemester_kurzbz_von) .",
studiensemester_kurzbz_bis = ". $this->db_add_param($this->studiensemester_kurzbz_bis) .",
lehrform_kurzbz = ". $this->db_add_param($this->lehrform_kurzbz) .",
updatevon = ". $this->db_add_param($this->updatevon) .",
updateamum = ". $this->db_add_param($this->updateamum) ."
WHERE lehrveranstaltung_faktor_id = ". $this->db_add_param($this->lehrveranstaltung_faktor_id, FHC_INTEGER);
}
if ($this->db_query($qry))
{
if ($new)
{
$qry_id = "SELECT currval('lehre.lehrveranstaltung_faktor_id_seq') as id;";
if($this->db_query($qry_id))
{
if($row = $this->db_fetch_object())
{
$this->db_query('COMMIT');
return [
'id' => $row->id,
'lv_id' => $this->lehrveranstaltung_id,
'faktor' => $this->faktor,
'lehrform_kurzbz' => $this->lehrform_kurzbz,
'von' => $this->studiensemester_kurzbz_von,
'bis' => $this->studiensemester_kurzbz_bis
];
}
else
{
$this->db_query('ROLLBACK');
return [
'status' => 'error',
'message' => 'Fehler beim Einfügen in die Datenbank:'
];
}
}
else
{
$this->db_query('ROLLBACK');
return [
'status' => 'error',
'message' => 'Fehler beim Einfügen in die Datenbank:'
];
}
}
else
return true;
}
else
{
return [
'status' => 'error',
'message' => 'Fehler beim Einfügen in die Datenbank:'
];
}
}
public function getAkt($lv_id)
{
if (!is_numeric($lv_id))
{
$this->errormsg = 'Lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT *
FROM lehre.tbl_lehrveranstaltung_faktor
LEFT JOIN public.tbl_studiensemester vonstsem
ON tbl_lehrveranstaltung_faktor.studiensemester_kurzbz_von = vonstsem.studiensemester_kurzbz
LEFT JOIN public.tbl_studiensemester bisstem
ON tbl_lehrveranstaltung_faktor.studiensemester_kurzbz_bis = bisstem.studiensemester_kurzbz
WHERE lehrveranstaltung_id = ".$this->db_add_param($lv_id, FHC_INTEGER) . "
AND (vonstsem.start <= now() OR vonstsem.start IS NULL)
AND (bisstem.ende >= now() OR bisstem.ende IS NULL)
AND lehrform_kurzbz IS NULL
ORDER BY vonstsem.start DESC LIMIT 1
";
if (!$this->db_query($qry)) {
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
if ($row = $this->db_fetch_object())
{
$this->lehrveranstaltung_faktor_id = $row->lehrveranstaltung_faktor_id;
$this->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$this->faktor = $row->faktor;
$this->studiensemester_kurzbz_von = $row->studiensemester_kurzbz_von;
$this->studiensemester_kurzbz_bis = $row->studiensemester_kurzbz_bis;
}
return true;
}
public function deleteFaktor($id)
{
$qry = "DELETE FROM lehre.tbl_lehrveranstaltung_faktor
WHERE lehrveranstaltung_faktor_id = ". $this->db_add_param($id, FHC_INTEGER);
if ($this->db_query($qry))
{
return true;
}
else
{
return [
'status' => 'error',
'message' => 'Fehler beim Löschen aus der Datenbank:'
];
}
}
}
?>
+268 -50
View File
@@ -317,7 +317,7 @@ class mitarbeiter extends benutzer
* gibt array mit allen Mitarbeitern zurueck
* @return array mit Mitarbeitern
*/
public function getMitarbeiter($lektor=true,$fixangestellt=null,$stg_kz=null)
public function getMitarbeiter($lektor=true,$fixangestellt=null,$stg_kz=null, $aktiv=null)
{
$sql_query='SELECT DISTINCT campus.vw_mitarbeiter.uid, titelpre, titelpost, vorname, vornamen, wahlname, nachname, gebdatum, gebort, gebzeit, anmerkung, aktiv,
homepage, campus.vw_mitarbeiter.updateamum, campus.vw_mitarbeiter.updatevon, personalnummer, kurzbz, lektor, fixangestellt, standort_id, telefonklappe FROM campus.vw_mitarbeiter
@@ -346,6 +346,14 @@ class mitarbeiter extends benutzer
$sql_query.=" AND oe_kurzbz=".$this->db_add_param($stg->oe_kurzbz);
}
if(!is_null($aktiv))
{
$sql_query.=' AND';
if (!$aktiv)
$sql_query.=' NOT';
$sql_query.=' aktiv';
}
$sql_query.=' ORDER BY nachname, vornamen, kurzbz;';
if(!$this->db_query($sql_query))
@@ -1067,10 +1075,12 @@ class mitarbeiter extends benutzer
}
/**
* Gibt ein Array mit den UIDs der Vorgesetzten zurück
* Gibt ein Array mit den UIDs der aktuellen Vorgesetzten zurück
* @param null $uid
* @param null $limit LIMIT = 1 liefert bei mehreren Vorgesetzten den letzten (aktuellsten) zurück.
* @return uid
*/
public function getVorgesetzte($uid=null)
public function getVorgesetzte($uid=null, $limit = null)
{
$return=false;
if (is_null($uid))
@@ -1084,14 +1094,40 @@ class mitarbeiter extends benutzer
funktion_kurzbz='Leitung' AND
(datum_von is null OR datum_von<=now()) AND
(datum_bis is null OR datum_bis>=now()) AND
oe_kurzbz in (SELECT oe_kurzbz
FROM public.tbl_benutzerfunktion
WHERE
oe_kurzbz in (
SELECT
oe_kurzbz
FROM
public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='oezuordnung' AND uid=".$this->db_add_param($uid)." AND
(datum_von is null OR datum_von<=now()) AND
(datum_bis is null OR datum_bis>=now())
);";
ORDER BY
(
SELECT
1
FROM
hr.tbl_vertragsbestandteil_funktion
JOIN hr.tbl_vertragsbestandteil vbsfkt USING(vertragsbestandteil_id)
JOIN hr.tbl_vertragsbestandteil vbskarenz USING(dienstverhaeltnis_id)
WHERE
tbl_vertragsbestandteil_funktion.benutzerfunktion_id=tbl_benutzerfunktion.benutzerfunktion_id
AND vbskarenz.vertragsbestandteiltyp_kurzbz='karenz'
AND
(
now()::date BETWEEN COALESCE(vbskarenz.von, '1970-01-01') AND COALESCE(vbskarenz.bis, '2170-12-31')
OR
now()::date BETWEEN COALESCE(vbskarenz.von, '1970-01-01') AND COALESCE(vbskarenz.bis, '2170-12-31')
)
) NULLS FIRST LIMIT 1
)
ORDER BY datum_von DESC ";
if (is_numeric($limit))
{
$qry .= 'LIMIT '. $this->db_add_param($limit, FHC_INTEGER);
}
if($this->db_query($qry))
{
@@ -1113,11 +1149,146 @@ class mitarbeiter extends benutzer
return $return;
}
/**
* Prueft ob eine Person im angegebenen Zeitraum Vorgesetzter von einem Mitarbeiter ist
* @param $leiter UID der zu pruefenden Leitungsposition
* @param $mitarbeiter UID der zu pruefenden Leitungsposition
* @param $datumvon Von Datum des zu pruefenden Zeitraums
* @param $datumbis BIS Datum des zu pruefenden Zeitraums
*/
public function isVorgesetzterByDate($leiter, $mitarbeiter, $datumvon, $datumbis)
{
// Alle OEs der zu pruefenden Leitungsposition holen (oes_leitung)
// Alle OEs des zu pruefenden Mitarbeiters holen (oes_mitarbeiter)
// OE-Ueberschneidungen pruefen
$qry = "
WITH RECURSIVE
oes_leitung (oe_kurzbz, oe_parent_kurzbz, level) AS
(
SELECT
oe_kurzbz,
oe_parent_kurzbz,
1 as level
FROM
public.tbl_organisationseinheit
WHERE
oe_kurzbz IN (
-- Leitung im Zeitraum X
SELECT oe_kurzbz FROM public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='Leitung'
AND uid=".$this->db_add_param($leiter)."
AND
(
".$this->db_add_param($datumvon)." BETWEEN COALESCE(tbl_benutzerfunktion.datum_von, '1970-01-01') AND COALESCE(tbl_benutzerfunktion.datum_bis, '2170-12-31')
OR
".$this->db_add_param($datumbis)." BETWEEN COALESCE(tbl_benutzerfunktion.datum_von, '1970-01-01') AND COALESCE(tbl_benutzerfunktion.datum_bis, '2170-12-31')
)
)
UNION ALL
SELECT
o.oe_kurzbz,
o.oe_parent_kurzbz,
oes_leitung.level + 1 as level
FROM
public.tbl_organisationseinheit o, oes_leitung
WHERE
o.oe_parent_kurzbz = oes_leitung.oe_kurzbz
),
oes_mitarbeiter (oe_kurzbz, oe_parent_kurzbz, level) AS
(
SELECT
oe_kurzbz,
oe_parent_kurzbz,
1 as level
FROM
public.tbl_organisationseinheit
WHERE
oe_kurzbz IN (
-- OEZuordnung im Zeitraum X - bevorzugt nicht karenziert
SELECT oe_kurzbz FROM public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='oezuordnung'
AND uid=".$this->db_add_param($mitarbeiter)."
AND (
".$this->db_add_param($datumvon)." BETWEEN COALESCE(tbl_benutzerfunktion.datum_von, '1970-01-01') AND COALESCE(tbl_benutzerfunktion.datum_bis, '2170-12-31')
OR
".$this->db_add_param($datumbis)." BETWEEN COALESCE(tbl_benutzerfunktion.datum_von, '1970-01-01') AND COALESCE(tbl_benutzerfunktion.datum_bis, '2170-12-31')
)
ORDER BY
(
SELECT
1
FROM
hr.tbl_vertragsbestandteil_funktion
JOIN hr.tbl_vertragsbestandteil vbsfkt USING(vertragsbestandteil_id)
JOIN hr.tbl_vertragsbestandteil vbskarenz USING(dienstverhaeltnis_id)
WHERE
tbl_vertragsbestandteil_funktion.benutzerfunktion_id=tbl_benutzerfunktion.benutzerfunktion_id
AND vbskarenz.vertragsbestandteiltyp_kurzbz='karenz'
AND
(
".$this->db_add_param($datumvon)." BETWEEN COALESCE(vbskarenz.von, '1970-01-01') AND COALESCE(vbskarenz.bis, '2170-12-31')
OR
".$this->db_add_param($datumbis)." BETWEEN COALESCE(vbskarenz.von, '1970-01-01') AND COALESCE(vbskarenz.bis, '2170-12-31')
) LIMIT 1
) NULLS FIRST LIMIT 1
)
UNION ALL
SELECT
o.oe_kurzbz,
o.oe_parent_kurzbz,
oes_mitarbeiter.level + 1 as level
FROM
public.tbl_organisationseinheit o, oes_mitarbeiter
WHERE
o.oe_kurzbz = oes_mitarbeiter.oe_parent_kurzbz
)
SELECT
oe_kurzbz, level
FROM
oes_leitung
WHERE
oe_kurzbz in (SELECT oe_kurzbz FROM oes_mitarbeiter)
ORDER BY
oe_kurzbz, level
";
if($result = $this->db_query($qry))
{
if($this->db_num_rows($result) > 0)
{
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Gibt ein Array mit den UIDs der Vorgesetzten zum Zeitpunkt des korrespondierenden Timesheets zurück
* @param $uid
* @param $date
* @param null $limit LIMIT = 1 liefert bei mehreren Vorgesetzten den letzten (aktuellsten) zurück.
* @return uid
*/
public function getVorgesetzteMonatTimesheet($uid, $timesheetDate)
public function getVorgesetzteByDate($uid, $date, $limit = null)
{
$return=false;
@@ -1127,15 +1298,38 @@ class mitarbeiter extends benutzer
public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='Leitung' AND
(datum_von is null OR datum_von<=".$this->db_add_param($timesheetDate).") AND
(datum_bis is null OR datum_bis>=".$this->db_add_param($timesheetDate).") AND
oe_kurzbz in (SELECT oe_kurzbz
FROM public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='oezuordnung' AND uid=".$this->db_add_param($uid)." AND
(datum_von is null OR (datum_von<= ".$this->db_add_param($timesheetDate).")) AND
(datum_bis is null OR (datum_bis>=".$this->db_add_param($timesheetDate)."))
);";
(datum_von is null OR datum_von<=".$this->db_add_param($date).") AND
(datum_bis is null OR datum_bis>=".$this->db_add_param($date).") AND
oe_kurzbz in (
SELECT
oe_kurzbz
FROM
public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='oezuordnung' AND uid=".$this->db_add_param($uid)." AND
(datum_von is null OR (datum_von<= ".$this->db_add_param($date).")) AND
(datum_bis is null OR (datum_bis>=".$this->db_add_param($date)."))
ORDER BY
(
SELECT
1
FROM
hr.tbl_vertragsbestandteil_funktion
JOIN hr.tbl_vertragsbestandteil vbsfkt USING(vertragsbestandteil_id)
JOIN hr.tbl_vertragsbestandteil vbskarenz USING(dienstverhaeltnis_id)
WHERE
tbl_vertragsbestandteil_funktion.benutzerfunktion_id=tbl_benutzerfunktion.benutzerfunktion_id
AND vbskarenz.vertragsbestandteiltyp_kurzbz='karenz'
AND (vbskarenz.von <= ".$this->db_add_param($date)." OR vbskarenz.von is null)
AND (vbskarenz.bis >= ".$this->db_add_param($date)." OR vbskarenz.bis is null)
) NULLS FIRST LIMIT 1
)
ORDER BY datum_von DESC ";
if (is_numeric($limit))
{
$qry .= 'LIMIT '. $this->db_add_param($limit);
}
if($this->db_query($qry))
{
@@ -1204,16 +1398,16 @@ class mitarbeiter extends benutzer
return $return;
}
/**
* Gibt ein Array mit den UIDs der aktiv beschäftigten Untergebenen zurueck
* @param string $uid UID.
* @param boolean $include_OE_childs Wenn true, dann werden auch alle aktiv
* beschäftigten Untergebenen der Kind-OEs des Leiters zurückgegeben.
* @param bool $fixangestellte_only
* @param bool $include_ImLetztenMonatBeendete Inkludiert Mitarbeiter, deren Benutzerfunktion im letzten Monat bereits endete
* @return boolean
*/
public function getUntergebene($uid=null, $include_OE_childs = false, $fixangestellte_only = true)
public function getUntergebene($uid=null, $include_OE_childs = false, $fixangestellte_only = true, $include_ImLetztenMonatBeendete = false)
{
if (is_null($uid))
$uid=$this->uid;
@@ -1320,11 +1514,18 @@ class mitarbeiter extends benutzer
$qry.= ")
AND
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
AND
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
AND
tbl_benutzer.aktiv = 'true'";
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())";
if ($include_ImLetztenMonatBeendete)
{
// hier kein check auf aktiv = 'true', da hier auch DV abgefragt werden, die im letzten Monat beendet wurden
$qry .= " AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis >= (DATE_TRUNC('MONTH', NOW()) - INTERVAL '1 month'))";
}
else {
$qry .= " AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis >= now())";
$qry .= " AND tbl_benutzer.aktiv = 'true'";
}
if ($fixangestellte_only)
$qry .= " AND tbl_mitarbeiter.fixangestellt";
$qry .= ";";
@@ -1617,28 +1818,6 @@ class mitarbeiter extends benutzer
}
}
/** Check if uid is a supervisor
*
* @param string $uid
* @param string $employee_uid
* @return boolean True if $uid is direct leader of $employee_uid.
*/
function check_isVorgesetzter($uid, $employee_uid)
{
$this->getUntergebene($uid);
$untergebenen_arr = $this->untergebene;
// Check, if uid is an employee of supervisor
if (!empty($untergebenen_arr) &&
in_array($employee_uid, $untergebenen_arr))
{
return true;
}
else
{
return false;
}
}
/** Check if uid is a supervisor on higher oe level
*
* @param string $uid
@@ -1718,6 +1897,46 @@ class mitarbeiter extends benutzer
}
/**
* Liefert alle Mitarbeiter*innen
*
* @param $filter
* @return boolean
*/
public function getAll()
{
$qry = '
SELECT
ma.mitarbeiter_uid, p.nachname, p.vorname, b.alias
FROM
public.tbl_mitarbeiter ma
JOIN public.tbl_benutzer b ON (mitarbeiter_uid=uid)
JOIN public.tbl_person p USING(person_id)
ORDER BY p.nachname
';
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$ma_obj = new mitarbeiter();
$ma_obj->nachname = $row->nachname;
$ma_obj->vorname = $row->vorname;
$ma_obj->mitarbeiter_uid = $row->mitarbeiter_uid;
$ma_obj->alias = $row->alias;
$this->maData[] = $ma_obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Generiert nächste freie Personalnummer anhand der sequence tbl_mitarbeiter_personalnummer_seq
* @return string $personalnummer
@@ -1753,7 +1972,7 @@ class mitarbeiter extends benutzer
{
if (is_null($uid))
$uid = $this->uid;
$qry = "
SELECT o.oe_kurzbz AS standardkostenstelle, o.bezeichnung
FROM public.tbl_benutzerfunktion bf
@@ -1770,12 +1989,11 @@ class mitarbeiter extends benutzer
$obj = new StdClass();
$obj->oekurzbz = $row->standardkostenstelle;
$obj->bezeichnung = $row->bezeichnung;
$this->result []= $obj;
}
return true;
}
}
}
?>
+2 -2
View File
@@ -325,7 +325,7 @@ class notiz extends basis_db
FROM
public.tbl_notiz
LEFT JOIN public.tbl_notizzuordnung USING(notiz_id)
WHERE 1=1";
WHERE 1=1 AND tbl_notiz.typ IS NULL ";
if(!is_null($erledigt))
{
@@ -523,7 +523,7 @@ class notiz extends basis_db
FROM
public.tbl_notiz
LEFT JOIN public.tbl_notizzuordnung USING(notiz_id)
WHERE 1=1";
WHERE 1=1 AND tbl_notiz.typ IS NULL ";
if(!is_null($erledigt))
{
+35 -2
View File
@@ -650,11 +650,14 @@ class organisationseinheit extends basis_db
LOWER(bezeichnung) LIKE LOWER(\'%'.$this->db_escape((implode(' ',$searchItem))).'%\')
OR
LOWER(organisationseinheittyp_kurzbz) LIKE LOWER(\'%'.$this->db_escape((implode(' ',$searchItem))).'%\')
OR
LOWER(organisationseinheittyp_kurzbz) LIKE LOWER(\'%'.$this->db_escape((implode(' ',$searchItem))).'%\')
)';
foreach($searchItem as $value)
{
$qry.=' OR (LOWER(oe_kurzbz)=LOWER('.$this->db_add_param($value).'))
OR (LOWER(bezeichnung) LIKE LOWER(\'%'.$this->db_escape($value).'%\'))';
OR (LOWER(bezeichnung) LIKE LOWER(\'%'.$this->db_escape($value).'%\'))
OR (LOWER(organisationseinheittyp_kurzbz||bezeichnung) LIKE LOWER(\'%'.$this->db_escape($value).'%\'))';
}
$qry.= ' ORDER BY organisationseinheittyp_kurzbz, bezeichnung;';
@@ -974,6 +977,36 @@ class organisationseinheit extends basis_db
}
}
public function getRoots()
{
$qry = "SELECT *
FROM public.tbl_organisationseinheit
WHERE oe_parent_kurzbz IS NULL AND aktiv
ORDER BY organisationseinheittyp_kurzbz, bezeichnung";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new organisationseinheit();
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->oe_parent_kurzbz = $row->oe_parent_kurzbz;
$obj->bezeichnung = $row->bezeichnung;
$obj->organisationseinheittyp_kurzbz = $row->organisationseinheittyp_kurzbz;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$obj->mailverteiler = $this->db_parse_bool($row->mailverteiler);
$obj->lehre = $this->db_parse_bool($row->lehre);
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Organisationseinheiten';
return false;
}
}
}
?>
+2 -2
View File
@@ -98,9 +98,9 @@ class person extends basis_db
geschlecht, staatsbuergerschaft, geburtsnation, kurzbeschreibung, zugangscode, foto_sperre,
matr_nr, bpk, wahlname";
if ($hasUDF = $udf->personHasUDF())
$qry .= ", udf_values ";
$qry .= ", udf_values";
$qry .= "FROM public.tbl_person
$qry .= " FROM public.tbl_person
WHERE person_id = " . $this->db_add_param($personId, FHC_INTEGER);
if (!$this->db_query($qry))
+1 -1
View File
@@ -121,7 +121,7 @@ class phrasen extends basis_db
* Wobei x durch den Index+1 im Array zu ersetzten ist. zB "%2$s" um die Variable $value[1] auszugeben
* naehere Infos siehe sprintf
*
* @param $key Key der Phrase
* @param $key String Key der Phrase
* @param $value Array mit Parametern fuer die Phrase
*/
public function t($key, $value=array())
+77 -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;
@@ -870,6 +872,81 @@ class prestudent extends person
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
)";
break;
case "bewerberrtnichtangemeldet":
$qry.=" AND a.rolle='Bewerber'
AND NOT EXISTS (
SELECT
1
FROM
public.tbl_rt_person
JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
WHERE
person_id=a.person_id
AND studienplan_id IN (
SELECT studienplan_id FROM lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
)
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
)";
break;
case "bewerberrtangemeldet":
$qry.=" AND a.rolle='Bewerber'
AND EXISTS (
SELECT
1
FROM
public.tbl_rt_person
JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
WHERE
person_id=a.person_id
AND studienplan_id IN (
SELECT studienplan_id FROM lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
)
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
)";
break;
case "bewerberrtangemeldetteilgenommen":
$qry.=" AND a.rolle='Bewerber'
AND EXISTS (
SELECT
1
FROM
public.tbl_rt_person
JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
WHERE
person_id=a.person_id
AND studienplan_id IN (
SELECT studienplan_id FROM lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
)
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
)
AND reihungstestangetreten = true";
break;
case "bewerberrtangemeldetnichtteilgenommen":
$qry.=" AND a.rolle='Bewerber'
AND EXISTS (
SELECT
1
FROM
public.tbl_rt_person
JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
WHERE
person_id=a.person_id
AND studienplan_id IN (
SELECT studienplan_id FROM lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
)
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
)
AND reihungstestangetreten = false
";
break;
case "zgv":
$stg_obj = new studiengang();
$stg_obj->load($studiengang_kz);
@@ -976,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;
+3 -1
View File
@@ -382,7 +382,7 @@ class projekt extends basis_db
JOIN fue.tbl_projekt_ressource USING(ressource_id)
JOIN fue.tbl_projekt USING(projekt_kurzbz)
WHERE (beginn<=now() or beginn is null)
AND (ende + interval '1 month 1 day' >=now() OR ende is null)
AND (ende + interval '2 month 1 day' >=now() OR ende is null)
AND
(
mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR
@@ -413,6 +413,8 @@ class projekt extends basis_db
AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
}
$qry .= ' ORDER BY titel';
if ($result = $this->db_query($qry))
{
while ($row = $this->db_fetch_object($result))
+169 -86
View File
@@ -16,8 +16,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/**
* Klasse projektarbeit
@@ -27,7 +27,7 @@ require_once(dirname(__FILE__).'/basis_db.class.php');
class projektarbeit extends basis_db
{
public $new; // boolean
public $new; // boolean
public $result = array(); // adresse Objekt
//Tabellenspalten
@@ -59,6 +59,37 @@ class projektarbeit extends basis_db
public $abgabedatum;
// Welche Version der Projektarbeit wird ab welchem Semester verwendet
private $_versions = array(
'Diplom' => array(
'SS2025' => 3,
'SS2023' => 2,
'SS2022' => 1
),
'Others' => array(
'SS2025' => 2,
'SS2022' => 1
)
);
// welche Vorlagen werden ab welcher Projekarbeitsversion verwendet (0 - erste "default" Vorlage)
private $_projektarbeitVorlageMappings = array(
'Begutachter' => array(
2 => 'ProjektBeurteilungBAProzent',
0 => 'ProjektBeurteilungBA'
),
'Senatsvorsitz' => array(
2 => 'ProjektBeurteilungBAProzent',
0 => 'ProjektBeurteilungBA'
),
'Erstbegutachter' => array(
3 => 'ProjektBeurteilungMAProzent',
0 => 'ProjektBeurteilungMAErst'
),
'Zweitbegutachter' => array(
0 => 'ProjektBeurteilungMAZweit'
)
);
/**
* Konstruktor
@@ -233,25 +264,25 @@ class projektarbeit extends basis_db
$qry='BEGIN; INSERT INTO lehre.tbl_projektarbeit (projekttyp_kurzbz, titel, lehreinheit_id, student_uid, firma_id, note, punkte,
beginn, ende, faktor, freigegeben, gesperrtbis, stundensatz, gesamtstunden, themenbereich, anmerkung,
insertamum, insertvon, updateamum, updatevon, titel_english, final) VALUES('.
$this->db_add_param($this->projekttyp_kurzbz).', '.
$this->db_add_param($this->titel).', '.
$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
$this->db_add_param($this->student_uid).', '.
$this->db_add_param($this->firma_id, FHC_INTEGER).', '.
$this->db_add_param($this->note).', '.
$this->db_add_param($this->punkte).', '.
$this->db_add_param($this->beginn).', '.
$this->db_add_param($this->ende).', '.
$this->db_add_param($this->faktor).', '.
$this->db_add_param($this->freigegeben, FHC_BOOLEAN).', '.
$this->db_add_param($this->gesperrtbis).', '.
$this->db_add_param($this->stundensatz).', '.
$this->db_add_param($this->gesamtstunden).', '.
$this->db_add_param($this->themenbereich).', '.
$this->db_add_param($this->anmerkung).', now(), '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->titel_english).','.
$this->db_add_param($this->projekttyp_kurzbz).', '.
$this->db_add_param($this->titel).', '.
$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
$this->db_add_param($this->student_uid).', '.
$this->db_add_param($this->firma_id, FHC_INTEGER).', '.
$this->db_add_param($this->note).', '.
$this->db_add_param($this->punkte).', '.
$this->db_add_param($this->beginn).', '.
$this->db_add_param($this->ende).', '.
$this->db_add_param($this->faktor).', '.
$this->db_add_param($this->freigegeben, FHC_BOOLEAN).', '.
$this->db_add_param($this->gesperrtbis).', '.
$this->db_add_param($this->stundensatz).', '.
$this->db_add_param($this->gesamtstunden).', '.
$this->db_add_param($this->themenbereich).', '.
$this->db_add_param($this->anmerkung).', now(), '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->titel_english).','.
$this->db_add_param($this->final, FHC_BOOLEAN).');';
}
else
@@ -471,92 +502,144 @@ class projektarbeit extends basis_db
}
/**
* Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester).
* Masterarbeiten sind ab der Änderung zur Gewichtung der Punkte aktuell,
* Bachelorarbeiten schon ab dem Umstieg auf das Online Beurteilungsformular.
* Prüft ob Projektarbeit aktuell ist (also zurzeit online bewertet wird).
* @param $projektarbeit_id
* @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell
* @return boolean
*/
public function projektarbeitIsCurrent($projektarbeit_id)
{
$version = $this->getVersion($projektarbeit_id);
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
$qry="SELECT 1
FROM lehre.tbl_projektarbeit
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND
(
(
projekttyp_kurzbz = 'Diplom'
AND tbl_studiensemester.start::date >= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = 'SS2023'
)::date
)
OR
(
projekttyp_kurzbz <> 'Diplom'
AND tbl_studiensemester.start::date >= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = 'SS2022'
)::date
)
)
LIMIT 1";
$result_sem=$this->db_query($qry);
if (!$result_sem)
{
$this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität";
return -1;
}
$num_rows = $this->db_num_rows($result_sem);
if ($num_rows < 0)
{
$this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten";
}
return $num_rows;
return $version === null ? null : $version->isCurrent;
}
/**
* Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester), vor der Änderung zur Gewichtung der Punkte.
* Holt sich Version der Projektarbeit.
* Liefert auch mit, ob die Version die aktuellste ist.
* z.B.: Masterarbeiten waren ab der Änderung zur Gewichtung der Punkte aktuell,
* Bachelorarbeiten waren ab dem Umstieg auf das Online Beurteilungsformular aktuell.
* @param $projektarbeit_id
* @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell
* @return objekt mit Versionsinfo, null im Fehlerfall
*/
public function projektarbeitIsCurrentBeforeWeightening($projektarbeit_id)
public function getVersion($projektarbeit_id)
{
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
$qry="SELECT 1
FROM lehre.tbl_projektarbeit
$qry="
SELECT
CASE
WHEN semesters_diplom.studiensemester_kurzbz IS NOT NULL
THEN semesters_diplom.studiensemester_kurzbz
ELSE semesters.studiensemester_kurzbz
END AS version_studiensemester_kurzbz,
pa.projekttyp_kurzbz
FROM
lehre.tbl_projektarbeit pa
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2022')::date
LIMIT 1";
JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz)
LEFT JOIN (
SELECT
start, studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE
studiensemester_kurzbz IN (".$this->db_implode4SQL(array_keys($this->_versions['Others'])).")
) semesters ON sem.start >= semesters.start AND pa.projekttyp_kurzbz <> 'Diplom'
LEFT JOIN (
SELECT
start, studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE
studiensemester_kurzbz IN (".$this->db_implode4SQL(array_keys($this->_versions['Diplom'])).")
) semesters_diplom ON sem.start >= semesters_diplom.start AND pa.projekttyp_kurzbz = 'Diplom'
WHERE
projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
ORDER BY
semesters.start DESC, semesters_diplom.start DESC
LIMIT 1";
$result_sem=$this->db_query($qry);
$errormsg = "Fehler beim Ermitteln der Projektarbeit Version";
if (!$result_sem)
if ($this->db_query($qry))
{
$this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität";
return -1;
if ($row = $this->db_fetch_object())
{
// known project types
if (isset($this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz]))
{
$row->versionNumber = $this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz];
$row->isCurrent =
$this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz]
== max($this->_versions[$row->projekttyp_kurzbz]);
}
elseif (isset($this->_versions['Others'][$row->version_studiensemester_kurzbz]))
{
$row->versionNumber = $this->_versions['Others'][$row->version_studiensemester_kurzbz];
$row->isCurrent =
$this->_versions['Others'][$row->version_studiensemester_kurzbz]
== max($this->_versions['Others']);
}
else
{
$row->isCurrent = false;
$row->versionNumber = 0;
}
return $row;
}
else
{
$this->errormsg = $errormsg;
return null;
}
}
else
{
$this->errormsg = $errormsg;
return null;
}
}
/**
* Holt Version einer Projektarbeit für eine Betreuerart.
* @param $projektarbeit_id
* @param $betreuerart_kurzbz
* @return string Vorlagenname
*/
public function getVorlage($projektarbeit_id, $betreuerart_kurzbz)
{
$version = $this->getVersion($projektarbeit_id);
if ($version == null) return null;
$key = 0;
if (isset($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz]))
{
foreach ($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz] as $versionNumber => $vorlage)
{
if ($versionNumber <= $version->versionNumber && $versionNumber > $key) $key = $versionNumber;
}
}
$num_rows = $this->db_num_rows($result_sem);
return
isset($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz][$key])
? $this->_projektarbeitVorlageMappings[$betreuerart_kurzbz][$key]
: '';
}
if ($num_rows < 0)
/**
* Holt alle möglichen, jemals verwendeten Projektarbeits-Vorlagen
* @return array mit Vorlagennamen
*/
public function getAllVorlagen()
{
$vorlagen = array();
foreach ($this->_projektarbeitVorlageMappings as $mappings)
{
$this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten";
$vorlagen = array_unique(array_merge($vorlagen, $mappings));
}
return $num_rows;
return $vorlagen;
}
}
?>
+3 -2
View File
@@ -190,7 +190,7 @@ class projektphase extends basis_db
if(!is_null($foreignkey))
$qry .= " and projektphase_fk is NULL";
$qry .= " ORDER BY start, projektphase_fk DESC;";
$qry .= " ORDER BY tbl_projektphase.start, tbl_projektphase.bezeichnung, projektphase_fk DESC;";
if($this->db_query($qry))
{
@@ -794,7 +794,8 @@ class projektphase extends basis_db
)
)
AND mitarbeiter_uid = ".$this->db_add_param($mitarbeiter_uid)."
AND tbl_projekt.projekt_kurzbz = ".$this->db_add_param($projekt_kurzbz);
AND tbl_projekt.projekt_kurzbz = ".$this->db_add_param($projekt_kurzbz). "
ORDER BY tbl_projektphase.start, tbl_projektphase.bezeichnung";
if($result = $this->db_query($qry))
{
+69 -3
View File
@@ -108,12 +108,13 @@ class pruefling extends basis_db
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester) VALUES('.
$qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester, gesperrt) VALUES('.
$this->db_add_param($this->studiengang_kz).",".
$this->db_add_param($this->idnachweis).",".
$this->db_add_param($this->registriert).",".
$this->db_add_param($this->prestudent_id).",".
$this->db_add_param($this->semester).");";
$this->db_add_param($this->semester).",".
$this->db_add_param($this->gesperrt, FHC_BOOLEAN).");";
}
else
{
@@ -122,7 +123,8 @@ class pruefling extends basis_db
' idnachweis='.$this->db_add_param($this->idnachweis).','.
' registriert='.$this->db_add_param($this->registriert).','.
' semester='.$this->db_add_param($this->semester).','.
' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).
' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).','.
' gesperrt='.$this->db_add_param($this->gesperrt, FHC_BOOLEAN).
" WHERE pruefling_id=".$this->db_add_param($this->pruefling_id, FHC_INTEGER, false).";";
}
@@ -557,5 +559,69 @@ class pruefling extends basis_db
return false;
}
}
public function isGesperrt($pruefling_id = null, $prestudent_id = null)
{
if (is_null($pruefling_id) && is_null($prestudent_id))
{
$this->errormsg = 'Falsche Parameterübergabe';
return false;
}
$qry = "SELECT spruefling.gesperrt
FROM testtool.tbl_pruefling
RIGHT JOIN public.tbl_prestudent USING(prestudent_id)
JOIN public.tbl_person USING (person_id)
JOIN public.tbl_prestudent pss ON pss.person_id = tbl_person.person_id
JOIN testtool.tbl_pruefling spruefling ON pss.prestudent_id = spruefling.prestudent_id
WHERE spruefling.gesperrt";
if (!is_null($pruefling_id))
$qry .= " AND tbl_pruefling.pruefling_id = ".$this->db_add_param($pruefling_id, FHC_INTEGER);
if (!is_null($prestudent_id))
$qry .= " AND tbl_prestudent.prestudent_id = ".$this->db_add_param($prestudent_id, FHC_INTEGER);
$qry .= " LIMIT 1";
if($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) == 0)
return false;
else
return true;
}
else
{
$this->errormsg = 'Fehler bei einer Abfrage';
return false;
}
}
public function personAlreadyInRT($person_id, $reihungstest_id, $prestudent_id)
{
$qry = "SELECT tbl_prestudent.prestudent_id
FROM public.tbl_rt_person
JOIN public.tbl_prestudent ON tbl_prestudent.person_id = tbl_rt_person.person_id
JOIN public.tbl_prestudentstatus ON tbl_prestudent.prestudent_id = tbl_prestudentstatus.prestudent_id AND status_kurzbz = 'Bewerber'
AND tbl_prestudentstatus.studienplan_id = tbl_rt_person.studienplan_id
WHERE tbl_rt_person.person_id = " . $this->db_add_param($person_id) . "
AND tbl_rt_person.rt_id = " . $this->db_add_param($reihungstest_id) . "
AND tbl_prestudent.prestudent_id != " . $this->db_add_param($prestudent_id) . "
AND get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL) = 'Bewerber'
LIMIT 1";
if($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) == 0)
return false;
else
return true;
}
else
{
$this->errormsg = 'Fehler bei einer Abfrage';
return false;
}
}
}
?>
+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;
}
}
}
+12 -6
View File
@@ -33,6 +33,7 @@ class raumtyp extends basis_db
//Tabellenspalten
public $beschreibung; // string
public $raumtyp_kurzbz; // string
public $aktiv; //boolean
/**
@@ -42,7 +43,7 @@ class raumtyp extends basis_db
public function __construct($raumtyp_kurzbz=null)
{
parent::__construct();
if($raumtyp_kurzbz != null)
$this->load($raumtyp_kurzbz);
}
@@ -51,10 +52,14 @@ class raumtyp extends basis_db
* Laedt alle verfuegbaren Raumtypen
* @return true wenn ok, false im Fehlerfall
*/
public function getAll()
public function getAll($aktiv = null)
{
$qry = 'SELECT * FROM public.tbl_raumtyp ORDER BY raumtyp_kurzbz;';
$qry = 'SELECT * FROM public.tbl_raumtyp';
if (!is_null($aktiv))
$qry .= ' WHERE aktiv = '.$this->db_add_param($aktiv, FHC_BOOLEAN);
$qry .= ' ORDER BY raumtyp_kurzbz';
if(!$this->db_query($qry))
{
$this->errormsg = 'Fehler beim Laden der Datensaetze';
@@ -67,7 +72,7 @@ class raumtyp extends basis_db
$raumtyp_obj->beschreibung = $row->beschreibung;
$raumtyp_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$raumtyp_obj->aktiv = $this->db_parse_bool($row->aktiv);
$this->result[] = $raumtyp_obj;
}
@@ -99,7 +104,7 @@ class raumtyp extends basis_db
{
$this->beschreibung = $row->beschreibung;
$this->raumtyp_kurzbz = $row->kurzbz;
$this->aktiv = $this->db_parse_bool($row->aktiv);
}
else
{
@@ -135,7 +140,7 @@ class raumtyp extends basis_db
$this->errormsg = '';
return true;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
@@ -154,6 +159,7 @@ class raumtyp extends basis_db
$this->errormsg = 'Keine gültige ID';
return false;
}
//Neuen Datensatz anlegen
$qry = 'INSERT INTO public.tbl_raumtyp (beschreibung, raumtyp_kurzbz) VALUES ('.
$this->db_add_param($this->beschreibung).', '.
+20 -6
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).';';
}
@@ -694,11 +698,17 @@ class reihungstest extends basis_db
tbl_reihungstest.studiensemester_kurzbz,
tbl_reihungstest.stufe,
tbl_reihungstest.anmeldefrist,
tbl_reihungstest.aufnahmegruppe_kurzbz
tbl_reihungstest.aufnahmegruppe_kurzbz,
tbl_studiengang.typ,
UPPER(typ::varchar(1) || kurzbz) AS stg_kuerzel,
so.studiengangbezeichnung,
so.studiengangbezeichnung_englisch
FROM
public.tbl_rt_person
JOIN
public.tbl_reihungstest ON (rt_id=reihungstest_id)
JOIN public.tbl_reihungstest ON (rt_id=reihungstest_id)
JOIN public.tbl_studiengang ON tbl_reihungstest.studiengang_kz = tbl_studiengang.studiengang_kz
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE
tbl_rt_person.person_id=".$this->db_add_param($person_id);
@@ -737,6 +747,10 @@ class reihungstest extends basis_db
$obj->stufe = $row->stufe;
$obj->anmeldefrist = $row->anmeldefrist;
$obj->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
$obj->typ = $row->typ;
$obj->stg_kuerzel = $row->stg_kuerzel;
$obj->studiengangbezeichnung = $row->studiengangbezeichnung;
$obj->studiengangbezeichnung_englisch = $row->studiengangbezeichnung_englisch;
$this->result[] = $obj;
}
+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;
}
}
?>
+65 -20
View File
@@ -18,12 +18,13 @@
*
* Authors: Cristina Hainberger <hainberg@technikum-wien.at>
*/
require_once(dirname(__FILE__).'/../config/global.config.inc.php');
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/mail.class.php');
require_once(dirname(__FILE__).'/vorlage.class.php');
const DEFAULT_SANCHO_HEADER_IMG = 'sancho_header_DEFAULT.jpg';
const DEFAULT_SANCHO_FOOTER_IMG = 'sancho_footer_DEFAULT.jpg';
const FALLBACK_SENDER = 'noreply';
/**
* Send single Mail with Sancho Design and Layout.
@@ -32,22 +33,66 @@ const DEFAULT_SANCHO_FOOTER_IMG = 'sancho_footer_DEFAULT.jpg';
* to be replaced in the content template.
* @param string $to Email-adress.
* @param string $subject Subject of mail.
* @param string $headerImg Filename of the specific Sancho header image.
* @param string $footerImg
* @param string $headerImg Filename of the specific Sancho header image, false if no header image
* @param string $footerImg - false if no footer image
* @param string $replyTo default Email-adress for reply.
* @param string | array $cc
* @return boolean True, if succeeded.
*/
function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerImg = DEFAULT_SANCHO_HEADER_IMG, $footerImg = DEFAULT_SANCHO_FOOTER_IMG, $replyTo = '', $cc = '')
{
$from = 'sancho@'. DOMAIN;
$sanchoHeader_img = dirname(__FILE__). '/../skin/images/sancho/'. $headerImg;
$sanchoFooter_img = dirname(__FILE__). '/../skin/images/sancho/'. $footerImg;
function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerImg = '', $footerImg = '', $replyTo = '', $cc = '')
{
$from = ((defined('SANCHO_MAIL_DEFAULT_SENDER') && SANCHO_MAIL_DEFAULT_SENDER != '')
? SANCHO_MAIL_DEFAULT_SENDER
: FALLBACK_SENDER)
. '@' . DOMAIN;
$image_path_prefix = dirname(__DIR__).'/'.(defined('SANCHO_MAIL_IMG_PATH') ? SANCHO_MAIL_IMG_PATH : '');
$sanchoHeader_img = '';
$sanchoFooter_img = '';
$cid_header = '';
$cid_footer = '';
if (!defined('SANCHO_MAIL_USE_IMAGES') || SANCHO_MAIL_USE_IMAGES)
{
if (isset($headerImg) && $headerImg != '')
{
// use provided header image
$sanchoHeader_img = $headerImg;
}
elseif (defined('SANCHO_MAIL_HEADER_IMG') && SANCHO_MAIL_HEADER_IMG != '')
{
// use default header image
$sanchoHeader_img = SANCHO_MAIL_HEADER_IMG;
}
if ($sanchoHeader_img != '')
{
// set full image path
$sanchoHeader_img = $image_path_prefix.$sanchoHeader_img;
}
if (isset($footerImg) && $footerImg != '')
{
// use provided footer image
$sanchoFooter_img = $footerImg;
}
elseif (defined('SANCHO_MAIL_FOOTER_IMG') && SANCHO_MAIL_FOOTER_IMG != '')
{
// use default footer image
$sanchoFooter_img = SANCHO_MAIL_FOOTER_IMG;
}
if ($sanchoFooter_img !== '')
{
// set full image path
$sanchoFooter_img = $image_path_prefix.$sanchoFooter_img;
}
// Set unique content id for embedding header and footer image
$cid_header = uniqid();
$cid_footer = uniqid();
}
// Set unique content id for embedding header and footer image
$cid_header = uniqid();
$cid_footer = uniqid();
// Set specific mail content into specific content template
$content = parseMailContent($vorlage_kurzbz, $vorlage_data);
@@ -63,22 +108,22 @@ function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerIm
// Send mail
$mail = new Mail($to, $from, $subject, $body);
// * embed the images
$mail->addEmbeddedImage($sanchoHeader_img, 'image/jpg', '', $cid_header);
$mail->addEmbeddedImage($sanchoFooter_img, 'image/jpg', '', $cid_footer);
// * embed the images if needed
if ($sanchoHeader_img != '') $mail->addEmbeddedImage($sanchoHeader_img, 'image/jpg', '', $cid_header);
if ($sanchoFooter_img != '') $mail->addEmbeddedImage($sanchoFooter_img, 'image/jpg', '', $cid_footer);
// * Set reply-to
if (isset($replyTo) && $replyTo != '')
$mail->setReplyTo($replyTo);
// * Set cc
if (isset($cc) && $cc != '')
$mail->setCCRecievers($cc);
// * embed the html content
$mail->setHTMLContent($body);
return $mail->send();
}
@@ -95,7 +140,7 @@ function parseMailContent($vorlage_kurzbz, $vorlage_data)
{
$vorlage = new Vorlage();
$vorlage->getAktuelleVorlage('etw', $vorlage_kurzbz);
// If the text and the subject of the template are not empty
if (!empty($vorlage->text))
{
+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;
}
}
File diff suppressed because it is too large Load Diff
+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;
+147
View File
@@ -0,0 +1,147 @@
<?php
/* Copyright (C) 2011 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christopher Gerbrich <christopher.gerbrich@technikum-wien.at> and Manuela Thamer <manuela.thamer@technikum-wien.at
*/
/**
* Klasse Studierendenantrag
*
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class studierendenantrag extends basis_db
{
public $new;
public $result = array();
//Tabellenspalten
public $studierendenantrag_id; // bigint
public $prestudent_id; // bigint
public $studiensemester_kurzbz; // varchar(32)
public $datum; // timestamp
public $typ; // varchar(32)
public $insertamum; // timestamp
public $insertvon; // varchar(32)
public $datum_wiedereinstieg; // timestamp
public $grund; // text
public $dms_id; // bigint
/**
* Konstruktor - Laedt optional eine Ampel
* @param $amepl_id
*/
public function __construct($studierendenantrag_id=null)
{
parent::__construct();
if(!is_null($studierendenantrag_id))
$this->load($studierendenantrag_id);
}
/**
* Laedt einen Antrag mit der uebergebenen ID
*
* @param $studierendenantrag_id
* @return boolean
*/
public function load($studierendenantrag_id)
{
if(!is_numeric($studierendenantrag_id))
{
$this->errormsg = 'Studierendenantrag ID ist ungueltig';
return false;
}
$qry = "SELECT * FROM campus.tbl_studierendenantrag WHERE studierendenantrag_id=" . $this->db_add_param($studierendenantrag_id, FHC_INTEGER);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$this->studierendenantrag_id = $row->studierendenantrag_id;
$this->prestudent_id = $row->prestudent_id;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->datum = $row->datum;
$this->typ = $row->typ;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->datum_wiedereinstieg = $row->datum_wiedereinstieg;
$this->grund = $row->grund;
$this->dms_id = $row->dms_id;
return true;
}
else
{
$this->errormsg = 'Studierendenantrag mit dieser ID exisitert nicht';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Studierendenantrag';
return false;
}
}
/**
* Laedt alle aktuellen Anträge eines Users
*
* @param integer $prestudent_id
* @param string $stsem
*
* @return boolean
*/
public function loadUserAntrag($prestudent_id, $stsem = null)
{
$qry = "SELECT * FROM campus.tbl_studierendenantrag WHERE typ IN ('Abmeldung','AbmeldungStgl','Unterbrechung') AND campus.get_status_studierendenantrag(studierendenantrag_id)='Genehmigt' AND prestudent_id=" . $this->db_add_param($prestudent_id, FHC_INTEGER);
if ($stsem)
{
$qry .= " AND studiensemester_kurzbz=" . $this->db_add_param($stsem, FHC_STRING);
}
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new studierendenantrag();
$obj->studierendenantrag_id = $row->studierendenantrag_id;
$obj->prestudent_id = $row->prestudent_id;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->datum = $row->datum;
$obj->typ = $row->typ;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->datum_wiedereinstieg = $row->datum_wiedereinstieg;
$obj->grund = $row->grund;
$obj->dms_id = $row->dms_id;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+289
View File
@@ -0,0 +1,289 @@
<?php
require_once(dirname(__FILE__).'/basis_db.class.php');
class stundensatz extends basis_db
{
public $new;
public $result = array();
//Tabellenspalten
public $stundensatz_id; // serial
public $uid; // varchar(32)
public $stundensatztyp; // varchar(32)
public $stundensatz; // numeric
public $oe_kurzbz; // varchar(32)
public $gueltig_von; // date
public $gueltig_bis; // date
public $insertamum; // timestamp
public $insertvon; // varchar(16)
public $updateamum; // timestamp
public $updatevon; // varchar(16)
public $oe_bezeichnung;
public $stundensatztyp_bezeichnung;
public function __construct($stundensatz_id = null)
{
parent::__construct();
if (!is_null($stundensatz_id))
$this->load($stundensatz_id);
}
public function getStundensatzDatum($uid, $beginn, $ende = null, $typ = null)
{
$qry = "SELECT
*
FROM
hr.tbl_stundensatz
WHERE
uid = ". $this->db_add_param($uid) ."
AND (gueltig_bis >= ". $this->db_add_param($beginn) ." OR gueltig_bis is null)";
if (!is_null($ende))
{
$qry .= " AND (gueltig_von <= ". $this->db_add_param($ende) .")";
}
if (!is_null($typ))
{
$qry .= " AND stundensatztyp = ". $this->db_add_param($typ);
}
$qry .= " ORDER BY gueltig_bis DESC NULLS FIRST, gueltig_von DESC NULLS LAST LIMIT 1;";
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
$this->stundensatz_id = $row->stundensatz_id;
$this->uid = $row->uid;
$this->stundensatztyp = $row->stundensatztyp;
$this->stundensatz = $row->stundensatz;
$this->oe_kurzbz = $row->oe_kurzbz;
$this->gueltig_von = $row->gueltig_von;
$this->gueltig_bis = $row->gueltig_bis;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
public function getAllStundensaetze($uid)
{
$qry = "SELECT
tbl_stundensatz.*,
tbl_organisationseinheit.bezeichnung AS oe_bezeichnung,
hr.tbl_stundensatztyp.bezeichnung AS stundensatztyp_bezeichnung,
tbl_organisationseinheit.oe_kurzbz
FROM
hr.tbl_stundensatz
LEFT JOIN
public.tbl_organisationseinheit ON tbl_stundensatz.oe_kurzbz = tbl_organisationseinheit.oe_kurzbz
JOIN hr.tbl_stundensatztyp USING(stundensatztyp)
WHERE
uid = ". $this->db_add_param($uid);
if ($result = $this->db_query($qry))
{
while ($row = $this->db_fetch_object($result))
{
$obj = new stundensatz();
$obj->stundensatz_id = $row->stundensatz_id;
$obj->uid = $row->uid;
$obj->stundensatztyp = $row->stundensatztyp;
$obj->stundensatz = $row->stundensatz;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->gueltig_von = $row->gueltig_von;
$obj->gueltig_bis = $row->gueltig_bis;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->oe_bezeichnung = $row->oe_bezeichnung;
$obj->stundensatztyp_bezeichnung = $row->stundensatztyp_bezeichnung;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
public function load($stundensatz_id)
{
$qry = "SELECT
tbl_stundensatz.*,
tbl_organisationseinheit.bezeichnung AS oe_bezeichnung,
hr.tbl_stundensatztyp.bezeichnung AS stundensatztyp_bezeichnung,
tbl_organisationseinheit.oe_kurzbz
FROM
hr.tbl_stundensatz
LEFT JOIN public.tbl_organisationseinheit ON tbl_stundensatz.oe_kurzbz = tbl_organisationseinheit.oe_kurzbz
JOIN hr.tbl_stundensatztyp USING(stundensatztyp)
WHERE
stundensatz_id = ".$this->db_add_param($stundensatz_id).";";
if($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
$this->stundensatz_id = $row->stundensatz_id;
$this->uid = $row->uid;
$this->stundensatztyp = $row->stundensatztyp;
$this->stundensatz = $row->stundensatz;
$this->oe_kurzbz = $row->oe_kurzbz;
$this->gueltig_von = $row->gueltig_von;
$this->gueltig_bis = $row->gueltig_bis;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->oe_bezeichnung = $row->oe_bezeichnung;
$this->stundensatztyp_bezeichnung = $row->stundensatztyp_bezeichnung;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden des Datensatzes';
return false;
}
}
public function save($new = null)
{
if (!$this->validate())
return false;
if(is_null($new))
$new = $this->new;
if ($new)
{
$qry = "BEGIN;INSERT INTO hr.tbl_stundensatz
(
uid,
stundensatz,
gueltig_von,
gueltig_bis,
oe_kurzbz,
stundensatztyp,
insertamum,
insertvon
)
VALUES
(" .
$this->db_add_param($this->uid) . "," .
$this->db_add_param($this->stundensatz, FHC_INTEGER) . "," .
$this->db_add_param($this->gueltig_von) . "," .
$this->db_add_param($this->gueltig_bis) . "," .
$this->db_add_param($this->oe_kurzbz) . "," .
$this->db_add_param($this->stundensatztyp) . "," .
$this->db_add_param($this->insertamum) . "," .
$this->db_add_param($this->insertvon) .
");";
}
else
{
$qry = "UPDATE hr.tbl_stundensatz SET " .
"stundensatz = " . $this->db_add_param($this->stundensatz, FHC_INTEGER) .",".
"oe_kurzbz = " . $this->db_add_param($this->oe_kurzbz) .",".
"stundensatztyp = " . $this->db_add_param($this->stundensatztyp) .",".
"gueltig_von = " . $this->db_add_param($this->gueltig_von) .",".
"gueltig_bis = " . $this->db_add_param($this->gueltig_bis) .",".
"updatevon = " . $this->db_add_param($this->updatevon) .",".
"updateamum = " . $this->db_add_param($this->updateamum).
" WHERE stundensatz_id = " . $this->db_add_param($this->stundensatz_id, FHC_INTEGER).';';
}
if($this->db_query($qry))
{
if ($new)
{
$qry = "SELECT currval('hr.tbl_stundensatz_stundensatz_id_seq') as id;";
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
$this->stundensatz_id = $row->id;
$this->db_query('COMMIT');
return true;
} else
{
$this->db_query('ROLLBACK');
$this->errormsg = "Fehler beim Auslesen der Sequence";
return false;
}
} else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
return true;
}
}
else
{
$this->errormsg = 'Fehler beim Zuteilen des Eintrages';
return false;
}
}
public function delete($stundensatz_id)
{
$qry = "DELETE FROM hr.tbl_stundensatz WHERE stundensatz_id = ".$this->db_add_param($stundensatz_id, FHC_INTEGER);
if($this->db_query($qry))
return true;
else
{
$this->errormsg = 'Fehler beim Löschen des Stundensatzes';
return false;
}
}
public function validate()
{
if (!is_numeric($this->stundensatz))
{
$this->errormsg = "Stundensatz ungueltig";
return false;
}
if (is_null($this->oe_kurzbz))
{
$this->errormsg = "Unternehmen ungueltig";
return false;
}
if ($this->insertamum === '')
{
$this->errormsg = "Datum ungueltig";
return false;
}
return true;
}
}
?>
+77
View File
@@ -0,0 +1,77 @@
<?php
require_once(dirname(__FILE__).'/basis_db.class.php');
class stundensatzzyp extends basis_db
{
public $result = array();
public $stundensatztyp;
public $bezeichnung;
public $aktiv;
public function __construct($stundensatztyp=null)
{
parent::__construct();
if($stundensatztyp!=null)
$this->load($stundensatztyp);
}
public function load($stundensatzzyp)
{
$qry = "SELECT *
FROM hr.tbl_stundensatztyp
WHERE stundensatztyp=". $this->db_add_param($stundensatzzyp);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->stundensatztyp = $row->stundensatztyp;
$this->bezeichnung = $row->bezeichnung;
$this->aktiv = $this->db_parse_bool($row->aktiv);
}
}
else
{
$this->errormsg ="Fehler bei der Abfrage aufgetreten";
return false;
}
}
public function getAll($onlyAktiv = true, $order = 'aktiv DESC, bezeichnung')
{
$qry = "SELECT *
FROM hr.tbl_stundensatztyp";
if ($onlyAktiv)
{
$qry .= " WHERE aktiv";
}
if($order !== '')
$qry .= " ORDER BY ".$order;
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new stundensatzzyp();
$obj->stundensatztyp = $row->stundensatztyp;
$obj->bezeichnung = $row->bezeichnung;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+50 -1
View File
@@ -240,13 +240,38 @@ function checkZeilenUmbruch()
);
}
// Digitale Anwesenheiten
if(defined('CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN && $angemeldet
&& (!defined('CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN_STG') || in_array($lv->studiengang_kz, unserialize(CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN_STG)))
&& (!defined('CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN_LVA') || in_array($lv->lehrveranstaltung_id, unserialize(CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN_LVA)))
&& ($rechte->isBerechtigt('extension/anw_r_ent_assistenz')
|| $rechte->isBerechtigt('extension/anw_r_lektor')
|| $rechte->isBerechtigt('extension/anw_r_student')
|| $rechte->isBerechtigt('extension/anw_r_full_assistenz')))
{
$link='';
$text='';
$link= APP_ROOT."index.ci.php/extensions/FHC-Core-Anwesenheiten/?stg_kz=$studiengang_kz&sem=$semester&lvid=$lvid&sem_kurzbz=$angezeigtes_stsem";
$menu[]=array
(
'id'=>'core_menu_digitale_anwesenheitslisten',
'position'=>'50',
'name'=> $p->t('lehre/digiAnw'),
'icon'=>'../../../skin/images/button_kreuzerltool.png',
'link'=>$link,
'text'=>$text
);
}
//FEEDBACK
if((!defined('CIS_LEHRVERANSTALTUNG_FEEDBACK_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_FEEDBACK_ANZEIGEN) && $angemeldet)
{
$menu[]=array
(
'id'=>'core_menu_feedback',
'position'=>'50',
'position'=>'60',
'name'=>$p->t('lehre/feedback'),
'icon'=>'../../../skin/images/button_feedback.png',
'link'=>'feedback.php?lvid='.$lvid,
@@ -378,6 +403,7 @@ function checkZeilenUmbruch()
'id'=>'core_menu_mailanstudierende',
'position'=>'100',
'name'=>$p->t('lehre/mail'),
'phrase'=>'lehre/mail',
'icon'=>'../../../skin/images/button_feedback.png',
'link'=>$mailto,
'link_onclick'=>$link_onclick
@@ -453,6 +479,7 @@ function checkZeilenUmbruch()
'id'=>'core_menu_anerkennungNachgewiesenerKenntnisse',
'position'=>'128',
'name'=>$p->t('lehre/anrechnung'),
'phrase'=>'lehre/anrechnung',
'icon'=>'../../../skin/images/button_listen.png',
'link' => APP_ROOT. 'index.ci.php/lehre/anrechnung/RequestAnrechnung?studiensemester='.urlencode($angezeigtes_stsem).'&lv_id='.urlencode($lvid)
);
@@ -467,11 +494,33 @@ if((!defined('CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN') || CIS_LEHRVERANSTALTU
'id'=>'core_menu_anerkennungNachgewiesenerKenntnisse_empfehlen',
'position'=>'128',
'name'=>$p->t('lehre/anrechnungen'),
'phrase'=>'lehre/anrechnung',
'icon'=>'../../../skin/images/button_listen.png',
'link' => APP_ROOT. 'index.ci.php/lehre/anrechnung/ReviewAnrechnungUebersicht?studiensemester='.urlencode($angezeigtes_stsem)
);
}
// 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 ****************
+10 -7
View File
@@ -33,7 +33,7 @@ $menu=array
'Lehrveranstaltung'=>array('name'=>'Lehrveranstaltung', 'link'=>'lehre/lehrveranstaltung_frameset.html', 'target'=>'main'),
/* Leerzeile */'emptyrow1'=>array('name'=>'', 'link'=>'#empty', 'target'=>'main'),
'Verplanungsuebersicht'=>array('name'=>'Verplanungsübersicht', 'link'=>'lehre/check/verplanungsuebersicht.php', 'target'=>'main'),
'Reihungstest'=>array('name'=>'Reihungstest', 'link'=>'stammdaten/reihungstestverwaltung.php', 'target'=>'main','permissions'=>array('reihungstest')),
'Reihungstest'=>array('name'=>'Reihungstest', 'link'=>'stammdaten/reihungstestverwaltung.php', 'target'=>'main','permissions'=>array('lehre/reihungstest')),
'LV-Planung'=>array
(
'name'=>'LV-Planung', 'permissions'=>array('admin','lv-plan','support'),
@@ -70,6 +70,7 @@ $menu=array
'link'=>'left.php?categorie=Lehre', 'target'=>'nav',
'Gruppenverwaltung'=>array('name'=>'Gruppen', 'permissions'=>array('admin','lv-plan','support','lehre/gruppe'), 'link'=>'stammdaten/lvbgruppenverwaltung.php', 'target'=>'main'),
'Lehrveranstaltung'=>array('name'=>'Lehrveranstaltung', 'link'=>'lehre/lehrveranstaltung_frameset.html', 'target'=>'main'),
'lvTemplateUebersicht'=>array('name'=>'LV-Template Übersicht', 'link'=>'../index.ci.php/lehre/lvplanung/LvTemplateUebersicht', 'target'=>'_blank'),
'Studienordnung'=>array('name'=>'Studienordnung', 'link'=>'lehre/studienordnung.php', 'target'=>'_blank','permissions'=>array('lehre/studienordnung')),
'StudienplanGueltigkeit'=>array('name'=>'Studienplan Gültigkeit', 'link'=>'lehre/studienplan_gueltigkeit.php', 'target'=>'main','permissions'=>array('lehre/studienordnung')),
'StudienplanVorruecken'=>array('name'=>'Studienplan vorrücken', 'link'=>'lehre/studienplan_vorrueckung.php', 'target'=>'main','permissions'=>array('lehre/studienplan')),
@@ -109,7 +110,7 @@ $menu=array
),
'Benutzer'=>array
(
'name'=>'Benutzer','permissions'=>array('admin','lv-plan','support'),
'name'=>'Benutzer','permissions'=>array('admin','lv-plan','support','mitarbeiter'),
'Funktionen'=>array('name'=>'Funktionen', 'link'=>'personen/funktion.php', 'target'=>'main', 'permissions'=>array('mitarbeiter')),
'Berechtigungen'=>array('name'=>'Berechtigungen', 'link'=>'stammdaten/benutzerberechtigung_frameset.html', 'target'=>'main','permissions'=>array('basis/berechtigung')),
'Rollen'=>array('name'=>'Rollen', 'link'=>'stammdaten/berechtigungrolle.php', 'target'=>'main','permissions'=>array('basis/berechtigung')),
@@ -120,6 +121,7 @@ $menu=array
'name'=>'Mitarbeiter','permissions'=>array('admin','mitarbeiter','support'),
'Übersicht'=>array('name'=>'Übersicht', 'link'=>'personen/lektor_uebersicht.php', 'target'=>'main'),
'Zeitsperren'=>array('name'=>'Zeitsperren/Urlaub', 'link'=>'personen/urlaubsverwaltung.php', 'target'=>'main','permissions'=>array('mitarbeiter/zeitsperre:begrenzt')),
'Projektexport'=>array('name'=>'Projektexport', 'link'=>'personen/projektexport.php', 'target'=>'main','permissions'=>array('mitarbeiter/zeitsperre')),
),
'Betriebsmittel'=>array('name'=>'Betriebsmittel', 'link'=>'stammdaten/betriebsmittel_frameset.php', 'target'=>'main','permissions'=>array('basis/betriebsmittel')),
'AnwesenheitslistenBarcode'=>array('name'=>'Anwesenheitslisten mit Barcodes', 'link'=>'personen/anwesenheitslisten_barcode.php', 'target'=>'main','permissions'=>array('basis/person')),
@@ -132,14 +134,15 @@ $menu=array
'name'=>'Stammdaten', 'opener'=>'true', 'hide'=>'true', 'permissions'=>array('admin','lv-plan','support','basis/berechtigung','basis/variable','basis/studiengang','basis/ort','basis/firma','basis/fhausweis','basis/infoscreen','basis/organisationseinheit'), 'image'=>'vilesci_stammdaten.png',
'link'=>'left.php?categorie=Stammdaten', 'target'=>'nav',
'Betriebsmittel'=>array('name'=>'Betriebsmittel', 'link'=>'stammdaten/betriebsmittel_frameset.php', 'target'=>'main','permissions'=>array('basis/betriebsmittel')),
'Reihungstest'=>array('name'=>'Reihungstest', 'link'=>'stammdaten/reihungstestverwaltung.php', 'target'=>'main','permissions'=>array('admin','assistenz')),
'Reihungstest'=>array('name'=>'Reihungstest', 'link'=>'stammdaten/reihungstestverwaltung.php', 'target'=>'main','permissions'=>array('lehre/reihungstest')),
'User'=>array
'Rechtemanagement'=>array
(
'name'=>'User', 'permissions'=>array('basis/variable','basis/berechtigung'),
'name'=>'Rechtemanagement', 'permissions'=>array('basis/berechtigung','mitarbeiter'),
'Berechtigungen'=>array('name'=>'Berechtigungen', 'link'=>'stammdaten/benutzerberechtigung_frameset.html', 'target'=>'main','permissions'=>array('basis/berechtigung')),
'Rechte'=>array('name'=>'Rechte', 'link'=>'stammdaten/berechtigungen.php', 'target'=>'main','permissions'=>array('basis/berechtigung')),
'Rollen'=>array('name'=>'Rollen', 'link'=>'stammdaten/berechtigungrolle.php', 'target'=>'main','permissions'=>array('basis/berechtigung')),
'Variablen'=>array('name'=>'Variablen', 'link'=>'stammdaten/variablen_frameset.html', 'target'=>'main', 'target'=>'main','permissions'=>array('basis/variable')),
'Funktionen'=>array('name'=>'Funktionen', 'link'=>'personen/funktion.php', 'target'=>'main', 'permissions'=>array('mitarbeiter')),
),
'Personal'=>array
(
@@ -155,7 +158,7 @@ $menu=array
'Statistik'=>array('name'=>'Statistik', 'link'=>'stammdaten/statistik_frameset.html', 'target'=>'main','permissions'=>array('basis/statistik')),
'Ampel'=>array('name'=>'Ampel', 'link'=>'stammdaten/ampel_frameset.html', 'target'=>'main','permissions'=>array('basis/ampel')),
'Infoscreen'=>array('name'=>'Infoscreen', 'link'=>'stammdaten/infoscreen_frameset.html', 'target'=>'main','permissions'=>array('basis/infoscreen')),
'Ferien'=>array('name'=>'Ferien', 'link'=>'lehre/ferienverwaltung.php', 'target'=>'main','permissions'=>array('admin')),
'Ferien'=>array('name'=>'Ferien', 'link'=>'lehre/ferienverwaltung.php', 'target'=>'main','permissions'=>array('basis/ferien')),
'Service'=>array('name'=>'Service', 'link'=>'stammdaten/service_frameset.html', 'target'=>'main','permissions'=>array('basis/service')),
'Dokumentvorlagen'=>array('name'=>'Dokumentvorlagen', 'link'=>'stammdaten/dokumentvorlagen_verwaltung.php', 'target'=>'main','permissions'=>array('basis/dokumente')),
'GSProgramm'=>array('name'=>'GSProgramm', 'link'=>'stammdaten/gsprogramm.php', 'target'=>'main','permissions'=>array('inout/uebersicht')),
+577
View File
@@ -0,0 +1,577 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Cristina Hainberger <cristina.hainberger@technikum-wien.at>,
*/
/**
* Klasse Vertragsbestandteil
* @create 29.03.2023
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class vertragsbestandteil extends basis_db
{
public $new; // boolean
public $result = array();
//Tabellenspalten
public $vertragsbestandteil_id; // serial
public $dienstverhaeltnis_id; // integer
public $vertragsbestandteiltyp_kurzbz; // varchar(32)
public $von; // date
public $bis; // date
public $insertamum; // timestamp
public $insertvon; // varchar(32)
public $updateamum; // timestamp
public $updatevon; // varchar(32)
/**
* Konstruktor
* @param $vertragsbestandteil_id ID des Vertragsbestandteils, der geladen werden soll (Default=null)
*/
public function __construct($vertragsbestandteil_id = null)
{
parent::__construct();
if($vertragsbestandteil_id != null)
$this->load($vertragsbestandteil_id);
}
/**
* Laedt den Vertragsbestandteil mit der uebergebenen ID.
* @return true wenn ok, false im Fehlerfall
*/
public function load($vertragsbestandteil_id)
{
$qry = "SELECT * FROM hr.tbl_vertragsbestandteil WHERE vertragsbestandteil_id = ". $this->db_add_param($vertragsbestandteil_id, FHC_INTEGER);
if (!$this->db_query($qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
if($row = $this->db_fetch_object())
{
$this->vertragsbestandteil_id = $row->vertragsbestandteil_id;
$this->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
$this->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
$this->von = $row->von;
$this->bis = $row->bis;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
}
else
{
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
return false;
}
return true;
}
/**
* Prueft ob MitarbeiterIn im Monat des uebergebenen $datums zeitaufzeichnungspflichtig ist.
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
*
* @param $mitarbeiter_uid
* @param string $timestamp DD-MM-YYYY
* @return bool
*/
public function isZaPflichtig($mitarbeiter_uid, $datum = null)
{
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = 'SELECT
vbt.vertragsbestandteil_id, vbt.dienstverhaeltnis_id, vbt.vertragsbestandteiltyp_kurzbz,
vbt.von, vbt.bis, vbt.insertamum, vbt.insertvon, vbt.updateamum, vbt.updatevon,
vbtza.zeitaufzeichnung, vbtza.azgrelevant, vbtza.homeoffice
FROM hr.tbl_vertragsbestandteil_zeitaufzeichnung vbtza
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
-- Dienstverhältnis(se) des Mitarbeiters
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
-- Zeitaufzeichnungspflichtig...
AND zeitaufzeichnung = TRUE
-- ...im aktuellen Monat (default) oder im Monat des übergebenen $datums
AND ((date_trunc(\'month\', '. $timestamp. ')::date < vbt.bis AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von) OR (vbt.bis IS NULL AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von))
-- Vorerst nur check, ob zumindest eine aufrechte Zeitaufzeichnungspflicht. Später Unterscheidung nach Dienstverhältnis.
ORDER BY vbt.von DESC --aktuellster
LIMIT 1';
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
{
$this->result = array();
while ($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
$obj->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
$obj->von = $row->von;
$obj->bis = $row->bis;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->zeitaufzeichnung = $row->zeitaufzeichnung;
$obj->azgrelevant = $row->azgrelevant;
$obj->homeoffice = $row->homeoffice;
$this->result[] = $obj;
}
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Holt alle Vertragsbestandteile, die eine Zeitaufzeichnungspflicht haben.
*
* Set order DESC limit 1 to retrieve only most recent Vertragsbestandteil.
* Set order ASC limit 1 to retrieve only first Vertragsbestandteil.
*
* @param $mitarbeiter_uid
* @param string $order
* @param null $limit
* @return bool
*/
public function getZaPflichtig($mitarbeiter_uid, $order = 'DESC', $limit = null)
{
if ($order !== 'ASC' && $order !== 'DESC')
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
$qry = 'SELECT
vbt.vertragsbestandteil_id, vbt.dienstverhaeltnis_id, vbt.vertragsbestandteiltyp_kurzbz,
vbt.von, vbt.bis, vbt.insertamum, vbt.insertvon, vbt.updateamum, vbt.updatevon,
vbtza.zeitaufzeichnung, vbtza.azgrelevant, vbtza.homeoffice
FROM hr.tbl_vertragsbestandteil_zeitaufzeichnung vbtza
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
-- Dienstverhältnis(se) des Mitarbeiters
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
-- Zeitaufzeichnungspflichtig
AND zeitaufzeichnung = TRUE
-- Vertragsbestandteile sind aktuell, liegen nach dem GoLive und starten vor dem aktuellen Monatsletzten
AND(
(COALESCE(vbt.bis, NOW()::date) > '. $this->db_add_param(CASETIME_TIMESHEET_GOLIVE). '::date) AND
(vbt.von < (date_trunc(\'month\', NOW()) + interval \'1 month - 1 day\')::date)
)
ORDER BY vbt.von ' . $order;
if (!is_null($limit))
{
$qry .= ' LIMIT ' . $this->db_add_param($limit, FHC_INTEGER);
}
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
{
$this->result = array();
while ($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
$obj->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
$obj->von = $row->von;
$obj->bis = $row->bis;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->zeitaufzeichnung = $row->zeitaufzeichnung;
$obj->azgrelevant = $row->azgrelevant;
$obj->homeoffice = $row->homeoffice;
$this->result[] = $obj;
}
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Prueft ob MitarbeiterIn am Tag des uebergebenen $datums AZG-relevant ist.
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
*
* @param $mitarbeiter_uid
* @param string $timestamp DD-MM-YYYY
* @return bool
*/
public function isAzgRelevant($mitarbeiter_uid, $datum = null)
{
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = 'SELECT
vbt.vertragsbestandteil_id, vbt.dienstverhaeltnis_id, vbt.vertragsbestandteiltyp_kurzbz,
vbt.von, vbt.bis, vbt.insertamum, vbt.insertvon, vbt.updateamum, vbt.updatevon,
vbtza.zeitaufzeichnung, vbtza.azgrelevant, vbtza.homeoffice
FROM hr.tbl_vertragsbestandteil_zeitaufzeichnung vbtza
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
-- Dienstverhältnis(se) des Mitarbeiters
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
-- AZG-relevant...
AND azgrelevant = TRUE
-- ...am aktuellen Tag (default) oder am Tag des übergebenen $datums
AND (
(' . $timestamp . '::date BETWEEN vbt.von AND vbt.bis)
OR
(vbt.bis IS NULL AND ' . $timestamp . '::date > vbt.von)
)
ORDER BY vbt.von DESC --zur Sicherheit: aktuellster
LIMIT 1';
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
{
$this->result = array();
while ($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
$obj->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
$obj->von = $row->von;
$obj->bis = $row->bis;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->zeitaufzeichnung = $row->zeitaufzeichnung;
$obj->azgrelevant = $row->azgrelevant;
$obj->homeoffice = $row->homeoffice;
$this->result[] = $obj;
}
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Prueft ob MitarbeiterIn am Tag des uebergebenen $datums Homeoffice aktiv gesetzt hat.
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
*
* @param $mitarbeiter_uid
* @param string $timestamp DD-MM-YYYY
* @return bool
*/
public function hasHomeoffice($mitarbeiter_uid, $datum = null)
{
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = 'SELECT
vbt.vertragsbestandteil_id, vbt.dienstverhaeltnis_id, vbt.vertragsbestandteiltyp_kurzbz,
vbt.von, vbt.bis, vbt.insertamum, vbt.insertvon, vbt.updateamum, vbt.updatevon,
vbtza.zeitaufzeichnung, vbtza.azgrelevant, vbtza.homeoffice
FROM hr.tbl_vertragsbestandteil_zeitaufzeichnung vbtza
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
-- Dienstverhältnis(se) des Mitarbeiters
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
-- Homeoffice...
AND homeoffice = TRUE
-- ...am aktuellen Tag (default) oder am Tag des übergebenen $datums
AND (
(' . $timestamp . '::date BETWEEN vbt.von AND vbt.bis)
OR
(vbt.bis IS NULL AND ' . $timestamp . '::date >= vbt.von)
)
ORDER BY vbt.von DESC -- Zur Sicherheit: aktuellster
LIMIT 1';
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
{
$this->result = array();
while ($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
$obj->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
$obj->von = $row->von;
$obj->bis = $row->bis;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->zeitaufzeichnung = $row->zeitaufzeichnung;
$obj->azgrelevant = $row->azgrelevant;
$obj->homeoffice = $row->homeoffice;
$this->result[] = $obj;
}
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Prueft ob MitarbeiterIn im Monat des uebergebenen $datums einen Allin Vertragsbestandteil hat.
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
*
* @param $mitarbeiter_uid
* @param string $datum
* @return bool
*/
public function isAllin($mitarbeiter_uid, $datum = null)
{
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = 'SELECT
vbt.vertragsbestandteil_id, vbt.dienstverhaeltnis_id, vbt.vertragsbestandteiltyp_kurzbz,
vbt.von, vbt.bis, vbt.insertamum, vbt.insertvon, vbt.updateamum, vbt.updatevon,
vbtft.freitexttyp_kurzbz, vbtftt.bezeichnung, vbtft.titel, vbtft.anmerkung
FROM hr.tbl_vertragsbestandteil_freitext vbtft
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
JOIN hr.tbl_vertragsbestandteil_freitexttyp vbtftt USING (freitexttyp_kurzbz)
-- Dienstverhältnis(se) des Mitarbeiters
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
-- All-In
AND freitexttyp_kurzbz = \'allin\'
-- Vertragsbestandteil Freitext ist im Monat des übergebenen $datums
AND ((date_trunc(\'month\', '. $timestamp. ')::date < vbt.bis AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von) OR (vbt.bis IS NULL AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von))
-- Vorerst nur check, ob zumindest ein aufrechter Allin Vertragsbestandteil. Später Unterscheidung nach Dienstverhältnis.
--ORDER BY vbt.von DESC -- aktuellster
LIMIT 1';
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
{
$this->result = array();
while ($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
$obj->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
$obj->von = $row->von;
$obj->bis = $row->bis;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->freitexttyp_kurzbz = $row->freitexttyp_kurzbz;
$obj->bezeichnung = $row->bezeichnung;
$obj->titel = $row->titel;
$obj->anmerkung = $row->anmerkung;
$this->result[] = $obj;
}
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Prüft, ob MitarbeiterIn zum Abfragedatum karenziert ist.
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
*
* @param $mitarbeiter_uid
* @param null $datum
* @return bool
*/
public function isKarenziert($mitarbeiter_uid, $datum = null)
{
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = '
SELECT
1
FROM
hr.tbl_vertragsbestandteil vbt
JOIN
hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
WHERE
dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
AND
vbt.vertragsbestandteiltyp_kurzbz = \'karenz\'
AND
vbt.von::date <= '. $timestamp. '::date
AND
vbt.bis::date >= '. $timestamp. '::date
';
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
{
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Arbeits-Wochenstunden eines/r MitarbeiterIn im Monat des uebergebenen $datums. Karenzierte Dienstverhältnisse
* werden nicht zurückgegeben. Dafür aber ein eventuelles 2.DV mit geringfügiger Beschäftigung neben der Karenz.
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
*
* @param $mitarbeiter_uid
* @param null $datum
* @return bool
*/
public function getWochenstunden($mitarbeiter_uid, $datum = null)
{
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = 'SELECT
vbtstd.vertragsbestandteil_id,
vbtstd.wochenstunden,
vbtstd.teilzeittyp_kurzbz
FROM hr.tbl_vertragsbestandteil_stunden vbtstd
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
-- Dienstverhältnis(se) des Mitarbeiters
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
-- Vertragsbestandteil ist im Monat des übergebenen $datums
AND ((date_trunc(\'month\', '. $timestamp. ')::date < vbt.bis AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von) OR (vbt.bis IS NULL AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von))
-- DV mit Vertragsbestandteile Karenz herausnehmen, weil die Wochenstunden dieser DV dann ruhen
AND (
SELECT
COUNT(*) AS karenzen
FROM
hr.tbl_vertragsbestandteil vbt
WHERE
vbt.dienstverhaeltnis_id = dv.dienstverhaeltnis_id
AND
vbt.vertragsbestandteiltyp_kurzbz = \'karenz\'
AND
vbt.von::date <= '. $timestamp. '::date
AND
vbt.bis::date >= '. $timestamp. '::date
) = 0
ORDER BY vbt.von DESC -- aktuellster
LIMIT 1';
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
{
$this->result = array();
while ($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
$obj->wochenstunden = $row->wochenstunden;
$obj->teilzeittyp_kurzbz = $row->teilzeittyp_kurzbz;
$this->result[] = $obj;
}
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
}
?>
+21 -10
View File
@@ -123,7 +123,7 @@ class wochenplan extends basis_db
}
/**
* initialisiert den Studenplan
* initialisiert den Stundenplan
*
*/
public function init_stdplan()
@@ -445,6 +445,7 @@ class wochenplan extends basis_db
$this->std_plan[$tag][$stunde][$idx]->stundenplan_id=$this->wochenplan->lehrstunden[$i]->stundenplan_id;
$this->std_plan[$tag][$stunde][$idx]->lektor_uid=$this->wochenplan->lehrstunden[$i]->lektor_uid;
$this->std_plan[$tag][$stunde][$idx]->lektor=$this->wochenplan->lehrstunden[$i]->lektor_kurzbz;
$this->std_plan[$tag][$stunde][$idx]->mitarbeiter_kurzbz=$this->wochenplan->lehrstunden[$i]->mitarbeiter_kurzbz;
$this->std_plan[$tag][$stunde][$idx]->ort=$this->wochenplan->lehrstunden[$i]->ort_kurzbz;
$this->std_plan[$tag][$stunde][$idx]->stg=$this->wochenplan->lehrstunden[$i]->studiengang;
$this->std_plan[$tag][$stunde][$idx]->stg_kz=$this->wochenplan->lehrstunden[$i]->studiengang_kz;
@@ -736,7 +737,10 @@ class wochenplan extends basis_db
{
$unr[]=$lehrstunde->unr;
// Lektoren
$lektor[]=$lehrstunde->lektor;
if ($lehrstunde->mitarbeiter_kurzbz === null)
$lektor[] = $lehrstunde->lektor;
else
$lektor[]=$lehrstunde->mitarbeiter_kurzbz;
// Lehrverband
$typ='';
if ($lehrstunde->reservierung)
@@ -1450,7 +1454,10 @@ class wochenplan extends basis_db
if ($lehrstunde->unr==$unr)
{
// Lektoren
$lektor[]=$lehrstunde->lektor;
if ($lehrstunde->mitarbeiter_kurzbz === null)
$lektor[] = $lehrstunde->lektor;
else
$lektor[]=$lehrstunde->mitarbeiter_kurzbz;
// Lehrverband
$lvb=$lehrstunde->stg.'-'.$lehrstunde->sem;
if ($lehrstunde->ver!=null && $lehrstunde->ver!='0' && $lehrstunde->ver!='')
@@ -2364,7 +2371,10 @@ class wochenplan extends basis_db
$unr[]=$lehrstunde->unr;
// Lektoren
$lektor[]=$lehrstunde->lektor;
if ($lehrstunde->mitarbeiter_kurzbz === null)
$lektor[] = $lehrstunde->lektor;
else
$lektor[]=$lehrstunde->mitarbeiter_kurzbz;
$lektor_uids[]=$lehrstunde->lektor_uid;
// Lehrverband
$lvb=$lehrstunde->stg.'-'.$lehrstunde->sem;
@@ -2516,6 +2526,7 @@ class wochenplan extends basis_db
if (!mb_strstr($this->std_plan[$i][$j][$idx1]->lektor,$this->std_plan[$i][$j][$idx]->lektor))
{
$this->std_plan[$i][$j][$idx]->lektor.=' / '.$this->std_plan[$i][$j][$idx1]->lektor;
$this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz.=' / '.$this->std_plan[$i][$j][$idx1]->mitarbeiter_kurzbz;
}
//Ort
@@ -2549,7 +2560,7 @@ class wochenplan extends basis_db
//"Betreff","Beginnt am","Beginnt um","Endet am","Endet um","Ganztaegiges Ereignis","Erinnerung Ein/Aus","Erinnerung am","Erinnerung um","Besprechungsplanung","Erforderliche Teilnehmer","Optionale Teilnehmer","Besprechungsressourcen","Abrechnungsinformationen","Beschreibung",
//"Kategorien","Ort","Prioritaet","Privat","Reisekilometer","Vertraulichkeit","Zeitspanne zeigen als"
echo $this->crlf.'"'.$this->std_plan[$i][$j][$idx]->lehrfach.(isset($this->std_plan[$i][$j][$idx]->lehrform) && $this->std_plan[$i][$j][$idx]->lehrform!=''?'-'.$this->std_plan[$i][$j][$idx]->lehrform:'').($lvb!=''?' - '.$lvb:'').'","'.$start_date.'","'.$start_time.'","'.$end_date.'","'.$end_time.'","Aus","Aus",,,,,,,,"Stundenplan';
echo $this->crlf.$this->std_plan[$i][$j][$idx]->lehrfach.$this->crlf.$this->std_plan[$i][$j][$idx]->lektor.$this->crlf.$lvb.$this->crlf.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?$this->crlf.$this->std_plan[$i][$j][$idx]->anmerkung:'').'","StundenplanFH","'.$this->std_plan[$i][$j][$idx]->ort.'","Normal","Aus",,"Normal","2"';
echo $this->crlf.$this->std_plan[$i][$j][$idx]->lehrfach.$this->crlf.(($this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz === null) ? $this->std_plan[$i][$j][$idx]->lektor : $this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz).$this->crlf.$lvb.$this->crlf.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?$this->crlf.$this->std_plan[$i][$j][$idx]->anmerkung:'').'","StundenplanFH","'.$this->std_plan[$i][$j][$idx]->ort.'","Normal","Aus",,"Normal","2"';
}
elseif ($target=='ical')
{
@@ -2564,9 +2575,9 @@ class wochenplan extends basis_db
$end_date_time_ical = $eda[2].$eda[1].$eda[0].'T'.sprintf('%02s',($eta[0])).$eta[1].$eta[2]; //neu gruppieren der Startzeit und des Startdatums
echo $this->crlf.'BEGIN:VEVENT'.$this->crlf
.'UID:'.'FH'.str_replace(',',' ',$lvb.$this->std_plan[$i][$j][$idx]->ort.$this->std_plan[$i][$j][$idx]->lektor.$lehrfach[$idx].$start_date_time_ical.$end_date_time_ical.$this->crlf)
.'UID:'.'FH'.str_replace(',',' ',$lvb.$this->std_plan[$i][$j][$idx]->ort.(($this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz === null) ? $this->std_plan[$i][$j][$idx]->lektor : $this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz).$lehrfach[$idx].$start_date_time_ical.$end_date_time_ical.$this->crlf)
.'SUMMARY:'.str_replace(',',' ',$lehrfach[$idx].' '.$this->std_plan[$i][$j][$idx]->ort.' - '.$lvb.$this->crlf)
.'DESCRIPTION:'.str_replace(',',' ',$lehrfach[$idx].'\n'.$this->std_plan[$i][$j][$idx]->lektor.'\n'.$lvb.'\n'.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?'\n'.$this->std_plan[$i][$j][$idx]->anmerkung:'').$this->crlf)
.'DESCRIPTION:'.str_replace(',',' ',$lehrfach[$idx].'\n'.(($this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz === null) ? $this->std_plan[$i][$j][$idx]->lektor : $this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz).'\n'.$lvb.'\n'.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?'\n'.$this->std_plan[$i][$j][$idx]->anmerkung:'').$this->crlf)
.'LOCATION:'.$this->std_plan[$i][$j][$idx]->ort.$this->crlf
.'CATEGORIES:'.$lvplan_kategorie.$this->crlf
.'DTSTART;TZID=Europe/Vienna:'.$start_date_time_ical.$this->crlf
@@ -2606,9 +2617,9 @@ class wochenplan extends basis_db
$start_date_time_ical = $sda[2].$sda[1].$sda[0].'T'.sprintf('%02s',($sta[0])).$sta[1].$sta[2]; //neu gruppieren der Startzeit und des Startdatums
$end_date_time_ical = $eda[2].$eda[1].$eda[0].'T'.sprintf('%02s',($eta[0])).$eta[1].$eta[2]; //neu gruppieren der Startzeit und des Startdatums
$UID = 'FH'.$lvb.$this->std_plan[$i][$j][$idx]->ort.$this->std_plan[$i][$j][$idx]->lektor.$lehrfach[$idx].$start_date_time_ical.$end_date_time_ical;
$UID = 'FH'.$lvb.$this->std_plan[$i][$j][$idx]->ort.(($this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz === null) ? $this->std_plan[$i][$j][$idx]->lektor : $this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz).$lehrfach[$idx].$start_date_time_ical.$end_date_time_ical;
$Summary = $lehrfach[$idx].' '.$this->std_plan[$i][$j][$idx]->ort.' - '.$lvb;
$description = $lehrfach[$idx].'\n'.$this->std_plan[$i][$j][$idx]->lektor.'\n'.$lvb.'\n'.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?'\n'.$this->std_plan[$i][$j][$idx]->anmerkung:'');
$description = $lehrfach[$idx].'\n'.(($this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz === null) ? $this->std_plan[$i][$j][$idx]->lektor : $this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz).'\n'.$lvb.'\n'.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?'\n'.$this->std_plan[$i][$j][$idx]->anmerkung:'');
$UID = str_replace(',',' ',$UID);
$Summary = str_replace(',',' ',$Summary);
@@ -2646,7 +2657,7 @@ class wochenplan extends basis_db
else
{
echo $this->crlf.'"'.$lehrfach[$idx].'","'.$lvplan_kategorie.'","'.$this->std_plan[$i][$j][$idx]->ort.'","Stundenplan'.$this->crlf.$this->std_plan[$i][$j][$idx]->lehrfach.$this->crlf;
echo $this->std_plan[$i][$j][$idx]->lektor.$this->crlf.$lvb.$this->crlf.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?$this->crlf.$this->std_plan[$i][$j][$idx]->anmerkung:'').'","Stundenplan",';
echo (($this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz === null) ? $this->std_plan[$i][$j][$idx]->lektor : $this->std_plan[$i][$j][$idx]->mitarbeiter_kurzbz).$this->crlf.$lvb.$this->crlf.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?$this->crlf.$this->std_plan[$i][$j][$idx]->anmerkung:'').'","Stundenplan",';
echo '"'.$start_date.'","'.$start_time.'","'.$end_date.'","'.$end_time.'",,,,,';
}
}
+10 -10
View File
@@ -1,6 +1,7 @@
<?php
require_once('zeitaufzeichnung_import.class.php');
require_once('../../../include/organisationseinheit.class.php');
require_once('../../../include/vertragsbestandteil.class.php');
/**
* Description of zeitaufzeichnung_csv_import
@@ -348,17 +349,16 @@ class zeitaufzeichnung_import_csv extends zeitaufzeichnung_import {
if (strtolower($data[self::HOMEOFFICE]) == 'true') {
// check, ob homeoffice gemäß Bisverwendung
$vonCSV = $this->datum->formatDatum($data[self::STARTDT], 'Y-m-d');
$verwendung = new bisverwendung();
$verwendung->getVerwendungDatum($data[self::USER], $vonCSV);
foreach ($verwendung->result as $v) {
if ($v->homeoffice) {
$this->zeit->homeoffice = true;
} else {
$this->addWarning($this->p->t("zeitaufzeichnung/homeofficeNichtErlaubt", [$vonCSV]));
$this->zeit->homeoffice = false;
}
}
$vbt = new vertragsbestandteil();
$homeoffice = $vbt->hasHomeoffice($data[self::USER], $vonCSV);
if ($homeoffice) {
$this->zeit->homeoffice = true;
} else {
$this->addWarning($this->p->t("zeitaufzeichnung/homeofficeNichtErlaubt", [$vonCSV]));
$this->zeit->homeoffice = false;
}
}
}
}
+163 -144
View File
@@ -25,23 +25,23 @@ require_once(dirname(__FILE__).'/sprache.class.php');
class zgv extends basis_db
{
public $zgv_code;
public $zgv_bez;
public $zgv_kurzbz;
public $zgv_code;
public $zgv_bez;
public $zgv_kurzbz;
public $zgvmas_code;
public $zgvmas_bez;
public $zgvmas_kurzbz;
public $zgvmas_code;
public $zgvmas_bez;
public $zgvmas_kurzbz;
public $zgvdoktor_code;
public $zgvdoktor_bez;
public $zgvdoktor_kurzbz;
public $zgvdoktor_code;
public $zgvdoktor_bez;
public $zgvdoktor_kurzbz;
public $bezeichnung;
public $bezeichnung;
public $result = array();
public $result = array();
public function __construct($zgv_code=null)
public function __construct($zgv_code=null)
{
parent::__construct();
@@ -49,155 +49,174 @@ class zgv extends basis_db
$this->load($zgv_code);
}
/**
* Lädt eine zgv von tbl_zgv
* @param $zgv_code
* @return boolean
*/
public function load($zgv_code)
{
$sprache = new sprache();
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgv WHERE zgv_code = '.$this->db_add_param($zgv_code, FHC_INTEGER).';';
/**
* Lädt eine zgv von tbl_zgv
* @param $zgv_code
* @return boolean
*/
public function load($zgv_code)
{
$sprache = new sprache();
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgv WHERE zgv_code = '.$this->db_add_param($zgv_code, FHC_INTEGER).';';
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$this->zgv_code = $row->zgv_code;
$this->zgv_bez = $row->zgv_bez;
$this->zgv_kurzbz = $row->zgv_kurzbz;
$this->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
}
return true;
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$this->zgv_code = $row->zgv_code;
$this->zgv_bez = $row->zgv_bez;
$this->zgv_kurzbz = $row->zgv_kurzbz;
$this->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
}
return true;
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Lädt eine Master-ZGV von tbl_zgvmaster
* @param $zgvmas_code
* @return boolean
*/
public function load_mas($zgvmas_code)
{
$sprache = new sprache();
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvmaster WHERE zgvmas_code = '.$this->db_add_param($zgvmas_code, FHC_INTEGER).';';
* Lädt eine Master-ZGV von tbl_zgvmaster
* @param $zgvmas_code
* @return boolean
*/
public function load_mas($zgvmas_code)
{
$sprache = new sprache();
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvmaster WHERE zgvmas_code = '.$this->db_add_param($zgvmas_code, FHC_INTEGER).';';
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$this->zgvmas_code = $row->zgvmas_code;
$this->zgvmas_bez = $row->zgvmas_bez;
$this->zgvmas_kurzbz = $row->zgvmas_kurzbz;
$this->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
}
return true;
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$this->zgvmas_code = $row->zgvmas_code;
$this->zgvmas_bez = $row->zgvmas_bez;
$this->zgvmas_kurzbz = $row->zgvmas_kurzbz;
$this->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
}
return true;
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
}
/**
* lädt alle ZGVs von tbl_zgv
* @return boolean
*/
public function getAll($onlyAktiv = false)
{
$sprache = new sprache();
$qry ='SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgv';
/**
* lädt alle ZGVs von tbl_zgv
* @return boolean
*/
public function getAll()
{
$sprache = new sprache();
$qry ='SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgv;';
if ($onlyAktiv === true)
{
$qry .= " WHERE aktiv";
}
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$zgv = new zgv();
$zgv->zgv_code = $row->zgv_code;
$zgv->zgv_bez = $row->zgv_bez;
$zgv->zgv_kurzbz = $row->zgv_kurzbz;
$zgv->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
$qry .= " ORDER BY zgv_bez";
$this->result[] = $zgv;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
}
}
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$zgv = new zgv();
$zgv->zgv_code = $row->zgv_code;
$zgv->zgv_bez = $row->zgv_bez;
$zgv->zgv_kurzbz = $row->zgv_kurzbz;
$zgv->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
/**
* Lädt alle Master ZGVs von tbl_zgvmaster
* @return boolean
*/
public function getAllMaster()
{
$sprache = new sprache();
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvmaster;';
$this->result[] = $zgv;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
}
}
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$zgv_master = new zgv();
/**
* Lädt alle Master ZGVs von tbl_zgvmaster
* @return boolean
*/
public function getAllMaster($onlyAktiv = false)
{
$sprache = new sprache();
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvmaster';
$zgv_master->zgvmas_code = $row->zgvmas_code;
$zgv_master->zgvmas_bez = $row->zgvmas_bez;
$zgv_master->zgvmas_kurzbz = $row->zgvmas_kurzbz;
$zgv_master->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
if ($onlyAktiv === true)
{
$qry .= " WHERE aktiv";
}
$this->result[] = $zgv_master;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
}
}
$qry .= " ORDER BY zgvmas_bez";
/**
* Lädt alle Doktor ZGVs von tbl_zgvdoktor
* @return boolean
*/
public function getAllDoktor()
{
$sprache = new sprache();
$qry='SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvdoktor;';
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$zgv_master = new zgv();
if($result = $this->db_query($qry))
{
while($row= $this->db_fetch_object($result))
{
$zgv_doktor = new zgv();
$zgv_master->zgvmas_code = $row->zgvmas_code;
$zgv_master->zgvmas_bez = $row->zgvmas_bez;
$zgv_master->zgvmas_kurzbz = $row->zgvmas_kurzbz;
$zgv_master->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
$zgv_doktor->zgvdoktor_code = $row->zgvdoktor_code;
$zgv_doktor->zgvdoktor_bez = $row->zgvdoktor_bez;
$zgv_doktor->zgvdoktor_kurzbz = $row->zgvdoktor_kurzbz;
$zgv_doktor->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
$this->result[] = $zgv_master;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
}
}
$this->result[] = $zgv_doktor;
}
/**
* Lädt alle Doktor ZGVs von tbl_zgvdoktor
* @return boolean
*/
public function getAllDoktor($onlyAktiv = false)
{
$sprache = new sprache();
$qry='SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvdoktor';
}
else
{
$this->erromsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
if ($onlyAktiv === true)
{
$qry .= " WHERE aktiv";
}
$qry .= " ORDER BY zgvdoktor_bez";
if($result = $this->db_query($qry))
{
while($row= $this->db_fetch_object($result))
{
$zgv_doktor = new zgv();
$zgv_doktor->zgvdoktor_code = $row->zgvdoktor_code;
$zgv_doktor->zgvdoktor_bez = $row->zgvdoktor_bez;
$zgv_doktor->zgvdoktor_kurzbz = $row->zgvdoktor_kurzbz;
$zgv_doktor->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
$this->result[] = $zgv_doktor;
}
}
else
{
$this->erromsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
}
?>