Kollisionsprüfung angepasst damit direkte Gruppen ignoriert werden

This commit is contained in:
Andreas Österreicher
2019-01-21 15:09:26 +01:00
parent 82fd967f00
commit 8253ba90fd
4 changed files with 59 additions and 8 deletions
+5
View File
@@ -524,6 +524,9 @@ class lehreinheit extends basis_db
//Gruppen / Verbaende pruefen
$sql_query="SELECT $stpl_id, studiengang_kz, semester, verband, gruppe_kurzbz, stunde, gruppe FROM $stpl_table
WHERE datum=".$this->db_add_param($datum)." AND stunde=".$this->db_add_param($stunde);
// Direkte Lehreinheitsgruppen kollidieren nicht
$sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_gruppe g WHERE g.gruppe_kurzbz=gruppe_kurzbz AND direktinskription=true)";
if (is_numeric($this->unr))
$sql_query.=" AND unr!=".$this->db_add_param($this->unr)." AND (1=2 ";
@@ -532,7 +535,9 @@ class lehreinheit extends basis_db
$sql_query.=" OR ((studiengang_kz=".$this->db_add_param($this->studiengang_kz[$anz])." AND semester=".$this->db_add_param($this->semester[$anz]).")";
if ($this->gruppe_kurzbz[$anz]!=null && $this->gruppe_kurzbz[$anz]!='' && $this->gruppe_kurzbz[$anz]!=' ')
{
$sql_query.=" OR (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz[$anz]).")";
}
else
{
if ($this->verband[$anz]!=null && $this->verband[$anz]!='' && $this->verband[$anz]!=' ')
+8 -2
View File
@@ -728,7 +728,13 @@ class lehrstunde extends basis_db
// 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)." ";
WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde);
// Direkte Lehreinheitsgruppen kollidieren nicht
$sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_gruppe WHERE gruppe_kurzbz = ".$stpl_table.".gruppe_kurzbz AND direktinskription=true)";
$sql_query.= " 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))."))";
@@ -776,7 +782,7 @@ class lehrstunde extends basis_db
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
$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"; //\n".$sql_query
return true;
}
}
+45 -6
View File
@@ -44,6 +44,7 @@ require_once(dirname(__FILE__).'/sprache.class.php');
require_once(dirname(__FILE__).'/functions.inc.php');
require_once(dirname(__FILE__).'/betriebsmittel.class.php');
require_once(dirname(__FILE__).'/lehrveranstaltung.class.php');
require_once(dirname(__FILE__).'/gruppe.class.php');
class wochenplan extends basis_db
{
@@ -1279,6 +1280,13 @@ class wochenplan extends basis_db
foreach ($this->std_plan[$i][$j] as $lehrstunde)
{
$a_unr[]=$lehrstunde->unr;
if($lehrstunde->gruppe_kurzbz!='')
{
$gruppe = new gruppe();
$gruppe->load($lehrstunde->gruppe_kurzbz);
if($gruppe->direktinskription)
continue;
}
$a_lvb[$lehrstunde->unr][]=$lehrstunde->sem.$lehrstunde->ver.$lehrstunde->grp;
}
@@ -1348,7 +1356,8 @@ class wochenplan extends basis_db
foreach ($a_unr as $unr)
{
$lvb_unr_arr[$a]=$unr;
$lvb[$a++]=$a_lvb[$unr];
if(isset($a_lvb[$unr]))
$lvb[$a++]=$a_lvb[$unr];
}
for ($a=0;$a<count($lvb)-1;$a++)
for ($b=0;$b<count($lvb[$a]);$b++)
@@ -1945,11 +1954,34 @@ class wochenplan extends basis_db
$raumtyp[$i]=$row->raumtyp;
$raumtypalt[$i]=$row->raumtypalternativ;
if ($row->gruppe_kurzbz!=null && $row->gruppe_kurzbz!='')
{
$gruppe[$i]=$row->gruppe_kurzbz;
@$lehrverband[$i]->stg_kz=$row->studiengang_kz;
$lehrverband[$i]->sem=$row->semester;
$lehrverband[$i]->ver=$row->verband;
$lehrverband[$i]->grp=$row->gruppe;
// Direktinskriptionsgruppen von der Kollisionspruefung ausnehmen
$grp_obj = new gruppe();
$grp_obj->load($row->gruppe_kurzbz);
if ($grp_obj->direktinskription)
$direktinskription = true;
else
$direktinskription = false;
}
else
$direktinskription = false;
if (!$direktinskription)
{
// Wenn direktinskriptionsgruppe dann wird Studiengang und Semester nicht
// gesetzt da dies sonst kollidiert
// Bei normalen Spezialgruppen wir dieser trotzdem gesetzt damit Verbandsgruppen
// mit Spezialgruppen des selben Studiengangs kollidieren
if(!isset($lehrverband[$i]))
$lehrverband[$i] = new stdClass();
$lehrverband[$i]->stg_kz=$row->studiengang_kz;
$lehrverband[$i]->sem=$row->semester;
$lehrverband[$i]->ver=$row->verband;
$lehrverband[$i]->grp=$row->gruppe;
}
$lektor[$i]=$row->lektor_uid;
$verplant[$i]=$row->verplant;
$planstunden[$i]=$row->planstunden;
@@ -2018,7 +2050,13 @@ class wochenplan extends basis_db
{
$gruppe=array_unique($gruppe);
foreach ($gruppe as $g)
$gruppen.=" OR gruppe_kurzbz=".$this->db_add_param($g);
{
// Gruppen fuer direkte inskription kollidieren nicht
/*$grp_obj = new gruppe();
$grp_obj->load($g);
if($grp_obj->direktinskription==false)*/
$gruppen.=" OR gruppe_kurzbz=".$this->db_add_param($g);
}
}
//Lehrverband
@@ -2092,6 +2130,7 @@ class wochenplan extends basis_db
($lkt $gruppen OR ($lvb) )";
if (is_numeric($unr))
$sql_query.=" AND unr!=".$this->db_add_param($unr);
$sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_gruppe WHERE gruppe_kurzbz=".$stpl_table.".gruppe_kurzbz and direktinskription=true)";
if (!$this->db_query($sql_query))
{
+1
View File
@@ -162,6 +162,7 @@ toolbarbutton.stplweekoverlay-toolbarbutton:hover
color: #AAAAAA;
visibility:hidden;
font-size: small;
margin-top: 10px;
}
treechildren::-moz-tree-row(makeItred)