From f6f2defc8c6fa9587dbbc1680bae95965d5595e1 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Tue, 23 May 2023 18:48:18 +0200 Subject: [PATCH 01/25] Bismeldestichtag: added table --- system/dbupdate_3.4.php | 2 + ...student_status_nach_bismeldung_sperren.php | 39 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index 679c21b87..01dd9ea8f 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -37,6 +37,7 @@ require_once('dbupdate_3.4/10001_tempus_mitarbeiter_kurzbz_bei_reservierungen_an require_once('dbupdate_3.4/27949_infocenter_zurueckstellen_mit_grund.php'); require_once('dbupdate_3.4/27107_vilesci_erfassung_abwesenheiten_reinigung.php'); require_once('dbupdate_3.4/24913_tabelle_raumtyp_neues_attribut_aktiv.php'); +require_once('dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php'); // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -55,6 +56,7 @@ $tabellen=array( "bis.tbl_bisfunktion" => array("bisverwendung_id","studiengang_kz","sws","updateamum","updatevon","insertamum","insertvon","ext_id"), "bis.tbl_bisio" => array("bisio_id","mobilitaetsprogramm_code","nation_code","von","bis","zweck_code","student_uid","updateamum","updatevon","insertamum","insertvon","ext_id","ort","universitaet","lehreinheit_id","ects_erworben","ects_angerechnet","herkunftsland_code"), "bis.tbl_bisio_zweck" => array("bisio_id","zweck_code"), + "bis.tbl_bismeldestichtag" => array("studiensemester_kurzbz","meldestichtag"), "bis.tbl_bisstandort" => array("standort_code","bezeichnung","aktiv","insertamum","insertvon","updateamum","updatevon"), "bis.tbl_bisverwendung" => array("bisverwendung_id","ba1code","ba2code","vertragsstunden","beschausmasscode","verwendung_code","mitarbeiter_uid","hauptberufcode","hauptberuflich","habilitation","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","dv_art","inkludierte_lehre","zeitaufzeichnungspflichtig","azgrelevant", "homeoffice"), "bis.tbl_bundesland" => array("bundesland_code","kurzbz","bezeichnung"), diff --git a/system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php b/system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php new file mode 100644 index 000000000..0d5819c49 --- /dev/null +++ b/system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php @@ -0,0 +1,39 @@ +db_query('SELECT 1 FROM bis.tbl_bismeldestichtag LIMIT 1')) +{ + $qry = 'CREATE TABLE bis.tbl_bismeldestichtag ( + studiensemester_kurzbz varchar(16), + meldestichtag date NOT NULL, + insertamum timestamp DEFAULT NOW(), + insertvon varchar(32), + updateamum timestamp, + updatevon varchar(32) + ); + + COMMENT ON TABLE bis.tbl_bismeldestichtag IS \'Deadline Dates for BIS reporting\'; + + ALTER TABLE bis.tbl_bismeldestichtag ADD CONSTRAINT pk_bismeldestichtag PRIMARY KEY (studiensemester_kurzbz); + + ALTER TABLE bis.tbl_bismeldestichtag ADD CONSTRAINT fk_bismeldestichtag_studiensemester_kurzbz FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;'; + + if (!$db->db_query($qry)) + echo 'bis.tbl_bismeldestichtag: '.$db->db_last_error().'
'; + else + echo '
bis.tbl_bismeldestichtag table created'; + + $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_bismeldestichtag TO web;'; + if (!$db->db_query($qry)) + echo 'bis.tbl_bismeldestichtag: '.$db->db_last_error().'
'; + else + echo '
Granted privileges to web on bis.tbl_bismeldestichtag'; + + $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_bismeldestichtag TO vilesci;'; + if (!$db->db_query($qry)) + echo 'bis.tbl_bismeldestichtag: '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on bis.tbl_bismeldestichtag'; +} From 0a179c963f6a77af978432baaf2f432e50cf4e2a Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 25 May 2023 16:35:44 +0200 Subject: [PATCH 02/25] bismeldestichtag: added meldestichtag_id to table, created bismeldestichtag class, improved comment for prestudentstatuschecks in studentDBML --- content/student/studentDBDML.php | 7 +- include/bismeldestichtag.class.php | 144 ++++++++++++++++++ system/dbupdate_3.4.php | 2 +- ...student_status_nach_bismeldung_sperren.php | 25 ++- 4 files changed, 172 insertions(+), 6 deletions(-) create mode 100644 include/bismeldestichtag.class.php diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 2d5c9e0b8..c5818ebb3 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -74,6 +74,7 @@ require_once('../../include/reihungstest.class.php'); require_once('../../include/studienplan.class.php'); require_once('../../include/mobilitaet.class.php'); require_once('../../include/studienordnung.class.php'); +require_once('../../include/bismeldestichtag.class.php'); $user = get_uid(); $db = new basis_db(); @@ -383,7 +384,7 @@ function isBuchungAllowedToChange($buchung_obj) * @param $new_status_ausbildungssemester Ausbildungssemester des neuen/zu ändernen Status * @param $old_status_studiensemester Studiensemester des alten Status, leer wenn neuer Status * @param $old_status_ausbildungssemester Ausbildungssemester des alten Status, leer wenn neuer Status - * @return array + * @return array mit error = true und Fehlerbeschreibung wenn ungültig, andernfalls error = false */ function checkStatusaenderung( $prestudent_id, $status_kurzbz, $new_status_studiensemester, $new_status_datum, $new_status_ausbildungssemester, @@ -417,7 +418,7 @@ function checkStatusaenderung( $studiensemester->load($new_status_studiensemester); $new_status_semesterstart = new DateTime($studiensemester->start); - // Alle bisherigen prestudentstatus nach Datum sortiert + // Alle prestudentstatus nach Datum sortiert $qry = "SELECT status_kurzbz, studiensemester_kurzbz, ausbildungssemester, datum, sem.start AS studiensemester_start FROM public.tbl_prestudentstatus pss JOIN public.tbl_studiensemester sem USING (studiensemester_kurzbz) @@ -464,7 +465,7 @@ function checkStatusaenderung( // Gültige Zeitabfolge, bestehenden Status hinzufügen $statusArr[] = $row; } - // oder Neuer/editierter Statuseintrag nach bestehendem Statuseintrag + // oder Neuer/editierter Statuseintrag vor bestehendem Statuseintrag elseif ($new_status_datum <= $status_datum && $new_status_semesterstart <= $studiensemester_start) { // Gültige Zeitabfolge, bestehenden Status hinzufügen diff --git a/include/bismeldestichtag.class.php b/include/bismeldestichtag.class.php new file mode 100644 index 000000000..e4b3746a6 --- /dev/null +++ b/include/bismeldestichtag.class.php @@ -0,0 +1,144 @@ +, + */ +require_once(dirname(__FILE__).'/basis_db.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(16) + public $updateamum; // timestamp + public $updatevon; // varchar(16) + + // 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_meldestichtag 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 die Antwort eines Pruefling zu einer Frage + * + * @param $pruefling_id + * @param $frage_id + * @return boolean + */ + public function getLastMeldestichtag($studiensemester_kurzbz = null) + { + $qry = "SELECT + meldestichtag, studiensemester_kurzbz + FROM + bis.tbl_meldestichtag"; + + if (isset($studiensemester_kurzbz)) + { + $qry .= " + WHERE + 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 antwort(); + + $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; + } + } +} +?> diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index 01dd9ea8f..f9920900b 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -56,7 +56,7 @@ $tabellen=array( "bis.tbl_bisfunktion" => array("bisverwendung_id","studiengang_kz","sws","updateamum","updatevon","insertamum","insertvon","ext_id"), "bis.tbl_bisio" => array("bisio_id","mobilitaetsprogramm_code","nation_code","von","bis","zweck_code","student_uid","updateamum","updatevon","insertamum","insertvon","ext_id","ort","universitaet","lehreinheit_id","ects_erworben","ects_angerechnet","herkunftsland_code"), "bis.tbl_bisio_zweck" => array("bisio_id","zweck_code"), - "bis.tbl_bismeldestichtag" => array("studiensemester_kurzbz","meldestichtag"), + "bis.tbl_bismeldestichtag" => array("meldestichtag_id", "meldestichtag", "studiensemester_kurzbz"), "bis.tbl_bisstandort" => array("standort_code","bezeichnung","aktiv","insertamum","insertvon","updateamum","updatevon"), "bis.tbl_bisverwendung" => array("bisverwendung_id","ba1code","ba2code","vertragsstunden","beschausmasscode","verwendung_code","mitarbeiter_uid","hauptberufcode","hauptberuflich","habilitation","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","dv_art","inkludierte_lehre","zeitaufzeichnungspflichtig","azgrelevant", "homeoffice"), "bis.tbl_bundesland" => array("bundesland_code","kurzbz","bezeichnung"), diff --git a/system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php b/system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php index 0d5819c49..b3e2eed7c 100644 --- a/system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php +++ b/system/dbupdate_3.4/29144_prestudent_status_nach_bismeldung_sperren.php @@ -6,8 +6,9 @@ if (! defined('DB_NAME')) exit('No direct script access allowed'); if (!$result = @$db->db_query('SELECT 1 FROM bis.tbl_bismeldestichtag LIMIT 1')) { $qry = 'CREATE TABLE bis.tbl_bismeldestichtag ( - studiensemester_kurzbz varchar(16), + meldestichtag_id integer, meldestichtag date NOT NULL, + studiensemester_kurzbz varchar(16) NOT NULL, insertamum timestamp DEFAULT NOW(), insertvon varchar(32), updateamum timestamp, @@ -16,7 +17,15 @@ if (!$result = @$db->db_query('SELECT 1 FROM bis.tbl_bismeldestichtag LIMIT 1')) COMMENT ON TABLE bis.tbl_bismeldestichtag IS \'Deadline Dates for BIS reporting\'; - ALTER TABLE bis.tbl_bismeldestichtag ADD CONSTRAINT pk_bismeldestichtag PRIMARY KEY (studiensemester_kurzbz); + ALTER TABLE bis.tbl_bismeldestichtag ADD CONSTRAINT pk_bismeldestichtag PRIMARY KEY (meldestichtag_id); + + CREATE SEQUENCE bis.tbl_meldestichtag_meldestichtag_id_seq + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + + ALTER TABLE bis.tbl_bismeldestichtag ALTER COLUMN meldestichtag_id SET DEFAULT nextval(\'tbl_meldestichtag_meldestichtag_id_seq\'); ALTER TABLE bis.tbl_bismeldestichtag ADD CONSTRAINT fk_bismeldestichtag_studiensemester_kurzbz FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;'; @@ -36,4 +45,16 @@ if (!$result = @$db->db_query('SELECT 1 FROM bis.tbl_bismeldestichtag LIMIT 1')) echo 'bis.tbl_bismeldestichtag: '.$db->db_last_error().'
'; else echo '
Granted privileges to vilesci on bis.tbl_bismeldestichtag'; + + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE bis.tbl_meldestichtag_meldestichtag_id_seq TO web;'; + if (!$db->db_query($qry)) + echo 'bis.tbl_meldestichtag_meldestichtag_id_seq: '.$db->db_last_error().'
'; + else + echo '
Granted privileges to web on bis.tbl_meldestichtag_meldestichtag_id_seq'; + + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE bis.tbl_meldestichtag_meldestichtag_id_seq TO vilesci;'; + if (!$db->db_query($qry)) + echo 'bis.tbl_meldestichtag_meldestichtag_id_seq: '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on bis.tbl_meldestichtag_meldestichtag_id_seq'; } From 42197c39ed188cb2f6b74972b9d627e83b2c3899 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Sat, 3 Jun 2023 15:18:06 +0200 Subject: [PATCH 03/25] FAS prestudents status: check is Meldestichtag is reached and disable input if it is, bismeldestichtag table: added sequence primary key --- content/student/studentDBDML.php | 38 +++++++++++++++- content/student/studentoverlay.js.php | 8 +++- content/student/studentrolledialog.xul.php | 30 ++++++++----- include/bismeldestichtag.class.php | 45 ++++++++++++++++--- ...student_status_nach_bismeldung_sperren.php | 9 ++-- 5 files changed, 104 insertions(+), 26 deletions(-) diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index c5818ebb3..b08d977e8 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -995,6 +995,18 @@ if(!$error) { $new_status_datum = isset($_POST['datum']) ? $_POST['datum'] : date('Y-m-d'); + $bismeldestichtag = new bismeldestichtag(); + + $meldestichtag_erreicht = $bismeldestichtag->checkMeldestichtagErreicht($studiensemester, $new_status_datum); + + if ($meldestichtag_erreicht === true) + { + $return = false; + $error = true; + $errormsg .= 'Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht hinzugefügt werden.'; + $anzahl_fehler++; + } + $check_statusaenderung_result = checkStatusaenderung( $prestudent_id, $_POST['status_kurzbz'], @@ -1205,13 +1217,24 @@ if(!$error) if(isset($_POST['studiensemester_kurzbz']) && isset($_POST['status_kurzbz']) && isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']) && - isset($_POST['ausbildungssemester']) && is_numeric($_POST['ausbildungssemester'])) + isset($_POST['ausbildungssemester']) && is_numeric($_POST['ausbildungssemester']) && + isset($_POST['datum'])) { - if($_POST['status_kurzbz']=='Student' && !$rechte->isBerechtigt('admin', null, 'suid') && !$rechte->isBerechtigt('student/keine_studstatuspruefung', null, 'suid')) + $erweiterteBerechtigungen = $rechte->isBerechtigt('admin', null, 'suid') || $rechte->isBerechtigt('student/keine_studstatuspruefung', null, 'suid'); + + $bismeldestichtag = new bismeldestichtag(); + $meldestichtag_erreicht = $bismeldestichtag->checkMeldestichtagErreicht($_POST['studiensemester_kurzbz'], $_POST['datum']); + + if($_POST['status_kurzbz']=='Student' && !$erweiterteBerechtigungen) { $return = false; $errormsg = 'Studentenrolle kann nur durch den Administrator geloescht werden'; } + elseif ($meldestichtag_erreicht && !$erweiterteBerechtigungen) + { + $return = false; + $errormsg = 'Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht gelöscht werden.'; + } else { $qry = "SELECT count(*) as anzahl FROM public.tbl_prestudentstatus WHERE prestudent_id=".$db->db_add_param($_POST['prestudent_id'], FHC_INTEGER); @@ -1531,6 +1554,17 @@ if(!$error) $error = true; $errormsg = isset($check_statusaenderung_result['errormsg']) ? $check_statusaenderung_result['errormsg'] : ''; } + + // Prüfung, ob Meldestichtag erreicht ist + $bismeldestichtag = new bismeldestichtag(); + $meldestichtag_erreicht = $bismeldestichtag->checkMeldestichtagErreicht($_POST['studiensemester_kurzbz'], $_POST['datum']); + + if ($meldestichtag_erreicht === true) + { + $return = false; + $error = true; + $errormsg = 'Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht hinzugefügt werden.'; + } } if(!$error) diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index d9686d5e3..f2dffc041 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -2000,6 +2000,7 @@ function StudentPrestudentRolleDelete() var studiensemester_kurzbz = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', tree.currentIndex); var prestudent_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-prestudent_id', tree.currentIndex); var ausbildungssemester = getTreeCellText(tree, 'student-prestudent-tree-rolle-ausbildungssemester', tree.currentIndex); + var datum = getTreeCellText(tree, 'student-prestudent-tree-rolle-datum', tree.currentIndex); studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; if(confirm('Diese Rolle wirklich loeschen?')) @@ -2028,6 +2029,7 @@ function StudentPrestudentRolleDelete() req.add('studiensemester_kurzbz', studiensemester_kurzbz); req.add('ausbildungssemester', ausbildungssemester); req.add('studiengang_kz', studiengang_kz); + req.add('datum', datum); var response = req.executePOST(); @@ -2059,6 +2061,7 @@ function StudentPrestudentRolleDelete() req.add('studiensemester_kurzbz', studiensemester_kurzbz); req.add('ausbildungssemester', ausbildungssemester); req.add('studiengang_kz', studiengang_kz); + req.add('datum', datum); var response = req.executePOST(); @@ -2151,8 +2154,9 @@ function StudentRolleBearbeiten() var studiensemester_kurzbz = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', tree.currentIndex); var prestudent_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-prestudent_id', tree.currentIndex); var ausbildungssemester = getTreeCellText(tree, 'student-prestudent-tree-rolle-ausbildungssemester', tree.currentIndex); + var datum = getTreeCellText(tree, 'student-prestudent-tree-rolle-datum', tree.currentIndex); - window.open('content/student/studentrolledialog.xul.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester,"Status","status=no, width=500, height=450, centerscreen, resizable"); + window.open('content/student/studentrolledialog.xul.php?prestudent_id='+prestudent_id+'&status_kurzbz='+status_kurzbz+'&studiensemester_kurzbz='+studiensemester_kurzbz+'&ausbildungssemester='+ausbildungssemester+'&datum='+datum,"Status","status=no, width=500, height=450, centerscreen, resizable"); } // **** @@ -2210,7 +2214,7 @@ function StudentRolleSpeichern(dialog, studiensemester_old, ausbildungssemester_ timepart_arr[i] = '00'; } } - + arr = datepart.split('.'); if(arr[0].length==1) diff --git a/content/student/studentrolledialog.xul.php b/content/student/studentrolledialog.xul.php index ef2c0919a..37ec0e983 100644 --- a/content/student/studentrolledialog.xul.php +++ b/content/student/studentrolledialog.xul.php @@ -31,6 +31,7 @@ require_once('../../include/person.class.php'); require_once('../../include/prestudent.class.php'); require_once('../../include/studienplan.class.php'); require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/bismeldestichtag.class.php'); echo ''."\n"; @@ -58,6 +59,11 @@ if(isset($_GET['ausbildungssemester'])) else $ausbildungssemester=''; +if(isset($_GET['datum'])) + $datum=$_GET['datum']; +else + $datum=''; + $vorname = ''; $nachname = ''; if($prestudent_id!='') @@ -67,6 +73,10 @@ if($prestudent_id!='') $vorname = $prestudent->vorname; $nachname = $prestudent->nachname; + + // Prüfen, ob Studnetrolle vor dem aktuellen Meldestichtag ist. In diesem Fall darf die Rolle nicht mehr bearbeitet werden. + $bismeldestichtag = new bismeldestichtag(); + $disabled = $bismeldestichtag->checkMeldestichtagErreicht($studiensemester_kurzbz, $datum) ? ' disabled="true"' : ''; } $db = new basis_db(); $user=get_uid(); @@ -112,7 +122,7 @@ $user=get_uid();