diff --git a/include/studiengang.class.php b/include/studiengang.class.php
index 530b072c0..676ee97f3 100644
--- a/include/studiengang.class.php
+++ b/include/studiengang.class.php
@@ -27,35 +27,36 @@ class studiengang extends basis_db
public $new; // boolean
public $result = array(); // studiengang Objekt
- public $studiengang_kz; // integer
- public $kurzbz; // varchar(5)
- public $kurzbzlang; // varchar(10)
- public $bezeichnung; // varchar(128)
- public $english; // varchar(128)
- public $typ; // char(1)
- public $farbe; // char(6)
- public $email; // varchar(64)
- public $max_semester; // smallint
- public $max_verband; // char(1)
- public $max_gruppe; // char(1)
- public $erhalter_kz; // smallint
- public $bescheid; // varchar(256)
- public $bescheidbgbl1; // varchar(16)
- public $bescheidbgbl2; // varchar(16)
- public $bescheidgz; // varchar(16)
- public $bescheidvom; // Date
- public $titelbescheidvom; // Date
- public $ext_id; // bigint
- public $orgform_kurzbz; // varchar(3)
- public $zusatzinfo_html; // text
- public $sprache; // varchar(16)
- public $testtool_sprachwahl;// boolean
- public $studienplaetze; // smallint
- public $oe_kurzbz; // varchar(32)
- public $onlinebewerbung; // boolean
- public $melderelevant; // boolean
- public $foerderrelevant; // boolean
- public $standort_code; // integer
+ public $studiengang_kz; // integer
+ public $kurzbz; // varchar(5)
+ public $kurzbzlang; // varchar(10)
+ public $bezeichnung; // varchar(128)
+ public $english; // varchar(128)
+ public $typ; // char(1)
+ public $farbe; // char(6)
+ public $email; // varchar(64)
+ public $max_semester; // smallint
+ public $max_verband; // char(1)
+ public $max_gruppe; // char(1)
+ public $erhalter_kz; // smallint
+ public $bescheid; // varchar(256)
+ public $bescheidbgbl1; // varchar(16)
+ public $bescheidbgbl2; // varchar(16)
+ public $bescheidgz; // varchar(16)
+ public $bescheidvom; // Date
+ public $titelbescheidvom; // Date
+ public $ext_id; // bigint
+ public $orgform_kurzbz; // varchar(3)
+ public $zusatzinfo_html; // text
+ public $sprache; // varchar(16)
+ public $testtool_sprachwahl; // boolean
+ public $studienplaetze; // smallint
+ public $oe_kurzbz; // varchar(32)
+ public $onlinebewerbung; // boolean
+ public $melderelevant; // boolean
+ public $foerderrelevant; // boolean
+ public $standort_code; // integer
+ public $melde_studiengang_kz; // varchar(32)
public $kuerzel; // = typ + kurzbz (Bsp: BBE)
public $kuerzel_arr = array(); // Array mit allen Kurzeln Index=studiengangs_kz
@@ -134,6 +135,7 @@ class studiengang extends basis_db
$this->melderelevant = $this->db_parse_bool($row->melderelevant);
$this->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$this->standort_code = $row->standort_code;
+ $this->melde_studiengang_kz = $row->melde_studiengang_kz;
$this->bezeichnung_arr['German'] = $this->bezeichnung;
$this->bezeichnung_arr['English'] = $this->english;
@@ -210,6 +212,7 @@ class studiengang extends basis_db
$stg_obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$stg_obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$stg_obj->standort_code = $row->standort_code;
+ $stg_obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$stg_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$stg_obj->bezeichnung_arr['English'] = $row->english;
@@ -431,6 +434,7 @@ class studiengang extends basis_db
$stg_obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$stg_obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$stg_obj->standort_code = $row->standort_code;
+ $stg_obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$stg_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$stg_obj->bezeichnung_arr['English'] = $row->english;
@@ -474,6 +478,11 @@ class studiengang extends basis_db
$this->errormsg = 'studiengang_kz ungueltig!';
return false;
}
+ if(isset($this->melde_studiengang_kz) && $this->melde_studiengang_kz != '' && !is_numeric($this->melde_studiengang_kz))
+ {
+ $this->errormsg = 'melde_studiengang_kz ungueltig!';
+ return false;
+ }
$this->errormsg = '';
return true;
}
@@ -501,7 +510,7 @@ class studiengang extends basis_db
typ, farbe, email, telefon, max_verband, max_semester, max_gruppe, erhalter_kz, bescheid, bescheidbgbl1,
bescheidbgbl2, bescheidgz, bescheidvom, titelbescheidvom, aktiv, onlinebewerbung, orgform_kurzbz, zusatzinfo_html,
oe_kurzbz, moodle, sprache, testtool_sprachwahl, studienplaetze, lgartcode, mischform,projektarbeit_note_anzeige,
- melderelevant, foerderrelevant, standort_code) VALUES ('.
+ melderelevant, foerderrelevant, standort_code, melde_studiengang_kz) VALUES ('.
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '.
$this->db_add_param($this->kurzbz).', '.
$this->db_add_param($this->kurzbzlang).', '.
@@ -535,7 +544,8 @@ class studiengang extends basis_db
$this->db_add_param($this->projektarbeit_note_anzeige, FHC_BOOLEAN).','.
$this->db_add_param($this->melderelevant, FHC_BOOLEAN).','.
$this->db_add_param($this->foerderrelevant, FHC_BOOLEAN).','.
- $this->db_add_param($this->standort_code).');';
+ $this->db_add_param($this->standort_code).','.
+ $this->db_add_param($this->melde_studiengang_kz).');';
}
else
{
@@ -575,7 +585,8 @@ class studiengang extends basis_db
'mischform='.$this->db_add_param($this->mischform, FHC_BOOLEAN).', '.
'melderelevant='.$this->db_add_param($this->melderelevant, FHC_BOOLEAN).', '.
'foerderrelevant='.$this->db_add_param($this->foerderrelevant, FHC_BOOLEAN).', '.
- 'standort_code='.$this->db_add_param($this->standort_code).' '.
+ 'standort_code='.$this->db_add_param($this->standort_code).', '.
+ 'melde_studiengang_kz='.$this->db_add_param($this->melde_studiengang_kz).' '.
'WHERE studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER, false).';';
}
@@ -701,6 +712,7 @@ class studiengang extends basis_db
$this->melderelevant = $this->db_parse_bool($row->melderelevant);
$this->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$this->standort_code = $row->standort_code;
+ $this->melde_studiengang_kz = $row->melde_studiengang_kz;
$this->projektarbeit_note_anzeige = $this->db_parse_bool($row->projektarbeit_note_anzeige);
$this->bezeichnung_arr['German'] = $this->bezeichnung;
@@ -844,6 +856,7 @@ class studiengang extends basis_db
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$obj->standort_code = $row->standort_code;
+ $obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$this->result[] = $obj;
@@ -1024,6 +1037,7 @@ class studiengang extends basis_db
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$obj->standort_code = $row->standort_code;
+ $obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$obj->bezeichnung_arr['German'] = $obj->bezeichnung;
$obj->bezeichnung_arr['English'] = $obj->english;
@@ -1161,6 +1175,7 @@ class studiengang extends basis_db
$obj->melderelevant = $this->db_parse_bool($row->melderelevant);
$obj->foerderrelevant = $this->db_parse_bool($row->foerderrelevant);
$obj->standort_code = $row->standort_code;
+ $obj->melde_studiengang_kz = $row->melde_studiengang_kz;
$obj->bezeichnung_arr['German'] = $obj->bezeichnung;
$obj->bezeichnung_arr['English'] = $obj->english;
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index 7965a0518..bca2f9c55 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -6126,6 +6126,33 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservic
}
}
+// Add column melde_studiengang_kz to public.tbl_studiengang and prefill values
+if (!$result = @$db->db_query("SELECT melde_studiengang_kz FROM public.tbl_studiengang LIMIT 1"))
+{
+ $qry = "ALTER TABLE public.tbl_studiengang ADD COLUMN melde_studiengang_kz varchar(32);
+ UPDATE public.tbl_studiengang stg SET melde_studiengang_kz = (SELECT lpad(abs(studiengang_kz)::text, 4, '0') FROM tbl_studiengang WHERE studiengang_kz = stg.studiengang_kz) WHERE melderelevant AND lgartcode IS NULL;
+ UPDATE public.tbl_studiengang stg SET melde_studiengang_kz = (SELECT (SELECT lpad(erhalter_kz::text, 3, '0') FROM public.tbl_erhalter) || lpad(abs(studiengang_kz)::text, 4, '0') FROM tbl_studiengang WHERE studiengang_kz = stg.studiengang_kz) WHERE melderelevant AND lgartcode IS NOT NULL;
+ COMMENT ON COLUMN public.tbl_studiengang.melde_studiengang_kz IS 'Studiengangskennzahl, mit der der Studiengang gemeldet wird (z.B. Bismeldung)'";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_studiengang: '.$db->db_last_error().'
';
+ else
+ echo '
public.tbl_studiengang: Neue Spalte melde_studiengang_kz hinzugefuegt.';
+}
+
+// Add permission for calling certain APIs in Datenverbund extension
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'extension/dvuh_gui_ekz_anfordern';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('extension/dvuh_gui_ekz_anfordern', 'Berechtigung für Abfage des Ersatzkennzeichens in der Datenverbund GUI');";
+ if(!$db->db_query($qry))
+ echo 'system.tbl_berechtigung '.$db->db_last_error().'
';
+ else
+ echo '
system.tbl_berechtigung: Added permission for extension/dvuh_gui_ekz_anfordern';
+ }
+}
+
// ADD COLUMN insertamum to system.tbl_fehler_zustaendigkeiten
if(!@$db->db_query("SELECT insertamum FROM system.tbl_fehler_zustaendigkeiten LIMIT 1"))
{
@@ -6241,6 +6268,7 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
echo 'system.tbl_berechtigung '.$db->db_last_error().'
';
else
echo 'system.tbl_berechtigung: Added permission for student/keine_studstatuspruefung
';
+
}
}
@@ -6479,7 +6507,7 @@ $tabellen=array(
"public.tbl_statistik" => array("statistik_kurzbz","bezeichnung","url","gruppe","sql","content_id","insertamum","insertvon","updateamum","updatevon","berechtigung_kurzbz","publish","preferences"),
"public.tbl_student" => array("student_uid","matrikelnr","prestudent_id","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_studentlehrverband" => array("student_uid","studiensemester_kurzbz","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"),
- "public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung","melderelevant","foerderrelevant","standort_code"),
+ "public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung","melderelevant","foerderrelevant","standort_code","melde_studiengang_kz"),
"public.tbl_studiengangstyp" => array("typ","bezeichnung","beschreibung","bezeichnung_mehrsprachig"),
"public.tbl_studienjahr" => array("studienjahr_kurzbz","bezeichnung"),
"public.tbl_studiensemester" => array("studiensemester_kurzbz","bezeichnung","start","ende","studienjahr_kurzbz","ext_id","beschreibung","onlinebewerbung"),
diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php
index cf33c5319..bfa916457 100644
--- a/vilesci/bis/studentenmeldung.php
+++ b/vilesci/bis/studentenmeldung.php
@@ -304,7 +304,9 @@ elseif ($stg_kz == 'alleBaMa')
JOIN public.tbl_studiengang ON (tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz)
WHERE
bismelden=TRUE
- AND tbl_studiengang.typ IN ('b','m')
+ AND tbl_studiengang.typ IN ('b','m','e')
+ AND tbl_studiengang.melderelevant=TRUE
+ AND tbl_studiengang.studiengang_kz > 0
AND (((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem).") AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).")
AND (status_kurzbz='Student' OR status_kurzbz='Outgoing'
OR status_kurzbz='Praktikant' OR status_kurzbz='Diplomand' OR status_kurzbz='Absolvent'
diff --git a/vilesci/stammdaten/studiengang_details.php b/vilesci/stammdaten/studiengang_details.php
index 46915f52e..d7f1a61d6 100644
--- a/vilesci/stammdaten/studiengang_details.php
+++ b/vilesci/stammdaten/studiengang_details.php
@@ -92,6 +92,7 @@ $lgartcode='';
$melderelevant = false;
$foerderrelevant = false;
$standort_code='';
+$melde_studiengang_kz = '';
$schick = filter_input(INPUT_POST, 'schick');
$onlinebewerbung = false;
@@ -155,6 +156,7 @@ if($schick)
$melderelevant = filter_input(INPUT_POST, 'melderelevant', FILTER_VALIDATE_BOOLEAN);
$foerderrelevant = filter_input(INPUT_POST, 'foerderrelevant', FILTER_VALIDATE_BOOLEAN);
$standort_code = filter_input(INPUT_POST, 'standort_code');
+ $melde_studiengang_kz = filter_input(INPUT_POST, 'melde_studiengang_kz');
$ext_id = filter_input(INPUT_POST, 'ext_id');
@@ -223,6 +225,7 @@ if($schick)
$sg_update->melderelevant = $melderelevant;
$sg_update->foerderrelevant = $foerderrelevant;
$sg_update->standort_code = $standort_code;
+ $sg_update->melde_studiengang_kz = $melde_studiengang_kz;
$sg_update->bescheidvom=$date->formatDatum($sg_update->bescheidvom,'Y-m-d');
$sg_update->titelbescheidvom=$date->formatDatum($sg_update->titelbescheidvom,'Y-m-d');
@@ -292,6 +295,7 @@ if ((isset($_REQUEST['studiengang_kz'])) && ((!isset($_REQUEST['neu'])) || ($_RE
$melderelevant = $sg->melderelevant;
$foerderrelevant = $sg->foerderrelevant;
$standort_code = $sg->standort_code;
+ $melde_studiengang_kz = $sg->melde_studiengang_kz;
}
$erh = new erhalter();
@@ -611,6 +615,12 @@ if (!$erh->getAll('kurzbz'))
| Meldestudiengangskennzahl | ++ + | +
| Bezeichnung |