mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-25 00:24:35 +00:00
- Übersicht über die LVs mit Plätzen für Incoming
- Kollisionsplanung auf Studentenebene direkt beim Verplanen im Tempus - Scrollposition im Tempus bleibt nach dem verschieben einer Stunde erhalten - Semesterplan wird beim Starten nicht mehr automatisch geladen - Diverse Bugfixes beim Bearbeiten und Anlegen von Lehreinheiten
This commit is contained in:
@@ -279,7 +279,7 @@ class adresse extends basis_db
|
||||
$this->addslashes($this->name).', '.
|
||||
$this->addslashes($this->strasse).', '.
|
||||
$this->addslashes($this->plz).', '.
|
||||
$this->addslashes($this->typ).', '.
|
||||
$this->addslashes(trim($this->typ)).', '.
|
||||
$this->addslashes($this->ort).', '.
|
||||
$this->addslashes($this->nation).', now(), '.
|
||||
$this->addslashes($this->insertvon).', '.
|
||||
@@ -303,7 +303,7 @@ class adresse extends basis_db
|
||||
' name='.$this->addslashes($this->name).', '.
|
||||
' strasse='.$this->addslashes($this->strasse).', '.
|
||||
' plz='.$this->addslashes($this->plz).', '.
|
||||
' typ='.$this->addslashes($this->typ).', '.
|
||||
' typ='.$this->addslashes(trim($this->typ)).', '.
|
||||
' ort='.$this->addslashes($this->ort).', '.
|
||||
' nation='.$this->addslashes($this->nation).', '.
|
||||
' gemeinde='.$this->addslashes($this->gemeinde).', '.
|
||||
|
||||
@@ -288,7 +288,13 @@ function loadVariables($user)
|
||||
global $ignore_kollision;
|
||||
$ignore_kollision='false';
|
||||
}
|
||||
|
||||
|
||||
if (!isset($kollision_student))
|
||||
{
|
||||
global $kollision_student;
|
||||
$kollision_student='false';
|
||||
}
|
||||
|
||||
if (!isset($ignore_zeitsperre))
|
||||
{
|
||||
global $ignore_zeitsperre;
|
||||
|
||||
@@ -377,9 +377,9 @@ class lehreinheitgruppe extends basis_db
|
||||
lehreinheit_id='".addslashes($this->lehreinheit_id)."' AND
|
||||
studiengang_kz='".addslashes($this->studiengang_kz)."'";
|
||||
if($this->semester!='')
|
||||
$qry.=" AND trim(semester)='".addslashes($this->semester)."'";
|
||||
$qry.=" AND semester='".addslashes($this->semester)."'";
|
||||
else
|
||||
$qry.=" AND (trim(semester)='' OR semester is null)";
|
||||
$qry.=" AND (semester='' OR semester is null)";
|
||||
|
||||
if($this->verband!='')
|
||||
$qry.=" AND trim(verband)='".addslashes($this->verband)."'";
|
||||
|
||||
@@ -204,6 +204,22 @@ class lehreinheitmitarbeiter extends basis_db
|
||||
|
||||
if($new)
|
||||
{
|
||||
//Pruefen ob dieser Mitarbeiter schon zugeordnet ist
|
||||
$qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id='".addslashes($this->lehreinheit_id)."' AND mitarbeiter_uid='".addslashes($this->mitarbeiter_uid)."'";
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($this->db_num_rows()>0)
|
||||
{
|
||||
$this->errormsg='Der Mitarbeiter ist bereits zugeteilt!';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg='Fehler beim Pruefen der Zuordnung';
|
||||
return false;
|
||||
}
|
||||
|
||||
//ToDo ID entfernen
|
||||
$qry = 'INSERT INTO lehre.tbl_lehreinheitmitarbeiter (lehreinheit_id, mitarbeiter_uid, semesterstunden, planstunden,
|
||||
stundensatz, faktor, anmerkung, lehrfunktion_kurzbz, bismelden, ext_id, insertamum, insertvon)
|
||||
|
||||
+179
-81
@@ -29,6 +29,7 @@
|
||||
*/
|
||||
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
|
||||
{
|
||||
@@ -525,107 +526,65 @@ class lehrstunde extends basis_db
|
||||
|
||||
/**
|
||||
* 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
|
||||
* Bei einer Kollision steht der Grund der Kollision in '$this->errormsg'.
|
||||
* @param string db_stpl_table Tabllenname des Stundenplans im DBMS
|
||||
* @return boolean true=ok, false=fehler
|
||||
* @return boolean true=kollision, false=keine kollision
|
||||
*/
|
||||
public function kollision($stpl_table='stundenplandev')
|
||||
{
|
||||
$ignore_reservation=false;
|
||||
$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->datum' AND stunde=$this->stunde AND (ort_kurzbz='$this->ort_kurzbz' OR ";
|
||||
WHERE datum='$this->datum' AND stunde=$this->stunde AND (ort_kurzbz='$this->ort_kurzbz' ";
|
||||
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";
|
||||
$sql_query.=" OR (uid='$this->lektor_uid' AND uid!='_DummyLektor') ";
|
||||
|
||||
if (!$this->db_query($sql_query))
|
||||
//Wenn eine Kollisionspruefung auf Studentenebene durchgefuehrt wird, werden die LVB nicht gecheckt
|
||||
if(!$kollision_student)
|
||||
{
|
||||
$sql_query.=" OR (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' OR gruppe_kurzbz IS null)";
|
||||
$sql_query.=")";
|
||||
}
|
||||
$sql_query.=") AND unr!=$this->unr";
|
||||
|
||||
if (!$erg_stpl = $this->db_query($sql_query))
|
||||
{
|
||||
$this->errormsg=$sql_query.$this->db_last_error();
|
||||
return true;
|
||||
}
|
||||
$erg_stpl = $this->db_result;
|
||||
|
||||
$anz=$this->db_num_rows($erg_stpl);
|
||||
//Check
|
||||
if ($anz==0)
|
||||
{
|
||||
// Zeitsperren pruefen
|
||||
if ($this->lektor_uid!='_DummyLektor')
|
||||
{
|
||||
// Datenbank abfragen ( studiengang_kz, titel, beschreibung )
|
||||
$sql_query="SELECT zeitsperre_id,zeitsperretyp_kurzbz,mitarbeiter_uid AS lektor,vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM campus.tbl_zeitsperre
|
||||
WHERE mitarbeiter_uid='$this->lektor_uid'
|
||||
AND (vondatum<'$this->datum' OR (vondatum='$this->datum' AND (vonstunde<=$this->stunde OR vonstunde IS NULL)))
|
||||
AND (bisdatum>'$this->datum' OR (bisdatum='$this->datum' AND (bisstunde>=$this->stunde OR bisstunde IS NULL)));";
|
||||
//echo $sql_query.'<br>';
|
||||
if (!$this->db_query($sql_query))
|
||||
{
|
||||
$this->errormsg=$sql_query.$this->db_last_error();
|
||||
return true;
|
||||
}
|
||||
$erg_zs = $this->db_result;
|
||||
$anz_zs=$this->db_num_rows($erg_zs);
|
||||
//Check
|
||||
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;
|
||||
}
|
||||
}
|
||||
// Reservierungen pruefen?
|
||||
if (!$ignore_reservation)
|
||||
{
|
||||
// Datenbank abfragen ( studiengang_kz, titel, beschreibung )
|
||||
$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->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.="))";
|
||||
//echo $sql_query.'<br>';
|
||||
if (!$this->db_query($sql_query))
|
||||
{
|
||||
$this->errormsg=$sql_query.$this->db_last_error();
|
||||
return true;
|
||||
}
|
||||
$erg_res = $this->db_result;
|
||||
$anz_res = $this->db_num_rows($erg_res);
|
||||
//Check
|
||||
if ($anz_res==0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$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;
|
||||
}
|
||||
}
|
||||
if($ignore_zeitsperre=='false' && $this->lektor_uid!='_DummyLektor' && $this->kollision_zeitsperre())
|
||||
return true;
|
||||
|
||||
// Reservierungen pruefen
|
||||
if ($ignore_reservierung=='false' && $this->kollision_reservierung())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
@@ -635,6 +594,145 @@ class lehrstunde extends basis_db
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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->lektor_uid'
|
||||
AND (vondatum<'$this->datum' OR (vondatum='$this->datum' AND (vonstunde<=$this->stunde OR vonstunde IS NULL)))
|
||||
AND (bisdatum>'$this->datum' OR (bisdatum='$this->datum' AND (bisstunde>=$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->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.="))";
|
||||
|
||||
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->datum' AND stunde='$this->stunde' AND student_uid IN(
|
||||
SELECT uid FROM public.vw_gruppen WHERE
|
||||
|
||||
";
|
||||
$sql_query.="(studiengang_kz=$this->studiengang_kz AND semester=$this->sem
|
||||
AND studiensemester_kurzbz=(
|
||||
SELECT tbl_studiensemester.studiensemester_kurzbz
|
||||
FROM
|
||||
public.tbl_studiensemester
|
||||
WHERE
|
||||
tbl_studiensemester.ende >= '$this->datum'
|
||||
AND tbl_studiensemester.start <='$this->datum' LIMIT 1)";
|
||||
if ($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
|
||||
$sql_query.=" AND (gruppe_kurzbz='$this->gruppe_kurzbz')";
|
||||
else
|
||||
{
|
||||
if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
|
||||
$sql_query.=" AND (verband='$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->grp')";
|
||||
else
|
||||
$sql_query.=" AND (gruppe IS NULL OR gruppe='' OR gruppe=' ')";
|
||||
}
|
||||
|
||||
|
||||
$sql_query.=")) AND unr!=$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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -53,6 +53,7 @@ class lehrveranstaltung extends basis_db
|
||||
public $updatevon; // string
|
||||
public $sprache='German'; // varchar(16)
|
||||
public $sort; // smallint
|
||||
public $incoming; // smallint
|
||||
public $zeugnis=true; // boolean
|
||||
public $projektarbeit; // boolean
|
||||
public $koordinator; // varchar(16)
|
||||
@@ -116,6 +117,7 @@ class lehrveranstaltung extends basis_db
|
||||
$this->updatevon=$row->updatevon;
|
||||
$this->sprache=$row->sprache;
|
||||
$this->sort=$row->sort;
|
||||
$this->incoming=$row->incoming;
|
||||
$this->zeugnis=($row->zeugnis=='t'?true:false);
|
||||
$this->projektarbeit=($row->projektarbeit=='t'?true:false);
|
||||
$this->koordinator=$row->koordinator;
|
||||
@@ -167,6 +169,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->updatevon=$row->updatevon;
|
||||
$lv_obj->sprache=$row->sprache;
|
||||
$lv_obj->sort=$row->sort;
|
||||
$lv_obj->incoming=$row->incoming;
|
||||
$lv_obj->zeugnis=($row->zeugnis=='t'?true:false);
|
||||
$lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false);
|
||||
$lv_obj->koordinator=$row->koordinator;
|
||||
@@ -234,7 +237,7 @@ class lehrveranstaltung extends basis_db
|
||||
|
||||
if ($sort == "bezeichnung")
|
||||
$qry .= " ORDER BY bezeichnung";
|
||||
else if (is_null($sort) || empty($sort))
|
||||
elseif (is_null($sort) || empty($sort))
|
||||
$qry .= " ORDER BY semester, bezeichnung";
|
||||
else
|
||||
$qry .= " ORDER BY $sort ";
|
||||
@@ -273,6 +276,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->updatevon=$row->updatevon;
|
||||
$lv_obj->sprache=$row->sprache;
|
||||
$lv_obj->sort=$row->sort;
|
||||
$lv_obj->incoming=$row->incoming;
|
||||
$lv_obj->zeugnis=($row->zeugnis=='t'?true:false);
|
||||
$lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false);
|
||||
$lv_obj->koordinator=$row->koordinator;
|
||||
@@ -285,7 +289,7 @@ class lehrveranstaltung extends basis_db
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Liefert alle Lehrveranstaltungen zu einem Studiengang/Semester
|
||||
* @param $studiengang_kz
|
||||
* @param $semester
|
||||
@@ -344,11 +348,11 @@ class lehrveranstaltung extends basis_db
|
||||
|
||||
if ($sort == "bezeichnung")
|
||||
$qry .= " ORDER BY bezeichnung";
|
||||
else if (is_null($sort) || empty($sort))
|
||||
elseif (is_null($sort) || empty($sort))
|
||||
$qry .= " ORDER BY semester, bezeichnung";
|
||||
else
|
||||
$qry .= " ORDER BY $sort ";
|
||||
#echo "<hr> $qry <hr>";
|
||||
|
||||
//Datensaetze laden
|
||||
if(!$this->db_query($qry))
|
||||
{
|
||||
@@ -383,6 +387,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->updatevon=$row->updatevon;
|
||||
$lv_obj->sprache=$row->sprache;
|
||||
$lv_obj->sort=$row->sort;
|
||||
$lv_obj->incoming=$row->incoming;
|
||||
$lv_obj->zeugnis=($row->zeugnis=='t'?true:false);
|
||||
$lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false);
|
||||
$lv_obj->koordinator=$row->koordinator;
|
||||
@@ -442,6 +447,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->updatevon=$row->updatevon;
|
||||
$lv_obj->sprache=$row->sprache;
|
||||
$lv_obj->sort=$row->sort;
|
||||
$lv_obj->incoming=$row->incoming;
|
||||
$lv_obj->zeugnis=($row->zeugnis=='t'?true:false);
|
||||
$lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false);
|
||||
$lv_obj->koordinator=$row->koordinator;
|
||||
@@ -516,6 +522,16 @@ class lehrveranstaltung extends basis_db
|
||||
$this->errormsg = 'Semesterstunden muss ein eine gueltige ganze Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if($this->sort!='' && !isint($this->sort))
|
||||
{
|
||||
$this->errormsg = 'Sort muss ein eine gueltige ganze Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if($this->incoming!='' && !isint($this->incoming))
|
||||
{
|
||||
$this->errormsg = 'Sort muss ein eine gueltige ganze Zahl sein';
|
||||
return false;
|
||||
}
|
||||
$this->errormsg = '';
|
||||
return true;
|
||||
}
|
||||
@@ -538,7 +554,7 @@ class lehrveranstaltung extends basis_db
|
||||
//Neuen Datensatz anlegen
|
||||
$qry = 'BEGIN; INSERT INTO lehre.tbl_lehrveranstaltung (studiengang_kz, bezeichnung, kurzbz, lehrform_kurzbz,
|
||||
semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, ext_id, insertamum,
|
||||
insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort,zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz) VALUES ('.
|
||||
insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort,zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz,incoming) VALUES ('.
|
||||
$this->addslashes($this->studiengang_kz).', '.
|
||||
$this->addslashes($this->bezeichnung).', '.
|
||||
$this->addslashes($this->kurzbz).', ';
|
||||
@@ -568,7 +584,8 @@ class lehrveranstaltung extends basis_db
|
||||
$this->addslashes($this->sprache).','.
|
||||
$this->addslashes($this->koordinator).','.
|
||||
$this->addslashes($this->bezeichnung_english).','.
|
||||
$this->addslashes($this->orgform_kurzbz).');';
|
||||
$this->addslashes($this->orgform_kurzbz).','.
|
||||
$this->addslashes($this->incoming).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -608,6 +625,7 @@ class lehrveranstaltung extends basis_db
|
||||
'updateamum='.$this->addslashes($this->updateamum) .','.
|
||||
'updatevon='.$this->addslashes($this->updatevon) .','.
|
||||
'sort='.$this->addslashes($this->sort) .','.
|
||||
'incoming='.$this->addslashes($this->incoming).','.
|
||||
'zeugnis='.($this->zeugnis?'true':'false').','.
|
||||
'projektarbeit='.($this->projektarbeit?'true':'false').','.
|
||||
'koordinator='.$this->addslashes($this->koordinator).','.
|
||||
@@ -705,6 +723,7 @@ class lehrveranstaltung extends basis_db
|
||||
$lv_obj->updatevon=$row->updatevon;
|
||||
$lv_obj->sprache=$row->sprache;
|
||||
$lv_obj->sort=$row->sort;
|
||||
$lv_obj->incoming=$row->incoming;
|
||||
$lv_obj->zeugnis=($row->zeugnis=='t'?true:false);
|
||||
$lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false);
|
||||
$lv_obj->zeugnis=$row->koordinator;
|
||||
@@ -781,6 +800,7 @@ class lehrveranstaltung extends basis_db
|
||||
$l->insertamum = $row->insertamum;
|
||||
$l->insertvon = $row->insertvon;
|
||||
$l->sort = $row->sort;
|
||||
$l->incoming = $row->incoming;
|
||||
$l->zeugnis = ($row->zeugnis=='t'?true:false);
|
||||
$l->projektarbeit = ($row->projektarbeit=='t'?true:false);
|
||||
$l->koordinator = $row->koordinator;
|
||||
|
||||
@@ -167,7 +167,7 @@ $menu=array
|
||||
'link'=>'left.php?categorie=Inventar', 'target'=>'nav',
|
||||
'Inventar'=> array
|
||||
(
|
||||
'name'=>'Inventar', 'permissions'=>array('admin','wawi','support'),
|
||||
'name'=>'Inventar', 'permissions'=>array('admin','wawi','support','wawi/inventar'),
|
||||
'Neu'=>array('name'=>'Neu', 'link'=>'inventar/inventar_pflege.php', 'target'=>'main'),
|
||||
'Suche'=>array('name'=>'Suche', 'link'=>'inventar/inventar.php', 'target'=>'main'),
|
||||
'AfA'=>array('name'=>'AfA', 'link'=>'inventar/inventar_afa.php', 'target'=>'main'),
|
||||
@@ -176,7 +176,7 @@ $menu=array
|
||||
),
|
||||
'WAWI'=> array
|
||||
(
|
||||
'name'=>'WAWI', 'permissions'=>array('admin','wawi','support'),
|
||||
'name'=>'WAWI', 'permissions'=>array('admin','wawi','support','wawi/inventar'),
|
||||
'Suche'=>array('name'=>'Suche', 'link'=>'inventar/bestellung.php', 'target'=>'main'),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -109,6 +109,18 @@ class variable extends basis_db
|
||||
if(is_null($new))
|
||||
$new = $this->new;
|
||||
|
||||
if(!is_bool($new))
|
||||
{
|
||||
$qry ="SELECT * FROM public.tbl_variable WHERE uid='".addslashes($this->uid)."' AND name='".addslashes($this->name)."';";
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($this->db_num_rows()==0)
|
||||
$new=true;
|
||||
else
|
||||
$new=false;
|
||||
}
|
||||
}
|
||||
|
||||
//Variablen auf Gueltigkeit pruefen
|
||||
if(!$this->validate())
|
||||
return false;
|
||||
@@ -247,6 +259,8 @@ class variable extends basis_db
|
||||
if (!isset($this->variable->ignore_reservierung))
|
||||
$this->variable->ignore_reservierung='false';
|
||||
|
||||
if (!isset($this->variable->kollision_student))
|
||||
$this->variable->kollision_student='false';
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -848,7 +848,7 @@ class wochenplan extends basis_db
|
||||
* @param datum Datum eines Tages in der angeforderten Woche
|
||||
* @return true oder false
|
||||
*/
|
||||
public function draw_week_xul($semesterplan, $uid, $wunsch=null, $ignore_kollision=false)
|
||||
public function draw_week_xul($semesterplan, $uid, $wunsch=null, $ignore_kollision=false, $kollision_student=false)
|
||||
{
|
||||
//echo $wunsch;
|
||||
global $cfgStdBgcolor;
|
||||
@@ -924,7 +924,7 @@ class wochenplan extends basis_db
|
||||
{
|
||||
$isferien=$ferien->isferien($datum);
|
||||
echo '<row><vbox>';
|
||||
echo '<html:div><html:small>'.date("l",$datum).'<html:br /></html:small>'.date("j.m y",$datum).'</html:div>';
|
||||
echo '<html:div><html:small>'.date("l",$datum).'<html:br /></html:small>'.date("j.m. y",$datum).'</html:div>';
|
||||
echo '</vbox>';
|
||||
for ($k=0; $k<$num_rows_stunde; $k++)
|
||||
{
|
||||
@@ -993,19 +993,58 @@ class wochenplan extends basis_db
|
||||
$a_unr[]=$lehrstunde->unr;
|
||||
$a_lvb[$lehrstunde->unr][]=$lehrstunde->sem.$lehrstunde->ver.$lehrstunde->grp;
|
||||
}
|
||||
|
||||
// Unterrichtsnummer (Kollision?)
|
||||
$a_unr=array_unique($a_unr);
|
||||
$kollision+=count($a_unr);
|
||||
// Ist es bei LVB-Ansicht wirklich eine Kollision?
|
||||
if ($kollision>0 && $this->type=='verband')
|
||||
//Kollisionspruefung Studentenebene
|
||||
if($kollision_student=='true')
|
||||
{
|
||||
$kollision=0;
|
||||
$a=0;
|
||||
foreach ($a_unr as $unr)
|
||||
$studiensemester = getStudiensemesterFromDatum(date('Y-m-d',$datum));
|
||||
|
||||
$qry = "SELECT datum, stunde, student_uid, count(student_uid) AS anzahl
|
||||
FROM (
|
||||
SELECT sub_stpl_uid.unr, sub_stpl_uid.datum, sub_stpl_uid.stunde, sub_stpl_uid.student_uid
|
||||
FROM ( SELECT stpl.unr, stpl.datum, stpl.stunde, tbl_benutzergruppe.uid AS student_uid
|
||||
FROM lehre.tbl_stundenplandev stpl
|
||||
JOIN public.tbl_benutzergruppe USING (gruppe_kurzbz)
|
||||
WHERE tbl_benutzergruppe.studiensemester_kurzbz::text = '".$studiensemester."'
|
||||
GROUP BY stpl.unr, stpl.datum, stpl.stunde, tbl_benutzergruppe.uid
|
||||
UNION
|
||||
SELECT stpl.unr, stpl.datum, stpl.stunde, tbl_studentlehrverband.student_uid
|
||||
FROM lehre.tbl_stundenplandev stpl
|
||||
JOIN public.tbl_studentlehrverband ON stpl.gruppe_kurzbz IS NULL AND stpl.studiengang_kz = tbl_studentlehrverband.studiengang_kz AND stpl.semester = tbl_studentlehrverband.semester AND (stpl.verband = tbl_studentlehrverband.verband OR stpl.verband = ' '::bpchar AND stpl.verband <> tbl_studentlehrverband.verband) AND (stpl.gruppe = tbl_studentlehrverband.gruppe OR stpl.gruppe = ' '::bpchar AND stpl.gruppe <> tbl_studentlehrverband.gruppe)
|
||||
WHERE tbl_studentlehrverband.studiensemester_kurzbz::text = '".$studiensemester."'
|
||||
GROUP BY stpl.unr, stpl.datum, stpl.stunde, tbl_studentlehrverband.student_uid) sub_stpl_uid
|
||||
GROUP BY sub_stpl_uid.unr, sub_stpl_uid.datum, sub_stpl_uid.stunde, sub_stpl_uid.student_uid
|
||||
|
||||
) as a
|
||||
WHERE datum='".date('Y-m-d',$datum)."' AND stunde='$j'
|
||||
GROUP BY datum, stunde, student_uid
|
||||
HAVING count(student_uid)>1
|
||||
ORDER BY datum, stunde, student_uid LIMIT 1;
|
||||
";
|
||||
|
||||
if($this->db_query($qry))
|
||||
if($this->db_num_rows()>0)
|
||||
$kollision++;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
//Kollisionspruefung LVB Ebene
|
||||
// Ist es bei LVB-Ansicht wirklich eine Kollision?
|
||||
if ($kollision>0 && $this->type=='verband')
|
||||
{
|
||||
array_unique($a_lvb[$unr]);
|
||||
$lvb[$a++]=$a_lvb[$unr];
|
||||
}
|
||||
$kollision=0;
|
||||
$a=0;
|
||||
foreach ($a_unr as $unr)
|
||||
{
|
||||
array_unique($a_lvb[$unr]);
|
||||
$lvb[$a++]=$a_lvb[$unr];
|
||||
}
|
||||
|
||||
for ($a=0;$a<count($lvb)-1;$a++)
|
||||
for ($b=0;$b<count($lvb[$a]);$b++)
|
||||
for ($c=$a+1;$c<count($lvb);$c++)
|
||||
@@ -1013,16 +1052,18 @@ class wochenplan extends basis_db
|
||||
{
|
||||
$s1=mb_substr($lvb[$a][$b],0,1);
|
||||
$s2=mb_substr($lvb[$c][$d],0,1);
|
||||
$v1=mb_substr($lvb[$a][$b],1,1);
|
||||
$v2=mb_substr($lvb[$c][$d],1,1);
|
||||
$g1=mb_substr($lvb[$a][$b],2,1);
|
||||
$g2=mb_substr($lvb[$c][$d],2,1);
|
||||
$v1=trim(mb_substr($lvb[$a][$b],1,1));
|
||||
$v2=trim(mb_substr($lvb[$c][$d],1,1));
|
||||
$g1=trim(mb_substr($lvb[$a][$b],2,1));
|
||||
$g2=trim(mb_substr($lvb[$c][$d],2,1));
|
||||
if ($s1==$s2 || !$s1 || $s1=='' || $s1=='0' || !$s2 || $s2=='' || $s2=='0')
|
||||
if ($v1==$v2 || !$v1 || $v1=='' || $v1=='0' || !$v2 || $v2=='' || $v2=='0')
|
||||
if ($g1==$g2 || !$g1 || $g1=='' || $g1=='0' || !$g2 || $g2=='' || $g2=='0')
|
||||
$kollision++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Kollision anzeigen?
|
||||
if ($ignore_kollision)
|
||||
$kollision=0;
|
||||
@@ -1141,14 +1182,17 @@ class wochenplan extends basis_db
|
||||
$blink_aus='';
|
||||
}
|
||||
|
||||
$stg_obj = new studiengang();
|
||||
$stg_obj->load($stg_kz);
|
||||
|
||||
// Ausgabe
|
||||
echo '<button id="buttonSTPL'.$count++.'"
|
||||
tooltiptext="('.$updatevonam.') '.$titel.' - '.$anmerkung.'"
|
||||
style="border-width:1px;'.((isset($farbe) && $farbe!='')?'background-color:#'.$farbe:'').';"
|
||||
styleOrig="border-width:1px;'.((isset($farbe) && $farbe!='')?'background-color:#'.$farbe:'').'" ';
|
||||
if ($berechtigung->isBerechtigt('lv-plan',$stg_kz,'uid') || $berechtigung->isBerechtigt('lv-plan',0,'uid') || $berechtigung->isBerechtigt('admin',0,'uid') || $berechtigung->isBerechtigt('admin',$stg_kz,'uid'))
|
||||
styleOrig="border-width:1px;'.((isset($farbe) && $farbe!='')?'background-color:#'.$farbe:'').';" ';
|
||||
if ($berechtigung->isBerechtigt('lehre/lvplan',$stg_obj->oe_kurzbz,'uid'))
|
||||
echo ' context="stplPopupMenue" ';
|
||||
if ($berechtigung->isBerechtigt('lv-plan',$stg_kz,'u') || $berechtigung->isBerechtigt('lv-plan',0,'u') || $berechtigung->isBerechtigt('admin',0,'u') || $berechtigung->isBerechtigt('admin',$stg_kz,'u'))
|
||||
if ($berechtigung->isBerechtigt('lehre/lvplan',$stg_obj->oe_kurzbz,'u'))
|
||||
echo 'ondraggesture="nsDragAndDrop.startDrag(event,listObserver)" ';
|
||||
echo 'ondragdrop="nsDragAndDrop.drop(event,boardObserver)"
|
||||
ondragover="nsDragAndDrop.dragOver(event,boardObserver)"
|
||||
|
||||
Reference in New Issue
Block a user