mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
c15132658f
LVPlan Einträge mit Spezialgruppen sind dadurch auch vor Semesterstart bereits sichtbar.
1021 lines
34 KiB
PHP
1021 lines
34 KiB
PHP
<?php
|
|
/* Copyright (C) 2006 FHTechnikum-Wien
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
/**
|
|
* @class lehrstunde
|
|
* @brief Beschreibung einer Unterrichts-Stunde der Tabelle tbl_stundenplan
|
|
* @author Christian Paminger, Andreas Österreicher
|
|
* @date 2004/8/21
|
|
* @version $Revision: 1.2 $
|
|
* Update: 21.10.2009 von Christian Paminger
|
|
* @bug Ein Fehler
|
|
* @todo Noch zu tun
|
|
* @warning Eine Warnung
|
|
*/
|
|
|
|
require_once(dirname(__FILE__).'/basis_db.class.php');
|
|
require_once(dirname(__FILE__).'/studiensemester.class.php');
|
|
require_once(dirname(__FILE__).'/variable.class.php');
|
|
|
|
class lehrstunde extends basis_db
|
|
{
|
|
public $stundenplan_id; /// @brief ID in der Datenbank
|
|
public $lehreinheit_id; /// @brief id der Lehreinheit in der DB
|
|
public $unr; // @brief Unterrichtsnummer
|
|
public $lektor_uid; // @brief UID des Lektors
|
|
public $lektor_kurzbz; // @brief Kurzbezeichnung des Lektors
|
|
public $datum; // @brief Datum
|
|
public $stunde; // @brief Unterrichts-Stunde des Tages
|
|
public $ort_kurzbz; // @brief Ort in dem der Unterricht stattfindet
|
|
public $lehrfach_id; // @brief Nummer des Lehrfachs
|
|
public $lehrfach; // @brief Name des Lehrfachs
|
|
public $lehrfach_bez; // @brief Voller Name des Lehrfachs
|
|
public $lehrform; // @brief Lehrform des Lehrfachs (Vorlesung, ...)
|
|
public $studiengang_kz; // @brief Kennzahl des Studiengangs
|
|
public $studiengang; // @brief Kurzbezeichnung des Studiengangs
|
|
public $sem; // @brief Semester
|
|
public $ver; // @brief Verband
|
|
public $grp; // @brief Gruppe
|
|
public $gruppe_kurzbz; // @brief Kurzbezeichnung der Gruppe
|
|
public $titel; // @brief Titel der Unterrichtsstunde
|
|
public $anmerkung; // @brief Anmerkungen zur Unterrichtsstunde
|
|
public $fix; // @brief true wenn diese Stunde nicht mehr verschoben wird
|
|
public $updateamum; // @brief letztes Update
|
|
public $updatevon; // @brief Update von wem?
|
|
public $new; // @brief true wenns ein neuer Datensatz ist
|
|
public $reservierung; // @brief true wenns eine Reservierung ist
|
|
|
|
public $lehrstunden=array(); // @brief Objekt der eigenen Klasse
|
|
public $anzahl; // @brief Gesamte Anzahl der Stunden im Array
|
|
public $ss=null; // @brief Studiensemester
|
|
public $lastqry=null;
|
|
|
|
|
|
/*
|
|
* Konstruktor
|
|
*
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
|
|
$this->new=TRUE;
|
|
}
|
|
|
|
/**
|
|
* @brief Einen Datensatz aus optional angegebener Stundenplan-Tabelle laden
|
|
* @param stundenplan_id ID in der Datenbank
|
|
* @param stpl_table Name der Tabelle in der DB
|
|
* @return Boolean, Fehlermeldung kommt in das Attribut errormsg
|
|
*/
|
|
public function load($stundenplan_id,$stpl_table='stundenplandev')
|
|
{
|
|
// Bezeichnung der Stundenplan-Tabelle und des Keys
|
|
$stpl_id=$stpl_table.TABLE_ID;
|
|
$stpl_view='lehre.'.VIEW_BEGIN.$stpl_table;
|
|
$stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
|
|
|
|
$sql_query="SELECT * FROM $stpl_view WHERE $stpl_id=$stundenplan_id;";
|
|
|
|
//Datenbankabfrage
|
|
if (!$this->db_query($sql_query))
|
|
{
|
|
$this->errormsg=$sql_query.$this->db_last_error();
|
|
return false;
|
|
}
|
|
|
|
$this->anzahl = $this->db_num_rows();
|
|
|
|
//Daten uebernehmen
|
|
if ($this->anzahl!=1)
|
|
{
|
|
$this->errormsg='Keinen Datensatz gefunden';
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
$row=$this->db_fetch_object();
|
|
$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_id=$row->lehrfach_id;
|
|
$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
|
|
*
|
|
*/
|
|
public function save($uid, $stpl_table='stundenplandev')
|
|
{
|
|
// Parameter Checken
|
|
// Bezeichnung der Stundenplan-Tabelle und des Keys
|
|
$stpl_id=$stpl_table.TABLE_ID;
|
|
$stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
|
|
if ($this->new)
|
|
{
|
|
// insert
|
|
}
|
|
else
|
|
{
|
|
// update
|
|
$sql_query='UPDATE '.$stpl_table;
|
|
$sql_query.=" SET datum=".$this->db_add_param($this->datum).", stunde=".$this->db_add_param($this->stunde);
|
|
$sql_query.=", ort_kurzbz=".$this->db_add_param($this->ort_kurzbz).", mitarbeiter_uid=".$this->db_add_param($this->lektor_uid);
|
|
if($this->unr!='')
|
|
$sql_query.=", unr=".$this->db_add_param($this->unr);
|
|
$sql_query.=", updateamum=now(), updatevon=".$this->db_add_param($uid);
|
|
$sql_query.=" WHERE $stpl_id=".$this->db_add_param($this->stundenplan_id);
|
|
|
|
$this->lastqry = $sql_query;
|
|
//Datenbankabfrage
|
|
if (!$this->db_query($sql_query))
|
|
{
|
|
$this->errormsg=$sql_query.$this->db_last_error();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Erstellt einen Undo Befehl fuer die Speichern funktion
|
|
*
|
|
* @param $stpl_table
|
|
* @return string undo
|
|
*/
|
|
public function getUndo($stpl_table='stundenplandev')
|
|
{
|
|
$stpl_id=$stpl_table.TABLE_ID;
|
|
$stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
|
|
|
|
$sql_query='UPDATE '.$stpl_table;
|
|
$sql_query.=" SET datum=".$this->db_add_param($this->datum).", stunde=".$this->db_add_param($this->stunde);
|
|
$sql_query.=", ort_kurzbz=".$this->db_add_param($this->ort_kurzbz).", mitarbeiter_uid=".$this->db_add_param($this->lektor_uid);
|
|
$sql_query.=", updateamum=".$this->db_add_param($this->updateamum).", updatevon=".$this->db_add_param($this->updatevon);
|
|
$sql_query.=" WHERE $stpl_id=".$this->db_add_param($this->stundenplan_id).";";
|
|
|
|
return $sql_query;
|
|
}
|
|
|
|
/**
|
|
* Datensatz aus DB entfernen
|
|
* @param id ID des Datensatzes in der Tabelle
|
|
* @param stpl_table Name der Tabelle
|
|
*
|
|
*/
|
|
public function delete($id, $stpl_table='stundenplandev')
|
|
{
|
|
// Parameter Checken
|
|
// Bezeichnung der Stundenplan-Tabelle und des Keys
|
|
$stpl_id=$stpl_table.TABLE_ID;
|
|
$stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
|
|
// Delete SQL vorbereiten
|
|
$sql_query='DELETE FROM '.$stpl_table;
|
|
$sql_query.=" WHERE $stpl_id=".$this->db_add_param($id);
|
|
|
|
//Datenbankrequest
|
|
if (!$this->db_query($sql_query))
|
|
{
|
|
$this->errormsg=$sql_query.$this->db_last_error();
|
|
return false;
|
|
}
|
|
else
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Laedt Lehrstunden
|
|
*
|
|
* @param type (student, lektor, lehrverband, gruppe, 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
|
|
*
|
|
*/
|
|
public 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', $idList=null, $fachbereich_kurzbz=null, $lva=NULL, $alle_unr_mitladen=false)
|
|
{
|
|
$num_rows_einheit=0;
|
|
// Parameter Checken
|
|
// Bezeichnung der Stundenplan-Tabelle und des Keys
|
|
$stpl_id=$stpl_view.TABLE_ID;
|
|
$stpl_view_ohneschema=VIEW_BEGIN.$stpl_view;
|
|
$stpl_view='lehre.'.VIEW_BEGIN.$stpl_view;
|
|
|
|
|
|
// Datum im Format YYYY-MM-TT ?
|
|
if (!preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/",$datum_von) )
|
|
{
|
|
$this->errormsg='Fehler: Startdatum hat falsches Format!';
|
|
return -1;
|
|
}
|
|
if ($datum_bis!=null)
|
|
{
|
|
if (!preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/",$datum_bis) )
|
|
{
|
|
$this->errormsg='Fehler: Enddatum hat falsches Format!';
|
|
return -1;
|
|
}
|
|
}
|
|
else
|
|
$datum_bis=$datum_von;
|
|
|
|
// 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;
|
|
}
|
|
// Gruppe
|
|
if ($type=='gruppe' && $gruppe_kurzbz==NULL)
|
|
{
|
|
$this->errormsg='Fehler: Kurzbezeichnung der Gruppe ist nicht gesetzt';
|
|
return -1;
|
|
}
|
|
// Verband
|
|
if ($type=='verband' && ($studiengang_kz==NULL || !is_numeric($studiengang_kz)))
|
|
{
|
|
$this->errormsg='Fehler: Studiengang ist nicht gesetzt';
|
|
return -1;
|
|
}
|
|
// LVA
|
|
if ($type=='lva' && $lva==NULL)
|
|
{
|
|
$this->errormsg='Fehler: LVA-ID ist nicht gesetzt';
|
|
return -1;
|
|
}
|
|
// Type
|
|
if ($type==null)
|
|
{
|
|
$this->errormsg='Fehler: Type in "lehrstunde->load_lehrstunde" ist nicht gesetzt!';
|
|
return -1;
|
|
}
|
|
|
|
// Zusaetzliche Daten ermitteln
|
|
// Personendaten
|
|
if ($type=='student')
|
|
{
|
|
// Bei Studierenden wird das passende Studiensemester ermittelt und das dazupassende
|
|
// naechstliegende Dadurch wird sichergestellt, dass Einheiten aus den Vorsemestern
|
|
// zB fuer Nachpruefungen oder Einheiten aus den Folgesemestern die vorgezogen werden
|
|
// auch im Plan sichtbar sind.
|
|
if (is_null($this->ss))
|
|
{
|
|
$studiensemester_obj = new studiensemester();
|
|
$this->ss = $studiensemester_obj->getSemesterFromDatum($datum_von,true);
|
|
$this->ssnext = $studiensemester_obj->getNearestTo($this->ss,$datum_von);
|
|
}
|
|
if(!isset($this->ssnext))
|
|
$this->ssnext = $this->ss;
|
|
|
|
// Lehrverbandszuordnungen der betreffenden Studiensemester laden
|
|
$sql_query="SELECT studiengang_kz, semester, verband, gruppe
|
|
FROM public.tbl_studentlehrverband
|
|
WHERE student_uid=".$this->db_add_param($uid)."
|
|
AND studiensemester_kurzbz in(".$this->db_add_param($this->ss).",".$this->db_add_param($this->ssnext).")";
|
|
|
|
$verbaende=array();
|
|
if($this->db_query($sql_query))
|
|
{
|
|
$num_rows=$this->db_num_rows();
|
|
if ($num_rows>0)
|
|
{
|
|
while($row = $this->db_fetch_object())
|
|
{
|
|
$verbaende[] = array('studiengang_kz'=>$row->studiengang_kz,
|
|
'sem'=>$row->semester,
|
|
'ver'=>$row->verband,
|
|
'grp'=>$row->gruppe);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$this->errormsg=$this->db_last_error();
|
|
return -2;
|
|
}
|
|
// Spezialgruppen ermitteln zu denen die Person zugeteilt ist
|
|
$sql_query="SELECT
|
|
gruppe_kurzbz
|
|
FROM
|
|
public.tbl_benutzergruppe
|
|
WHERE
|
|
uid=".$this->db_add_param($uid)."
|
|
AND (studiensemester_kurzbz=".$this->db_add_param($this->ss)."
|
|
OR studiensemester_kurzbz=".$this->db_add_param($this->ssnext)."
|
|
OR studiensemester_kurzbz IS NULL)";
|
|
|
|
if (!$result_einheit=$this->db_query($sql_query))
|
|
{
|
|
$this->errormsg=$this->db_last_error($this->conn);
|
|
return false;
|
|
}
|
|
else
|
|
$num_rows_einheit=$this->db_num_rows($result_einheit);
|
|
}
|
|
|
|
// Stundenplandaten ermitteln
|
|
// Abfrage generieren
|
|
|
|
if ($type!='idList')
|
|
{
|
|
if($alle_unr_mitladen)
|
|
$sql_query_stdplan='SELECT '.$stpl_id.', datum, stunde, unr FROM '.$stpl_view;
|
|
else
|
|
$sql_query_stdplan='SELECT * FROM '.$stpl_view;
|
|
$sql_query_lva="";
|
|
$sql_query=" WHERE datum>=".$this->db_add_param($datum_von)." AND datum<".$this->db_add_param($datum_bis);
|
|
if ($type == 'lva')
|
|
$sql_query_lva=" AND lehrveranstaltung_id=".$this->db_add_param($lva);
|
|
elseif ($type=='lektor')
|
|
$sql_query.=" AND uid=".$this->db_add_param($uid);
|
|
elseif ($type=='ort' && $ort_kurzbz != 'all')
|
|
$sql_query.=" AND ort_kurzbz=".$this->db_add_param($ort_kurzbz);
|
|
elseif ($type=='ort' && $ort_kurzbz == 'all')
|
|
$sql_query.=" AND ort_kurzbz IS NOT NULL AND ort_kurzbz !='Dummy'";
|
|
elseif ($type=='gruppe')
|
|
$sql_query.=" AND gruppe_kurzbz=".$this->db_add_param($gruppe_kurzbz);
|
|
elseif($type=='fachbereich')
|
|
$sql_query.=" AND fachbereich_kurzbz=".$this->db_add_param($fachbereich_kurzbz);
|
|
elseif($type=='student')
|
|
{
|
|
$sql_query.=" AND (";
|
|
if(is_array($verbaende) && count($verbaende)>0)
|
|
{
|
|
foreach($verbaende as $row_verbaende)
|
|
{
|
|
$studiengang_kz = $row_verbaende['studiengang_kz'];
|
|
$ver = $row_verbaende['ver'];
|
|
$sem = $row_verbaende['sem'];
|
|
$grp = $row_verbaende['grp'];
|
|
|
|
$sql_query.=" (studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
|
|
if ($sem!=null && $sem>=0 && $sem!='')
|
|
$sql_query.=" AND (semester=".$this->db_add_param($sem)." OR semester IS NULL)";
|
|
if ($ver!='0' && $ver!=null && $ver!='')
|
|
$sql_query.=" AND (verband=".$this->db_add_param($ver)." OR verband IS NULL OR verband='0' OR verband='')";
|
|
if ($grp!='0' && $grp!=null && $grp!='')
|
|
$sql_query.=" AND (gruppe=".$this->db_add_param($grp)." OR gruppe IS NULL OR gruppe='0' OR gruppe='')";
|
|
$sql_query.=" AND gruppe_kurzbz is null";
|
|
$sql_query.=") OR ";
|
|
}
|
|
}
|
|
|
|
$sql_query.=" 1!=1";
|
|
for ($i=0;$i<$num_rows_einheit;$i++)
|
|
{
|
|
$row=$this->db_fetch_object($result_einheit,$i);
|
|
$sql_query.=" OR gruppe_kurzbz=".$this->db_add_param($row->gruppe_kurzbz);
|
|
}
|
|
$sql_query.=')';
|
|
}
|
|
else
|
|
{
|
|
$sql_query.=" AND ( (studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
|
|
if ($sem!=null && $sem>=0 && $sem!='')
|
|
$sql_query.=" AND (semester=".$this->db_add_param($sem)." OR semester IS NULL)";
|
|
if ($ver!='0' && $ver!=null && $ver!='')
|
|
$sql_query.=" AND (verband=".$this->db_add_param($ver)." OR verband IS NULL OR verband='0' OR verband='')";
|
|
if ($grp!='0' && $grp!=null && $grp!='')
|
|
$sql_query.=" AND (gruppe=".$this->db_add_param($grp)." OR gruppe IS NULL OR gruppe='0' OR gruppe='')";
|
|
|
|
$sql_query.=' )';
|
|
|
|
for ($i=0;$i<$num_rows_einheit;$i++)
|
|
{
|
|
$row=$this->db_fetch_object($result_einheit,$i);
|
|
$sql_query.=" OR gruppe_kurzbz=".$this->db_add_param($row->gruppe_kurzbz);
|
|
}
|
|
$sql_query.=')';
|
|
}
|
|
$sql_query_orderby=' ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid';
|
|
$sql_query_stdplan.=$sql_query . $sql_query_lva . $sql_query_orderby;
|
|
|
|
// Wenn aktiviert, werden alle Stunden mit der gleichen UNR geladen die zur selben Zeit stattfinden
|
|
if($alle_unr_mitladen)
|
|
{
|
|
$sql_query_stdplan="
|
|
WITH lvplan(id, datum, stunde, unr) as
|
|
(
|
|
$sql_query_stdplan
|
|
)
|
|
SELECT
|
|
distinct $stpl_view_ohneschema.*
|
|
FROM
|
|
".$stpl_view.", lvplan
|
|
WHERE
|
|
$stpl_view_ohneschema.datum=lvplan.datum
|
|
AND $stpl_view_ohneschema.stunde=lvplan.stunde
|
|
AND $stpl_view_ohneschema.unr=lvplan.unr
|
|
ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid
|
|
";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$sql_query_stdplan='SELECT * FROM '.$stpl_view;
|
|
$sql_query='';
|
|
foreach ($idList as $id)
|
|
$sql_query.=" OR ".$stpl_id."=".$this->db_add_param($id);
|
|
$sql_query=mb_substr($sql_query,3);
|
|
$sql_query_stdplan.=' WHERE'.$sql_query;
|
|
}
|
|
//echo $sql_query_stdplan;
|
|
//Datenbankabfrage
|
|
if (!$this->db_query($sql_query_stdplan))
|
|
{
|
|
$this->errormsg = $this->db_last_error();
|
|
return -2;
|
|
}
|
|
$stpl_tbl = $this->db_result;
|
|
$num_rows = $this->db_num_rows($stpl_tbl);
|
|
$this->anzahl=$num_rows;
|
|
//Daten uebernehmen
|
|
for ($i=0;$i<$num_rows;$i++)
|
|
{
|
|
$row=$this->db_fetch_object($stpl_tbl, $i);
|
|
|
|
$stunde=new lehrstunde();
|
|
$stunde->stundenplan_id=$row->{$stpl_id};
|
|
$stunde->lehreinheit_id=$row->lehreinheit_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_id=$row->lehrfach_id;
|
|
$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=mb_strtoupper($row->stg_typ.$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->anmerkung_lehreinheit=$row->anmerkung_lehreinheit;
|
|
$stunde->updateamum=$row->updateamum;
|
|
$stunde->updatevon=$row->updatevon;
|
|
$stunde->reservierung=false;
|
|
$this->lehrstunden[$i]=$stunde;
|
|
|
|
}
|
|
|
|
// Reservierungsdaten ermitteln
|
|
if ($type!='idList' && $type!='fachbereich')
|
|
{
|
|
// Datenbankabfrage generieren
|
|
$sql_query_reservierung='SELECT * FROM campus.vw_reservierung';
|
|
$sql_query_reservierung.=$sql_query . $sql_query_orderby;
|
|
|
|
//Datenbankabfrage
|
|
if (!$this->db_query($sql_query_reservierung))
|
|
{
|
|
$this->errormsg = $this->db_last_error();
|
|
return -2;
|
|
}
|
|
$stpl_tbl = $this->db_result;
|
|
$num_rows=$this->db_num_rows($stpl_tbl);
|
|
$this->anzahl+=$num_rows;
|
|
|
|
//Daten uebernehmen
|
|
for ($i=0;$i<$num_rows;$i++)
|
|
{
|
|
$row = $this->db_fetch_object($stpl_tbl, $i);
|
|
|
|
$stunde=new lehrstunde();
|
|
$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_id=$row->lehrfach_id;
|
|
$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;
|
|
$stunde->anmerkung_lehreinheit=$row->beschreibung;
|
|
$stunde->farbe='';
|
|
$this->lehrstunden[]=$stunde;
|
|
}
|
|
}
|
|
return $this->anzahl;
|
|
}
|
|
|
|
/**
|
|
* @param lehreinheit_id
|
|
* @param uid (mitarbeiter)
|
|
*
|
|
*/
|
|
public function load_lehrstunden_le($lehreinheit_id, $uid=null, $stpl_table='stundenplandev')
|
|
{
|
|
// Bezeichnung der Stundenplan-Tabelle und des Keys
|
|
$stpl_id=$stpl_table.TABLE_ID;
|
|
$stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
|
|
|
|
// Stundenplandaten ermitteln
|
|
// Abfrage generieren
|
|
$sql="SELECT * FROM ".$stpl_table." WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER);
|
|
if ($uid!=null && !is_null($uid))
|
|
$sql.=" AND mitarbeiter_uid=".$this->db_add_param($uid);
|
|
|
|
//Datenbankabfrage
|
|
if (!$this->db_query($sql))
|
|
{
|
|
$this->errormsg=$this->db_last_error();
|
|
return -1;
|
|
}
|
|
$num_rows=$this->db_num_rows();
|
|
$this->anzahl=$num_rows;
|
|
//Daten uebernehmen
|
|
for ($i=0;$i<$num_rows;$i++)
|
|
{
|
|
$row=$this->db_fetch_object(null, $i);
|
|
|
|
$stunde=new lehrstunde();
|
|
$stunde->stundenplan_id=$row->{$stpl_id};
|
|
$stunde->lehreinheit_id=$row->lehreinheit_id;
|
|
$stunde->unr=$row->unr;
|
|
$stunde->studiengang_kz=$row->studiengang_kz;
|
|
$stunde->sem=$row->semester;
|
|
$stunde->ver=$row->verband;
|
|
$stunde->grp=$row->gruppe;
|
|
$stunde->gruppe_kurzbz=$row->gruppe_kurzbz;
|
|
$stunde->lektor_uid=$row->mitarbeiter_uid;
|
|
$stunde->ort_kurzbz=$row->ort_kurzbz;
|
|
$stunde->datum=$row->datum;
|
|
$stunde->stunde=$row->stunde;
|
|
$stunde->titel=$row->titel;
|
|
$stunde->anmerkung=$row->anmerkung;
|
|
$stunde->fix=$row->fix;
|
|
$stunde->insertamum=$row->insertamum;
|
|
$stunde->insertvon=$row->insertvon;
|
|
$stunde->updateamum=$row->updateamum;
|
|
$stunde->updatevon=$row->updatevon;
|
|
$stunde->reservierung=false;
|
|
$this->lehrstunden[$i]=$stunde;
|
|
}
|
|
return $this->anzahl;
|
|
}
|
|
|
|
|
|
/**
|
|
* Prueft die geladene Lehrveranstaltung auf Kollisionen im Stundenplan.
|
|
* Bei einer Kollision steht der Grund der Kollision in '$this->errormsg'.
|
|
* @param string db_stpl_table Tabllenname des Stundenplans im DBMS
|
|
* @return boolean true=kollision, false=keine kollision
|
|
*/
|
|
public function kollision($stpl_table='stundenplandev')
|
|
{
|
|
$variablen_obj = new variable();
|
|
$variablen_obj->loadVariables(get_uid());
|
|
|
|
$kollision_student = $variablen_obj->variable->kollision_student;
|
|
$ignore_reservierung = $variablen_obj->variable->ignore_reservierung;
|
|
$ignore_zeitsperre = $variablen_obj->variable->ignore_zeitsperre;
|
|
|
|
//Kollisionspruefung auf Studentenebene
|
|
if($kollision_student=='true' && $this->kollision_student($stpl_table))
|
|
return true;
|
|
|
|
// Parameter Checken
|
|
// Bezeichnung der Stundenplan-Tabelle und des Keys
|
|
$stpl_id=$stpl_table.TABLE_ID;
|
|
$stpl_table='lehre.'.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->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde)." AND (ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." ";
|
|
if (!in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER)))
|
|
$sql_query.=" OR (uid=".$this->db_add_param($this->lektor_uid)." AND uid not in (".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER))."))";
|
|
|
|
//Wenn eine Kollisionspruefung auf Studentenebene durchgefuehrt wird, werden die LVB nicht gecheckt
|
|
if($kollision_student=='false')
|
|
{
|
|
$sql_query.=" OR (studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem);
|
|
if($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
|
|
{
|
|
$sql_query.=" OR (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
|
|
}
|
|
else
|
|
{
|
|
if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
|
|
$sql_query.=" AND (verband=".$this->db_add_param($this->ver)." OR verband IS NULL OR verband='' OR verband=' ')";
|
|
if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
|
|
$sql_query.=" AND (gruppe=".$this->db_add_param($this->grp)." OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
|
|
}
|
|
|
|
$sql_query.=")";
|
|
}
|
|
$sql_query.=") AND unr!=".$this->db_add_param($this->unr);
|
|
|
|
if (!$erg_stpl = $this->db_query($sql_query))
|
|
{
|
|
$this->errormsg=$sql_query.$this->db_last_error();
|
|
return true;
|
|
}
|
|
|
|
$anz=$this->db_num_rows($erg_stpl);
|
|
if ($anz==0)
|
|
{
|
|
// Zeitsperren pruefen
|
|
if($ignore_zeitsperre=='false' && !in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER)) && $this->kollision_zeitsperre())
|
|
return true;
|
|
|
|
// Reservierungen pruefen
|
|
if ($ignore_reservierung=='false' && $this->kollision_reservierung())
|
|
return true;
|
|
|
|
if($this->kollision_ressource())
|
|
return true;
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
$row = $this->db_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"; //\n".$sql_query
|
|
return true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Prueft ob eine Kollision mit den zugeteilten Ressourcen vorhanden ist
|
|
*
|
|
* @return boolean true=kollision, false=keine kollision
|
|
*/
|
|
public function kollision_ressource()
|
|
{
|
|
$qry = "SELECT
|
|
tbl_betriebsmittel.beschreibung, tbl_stundenplandev.ort_kurzbz
|
|
FROM
|
|
lehre.tbl_stundenplan_betriebsmittel
|
|
JOIN lehre.tbl_stundenplandev USING(stundenplandev_id)
|
|
JOIN wawi.tbl_betriebsmittel USING(betriebsmittel_id)
|
|
WHERE
|
|
tbl_stundenplandev.datum=".$this->db_add_param($this->datum)."
|
|
AND tbl_stundenplandev.stunde=".$this->db_add_param($this->stunde)."
|
|
AND betriebsmittel_id IN(SELECT betriebsmittel_id FROM lehre.tbl_stundenplan_betriebsmittel WHERE stundenplandev_id=".$this->db_add_param($this->stundenplan_id).")
|
|
AND tbl_stundenplandev.stundenplandev_id<>".$this->db_add_param($this->stundenplan_id);
|
|
|
|
if($result = $this->db_query($qry))
|
|
{
|
|
if($row = $this->db_fetch_object($result))
|
|
{
|
|
$this->errormsg='Kollision (Ressource)'.$row->beschreibung.'|'.$row->ort_kurzbz;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Prueft ob eine Kollision mit den Zeitsperren vorhanden ist
|
|
*
|
|
* @return boolean true=kollision, false=keine kollision
|
|
*/
|
|
public function kollision_zeitsperre()
|
|
{
|
|
$sql_query="SELECT
|
|
zeitsperre_id,zeitsperretyp_kurzbz,mitarbeiter_uid AS lektor,vondatum,vonstunde,bisdatum,bisstunde
|
|
FROM campus.tbl_zeitsperre
|
|
WHERE mitarbeiter_uid=".$this->db_add_param($this->lektor_uid)."
|
|
AND (vondatum<".$this->db_add_param($this->datum)." OR (vondatum=".$this->db_add_param($this->datum)." AND (vonstunde<=".$this->db_add_param($this->stunde)." OR vonstunde IS NULL)))
|
|
AND (bisdatum>".$this->db_add_param($this->datum)." OR (bisdatum=".$this->db_add_param($this->datum)." AND (bisstunde>=".$this->db_add_param($this->stunde)." OR bisstunde IS NULL)));";
|
|
|
|
if (!$erg_zs = $this->db_query($sql_query))
|
|
{
|
|
$this->errormsg=$sql_query.$this->db_last_error();
|
|
return true;
|
|
}
|
|
|
|
$anz_zs=$this->db_num_rows($erg_zs);
|
|
if ($anz_zs!=0)
|
|
{
|
|
$row = $this->db_fetch_object($erg_zs);
|
|
$this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Prueft ob eine LV-Plan Kollision mit den Reservierungen besteht
|
|
*
|
|
* @return boolean true=kollision, false=keine kollision
|
|
*/
|
|
public function kollision_reservierung()
|
|
{
|
|
$sql_query="SELECT
|
|
reservierung_id AS id, uid AS lektor, stg_kurzbz, ort_kurzbz,
|
|
semester, verband, gruppe, gruppe_kurzbz, datum, stunde
|
|
FROM lehre.vw_reservierung
|
|
WHERE
|
|
datum=".$this->db_add_param($this->datum)." AND
|
|
stunde=".$this->db_add_param($this->stunde)." AND
|
|
(ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." OR ";
|
|
|
|
if (!in_array($this->lektor_uid, unserialize(KOLLISIONSFREIE_USER)))
|
|
$sql_query.="(uid=".$this->db_add_param($this->lektor_uid)." AND uid not in(".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER)).")) OR ";
|
|
|
|
$sql_query.="(studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem);
|
|
if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
|
|
$sql_query.=" AND (verband=".$this->db_add_param($this->ver)." OR verband IS NULL OR verband='' OR verband=' ')";
|
|
if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
|
|
$sql_query.=" AND (gruppe=".$this->db_add_param($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->db_add_param($this->gruppe_kurzbz).")";
|
|
$sql_query.="))";
|
|
|
|
if (!$erg_res = $this->db_query($sql_query))
|
|
{
|
|
$this->errormsg=$sql_query.$this->db_last_error();
|
|
return true;
|
|
}
|
|
$anz_res = $this->db_num_rows($erg_res);
|
|
|
|
if ($anz_res!=0)
|
|
{
|
|
$row = $this->db_fetch_object($erg_res);
|
|
$this->errormsg="Kollision (Reservierung): $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;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Prueft eine Kollision auf Studentenebene
|
|
* Es werden nur die Kollisionen der Studenten abgefragt
|
|
* Raum, Lektor, Reservierung, Zeitsperren, etc werden hier nicht geprueft
|
|
*
|
|
* @param $stpl_table
|
|
* @return boolean true=kollision, false=keine kollision
|
|
*/
|
|
public function kollision_student($stpl_table='stundenplandev')
|
|
{
|
|
// Parameter Checken
|
|
// Bezeichnung der Stundenplan-Tabelle
|
|
$stpl_table='lehre.'.VIEW_BEGIN.$stpl_table;
|
|
|
|
$sql_query = "SELECT *
|
|
FROM ".$stpl_table."_student_unr
|
|
WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde)." AND student_uid IN(
|
|
SELECT uid FROM public.vw_gruppen WHERE
|
|
|
|
";
|
|
$sql_query.="(studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem)."
|
|
AND studiensemester_kurzbz=(
|
|
SELECT tbl_studiensemester.studiensemester_kurzbz
|
|
FROM
|
|
public.tbl_studiensemester
|
|
WHERE
|
|
tbl_studiensemester.ende >= ".$this->db_add_param($this->datum)."
|
|
AND tbl_studiensemester.start <=".$this->db_add_param($this->datum)." LIMIT 1)";
|
|
if ($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
|
|
$sql_query.=" AND (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
|
|
else
|
|
{
|
|
if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
|
|
$sql_query.=" AND (verband=".$this->db_add_param($this->ver).")";
|
|
else
|
|
$sql_query.=" AND (verband IS NULL OR verband='' OR verband=' ')";
|
|
if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
|
|
$sql_query.=" AND (gruppe=".$this->db_add_param($this->grp).")";
|
|
else
|
|
$sql_query.=" AND (gruppe IS NULL OR gruppe='' OR gruppe=' ')";
|
|
}
|
|
|
|
|
|
$sql_query.=")) AND unr!=".$this->db_add_param($this->unr);
|
|
|
|
if (!$erg_stpl=$this->db_query($sql_query))
|
|
{
|
|
$this->errormsg=$sql_query.$this->db_last_error();
|
|
return true;
|
|
}
|
|
|
|
$anz=$this->db_num_rows($erg_stpl);
|
|
|
|
if ($anz>0)
|
|
{
|
|
$row = $this->db_fetch_object($erg_stpl);
|
|
$this->errormsg="Kollision Student ($stpl_table): $row->student_uid $row->datum/$row->stunde ";
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Gruppiert die einzelnen Lehrstunden zusammen
|
|
*/
|
|
public function getLehrstundenGruppiert()
|
|
{
|
|
$result = array();
|
|
|
|
foreach($this->lehrstunden as $row_lehrstunde)
|
|
{
|
|
$found=false;
|
|
//Pruefen ob bereits ein Eintrag vorhanden ist
|
|
//zu dem dazugruppiert werden kann
|
|
|
|
/*
|
|
Kriterien fuer Gruppierung
|
|
- gleiches Datum
|
|
- gleiche Stunde
|
|
- gleiche UNR
|
|
*/
|
|
foreach($result as $key=>$row_result)
|
|
{
|
|
if($row_result->unr==$row_lehrstunde->unr
|
|
&& $row_result->datum==$row_lehrstunde->datum
|
|
&& $row_result->stunde==$row_lehrstunde->stunde)
|
|
{
|
|
$found=true;
|
|
//gleicher Eintrag gefunden
|
|
$grpidx = count($result[$key]->gruppen);
|
|
$result[$key]->gruppen[$grpidx]->studiengang_kz=$row_lehrstunde->studiengang_kz;
|
|
$result[$key]->gruppen[$grpidx]->sem=$row_lehrstunde->sem;
|
|
$result[$key]->gruppen[$grpidx]->ver=$row_lehrstunde->ver;
|
|
$result[$key]->gruppen[$grpidx]->grp=$row_lehrstunde->grp;
|
|
$result[$key]->gruppen[$grpidx]->gruppe_kurzbz=$row_lehrstunde->gruppe_kurzbz;
|
|
if(!in_array($row_lehrstunde->lektor_uid, $result[$key]->lektor_uid))
|
|
$result[$key]->lektor_uid[]=$row_lehrstunde->lektor_uid;
|
|
if(!in_array($row_lehrstunde->ort_kurzbz, $result[$key]->ort_kurzbz))
|
|
$result[$key]->ort_kurzbz[]=$row_lehrstunde->ort_kurzbz;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!$found)
|
|
{
|
|
// Wenn kein passender Eintrag vorhanden ist,
|
|
// wird ein neuer angelegt
|
|
$stunde=new lehrstunde();
|
|
$stunde->stundenplan_id=$row_lehrstunde->stundenplan_id;
|
|
$stunde->lehreinheit_id=$row_lehrstunde->lehreinheit_id;
|
|
$stunde->farbe = (isset($row_lehrstunde->farbe)?$row_lehrstunde->farbe:'FFFFFF');
|
|
$stunde->unr=$row_lehrstunde->unr;
|
|
$stunde->gruppen[0]->studiengang_kz=$row_lehrstunde->studiengang_kz;
|
|
$stunde->gruppen[0]->sem=$row_lehrstunde->sem;
|
|
$stunde->gruppen[0]->ver=$row_lehrstunde->ver;
|
|
$stunde->gruppen[0]->grp=$row_lehrstunde->grp;
|
|
$stunde->gruppen[0]->gruppe_kurzbz=$row_lehrstunde->gruppe_kurzbz;
|
|
$stunde->lektor_uid[]=$row_lehrstunde->lektor_uid;
|
|
$stunde->ort_kurzbz[]=$row_lehrstunde->ort_kurzbz;
|
|
$stunde->datum=$row_lehrstunde->datum;
|
|
$stunde->stunde=$row_lehrstunde->stunde;
|
|
$stunde->titel=$row_lehrstunde->titel;
|
|
$stunde->anmerkung=$row_lehrstunde->anmerkung;
|
|
$stunde->fix=$row_lehrstunde->fix;
|
|
$stunde->reservierung=$row_lehrstunde->reservierung;
|
|
$result[]=$stunde;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null)
|
|
{
|
|
|
|
$qry = "SELECT
|
|
stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
|
|
stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
|
|
array_agg(
|
|
CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
|
|
ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
|
|
END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
|
|
array_agg(ort_kurzbz) as orte
|
|
FROM
|
|
lehre.tbl_".$db_stpl_table." as stpl
|
|
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
|
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
|
|
WHERE ";
|
|
|
|
if($lehrveranstaltung_id!='')
|
|
{
|
|
$qry.=" lehreinheit_id in(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
|
|
WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
|
|
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
|
|
|
|
}
|
|
elseif($lehreinheit_id!='')
|
|
{
|
|
$qry.=" lehreinheit_id=".$this->db_add_param($lehreinheit_id);
|
|
}
|
|
elseif($mitarbeiter_uid!='')
|
|
{
|
|
$qry.=" mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND lehreinheit_id IN(
|
|
SELECT
|
|
lehreinheit_id
|
|
FROM
|
|
lehre.tbl_lehreinheitmitarbeiter
|
|
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
|
WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
|
|
}
|
|
elseif($student_uid!='')
|
|
{
|
|
$qry.=" lehreinheit_id in (
|
|
SELECT
|
|
lehreinheit_id
|
|
FROM
|
|
campus.vw_student_lehrveranstaltung
|
|
WHERE
|
|
uid=".$this->db_add_param($student_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
|
|
}
|
|
else
|
|
return false;
|
|
|
|
$qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
|
|
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id";
|
|
if($result = $this->db_query($qry))
|
|
{
|
|
while($row = $this->db_fetch_object($result))
|
|
{
|
|
$obj = new stdClass();
|
|
|
|
$obj->datum = $row->datum;
|
|
$obj->stundevon = $row->stundevon;
|
|
$obj->stundebis = $row->stundebis;
|
|
$obj->gruppen = array_unique($this->db_parse_array($row->gruppen));
|
|
$obj->lektoren = array_unique($this->db_parse_array($row->lektoren));
|
|
$obj->orte = array_unique($this->db_parse_array($row->orte));
|
|
$obj->lehrfach_bezeichnung = $row->lehrfach_bezeichnung;
|
|
$obj->lehreinheit_id = $row->lehreinheit_id;
|
|
|
|
$this->result[] = $obj;
|
|
}
|
|
return true;
|
|
}
|
|
else
|
|
return false;
|
|
}
|
|
}
|
|
|
|
?>
|