Compare commits

..

12 Commits

31 changed files with 74 additions and 125 deletions
@@ -122,47 +122,6 @@ class Studiensemester_model extends DB_Model
return $this->execQuery($query, array($studiensemester_kurzbz, $limit));
}
/**
* Returns the current study semester and the previous semesters of the same type (SS/WS).
*
* Example:
* - SS2026, limit 3: SS2026, SS2025, SS2024
* - WS2025, limit 2: WS2025, WS2024
*
* @param $studiensemester_kurzbz
* @param $limit
*/
public function getPreviousSameSemesterFrom($studiensemester_kurzbz, $limit = 1)
{
$qry = '
SELECT
studiensemester_kurzbz,
start,
ende
FROM
public.tbl_studiensemester
WHERE
SUBSTRING(studiensemester_kurzbz FROM 1 FOR 2) = SUBSTRING(? FROM 1 FOR 2)
AND start <= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = ?
)
ORDER BY
start DESC
LIMIT ?
';
return $this->execQuery($qry,
[
$studiensemester_kurzbz,
$studiensemester_kurzbz,
$limit
]
);
}
/**
* getNearest
*/
@@ -260,6 +260,7 @@ class Benutzerfunktion_model extends DB_Model
return $this->execQuery($query, $parameters_array);
}
/**
* Get active Kompetenzfeldleitung bei UID.
*
@@ -295,6 +296,7 @@ class Benutzerfunktion_model extends DB_Model
return $this->execQuery($query, $parameters_array);
}
public function insertBenutzerfunktion($Json)
{
unset($Json['benutzerfunktion_id']);
+1 -1
View File
@@ -130,6 +130,6 @@ class basis
*/
public function convert_html_chars($value)
{
return htmlspecialchars($value);
return htmlspecialchars($value ?? '');
}
}
+13 -13
View File
@@ -27,8 +27,8 @@ require_once(dirname(__FILE__).'/basis.class.php');
abstract class db extends basis
{
protected static $db_conn=null;
protected $db_result=null;
protected static $db_conn = null;
protected $db_result = null;
protected $debug=false;
function __construct()
@@ -46,18 +46,18 @@ abstract class db extends basis
abstract function db_connect();
abstract function db_query($sql);
abstract function db_fetch_object($result=null, $i=null);
abstract function db_fetch_array($result=null);
abstract function db_fetch_row($result=null, $i=null);
abstract function db_fetch_assoc($result=null, $i=null);
abstract function db_result($result = null, $i, $item);
abstract function db_num_rows($result=null);
abstract function db_num_fields($result=null);
abstract function db_field_name($result=null, $i);
abstract function db_affected_rows($result=null);
abstract function db_result_seek($result=null, $offset);
abstract function db_fetch_object($result = null, $i = null);
abstract function db_fetch_array($result = null);
abstract function db_fetch_row($result = null, $i = null);
abstract function db_fetch_assoc($result = null, $i = null);
abstract function db_result($result = null, $i = null, $item = null);
abstract function db_num_rows($result = null);
abstract function db_num_fields($result = null);
abstract function db_field_name($result = null, $i = null);
abstract function db_affected_rows($result = null);
abstract function db_result_seek($result = null, $offset = null);
abstract function db_last_error();
abstract function db_free_result($result=null);
abstract function db_free_result($result = null);
abstract function db_version();
abstract function db_escape($var);
abstract function db_null_value($var, $qoute=true);
+9
View File
@@ -33,6 +33,15 @@ class benutzer extends person
public $updateaktivam;
public $updateaktivvon;
// PHP8 adaption
public $mitarbeiter_uid;
public $studiengang;
public $studiengang_kz;
public $telefonklappe;
public $raum;
public $lektor;
public $fixangestellt;
/**
* Konstruktor - Uebergibt die Connection und laedt optional einen Benutzer
* @param $uid Benutzer der geladen werden soll (default=null)
+2 -2
View File
@@ -134,12 +134,12 @@ class benutzerberechtigung extends basis_db
return false;
}
if(mb_strlen($this->berechtigung_kurzbz)>32)
if(mb_strlen($this->berechtigung_kurzbz ?? '')>32)
{
$this->errormsg = 'Berechtigung_kurzbz darf nicht laenger als 32 Zeichen sein';
return false;
}
if(mb_strlen($this->uid)>32)
if(mb_strlen($this->uid ?? '')>32)
{
$this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein';
return false;
+1 -1
View File
@@ -356,7 +356,7 @@ class datum
*/
public function formatDatum($datum, $format='Y-m-d H:i:s', $strict=false)
{
if(trim($datum)=='')
if (trim($datum ?? '') == '')
return '';
$ts='';
+2
View File
@@ -34,6 +34,8 @@ class lehrform extends basis_db
public $bezeichnung_kurz;
public $bezeichnung_lang;
public $lehrform_kurzbz;
/**
* Konstruktor - Laedt optional eine Lehrform
* @param $lehrform_kurbz Lehrform die geladen werden soll (default=null)
+5 -5
View File
@@ -661,27 +661,27 @@ class lehrveranstaltung extends basis_db
public function validate()
{
//Laenge Pruefen
if (mb_strlen($this->bezeichnung) > 128)
if (mb_strlen($this->bezeichnung ?? '') > 128)
{
$this->errormsg = 'Bezeichnung darf nicht laenger als 128 Zeichen sein';
return false;
}
if (mb_strlen($this->kurzbz) > 16)
if (mb_strlen($this->kurzbz ?? '') > 16)
{
$this->errormsg = 'Kurzbez darf nicht laenger als 16 Zeichen sein';
return false;
}
if (mb_strlen($this->anmerkung) > 64)
if (mb_strlen($this->anmerkung ?? '') > 64)
{
$this->errormsg = 'Anmerkung darf nicht laenger als 64 Zeichen sein';
return false;
}
if (mb_strlen($this->lehreverzeichnis) > 16)
if (mb_strlen($this->lehreverzeichnis ?? '') > 16)
{
$this->errormsg = 'Lehreverzeichnis darf nicht laenger als 16 Zeichen sein';
return false;
}
if (mb_strlen($this->lvnr) > 32)
if (mb_strlen($this->lvnr ?? '') > 32)
{
$this->errormsg = 'LVNR darf nicht laenger als 32 Zeichen sein';
return false;
+1
View File
@@ -40,6 +40,7 @@ class lvangebot extends basis_db
protected $anmeldefenster_start; // timestamp
protected $anmeldefenster_ende; // timestamp
protected $updateamum; // timestamp
protected $updatenamum;
protected $updatevon; // varchar(32)
protected $insertamum; // timestamp
protected $insertvon; // varchar(32)
+2 -2
View File
@@ -411,7 +411,7 @@ class mitarbeiter extends benutzer
* @param $datum_bis
* @return boolean
*/
public function getMitarbeiterStg($lektor=true,$fixangestellt, $stge, $fkt_kurzbz, $order='studiengang_kz, nachname, vorname, kurzbz', $datum_von='', $datum_bis='')
public function getMitarbeiterStg($lektor = true, $fixangestellt = null, $stge = null, $fkt_kurzbz = '', $order = 'studiengang_kz, nachname, vorname, kurzbz', $datum_von = '', $datum_bis = '')
{
$sql_query='SELECT DISTINCT campus.vw_mitarbeiter.*, studiengang_kz, tbl_studiengang.typ, tbl_studiengang.kurzbz AS stg_kurzbz FROM campus.vw_mitarbeiter
JOIN public.tbl_benutzerfunktion USING (uid) JOIN public.tbl_studiengang USING(oe_kurzbz)
@@ -1554,7 +1554,7 @@ class mitarbeiter extends benutzer
* @param $studSemArray Array mit Studiensemestern in denen der externe Lektor zumindest in einem Unterrichtet haben soll oder NULL. Wenn NULL werden nur externe Mitarbeiter ohne Lehrauftrag ausgegeben.
* @return boolean
*/
public function getMitarbeiterForZutrittskarte($filter, $fixangestellt=true, $studSemArray)
public function getMitarbeiterForZutrittskarte($filter, $fixangestellt=true, $studSemArray=array())
{
$qry = "SELECT
vorname,nachname,gebdatum,uid,personalnummer,person_id
+3
View File
@@ -49,6 +49,9 @@ class organisationseinheit extends basis_db
public $beschreibung;
public $oetyp_bezeichnung;
public $kurzzeichen;
public $freigabegrenze;
/**
* Konstruktor
+13 -13
View File
@@ -44,7 +44,7 @@ class basis_db extends db
public function db_query($sql)
{
if ($this->db_result=pg_query(basis_db::$db_conn,$sql))
if ($this->db_result = @pg_query(basis_db::$db_conn,$sql))
return $this->db_result;
else
{
@@ -53,7 +53,7 @@ class basis_db extends db
}
}
public function db_num_rows($result=null)
public function db_num_rows($result = null)
{
if(is_null($result))
return pg_num_rows($this->db_result);
@@ -61,7 +61,7 @@ class basis_db extends db
return pg_num_rows($result);
}
public function db_fetch_object($result = null, $i=null)
public function db_fetch_object($result = null, $i = null)
{
if(is_null($result))
{
@@ -79,7 +79,7 @@ class basis_db extends db
}
}
public function db_fetch_row($result = null, $i=null)
public function db_fetch_row($result = null, $i = null)
{
if(is_null($result))
{
@@ -97,7 +97,7 @@ class basis_db extends db
}
}
public function db_fetch_assoc($result = null, $i=null)
public function db_fetch_assoc($result = null, $i = null)
{
if(is_null($result))
{
@@ -115,7 +115,7 @@ class basis_db extends db
}
}
public function db_result($result = null, $i,$item)
public function db_result($result = null, $i = null, $item = null)
{
if(is_null($result))
{
@@ -153,10 +153,10 @@ class basis_db extends db
public function db_last_error()
{
return pg_last_error();
return pg_last_error(basis_db::$db_conn);
}
public function db_affected_rows($result=null)
public function db_affected_rows($result = null)
{
if(is_null($result))
return pg_affected_rows($this->db_result);
@@ -164,7 +164,7 @@ class basis_db extends db
return pg_affected_rows($result);
}
public function db_result_seek($result=null, $offset)
public function db_result_seek($result = null, $offset = null)
{
if(is_null($result))
return pg_result_seek($this->db_result, $offset);
@@ -172,7 +172,7 @@ class basis_db extends db
return pg_result_seek($result, $offset);
}
public function db_fetch_array($result=null, $row=null, $result_type=PGSQL_NUM)
public function db_fetch_array($result = null, $row = null, $result_type=PGSQL_NUM)
{
if(is_null($result))
return pg_fetch_array($this->db_result, $row, $result_type);
@@ -180,7 +180,7 @@ class basis_db extends db
return pg_fetch_array($result, $row, $result_type);
}
public function db_num_fields($result=null)
public function db_num_fields($result = null)
{
if(is_null($result))
return pg_num_fields($this->db_result);
@@ -191,7 +191,7 @@ class basis_db extends db
/**
* Liefert den Feldnamen mit index i
*/
public function db_field_name($result=null, $i)
public function db_field_name($result = null, $i = null)
{
if(is_null($result))
return pg_field_name($this->db_result, $i);
@@ -230,7 +230,7 @@ class basis_db extends db
*/
public function db_escape($var)
{
return pg_escape_string($var);
return pg_escape_string(basis_db::$db_conn, $var);
}
/**
+5
View File
@@ -68,6 +68,11 @@ class studiengang extends basis_db
public $beschreibung;
public $studiengang_typ_arr = array(); // Array mit den Studiengangstypen
public $telefon;
public $aktiv;
public $beantragung;
public $lgart_biscode;
/**
* Konstruktor
* @param studiengang_kz Kennzahl des zu ladenden Studienganges
@@ -433,7 +433,6 @@ export default {
:label="$p.t('wawi/ausgegebenam')"
name="ausgegebenam"
v-model="formData.ausgegebenam"
model-type="yyyy-MM-dd"
auto-apply
:enable-time-picker="false"
text-input
@@ -450,7 +449,6 @@ export default {
:label="$p.t('wawi/retouram')"
name="retouram"
v-model="formData.retouram"
model-type="yyyy-MM-dd"
auto-apply
:enable-time-picker="false"
text-input
@@ -551,7 +551,6 @@ export default {
container-class="mb-3 col-3"
type="DatePicker"
v-model="formData.datum_von"
model-type="yyyy-MM-dd"
name="datum_von"
:label="$p.t('ui/from') + ' *'"
auto-apply
@@ -567,7 +566,6 @@ export default {
container-class="mb-3 col-3"
type="DatePicker"
v-model="formData.datum_bis"
model-type="yyyy-MM-dd"
name="datum_bis"
:label="$p.t('global/bis')"
auto-apply
@@ -470,7 +470,6 @@ export default {
:label="$p.t('admission', 'anmeldundRtAm')"
type="DatePicker"
v-model="formData.anmeldedatum"
model-type="yyyy-MM-dd"
auto-apply
:enable-time-picker="false"
text-input
@@ -293,7 +293,6 @@ export default {
:label="$p.t('person', 'geburtsdatum')"
type="DatePicker"
v-model="data.gebdatum"
model-type="yyyy-MM-dd"
name="gebdatum"
:clearable="false"
no-today
@@ -103,7 +103,6 @@ export default {
<form-input
type="DatePicker"
v-model="formData.nachgereicht_am"
model-type="yyyy-MM-dd"
name="nachgereicht_am"
:label="$p.t('dokumente/nachreichungAm')"
auto-apply
@@ -27,7 +27,7 @@ export default {
return {
filter: false,
studiengang_kz: false,
counterdate: luxon.DateTime.now().setZone(FHC_JS_DATA_STORAGE_OBJECT.timezone).toISODate()
counterdate: new Date()
};
},
computed: {
@@ -259,7 +259,6 @@ export default {
<form-input
type="DatePicker"
v-model="counterdate"
model-type="yyyy-MM-dd"
input-group
:enable-time-picker="false"
text-input
@@ -79,7 +79,6 @@ export default {
<form-input
type="DatePicker"
v-model="data.buchungsdatum"
model-type="yyyy-MM-dd"
name="buchungsdatum"
:label="$p.t('konto/buchungsdatum')"
:enable-time-picker="false"
@@ -88,7 +88,7 @@ export default {
this.data = {
buchungstyp_kurzbz: '',
betrag: '-0.00',
buchungsdatum: luxon.DateTime.now().setZone(FHC_JS_DATA_STORAGE_OBJECT.timezone).toISODate(),
buchungsdatum: new Date(),
buchungstext: '',
mahnspanne: 30,
studiensemester_kurzbz: this.currentSemester,
@@ -154,7 +154,6 @@ export default {
<form-input
type="DatePicker"
v-model="data.buchungsdatum"
model-type="yyyy-MM-dd"
name="buchungsdatum"
:label="$p.t('konto/buchungsdatum')"
:enable-time-picker="false"
@@ -467,7 +467,6 @@ export default {
:label="$p.t('ui', 'von')"
type="DatePicker"
v-model="formData.von"
model-type="yyyy-MM-dd"
auto-apply
:enable-time-picker="false"
text-input
@@ -502,7 +501,6 @@ export default {
:label="$p.t('global', 'bis')"
type="DatePicker"
v-model="formData.bis"
model-type="yyyy-MM-dd"
auto-apply
:enable-time-picker="false"
text-input
@@ -325,7 +325,6 @@ export default {
:label="$p.t('infocenter', 'zgvDatum')"
type="DatePicker"
v-model="data.zgvdatum"
model-type="yyyy-MM-dd"
name="zgvdatum"
no-today
auto-apply
@@ -390,7 +389,6 @@ export default {
:label="$p.t('lehre', 'zgvMasterDatum')"
type="DatePicker"
v-model="data.zgvmadatum"
model-type="yyyy-MM-dd"
name="zgvmadatum"
no-today
auto-apply
@@ -456,7 +454,6 @@ export default {
:label="$p.t('lehre', 'zgvDoktorDatum')"
type="DatePicker"
v-model="data.zgvdoktordatum"
model-type="yyyy-MM-dd"
name="zgvdoktordatum"
no-today
auto-apply
@@ -135,11 +135,6 @@ export default{
.then(result => {
this.statusNew = false;
this.formData = result.data;
//to show Date in correct format in the modal (is timestamp in database)
if (this.formData.bewerbung_abgeschicktamum) {
this.formData.bewerbung_abgeschicktamum =
this.formData.bewerbung_abgeschicktamum.substring(0, 10);
}
this.originalDatum = new Date(result.data.datum);
return prestudent;
})
@@ -281,7 +276,6 @@ export default{
container-class="mb-3"
type="DatePicker"
v-model="formData.datum"
model-type="yyyy-MM-dd"
name="datum"
:label="$p.t('global/datum')"
auto-apply
@@ -297,7 +291,6 @@ export default{
container-class="mb-3"
type="DatePicker"
v-model="formData.bestaetigtam"
model-type="yyyy-MM-dd"
name="bestaetigtam"
:label="$p.t('lehre/bestaetigt_am')"
auto-apply
@@ -313,7 +306,6 @@ export default{
container-class="mb-3"
type="DatePicker"
v-model="formData.bewerbung_abgeschicktamum"
model-type="yyyy-MM-dd"
name="bewerbung_abgeschicktamum"
:label="$p.t('lehre/bewerbung_abgeschickt_am')"
auto-apply
@@ -285,7 +285,6 @@ export default {
uid="stv-list-new-gebdatum"
name="gebdatum"
v-model="formDataPerson['gebdatum']"
model-type="yyyy-MM-dd"
:disabled="!!person"
@update:model-value="loadSuggestions"
text-input
+8 -16
View File
@@ -218,23 +218,15 @@ export const CoreFilterCmpt = {
},
columnsForFilter() {
if (!this.filteredColumns || !this.datasetMetadata) return [];
const localizedColumnTitles = this.tabulator.getLang().columns;
const isTabulatorLocalized = !!this.$props.tabulatorOptions.locale;
let filterTitles;
if (isTabulatorLocalized) {
const localizedColumnTitles = this.tabulator.getLang().columns;
filterTitles = this.filteredColumns.reduce((a, c) => {
a[c.field] = localizedColumnTitles[c.field];
return a;
}, {});
} else {
filterTitles = this.filteredColumns.reduce((a, c) => {
a[c.field] = c.title;
return a;
}, {});
}
const filterTitles = this.filteredColumns.reduce((a, c) => {
a[c.field] =
isTabulatorLocalized && localizedColumnTitles[c.field]
? localizedColumnTitles[c.field]
: c.title;
return a;
}, {});
return this.datasetMetadata.map((el) => ({
...el,
...{ title: filterTitles[el.name] },
Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

+2 -2
View File
@@ -211,7 +211,7 @@
<td>Kurzbz*</td>
<td><input type="text" name="kurzbz" '.($lv->lehrveranstaltung_id==''?'onchange="copyToLehreVz();"':'onchange="return copyToLehreVzAsk();"').' value="'.$lv->kurzbz.'" /></td>
<td>Bezeichnung*</td>
<td colspan=3><input type="text" name="bezeichnung" value="'.htmlentities($lv->bezeichnung, ENT_QUOTES, 'UTF-8').'" size="60" maxlength="128"></td>
<td colspan=3><input type="text" name="bezeichnung" value="'.htmlentities($lv->bezeichnung ?? '', ENT_QUOTES, 'UTF-8').'" size="60" maxlength="128"></td>
</tr>
<tr>
<td>Sprache</td>
@@ -227,7 +227,7 @@
}
$htmlstr .= '</select></td>
<td>Bezeichnung English</td>
<td colspan=3><input type="text" name="bezeichnung_english" value="'.htmlentities($lv->bezeichnung_english, ENT_QUOTES, 'UTF-8').'" size="60" maxlength="256"></td>
<td colspan=3><input type="text" name="bezeichnung_english" value="'.htmlentities($lv->bezeichnung_english ?? '', ENT_QUOTES, 'UTF-8').'" size="60" maxlength="256"></td>
</tr><tr>
<td>Studiengang</td>
<td><select name="studiengang_kz">';
@@ -725,7 +725,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
$htmlstr .= '</a></p>';
}
}
if (count($bn) > 0)
if (count($bn->berechtigungen) > 0)
{
$htmlstr .= "<p><a href='benutzerberechtigung_detailliste.php?uid=$uid' target='_blank'>Rechte Detailaufschlüsselung</a></p>";
}
@@ -928,7 +928,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
$data = 'gruen';
}
// Inaktive Elemente sowie WaWi-Rechte ausblenden
if ($b->ende!='' && strtotime($b->ende) < $heute || $b->rolle_kurzbz == 'wawi' || substr($b->berechtigung_kurzbz, 0, 4) == 'wawi')
if ($b->ende!='' && strtotime($b->ende) < $heute || $b->rolle_kurzbz == 'wawi' || substr($b->berechtigung_kurzbz ?? '', 0, 4) == 'wawi')
{
$htmlstr .= " <tr class='row_berechtigung ausgeblendet' id='".$b->benutzerberechtigung_id."'>";
$countInaktiveUndWawi++;
@@ -1061,7 +1061,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
name='dataset[$b->benutzerberechtigung_id][anmerkung]'
class='input_anmerkung $inaktiv_class'
value='".$b->anmerkung."'
title='".$db->convert_html_chars(mb_eregi_replace('\r'," ",$b->anmerkung))."'
title='".$db->convert_html_chars(mb_eregi_replace('\r'," ",$b->anmerkung ?? ''))."'
data-toggle='tooltip'
data-html='true'
data-placement='auto'