diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php
index ddda4a8bd..d9b4ff1ed 100644
--- a/include/lehrveranstaltung.class.php
+++ b/include/lehrveranstaltung.class.php
@@ -1201,5 +1201,69 @@ class lehrveranstaltung extends basis_db {
return false;
}
}
+
+ /**
+ * Sucht nach Lehrveranstaltungen
+ * @param $filter Suchfilter
+ */
+ public function search($filter)
+ {
+ $qry = "SELECT
+ tbl_lehrveranstaltung.*, tbl_studiengang.kurzbzlang as studiengang_kurzbzlang
+ FROM
+ lehre.tbl_lehrveranstaltung
+ JOIN public.tbl_studiengang USING(studiengang_kz)
+ WHERE
+ lower(tbl_lehrveranstaltung.bezeichnung || ' ' || tbl_studiengang.kurzbzlang || ' ' || tbl_lehrveranstaltung.semester) like lower('%".$this->db_escape($filter)."%')
+ OR lower(tbl_studiengang.kurzbzlang || ' ' || tbl_lehrveranstaltung.semester || ' ' || tbl_lehrveranstaltung.bezeichnung) like lower('%".$this->db_escape($filter)."%')
+ ";
+ if($result = $this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object($result))
+ {
+ $lv_obj = new lehrveranstaltung();
+
+ $lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
+ $lv_obj->studiengang_kz = $row->studiengang_kz;
+ $lv_obj->bezeichnung = $row->bezeichnung;
+ $lv_obj->kurzbz = $row->kurzbz;
+ $lv_obj->lehrform_kurzbz = $row->lehrform_kurzbz;
+ $lv_obj->semester = $row->semester;
+ $lv_obj->ects = $row->ects;
+ $lv_obj->semesterstunden = $row->semesterstunden;
+ $lv_obj->anmerkung = $row->anmerkung;
+ $lv_obj->lehre = $this->db_parse_bool($row->lehre);
+ $lv_obj->lehreverzeichnis = $row->lehreverzeichnis;
+ $lv_obj->aktiv = $this->db_parse_bool($row->aktiv);
+ $lv_obj->ext_id = $row->ext_id;
+ $lv_obj->insertamum = $row->insertamum;
+ $lv_obj->insertvon = $row->insertvon;
+ $lv_obj->planfaktor = $row->planfaktor;
+ $lv_obj->planlektoren = $row->planlektoren;
+ $lv_obj->planpersonalkosten = $row->planpersonalkosten;
+ $lv_obj->plankostenprolektor = $row->plankostenprolektor;
+ $lv_obj->updateamum = $row->updateamum;
+ $lv_obj->updatevon = $row->updatevon;
+ $lv_obj->sprache = $row->sprache;
+ $lv_obj->sort = $row->sort;
+ $lv_obj->incoming = $row->incoming;
+ $lv_obj->zeugnis = $this->db_parse_bool($row->zeugnis);
+ $lv_obj->projektarbeit = $this->db_parse_bool($row->projektarbeit);
+ $lv_obj->koordinator = $row->koordinator;
+ $lv_obj->bezeichnung_english = $row->bezeichnung_english;
+ $lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
+
+ $lv_obj->studiengang_kurzbzlang = $row->studiengang_kurzbzlang;
+
+ $this->lehrveranstaltungen[] = $lv_obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg='Fehler bei Datenbankabfrage';
+ return false;
+ }
+ }
}
?>
diff --git a/include/lvregel.class.php b/include/lvregel.class.php
index 360469dc3..424da7778 100644
--- a/include/lvregel.class.php
+++ b/include/lvregel.class.php
@@ -25,10 +25,12 @@
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/student.class.php');
+require_once(dirname(__FILE__).'/prestudent.class.php');
+require_once(dirname(__FILE__).'/studiensemester.class.php');
class lvregel extends basis_db
{
- protected $new=true; // boolean
+ protected $new=true; // boolean
public $result = array(); // Result Objekt
//Tabellenspalten
@@ -47,6 +49,9 @@ class lvregel extends basis_db
protected $lvregeltyp_arr=array();
protected $bezeichnung; //varchar(256)
+ protected $lehrveranstaltung_bezeichnung;
+ protected $cache;
+
/**
* Konstruktor
*/
@@ -333,7 +338,7 @@ class lvregel extends basis_db
public function loadLVRegeln($studienplan_lehrveranstaltung_id)
{
$qry = 'SELECT
- *
+ *, (SELECT bezeichnung FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=tbl_lvregel.lehrveranstaltung_id) as lvbezeichnung
FROM
lehre.tbl_lvregel
WHERE
@@ -357,6 +362,7 @@ class lvregel extends basis_db
$obj->insertvon = $row->insertvon;
$obj->updatevon = $row->updatevon;
$obj->updateamum = $row->updateamum;
+ $obj->lehrveranstaltung_bezeichnung = $row->lvbezeichnung;
$this->result[] = $obj;
}
@@ -371,6 +377,8 @@ class lvregel extends basis_db
/**
* Liefert die Lehrveranstaltungen als verschachtelten Tree
+ * @param $studienplan_lehrveranstaltung_id
+ * @return Array mit den verschachtelten Regeln
*/
public function getLVRegelTree($studienplan_lehrveranstaltung_id)
{
@@ -390,7 +398,9 @@ class lvregel extends basis_db
}
/**
- * Generiert die Subtrees des Lehrveranstaltungstrees
+ * Generiert rekursiv die Subtrees des Lehrveranstaltungstrees
+ * @param $lvregel_id Regel ID des Teilbaumes
+ * @param Array mit den Subtree Elementen des Regelbaumes
*/
protected function getLVRegelTreeChilds($lvregel_id)
{
@@ -406,6 +416,9 @@ class lvregel extends basis_db
return $childs;
}
+ /**
+ * Erstellt ein Array aus dem Result Objekt für die Webservice Verwendung
+ */
public function cleanResult()
{
$data = array();
@@ -430,6 +443,7 @@ class lvregel extends basis_db
$obj->lvregeltyp_kurzbz = $row->lvregeltyp_kurzbz;
$obj->bezeichnung = $row->bezeichnung;
+ $obj->lehrveranstaltung_bezeichnung = $row->lehrveranstaltung_bezeichnung;
$data[]=$obj;
}
}
@@ -451,33 +465,39 @@ class lvregel extends basis_db
$obj->lvregeltyp_kurzbz = $this->lvregeltyp_kurzbz;
$obj->bezeichnung = $this->bezeichnung;
-
+ $obj->lehrveranstaltung_bezeichnung = $this->lehrveranstaltung_bezeichnung;
$data[]=$obj;
}
return $data;
}
/**
- * Prüft ob sich eine Studierender zu einer Lehrveranstaltung anmelden darf
+ * Prüft ob sich ein Student zu einer Lehrveranstaltung anmelden darf
* @param $uid UID des Studierenden
* @param $studienplan_lehrveranstaltung_id ID der Lehrveranstaltungszuordnung
*/
- public function isZugangsberechtigt($uid, $studienplan_lehrveranstaltung_id)
+ public function isZugangsberechtigt($uid, $studienplan_lehrveranstaltung_id, $studiensemester_kurzbz=null)
{
$this->debug('Teste Zugangsberechtigung für '.$uid);
if($result = $this->getLVRegelTree($studienplan_lehrveranstaltung_id))
{
- return $this->TestRegeln($uid, $result);
+ return $this->TestRegeln($uid, $result, $studiensemester_kurzbz);
}
}
- public function TestRegeln($uid, $regel_obj)
+ /**
+ * Prueft die Regeln fuer einen Studierenden
+ * @param $uid UID des Studierenden
+ * @param $regel_obj Regel Baum
+ * @param $studiensemester_kurzbz Studiensemester das geprueft werden soll
+ */
+ public function TestRegeln($uid, $regel_obj, $studiensemester_kurzbz=null)
{
$retval=true;
foreach($regel_obj as $regel)
{
$this->debug('
');
- $testval = $this->Test($uid, $regel);
+ $testval = $this->Test($uid, $regel, $studiensemester_kurzbz);
$retval = $this->Compare($regel[0]->operator, $retval, $testval);
$this->debug(' - RETVAL:'.($retval?'TRUE':'FALSE'));
}
@@ -485,6 +505,13 @@ class lvregel extends basis_db
return $retval;
}
+ /**
+ * Vergleicht die Regeln untereinander anhand des Operators
+ * @param $operator Operator der Regel
+ * @param $retval Boolean Wert der Ausgangsregel
+ * @param $testval Boolean Wert der Vergleichsregel
+ * @return Boolean Ergebnis des Vergleichs
+ */
public function Compare($operator, $retval, $testval)
{
switch($operator)
@@ -508,7 +535,13 @@ class lvregel extends basis_db
return $retval;
}
- public function Test($uid, $regel_obj)
+ /**
+ * Testet die Regel für einen Studenten
+ * @param $uid User
+ * @param $regel_obj
+ * @param $studiensemester_kurzbz
+ */
+ public function Test($uid, $regel_obj, $studiensemester_kurzbz=null)
{
$regel = $regel_obj[0];
@@ -517,20 +550,43 @@ class lvregel extends basis_db
switch($regel->lvregeltyp_kurzbz)
{
case 'ausbsemmin':
+ /* Prueft ob das Ausbildungssemester das mindestens erforderlich ist
+ um die Lehrveranstaltung zu besuchen */
+
$this->debug('Regeltyp ausbsemmin');
- $student = new student();
- $student->load($uid);
-
- if($student->semester>=$regel->parameter)
+ // Wenn das Studiensemester nicht gesetzt ist, wird das aktuelle verwendet
+ if($studiensemester_kurzbz=='')
{
- $this->debug('StudSem: '.$student->semester.' >= RegelParam: '.$regel->parameter);
+ $studiensemester = new studiensemester();
+ $studiensemester_kurzbz = $studiensemester->getaktorNext();
+ }
+
+ // Ausbildungssemester wird nur beim 1. durchlauf ermittelt
+ if(!isset($this->cache[$uid]) && !isset($this->cache[$uid][$studiensemester_kurzbz]))
+ {
+ $student = new student();
+ $student->load($uid);
+
+ // Ausbildungssemester aus dem Status holen
+ $prestudent = new prestudent();
+ if($prestudent->getLastStatus($student->prestudent_id, $studiensemester_kurzbz))
+ {
+ $this->cache[$uid][$studiensemester_kurzbz]=$prestudent->semester;
+ }
+ }
+ $ausbildungssemester = $this->cache[$uid][$studiensemester_kurzbz];
+
+ // Vergleichen des Ausbildungssemesters mit dem RegelParameter
+ if($ausbildungssemester>=$regel->parameter)
+ {
+ $this->debug('StudSem: '.$ausbildungssemester.' >= RegelParam: '.$regel->parameter);
$this->debug('TRUE');
$retval = true;
}
else
{
- $this->debug('StudSem: '.$student->semester.' >= RegelParam: '.$regel->parameter);
+ $this->debug('StudSem: '.$ausbildungssemester.' >= RegelParam: '.$regel->parameter);
$this->debug('FALSE');
$retval = false;
}
@@ -576,6 +632,8 @@ class lvregel extends basis_db
// Eventuell in Addons nach Regeltypen suchen
break;
}
+
+ // Subregeln dieser LVRegel pruefen
if(isset($regel_obj['childs']) && count($regel_obj['childs'])>0)
{
$this->debug('
- Subregel '.$regel->lvregel_id.' -');
diff --git a/skin/images/index.php b/skin/images/index.php
new file mode 100644
index 000000000..548d001b9
--- /dev/null
+++ b/skin/images/index.php
@@ -0,0 +1,35 @@
+
+
+
|
+ |
+ '.$file.' | + '; + //echo "filename: $file : filetype: " . . "\n"; + } + closedir($dh); + } +} +?> +