mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-16 14:32:18 +00:00
Kollisionsprüfung angepasst damit direkte Gruppen ignoriert werden
This commit is contained in:
@@ -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]!=' ')
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -162,6 +162,7 @@ toolbarbutton.stplweekoverlay-toolbarbutton:hover
|
||||
color: #AAAAAA;
|
||||
visibility:hidden;
|
||||
font-size: small;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
treechildren::-moz-tree-row(makeItred)
|
||||
|
||||
Reference in New Issue
Block a user