- Ü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:
Andreas Österreicher
2010-05-11 06:44:50 +00:00
parent 8ff16e0d4e
commit 88409c6532
26 changed files with 823 additions and 458 deletions
+2 -2
View File
@@ -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).', '.
+7 -1
View File
@@ -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;
+2 -2
View File
@@ -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)."'";
+16
View File
@@ -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
View File
@@ -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;
}
}
}
?>
+26 -6
View File
@@ -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;
+2 -2
View File
@@ -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'),
),
),
+14
View File
@@ -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;
}
+61 -17
View File
@@ -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)"