diff --git a/include/globals.inc.php b/include/globals.inc.php
new file mode 100644
index 000000000..6d4c4a726
--- /dev/null
+++ b/include/globals.inc.php
@@ -0,0 +1,25 @@
+
\ No newline at end of file
diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php
new file mode 100644
index 000000000..d18883cba
--- /dev/null
+++ b/include/lehrstunde.class.php
@@ -0,0 +1,457 @@
+conn=$conn;
+ $this->new=TRUE;
+ }
+
+
+ /**
+ * Einen Datensatz laden
+ *
+ */
+ function load($stundenplan_id,$stpl_table='stundenplandev')
+ {
+ ///////////////////////////////////////////////////////////////////////
+ // Parameter Checken
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_table.TABLE_ID;
+ $stpl_view=VIEW_BEGIN.$stpl_table;
+ $stpl_table=TABLE_BEGIN.$stpl_table;
+
+ $sql_query="SELECT * FROM $stpl_view WHERE $stpl_id=$stundenplan_id;";
+ //echo $sql_query.'
';
+
+
+ //Datenbankabfrage
+ if (! $stpl_tbl=pg_query($this->conn, $sql_query))
+ {
+ $this->errormsg=pg_last_error($this->conn);
+ //echo $this->errormsg;
+ return false;
+ }
+ $this->anzahl=pg_numrows($stpl_tbl);
+ //Daten uebernehmen
+ if ($this->anzahl!=1)
+ {
+ $this->errormsg='Keinen Datensatz gefunden';
+ return false;
+ }
+ else
+ {
+ $row=pg_fetch_object ($stpl_tbl);
+ $this->stundenplan_id=$row->{$stpl_id};
+ $this->unr=$row->unr;
+ $this->lektor_uid=$row->uid;
+ $this->lektor_kurzbz=$row->lektor;
+ $this->datum=$row->datum;
+ $this->stunde=$row->stunde;
+ $this->ort_kurzbz=$row->ort_kurzbz;
+ $this->lehrfach=$row->lehrfach;
+ $this->lehrfach_bez=$row->lehrfach_bez;
+ $this->lehrfach_nr=$row->lehrfach_nr;
+ $this->lehrform=$row->lehrform;
+ $this->studiengang_kz=$row->studiengang_kz;
+ $this->studiengang=$row->stg_kurzbz;
+ $this->sem=$row->semester;
+ $this->ver=$row->verband;
+ $this->grp=$row->gruppe;
+ $this->gruppe_kurzbz=$row->gruppe_kurzbz;
+ $this->titel=$row->titel;
+ $this->anmerkung=$row->anmerkung;
+ $this->updateamum=$row->updateamum;
+ $this->updatevon=$row->updatevon;
+ $this->new=false;
+ }
+ return true;
+ }
+
+ /**
+ * Datensatz in DB speichern
+ *
+ */
+ function save($uid, $stpl_table='stundenplandev')
+ {
+ // Parameter Checken
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_table.TABLE_ID;
+ $stpl_table=TABLE_BEGIN.$stpl_table;
+ if ($this->new)
+ {
+ // insert
+ }
+ else
+ {
+ // update
+ $sql_query='UPDATE '.$stpl_table;
+ $sql_query.=" SET datum='$this->datum', stunde=$this->stunde";
+ $sql_query.=", ort_kurzbz='$this->ort_kurzbz', uid='$this->lektor_uid'";
+ $sql_query.=", updateamum=now(), updatevon='$uid'";
+ $sql_query.=" WHERE $stpl_id=$this->stundenplan_id";
+ //echo $sql_query."
";
+
+ //Datenbankabfrage
+ if (! @pg_query($this->conn, $sql_query))
+ {
+ $this->errormsg=$sql_query.pg_last_error($this->conn);
+ //echo $this->errormsg;
+ return false;
+ }
+ //$this->errormsg.=$sql_query;
+ }
+
+ return true;
+ }
+
+ /**
+ * Datensatz aus DB entfernen
+ * @param id ID des Datensatzes in der Tabelle
+ * @param stpl_table Name der Tabelle
+ *
+ */
+ function delete($id, $stpl_table='stundenplandev')
+ {
+ // Parameter Checken
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_table.TABLE_ID;
+ $stpl_table=TABLE_BEGIN.$stpl_table;
+ // Delete SQL vorbereiten
+ $sql_query='DELETE FROM '.$stpl_table;
+ $sql_query.=" WHERE $stpl_id=$id";
+ //echo $sql_query."
";
+
+ //Datenbankrequest
+ if (! pg_query($this->conn, $sql_query))
+ {
+ $this->errormsg=$sql_query.pg_last_error($this->conn);
+ //echo $this->errormsg;
+ return false;
+ }
+ else
+ return true;
+ }
+
+ /**
+ * @param type (student, lektor, lehrverband, einheit, ort, ....)
+ * @param datum_von (inklusive) Startdatum der Abfrage
+ * @param datum_bis (exklusive) Enddatum der Abfrage
+ * @param uid (des Lektors oder Studenten) kann auch NULL sein
+ * @param ort_kurzbz (Kurzbezeichnung des Orts) kann auch NULL sein
+ * @param studiengang_kz
+ * @param sem
+ * @param ver
+ * @param grp
+ * @param gruppe_kurzbz
+ *
+ */
+ function load_lehrstunden($type, $datum_von, $datum_bis, $uid, $ort_kurzbz=NULL, $studiengang_kz=NULL, $sem=NULL, $ver=NULL, $grp=NULL, $gruppe_kurzbz=NULL, $stpl_view='stundenplan')
+ {
+ ///////////////////////////////////////////////////////////////////////
+ // Parameter Checken
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_view.TABLE_ID;
+ $stpl_view=VIEW_BEGIN.$stpl_view;
+ // Datum im Format YYYY-MM-TT ?
+ if (!ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$datum_von) )
+ {
+ $this->errormsg='Fehler: Startdatum hat falsches Format!';
+ return -1;
+ }
+ if (!ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$datum_bis) )
+ {
+ $this->errormsg='Fehler: Enddatum hat falsches Format!';
+ return -1;
+ }
+ // Person
+ if (($type=='student' || $type=='lektor') && $uid==NULL)
+ {
+ $this->errormsg='Fehler: uid der Person ist nicht gesetzt';
+ return -1;
+ }
+ // Ort
+ if ($type=='ort' && $ort_kurzbz==NULL)
+ {
+ $this->errormsg='Fehler: Kurzbezeichnung des Orts ist nicht gesetzt';
+ return -1;
+ }
+ // Einheit
+ if ($type=='einheit' && $gruppe_kurzbz==NULL)
+ {
+ $this->errormsg='Fehler: Kurzbezeichnung der Einheit ist nicht gesetzt';
+ return -1;
+ }
+
+ ///////////////////////////////////////////////////////////////////////
+ // Zusaetzliche Daten ermitteln
+ // Personendaten
+ if ($type=='student')
+ {
+ // Lehrverband ermitteln
+ $sql_query="SELECT studiengang_kz, semester, verband, gruppe FROM tbl_student WHERE uid='$uid'";
+ //echo $sql_query;
+ if (! $result=@pg_query($this->conn, $sql_query) )
+ {
+ $this->errormsg=pg_last_error($this->conn);
+ return -2;
+ }
+ $num_rows=pg_num_rows($result);
+ if ($num_rows>0)
+ $row=pg_fetch_object($result);
+ else
+ {
+ $this->errormsg='Fehler: Student ('.$uid.') wurde nicht gefunden!';
+ return -2;
+ }
+ $studiengang_kz=$row->studiengang_kz;
+ $sem=$row->semester;
+ $ver=$row->verband;
+ $grp=$row->gruppe;
+
+ // Einheiten ermitteln
+ $sql_query="SELECT gruppe_kurzbz FROM tbl_einheitstudent WHERE uid='$uid'";
+ //echo $sql_query;
+ if (! $result_einheit=@pg_query($this->conn, $sql_query) )
+ {
+ $this->errormsg=pg_last_error($this->conn);
+ return -2;
+ }
+ $num_rows_einheit=pg_num_rows($result_einheit);
+ }
+
+ ///////////////////////////////////////////////////////////////////////
+ // Stundenplandaten ermitteln
+ // Abfrage generieren
+ $sql_query_stdplan='SELECT * FROM '.$stpl_view;
+ $sql_query=" WHERE datum>='$datum_von' AND datum<'$datum_bis'";
+ if ($type=='lektor')
+ $sql_query.=" AND uid='$uid'";
+ elseif ($type=='ort')
+ $sql_query.=" AND ort_kurzbz='$ort_kurzbz'";
+ elseif ($type=='einheit')
+ $sql_query.=" AND gruppe_kurzbz='$gruppe_kurzbz'";
+ else
+ {
+ $sql_query.=' AND ( (studiengang_kz='.$studiengang_kz;
+ if ($sem!='0' && $sem!=null && $sem!=0 && $sem!='')
+ {
+ $sql_query.=" AND (semester=$sem OR semester IS NULL";
+ if ($type=='student')
+ $sql_query.=' OR semester='.($sem+1);
+ $sql_query.=')';
+ }
+ if ($ver!='0' && $ver!=null && $ver!='')
+ $sql_query.=" AND (verband='$ver' OR verband IS NULL OR verband='0' OR verband='')";
+ if ($grp!='0' && $grp!=null && $grp!='')
+ $sql_query.=" AND (gruppe='$grp' OR gruppe IS NULL OR gruppe='0' OR gruppe='')";
+ if ($type=='student')
+ $sql_query.=' AND gruppe_kurzbz IS NULL';
+ $sql_query.=' )';
+ for ($i=0;$i<$num_rows_einheit;$i++)
+ {
+ $row=pg_fetch_object($result_einheit,$i);
+ $sql_query.=" OR gruppe_kurzbz='$row->gruppe_kurzbz'";
+ }
+ $sql_query.=')';
+ }
+ $sql_query.=' ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid';
+ $sql_query_stdplan.=$sql_query;
+ //echo '';
+
+ //Datenbankabfrage
+ if (! $stpl_tbl=pg_query($this->conn, $sql_query_stdplan))
+ {
+ $this->errormsg=pg_last_error($this->conn);
+ //echo $this->errormsg;
+ return -2;
+ }
+ $num_rows=pg_numrows($stpl_tbl);
+ $this->anzahl=$num_rows;
+ //Daten uebernehmen
+ for ($i=0;$i<$num_rows;$i++)
+ {
+ $row=pg_fetch_object ($stpl_tbl, $i);
+ $stunde=new lehrstunde($this->conn);
+ $stunde->stundenplan_id=$row->{$stpl_id};
+ $stunde->unr=$row->unr;
+ $stunde->lektor_uid=$row->uid;
+ $stunde->lektor_kurzbz=$row->lektor;
+ $stunde->datum=$row->datum;
+ $stunde->stunde=$row->stunde;
+ $stunde->ort_kurzbz=$row->ort_kurzbz;
+ $stunde->lehrfach=$row->lehrfach;
+ $stunde->lehrfach_bez=$row->lehrfach_bez;
+ $stunde->lehrfach_nr=$row->lehrfach_nr;
+ $stunde->lehrform=$row->lehrform;
+ if ($row->farbe!=' ' && $row->farbe!=null)
+ $stunde->farbe=$row->farbe;
+ else
+ $stunde->farbe='FFFFFF';
+ $stunde->studiengang_kz=$row->studiengang_kz;
+ $stunde->studiengang=$row->stg_kurzbz;
+ $stunde->sem=$row->semester;
+ $stunde->ver=$row->verband;
+ $stunde->grp=$row->gruppe;
+ $stunde->gruppe_kurzbz=$row->gruppe_kurzbz;
+ $stunde->titel=$row->titel;
+ $stunde->anmerkung=$row->anmerkung;
+ $stunde->updateamum=$row->updateamum;
+ $stunde->updatevon=$row->updatevon;
+ $stunde->reservierung=false;
+ $this->lehrstunden[$i]=$stunde;
+ }
+
+ ///////////////////////////////////////////////////////////////////////
+ // Reservierungsdaten ermitteln
+ // Datenbankabfrage generieren
+ $sql_query_reservierung='SELECT * FROM vw_reservierung';
+ $sql_query_reservierung.=$sql_query;
+ //echo $sql_query_reservierung;
+ //Datenbankabfrage
+ if (! $stpl_tbl=pg_query($this->conn, $sql_query_reservierung))
+ {
+ $this->errormsg=pg_last_error($this->conn);
+ return -2;
+ }
+ $num_rows=pg_numrows($stpl_tbl);
+ $this->anzahl+=$num_rows;
+
+ //Daten uebernehmen
+ for ($i=0;$i<$num_rows;$i++)
+ {
+ $row=pg_fetch_object ($stpl_tbl, $i);
+ $stunde=new lehrstunde($this->conn);
+ $stunde->reservierung=true;
+ $stunde->stundenplan_id=$row->reservierung_id;
+ $stunde->unr=0;
+ $stunde->lektor_uid=$row->uid;
+ $stunde->lektor_kurzbz=$row->uid;
+ $stunde->datum=$row->datum;
+ $stunde->stunde=$row->stunde;
+ $stunde->ort_kurzbz=$row->ort_kurzbz;
+ //$stunde->lehrfach_nr=$row->lehrfach_nr;
+ $stunde->lehrfach=$row->titel;
+ $stunde->lehrfach_bez=$row->beschreibung;
+ $stunde->studiengang_kz=$row->studiengang_kz;
+ $stunde->studiengang=$row->stg_kurzbz;
+ $stunde->sem=$row->semester;
+ $stunde->ver=$row->verband;
+ $stunde->grp=$row->gruppe;
+ $stunde->gruppe_kurzbz=$row->gruppe_kurzbz;
+ $stunde->titel=$row->titel;
+ $stunde->anmerkung=$row->beschreibung;
+ $this->lehrstunden[]=$stunde;
+ //var_dump($stunde);
+ }
+ //echo $this->anzahl;
+ return $this->anzahl;
+ }
+
+ /*************************************************************************
+ * Prueft die geladene Lehrveranstaltung auf Kollisionen im Stundenplan.
+ * Rueckgabewert 'false' und die Fehlermeldung steht in '$this->errormsg'.
+ * @param string datum gewuenschtes Datum YYYY-MM-TT
+ * @param integer stunde gewuenschte Stunde
+ * @param string ort gewuenschter Ort
+ * @param string db_stpl_table Tabllenname des Stundenplans im DBMS
+ * @return boolean true=ok, false=fehler
+ *************************************************************************/
+ function kollision($stpl_table='stundenplandev')
+ {
+ // Parameter Checken
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_table.TABLE_ID;
+ $stpl_table=VIEW_BEGIN.$stpl_table;
+
+ // Datenbank abfragen
+ $sql_query="SELECT $stpl_id AS id, lektor, stg_kurzbz, ort_kurzbz, semester, verband, gruppe, gruppe_kurzbz, datum, stunde FROM $stpl_table
+ WHERE datum='$this->datum' AND stunde=$this->stunde AND (ort_kurzbz='$this->ort_kurzbz' OR ";
+ if ($this->lektor_uid!='_DummyLektor')
+ $sql_query.="(uid='$this->lektor_uid') AND uid!='_DummyLektor' OR ";
+ $sql_query.="(studiengang_kz=$this->studiengang_kz AND semester=$this->sem";
+ if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
+ $sql_query.=" AND (verband='$this->ver' OR verband IS NULL OR verband='' OR verband=' ')";
+ if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
+ $sql_query.=" AND (gruppe='$this->grp' OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
+ if ($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
+ $sql_query.=" AND (gruppe_kurzbz='$this->gruppe_kurzbz')";
+ $sql_query.=")) AND unr!=$this->unr";
+
+ //echo $sql_query.'
';
+ if (! $erg_stpl=pg_query($this->conn, $sql_query))
+ {
+ $this->errormsg=pg_last_error($this->conn);
+ return true;
+ }
+ $anz=pg_numrows($erg_stpl);
+ //Check
+ if ($anz==0)
+ return false;
+ else
+ {
+ $row=pg_fetch_object($erg_stpl);
+ $this->errormsg="Kollision ($stpl_table): $row->id|$row->lektor|$row->ort_kurzbz|$row->stg_kurzbz-$row->semester$row->verband$row->gruppe$row->gruppe_kurzbz - $row->datum/$row->stunde";
+ return true;
+ }
+ }
+}
+
+?>
\ No newline at end of file