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';
}