diff --git a/include/dokument.class.php b/include/dokument.class.php
index a2eab0e68..b2b59b6dd 100644
--- a/include/dokument.class.php
+++ b/include/dokument.class.php
@@ -884,4 +884,179 @@ class dokument extends basis_db
}
}
+
+ /**
+ * Akzeptiert ein bestimmtes Dokument
+ * Optional kann auch eine studiengang_kz uebergeben werden, ob speziell dort das Dokument akzeptiert wurde
+ * @param $dokument_kurzbz
+ * @param $person_id
+ * @param $studiengang_kz integer oder array aus mehreren studiengang_kz
+ * @return boolean true wenn akzeptiert, false wenn noch nicht akzeptiert
+ */
+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).")";
+
+
+ //echo var_dump($qry);
+ //for all prestudents
+
+
+ //gibt ein Array von zu akzeptierenden Dokumenten zurück
+ if($db->db_query($qry))
+ {
+ $num_rows = $db->db_num_rows();
+ // Wenn kein ergebnis return 0 sonst ID
+ if ($num_rows>0)
+ {
+ while($row = $db->db_fetch_object())
+ {
+ //echo var_dump($row->prestudent_id);
+ $arrayDoksZuAkzeptieren[] = $row->prestudent_id;
+ }
+ //print_r($arrayDoksZuAkzeptieren);
+
+ //und jetzt für alle prestudent_ids das Dokument akzeptieren
+
+ $qry = "INSERT INTO public.tbl_dokumentprestudent(dokument_kurzbz, prestudent_id) VALUES";
+ //echo $qry;
+
+ foreach ($arrayDoksZuAkzeptieren AS $prestudent_id){
+ $qry.= "(".$this->db_add_param($dokument_kurzbz). ",". $prestudent_id . ")";
+
+ if (next($arrayDoksZuAkzeptieren)==true){
+ $qry.= ",";
+ }
+ }
+ $qry.= ";";
+
+ echo $qry;
+
+ if($this->db_query($qry))
+ {
+ echo " Jawoll: query ausgeführt";
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Akzeptieren';
+ return false;
+ }
+
+
+ }
+ else
+ {
+ echo "keine zu akzeptierenden Doks vorhanden";
+ }
+
+ return true;
+ }
+
+ else
+ return false;
+}
+
+ /**
+ * entakzeptiert ein bestimmtes Dokument
+ * Optional kann auch eine studiengang_kz uebergeben werden, ob speziell dort das Dokument entakzeptiert wurde
+ * @param $dokument_kurzbz
+ * @param $person_id
+ * @param $studiengang_kz integer oder array aus mehreren studiengang_kz
+ * @return boolean true wenn entakzeptiert, false wenn noch nicht entakzeptiert
+ */
+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);
+
+ // echo var_dump($qry);
+ //for all prestudents
+
+
+ //gibt ein Array von zu Entakzeptierenden Dokumenten zurück
+ if($db->db_query($qry))
+ {
+ $num_rows = $db->db_num_rows();
+ // Wenn kein ergebnis return 0 sonst ID
+ if ($num_rows>0)
+ {
+ while($row = $db->db_fetch_object())
+ {
+ //echo var_dump($row->prestudent_id);
+ $arrayDoksZuEntakzeptieren[] = $row->prestudent_id;
+ }
+ print_r($arrayDoksZuEntakzeptieren);
+
+ //und jetzt für alle prestudent_ids das Dokument Entakzeptieren
+
+ $qry = "DELETE FROM public.tbl_dokumentprestudent WHERE prestudent_id in (";
+ //echo $qry;
+
+ foreach ($arrayDoksZuEntakzeptieren AS $prestudent_id){
+ $qry.= $prestudent_id;
+
+ if (next($arrayDoksZuEntakzeptieren)==true){
+ $qry.= ",";
+ }
+ }
+ $qry.= ");";
+
+ echo $qry;
+
+ if($this->db_query($qry))
+ {
+ echo " Jawoll: query ausgeführt";
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Entakzeptieren';
+ return false;
+ }
+
+
+ }
+ else
+ {
+ echo "keine Entzuakzeptierenden Doks vorhanden";
+ }
+
+ return true;
+ }
+
+ else
+ return false;
+}
+
+
+
}
diff --git a/include/prestudent.class.php b/include/prestudent.class.php
index 823e5a9aa..3b1e4d8a2 100644
--- a/include/prestudent.class.php
+++ b/include/prestudent.class.php
@@ -2234,4 +2234,57 @@ class prestudent extends person
}
}
+
+ /**
+ * Prueft, ob eine Person einen aktuellen PreStudentstatus-Eintrag besitzt, der die ZGV Master ersetzt
+ * @param integer $person_id
+ * @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;
+ }
+ }
+
}
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index e658d7a97..bed369c1a 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -4767,6 +4767,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';
+ }
+}
+
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '