diff --git a/cms/dms.php b/cms/dms.php index aa79ab0c3..d6ee5be58 100644 --- a/cms/dms.php +++ b/cms/dms.php @@ -85,6 +85,7 @@ if($doc->isLocked($id)) $dokumente_arr[] .= 'ZgvBaPre'; $dokumente_arr[] .= 'ZgvMaPre'; $dokumente_arr[] .= 'InvitLet'; + $dokumente_arr[] .= 'VorlSpB2'; $dokumente_arr[] .= 'ZeitBest'; } if ($person_id!=$akte_person || !in_array($akte_dokument_kurzbz, $dokumente_arr)) diff --git a/include/dokument.class.php b/include/dokument.class.php index a2eab0e68..6dec9a66d 100644 --- a/include/dokument.class.php +++ b/include/dokument.class.php @@ -1,5 +1,5 @@ db_add_param($prestudent_id, FHC_INTEGER); - + if(!$archivdokumente) { $qry.=" AND (tbl_vorlage.archivierbar = FALSE OR tbl_vorlage.archivierbar IS NULL)"; @@ -401,7 +401,7 @@ class dokument extends basis_db } $qry = "SELECT tbl_dokument.* , tbl_dokumentstudiengang.* - FROM public.tbl_dokument + FROM public.tbl_dokument JOIN public.tbl_dokumentstudiengang USING(dokument_kurzbz) LEFT JOIN public.tbl_vorlage ON (tbl_dokument.dokument_kurzbz = tbl_vorlage.vorlage_kurzbz) WHERE studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); @@ -836,11 +836,11 @@ class dokument extends basis_db return false; } } - + /** * Liefert die Studiengänge bei denen das übergebene Dokument benötigt wird * @param string $dokument_kurzbz Kurzbz des Dokuments - * @param integer $person_id Optional. Die Dokumente werden zusätzlich auf die Studiengänge eingeschränkt für die sich eine Person beworben hat. + * @param integer $person_id Optional. Die Dokumente werden zusätzlich auf die Studiengänge eingeschränkt für die sich eine Person beworben hat. * @return object Objekt mit den Studiengängen oder false. */ public function getStudiengaengeDokument($dokument_kurzbz, $person_id = null) @@ -854,7 +854,7 @@ class dokument extends basis_db AND person_id =".$this->db_add_param($person_id, FHC_INTEGER)." AND tbl_prestudentstatus.status_kurzbz = 'Interessent' AND get_rolle_prestudent (prestudent_id, NULL) NOT IN ('Abgewiesener','Abbrecher') - + ORDER BY kuerzel"; if($result = $this->db_query($qry)) @@ -869,12 +869,12 @@ class dokument extends basis_db $stg_obj->studiengang_kz = $row->studiengang_kz; $stg_obj->english = $row->english; $stg_obj->stufe = $row->stufe; - + $this->result[] = $stg_obj; } return $stg_obj; } - else + else return false; } else @@ -882,6 +882,138 @@ class dokument extends basis_db $this->errormsg="Fehler bei der Abfrage aufgetreten"; return false; } + } + /** + * Akzeptiert ein bestimmtes Dokument + * @param char $dokument_kurzbz Bezeichner Dokument. + * @param int $person_id Personenkennzeichen. + * @return boolean true wenn akzeptiert bzw geprüft ohne Akzeptieren, false wenn Fehler + */ + public function akzeptiereDokument($dokument_kurzbz, $person_id) + { + $db = new basis_db(); + $arrayDoksZuAkzeptieren = array(); + + //get Prestudent_ids + $qry = "SELECT + prestudent_id + FROM + 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 * + from tbl_dokumentprestudent dok + where dok.prestudent_id = ps.prestudent_id + and dokument_kurzbz = ".$this->db_add_param($dokument_kurzbz).")"; + + //gibt ein Array von zu akzeptierenden Dokumenten zurück + if ($db->db_query($qry)) + { + $num_rows = $db->db_num_rows(); + + if ($num_rows > 0) + { + while ($row = $db->db_fetch_object()) + { + $arrayDoksZuAkzeptieren[] = $row->prestudent_id; + } + + //für alle prestudent_ids das Dokument akzeptieren + $qry = "INSERT INTO public.tbl_dokumentprestudent(dokument_kurzbz, prestudent_id) VALUES"; + + foreach ($arrayDoksZuAkzeptieren as $prestudent_id) + { + $qry .= "(".$this->db_add_param($dokument_kurzbz). ",". $prestudent_id. ")"; + + if (next($arrayDoksZuAkzeptieren) == true) + { + $qry .= ","; + } + } + $qry .= ";"; + + if ($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Akzeptieren'; + return false; + } + } + return true; + } + + else + return false; + } + + /** + * entakzeptiert ein bestimmtes Dokument + * @param char $dokument_kurzbz Kurzbezeichnung des zu entakzeptierenden Dokuments. + * @param int $person_id Personenkennzeichen. + * @return boolean true wenn entakzeptiert bzw geprüft ohne Entakzeptieren, false wenn Fehler + */ + public function entakzeptiereDokument($dokument_kurzbz, $person_id) + { + $db = new basis_db(); + $arrayDoksZuEntakzeptieren = array(); + + //get Prestudent_ids + $qry = "SELECT + prestudent_id + from + tbl_dokumentprestudent + join + tbl_prestudent using (prestudent_id) + where + person_id = ".$this->db_add_param($person_id)." + and dokument_kurzbz = ".$this->db_add_param($dokument_kurzbz); + + //gibt ein Array von zu Entakzeptierenden Dokumenten zurück + if ($db->db_query($qry)) + { + $num_rows = $db->db_num_rows(); + + if ($num_rows > 0) + { + while ($row = $db->db_fetch_object()) + { + $arrayDoksZuEntakzeptieren[] = $row->prestudent_id; + } + + //für alle prestudent_ids das Dokument Entakzeptieren + $qry = "DELETE FROM public.tbl_dokumentprestudent WHERE prestudent_id in ("; + + foreach ($arrayDoksZuEntakzeptieren as $prestudent_id) + { + $qry .= $prestudent_id; + + if (next($arrayDoksZuEntakzeptieren) == true) + { + $qry .= ","; + } + } + $qry .= ") AND dokument_kurzbz = ".$this->db_add_param($dokument_kurzbz).";"; + + if ($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Entakzeptieren'; + return false; + } + } + return true; + } + else + return false; } } diff --git a/include/prestudent.class.php b/include/prestudent.class.php index 823e5a9aa..eb8767883 100644 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -1,5 +1,5 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . + * Andreas Oesterreicher , + * Rudolf Hangl and + * Manuela Thamer . */ require_once(dirname(__FILE__).'/person.class.php'); require_once(dirname(__FILE__).'/log.class.php'); @@ -2215,9 +2216,9 @@ class prestudent extends person WHERE laststatus NOT IN ('Abbrecher', 'Abgewiesener', 'Absolvent') AND priorisierung <= ".$this->db_add_param($priorisierungAbsolut, FHC_INTEGER); - if($result = $this->db_query($qry)) + if ($result = $this->db_query($qry)) { - if($row = $this->db_fetch_object($result)) + if ($row = $this->db_fetch_object($result)) { return $row->prio_relativ; } @@ -2232,6 +2233,222 @@ class prestudent extends person $this->errormsg = 'Fehler beim Laden der Daten'; return false; } + } + /** + * Prueft, ob eine Person einen aktuellen PreStudentstatus-Eintrag besitzt, der die ZGV Master ersetzt + * @param int $person_id ID der zu überprüfenden Person. + * @return true wenn vorhanden + * false wenn nicht vorhanden + * false und errormsg wenn Fehler aufgetreten ist + */ + public function existsZGVIntern($person_id) + { + if (!is_numeric($person_id)) + { + $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; + return false; + } + + + $qry = "SELECT count(*) as anzahl FROM public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING (prestudent_id) + JOIN public.tbl_studiengang USING (studiengang_kz) + WHERE person_id = ".$this->db_add_param($person_id, FHC_INTEGER)." + AND status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student') + AND typ in ('b','m','d')"; + + + if ($this->db_query($qry)) + { + if ($row = $this->db_fetch_object()) + { + if ($row->anzahl > 0) + { + $this->errormsg = ''; + return true; + } + else + { + $this->errormsg = ''; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Befüllt MasterZGV-Felder: Nation mit Österreich und MasterZGV-code mit FH-Bachelor(I) + * @param int $person_id Personenkennzeichen. + * @param varchar $ort Ort. + * @return true wenn erfolgreich durchgeführt + * false und errormsg wenn ein Fehler aufgetreten ist + */ + public function setZGVMasterFields($person_id, $ort) + { + if (!is_numeric($person_id)) + { + $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; + return false; + } + + $db = new basis_db(); + $arrayleereManations = array(); + + //all prestudent_ids mit Status Interessent + $qry = "SELECT + * + FROM + public.tbl_prestudent + JOIN + public.tbl_studiengang USING (studiengang_kz) + WHERE + person_id = ".$this->db_add_param($person_id)." + AND + typ ='m' + And + get_rolle_prestudent(prestudent_id, null) = 'Interessent';"; + + if ($db->db_query($qry)) + { + $num_rows = $db->db_num_rows(); + + if ($num_rows > 0) + { + while ($row = $db->db_fetch_object()) + { + $arrayleereManations[] = $row->prestudent_id; + } + + if ($arrayleereManations) + { + $qry = "UPDATE + public.tbl_prestudent + SET + (zgvmanation, zgvmaort, zgvmas_code) = ('A',".$this->db_add_param($ort).",1) + WHERE + prestudent_id in ("; + + foreach ($arrayleereManations as $prestudent_id) + { + $qry .= $prestudent_id; + + if (next($arrayleereManations) == true) + { + $qry .= ","; + } + } + $qry .= ");"; + + if ($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Eintragen zgvMasterFields'; + return false; + } + } + } + else + return true; + } + } + + + /** + * Prueft, ob eine Person einen aktuellen PreStudentstatus-Eintrag Interessent für einen Masterstudiengang besitzt + * @param int $person_id ID der zu überprüfenden Person. + * @return true wenn vorhanden, false wenn nicht vorhanden + */ + public function existsStatusInteressentMaster($person_id) + { + if (!is_numeric($person_id)) + { + $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; + return false; + } + + $db = new basis_db(); + $prestudentsOfMaster = array(); + + $qry = "SELECT + prestudent_id + FROM + tbl_prestudent ps, tbl_studiengang sg + WHERE + ps.studiengang_kz = sg.studiengang_kz + AND + sg.typ in ('m') + AND + person_id = ".$this->db_add_param($person_id)." + And + get_rolle_prestudent(prestudent_id, null) = 'Interessent';"; + + if ($db->db_query($qry)) + { + $num_rows = $db->db_num_rows(); + if ($num_rows > 0) + { + return true; + } + } + else + return false; + } + + + /** + * Liefert den wahrscheinlichen Studiengang der MasterZGV einer Person + * @param int $person_id ID der zu überprüfenden Person. + * @return string studiengangkurzbzlang + */ + public function getZGVMasterStg($person_id) + { + if (!is_numeric($person_id)) + { + $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT kurzbzlang + FROM public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING (prestudent_id) + JOIN public.tbl_studiengang USING (studiengang_kz) + WHERE person_id = ".$this->db_add_param($person_id, FHC_INTEGER)." + AND status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student') + AND typ in ('b','m','d') + ORDER BY status_kurzbz ASC + LIMIT 1;"; + + if ($this->db_query($qry)) + { + if ($row = $this->db_fetch_object()) + { + $stg = $row->kurzbzlang; + return $stg; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } } } diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index ac07aabc1..48d2b5108 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4797,6 +4797,20 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht } +// INSERT,DELETE,UPDATE Berechtigung für tbl_dokumentprestudent hinzufügen +if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_dokumentprestudent' AND table_schema='public' AND grantee='web' AND privilege_type in ('INSERT','DELETE','UPDATE')")) +{ + if($db->db_num_rows($result)==0) + { + $qry = "GRANT INSERT, DELETE, UPDATE ON public.tbl_dokumentprestudent TO web;"; + + if(!$db->db_query($qry)) + echo 'dokumentprestudent Berechtigungen: '.$db->db_last_error().'
'; + else + echo '
Granted privileges to public.tbl_dokumentprestudent'; + } +} + // Add table zgvpruefungstatus if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_zgvpruefungstatus LIMIT 1;")) {