Files
FHC-Core/include/lehrveranstaltung.class.php
T
2025-09-02 15:05:42 +02:00

2894 lines
100 KiB
PHP

<?php
/* Copyright (C) 2021 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>,
* Stefan Puraner <puraner@technikum-wien.at> and
* Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
require_once(dirname(__FILE__) . '/basis_db.class.php');
require_once(dirname(__FILE__) . '/functions.inc.php');
require_once(dirname(__FILE__) . '/studiengang.class.php');
class lehrveranstaltung extends basis_db
{
public $new; // boolean
public $lehrveranstaltungen = array(); // lehrveranstaltung Objekt
public $lehrveranstaltung_id; // serial
public $studiengang_kz; // integer
public $bezeichnung; // string
public $kurzbz; // string
public $lehrform_kurzbz; // string
public $semester; // smallint
public $ects; // numeric(5,2)
public $semesterstunden; // smallint
public $anmerkung; // string
public $lehre = true; // boolean
public $lehreverzeichnis; // string
public $aktiv = true; // boolean
public $ext_id; // bigint
public $insertamum; // timestamp
public $insertvon; // string
public $planfaktor; // numeric(3,2)
public $planlektoren; // integer
public $planpersonalkosten; // numeric(7,2)
public $plankostenprolektor; // numeric(6,2)
public $updateamum; // timestamp
public $updatevon; // string
public $sprache = 'German'; // varchar(16)
public $sort; // smallint
public $incoming = 5; // smallint
public $zeugnis = true; // boolean
public $projektarbeit; // boolean
public $koordinator; // varchar(16)
public $bezeichnung_english; // varchar(256)
public $orgform_kurzbz; // varchar(3)
public $lehrtyp_kurzbz; // varchar(32)
public $lehrmodus_kurzbz; //varchar(32)
public $oe_kurzbz; // varchar(32)
public $raumtyp_kurzbz; // varchar(16)
public $anzahlsemester; // smallint
public $semesterwochen; // smallint
public $lvnr; // varchar(32)
public $bezeichnung_arr = array();
public $semester_alternativ; // smallint
public $farbe;
public $lehrauftrag=true;
public $lehrveranstaltung_template_id; // integer
public $studienplan_lehrveranstaltung_id;
public $studienplan_lehrveranstaltung_id_parent;
public $stpllv_pflicht=true;
public $stpllv_koordinator;
public $stpllv_semester;
public $sws;
public $lvs;
public $alvs;
public $lvps;
public $las;
public $benotung=true;
public $lvinfo=true;
public $curriculum=true;
public $export=true;
/**
* Konstruktor
* @param $lehrveranstaltung_id ID der zu ladenden Lehrveranstaltung
*/
public function __construct($lehrveranstaltung_id = null)
{
parent::__construct();
if (!is_null($lehrveranstaltung_id))
$this->load($lehrveranstaltung_id);
}
/**
* Laedt einen Datensatz
* @param $lehrveranstaltung_id ID des zu ladenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
public function load($lehrveranstaltung_id)
{
if (!is_numeric($lehrveranstaltung_id))
{
$this->errormsg = 'Lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER);
if (!$this->db_query($qry)) {
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
if ($row = $this->db_fetch_object()) {
$this->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$this->studiengang_kz = $row->studiengang_kz;
$this->bezeichnung = $row->bezeichnung;
$this->kurzbz = $row->kurzbz;
$this->lehrform_kurzbz = $row->lehrform_kurzbz;
$this->semester = $row->semester;
$this->ects = $row->ects;
$this->semesterstunden = $row->semesterstunden;
$this->anmerkung = $row->anmerkung;
$this->lehre = $this->db_parse_bool($row->lehre);
$this->lehreverzeichnis = $row->lehreverzeichnis;
$this->aktiv = $this->db_parse_bool($row->aktiv);
$this->ext_id = $row->ext_id;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->planfaktor = $row->planfaktor;
$this->planlektoren = $row->planlektoren;
$this->planpersonalkosten = $row->planpersonalkosten;
$this->plankostenprolektor = $row->plankostenprolektor;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->sprache = $row->sprache;
$this->sort = $row->sort;
$this->incoming = $row->incoming;
$this->zeugnis = $this->db_parse_bool($row->zeugnis);
$this->projektarbeit = $this->db_parse_bool($row->projektarbeit);
$this->koordinator = $row->koordinator;
$this->bezeichnung_english = $row->bezeichnung_english;
$this->orgform_kurzbz = $row->orgform_kurzbz;
$this->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$this->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$this->oe_kurzbz = $row->oe_kurzbz;
$this->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$this->anzahlsemester = $row->anzahlsemester;
$this->semesterwochen = $row->semesterwochen;
$this->lvnr = $row->lvnr;
$this->semester_alternativ = $row->semester_alternativ;
$this->farbe = $row->farbe;
$this->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$this->sws = $row->sws;
$this->lvs = $row->lvs;
$this->alvs = $row->alvs;
$this->lvps = $row->lvps;
$this->las = $row->las;
$this->benotung = $this->db_parse_bool($row->benotung);
$this->lvinfo = $this->db_parse_bool($row->lvinfo);
$this->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
// FIXME: LV-Bezeichnung richtig mehrsprachig machen
// Zwischenzeitlich 'Italian' zum bezeichnung_arr dazugegeben
$this->bezeichnung_arr['German'] = $this->bezeichnung;
$this->bezeichnung_arr['Italian'] = $this->bezeichnung;
$this->bezeichnung_arr['English'] = $this->bezeichnung_english;
if ($this->bezeichnung_arr['English'] == '')
$this->bezeichnung_arr['English'] = $this->bezeichnung_arr['German'];
}
return true;
}
/**
* Liefert alle Lehrveranstaltungen
* @return true wenn ok, false im Fehlerfall
*/
public function getAll()
{
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung;";
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object())
{
$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->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
$lv_obj->semesterwochen = $row->semesterwochen;
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
/**
* Liefert alle Lehrveranstaltungen die den gefilterten Attributen entsprechen
* @param $studiengang_kz integer Kennzahl des Studiengangs.
* @param $semester integer Ausbildungssemester.
* @param $lehreverzeichnis string LehreVZ
* @param $lehre boolean Lehre
* @param $aktiv boolean
* @param $sort smallint Sortierung
* @param $oe_kurzbz string Organisationseinheit
* @param $lehrtyp string lehrtyp_kurzbz
* @param $lehrmodus string lehrmodus_kurzbz
* @param $orgform string Organisationsform
* @param $lehrmodus string lehrmodus_kurzbz
* @return true wenn ok, false im Fehlerfall
*/
public function load_lva($studiengang_kz=null, $semester = null, $lehreverzeichnis = null, $lehre = null, $aktiv = null, $sort = null, $oe_kurzbz=null, $lehrtyp=null, $lehrmodus=null, $orgform=null)
{
//Variablen pruefen
if($semester == "null")
$semester = null;
if($lehreverzeichnis == "null")
$lehreverzeichnis = null;
if (!is_null($studiengang_kz) && (!is_numeric($studiengang_kz) && $studiengang_kz != ''))
{
$this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein';
return false;
}
if (!is_null($semester) && (!is_numeric($semester) && $semester != ''))
{
$this->errormsg = 'Semester muss eine gueltige Zahl sein';
return false;
}
if (!is_null($aktiv) && !is_bool($aktiv))
{
$this->errormsg = 'Aktiv muss ein boolscher Wert sein';
return false;
}
if (!is_null($lehre) && !is_bool($lehre))
{
$this->errormsg = 'Lehre muss ein boolscher Wert sein';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE 1=1";
if (!is_null($studiengang_kz))
$qry.=" AND studiengang_kz=" . $this->db_add_param($studiengang_kz, FHC_INTEGER);
//Select Befehl zusammenbauen
if (!is_null($lehreverzeichnis))
$qry .= " AND lehreverzeichnis=" . $this->db_add_param($lehreverzeichnis);
if (!is_null($semester) && $semester != '')
$qry .= " AND semester=" . $this->db_add_param($semester, FHC_INTEGER);
else
$qry .= " AND semester is not null ";
if (!is_null($lehre))
$qry .= " AND lehre=" . ($lehre ? 'true' : 'false');
if (!is_null($aktiv) && $aktiv)
$qry .= " AND aktiv ";
if (!is_null($lehre) && $lehre)
$qry .= " AND lehre ";
if(!is_null($oe_kurzbz))
$qry .= " AND oe_kurzbz=".$this->db_add_param($oe_kurzbz);
if(!is_null($lehrtyp))
$qry .= " AND lehrtyp_kurzbz=".$this->db_add_param($lehrtyp);
if(!is_null($lehrmodus))
$qry .= " AND lehrmodus_kurzbz=".$this->db_add_param($lehrmodus);
if(!is_null($orgform) && $orgform!='')
$qry .= " AND orgform_kurzbz=".$this->db_add_param($orgform);
if (is_null($sort) || empty($sort))
$qry .= " ORDER BY semester, bezeichnung";
else
$qry .= " ORDER BY $sort ";
//Datensaetze laden
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object())
{
$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->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
$lv_obj->semesterwochen = $row->semesterwochen;
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['Italian'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
/**
* Liefert alle Lehrveranstaltungen zu einem Studiengang/Semester
* @param $studiengang_kz
* @param $semester
* @return true wenn ok, false im Fehlerfall
*/
public function load_lva_le($studiengang_kz, $studiensemester_kurzbz = null, $semester = null, $lehreverzeichnis = null, $lehre = null, $aktiv = null, $sort = null)
{
//Variablen pruefen
if (!is_numeric($studiengang_kz) || $studiengang_kz === '')
{
$this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein';
return false;
}
if (!is_null($semester) && (!is_numeric($semester) && $semester != ''))
{
$this->errormsg = 'Semester muss eine gueltige Zahl sein';
return false;
}
if (!is_null($aktiv) && !is_bool($aktiv))
{
$this->errormsg = 'Aktiv muss ein boolscher Wert sein';
return false;
}
if (!is_null($lehre) && !is_bool($lehre))
{
$this->errormsg = 'Lehre muss ein boolscher Wert sein';
return false;
}
$qry = "SELECT
distinct lehre.tbl_lehrveranstaltung.*, tbl_lehreinheit.studiensemester_kurzbz
FROM
lehre.tbl_lehrveranstaltung,lehre.tbl_lehreinheit
WHERE
tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
//Select Befehl zusammenbauen
if (!is_null($lehreverzeichnis))
$qry .= " AND lehreverzeichnis=" . $this->db_add_param($lehreverzeichnis);
if (!is_null($semester) && $semester != '')
$qry .= " AND semester=" . $this->db_add_param($semester);
else
$qry .= " AND semester is not null ";
if (!is_null($studiensemester_kurzbz) && $studiensemester_kurzbz != '')
$qry .= " AND tbl_lehreinheit.studiensemester_kurzbz=" . $this->db_add_param($studiensemester_kurzbz);
if (!is_null($lehre))
$qry .= " AND lehre=" . ($lehre ? 'true' : 'false');
if (!is_null($aktiv) && $aktiv)
$qry .= " AND aktiv ";
if (!is_null($lehre) && $lehre)
$qry .= " AND lehre ";
if (is_null($sort) || empty($sort))
$qry .= " ORDER BY semester, bezeichnung";
else
$qry .= " ORDER BY $sort ";
//Datensaetze laden
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object())
{
$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->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
$lv_obj->semesterwochen = $row->semesterwochen;
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$lv_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
/**
* Liefert alle Lehrveranstaltungen eines Studenten (alle Semester)
* @param $student_uid
* @return true wenn ok, false im Fehlerfall
*/
public function load_lva_student($student_uid, $studiensemester_kurzbz=NULL)
{
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung
WHERE lehrveranstaltung_id IN(SELECT lehrveranstaltung_id FROM campus.vw_student_lehrveranstaltung
WHERE uid=" . $this->db_add_param($student_uid);
if($studiensemester_kurzbz !== NULL)
$qry .= " AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$qry .= ") OR lehrveranstaltung_id IN(SELECT lehrveranstaltung_id FROM lehre.tbl_zeugnisnote WHERE student_uid=" . $this->db_add_param($student_uid);
if($studiensemester_kurzbz !== NULL)
$qry .= ' AND studiensemester_kurzbz='.$this->db_add_param ($studiensemester_kurzbz);
$qry .= ") ORDER BY semester, bezeichnung";
//Datensaetze laden
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object())
{
$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->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
$lv_obj->semesterwochen = $row->semesterwochen;
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
/**
* Zaehlt alle Lehrveranstaltungen einer Organisationsform in einem Studiengang
* @param $studiengang_kz
* @param $orgform_kurzbz
* @return false im Fehlerfall, ansonsten das Ergebnis
*/
public function count_lva_orgform($studiengang_kz, $orgform_kurzbz=null)
{
if(!is_numeric($studiengang_kz) || $studiengang_kz=='')
{
$this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein';
return false;
}
$qry='SELECT count(*) as count FROM lehre.tbl_lehrveranstaltung
WHERE studiengang_kz='.$this->db_add_param($studiengang_kz).' AND orgform_kurzbz'.(is_null($orgform_kurzbz)?' is null':"=".$this->db_add_param($orgform_kurzbz));
$return=array();
if($db_result=$this->db_query($qry))
{
if($row=$this->db_fetch_object($db_result))
{
return $row->count;
}
}
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
/**
* Prueft die Gueltigkeit der Variablen
* @return true wenn ok, false im Fehlerfall
*/
public function validate()
{
//Laenge Pruefen
if (mb_strlen($this->bezeichnung) > 128)
{
$this->errormsg = 'Bezeichnung darf nicht laenger als 128 Zeichen sein';
return false;
}
if (mb_strlen($this->kurzbz) > 16)
{
$this->errormsg = 'Kurzbez darf nicht laenger als 16 Zeichen sein';
return false;
}
if (mb_strlen($this->anmerkung) > 64)
{
$this->errormsg = 'Anmerkung darf nicht laenger als 64 Zeichen sein';
return false;
}
if (mb_strlen($this->lehreverzeichnis) > 16)
{
$this->errormsg = 'Lehreverzeichnis darf nicht laenger als 16 Zeichen sein';
return false;
}
if (mb_strlen($this->lvnr) > 32)
{
$this->errormsg = 'LVNR darf nicht laenger als 32 Zeichen sein';
return false;
}
if (!is_numeric($this->studiengang_kz))
{
$this->errormsg = 'Studiengang_kz ist ungueltig';
return false;
}
if ($this->semester != '' && !is_numeric($this->semester))
{
$this->errormsg = 'Semester ist ungueltig';
return false;
}
if ($this->planfaktor != '' && !is_numeric($this->planfaktor))
{
$this->errormsg = 'Planfaktor ist ungueltig';
return false;
}
if ($this->planlektoren != '' && !is_numeric($this->planlektoren))
{
$this->errormsg = 'Planlektoren ist ungueltig';
return false;
}
if ($this->ects != '' && !is_numeric($this->ects))
{
$this->errormsg = 'ECTS sind ungueltig';
return false;
}
if ($this->ects > 40)
{
$this->errormsg = 'ECTS darf nicht groesser als 40 sein';
return false;
}
if ($this->semesterstunden != '' && !isint($this->semesterstunden))
{
$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;
}
if ($this->anzahlsemester != '' && !isint($this->sort))
{
$this->errormsg = 'Anzahl Semester muss ein eine gueltige ganze Zahl sein';
return false;
}
if ($this->semesterwochen != '' && !isint($this->sort))
{
$this->errormsg = 'Semesterwochen muss ein eine gueltige ganze Zahl sein';
return false;
}
if ($this->lehrveranstaltung_template_id != '')
{
if (!isint($this->lehrveranstaltung_template_id)) {
$this->errormsg = 'Lehrveranstaltung Template Id muss eine gültige ganze Zahl sein';
return false;
} elseif($this->lehrtyp_kurzbz == 'tpl') {
$this->errormsg = 'Lehrveranstaltung Template Id darf bei Lehrveranstaltungen des Typs "Template" nicht gesetzt werden';
return false;
} else {
$template = new lehrveranstaltung($this->lehrveranstaltung_template_id);
if ($template->errormsg) {
$this->errormsg = 'Lehrveranstaltung Template: ' . $template->errormsg;
return false;
} elseif ($template->lehrtyp_kurzbz != 'tpl') {
$this->errormsg = 'Lehrveranstaltung Template: Als Lehrtyp muss Template ausgewählt sein';
return false;
}
}
}
$this->errormsg = '';
return true;
}
/**
* Speichert den aktuellen Datensatz
* @return true wenn ok, false im Fehlerfall
*/
public function save($new = null)
{
if ($new == null)
$new = $this->new;
//Gueltigkeit der Variablen pruefen
if (!$this->validate())
return false;
if ($new)
{
//Neuen Datensatz anlegen
$qry = 'BEGIN; INSERT INTO lehre.tbl_lehrveranstaltung (studiengang_kz, bezeichnung, kurzbz, lehrform_kurzbz,
semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, insertamum,
insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort,
zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz, incoming, lehrtyp_kurzbz, oe_kurzbz,
raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe, lehrveranstaltung_template_id,sws,lvs,alvs,lvps,las,benotung,lvinfo,
lehrauftrag, lehrmodus_kurzbz) VALUES ('.
$this->db_add_param($this->studiengang_kz). ', '.
$this->db_add_param($this->bezeichnung). ', '.
$this->db_add_param($this->kurzbz). ', '.
$this->db_add_param($this->lehrform_kurzbz). ', '.
$this->db_add_param($this->semester). ', '.
$this->db_add_param($this->ects). ', '.
$this->db_add_param($this->semesterstunden). ', '.
$this->db_add_param($this->anmerkung). ', '.
$this->db_add_param($this->lehre, FHC_BOOLEAN). ','.
$this->db_add_param($this->lehreverzeichnis). ', '.
$this->db_add_param($this->aktiv, FHC_BOOLEAN). ', '.
$this->db_add_param($this->insertamum). ', '.
$this->db_add_param($this->insertvon). ', '.
$this->db_add_param($this->planfaktor). ', '.
$this->db_add_param($this->planlektoren). ', '.
$this->db_add_param($this->planpersonalkosten). ', '.
$this->db_add_param($this->plankostenprolektor). ', '.
$this->db_add_param($this->updateamum). ', '.
$this->db_add_param($this->updatevon). ','.
$this->db_add_param($this->sort). ','.
$this->db_add_param($this->zeugnis, FHC_BOOLEAN). ','.
$this->db_add_param($this->projektarbeit, FHC_BOOLEAN). ','.
$this->db_add_param($this->sprache). ','.
$this->db_add_param($this->koordinator). ','.
$this->db_add_param($this->bezeichnung_english). ','.
$this->db_add_param($this->orgform_kurzbz). ','.
$this->db_add_param($this->incoming).','.
$this->db_add_param($this->lehrtyp_kurzbz).','.
$this->db_add_param($this->oe_kurzbz). ','.
$this->db_add_param($this->raumtyp_kurzbz). ','.
$this->db_add_param($this->anzahlsemester). ','.
$this->db_add_param($this->semesterwochen). ','.
$this->db_add_param($this->lvnr).','.
$this->db_add_param($this->semester_alternativ).','.
$this->db_add_param($this->farbe).','.
$this->db_add_param($this->lehrveranstaltung_template_id, FHC_INTEGER).','.
$this->db_add_param($this->sws).','.
$this->db_add_param($this->lvs).','.
$this->db_add_param($this->alvs).','.
$this->db_add_param($this->lvps).','.
$this->db_add_param($this->las).','.
$this->db_add_param($this->benotung, FHC_BOOLEAN).','.
$this->db_add_param($this->lvinfo, FHC_BOOLEAN).','.
$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN).','.
$this->db_add_param($this->lehrmodus_kurzbz)
.');';
}
else
{
//bestehenden Datensatz akualisieren
//Pruefen ob lehrveranstaltung_id eine gueltige Zahl ist
if (!is_numeric($this->lehrveranstaltung_id) || $this->lehrveranstaltung_id == '')
{
$this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
$qry = 'UPDATE lehre.tbl_lehrveranstaltung SET ' .
'studiengang_kz=' . $this->db_add_param($this->studiengang_kz, FHC_INTEGER) . ', ' .
'bezeichnung=' . $this->db_add_param($this->bezeichnung) . ', ' .
'kurzbz=' . $this->db_add_param($this->kurzbz) . ', ' .
'lehrform_kurzbz=' . $this->db_add_param($this->lehrform_kurzbz) . ', ' .
'semester=' . $this->db_add_param($this->semester, FHC_INTEGER) . ', ' .
'ects=' . $this->db_add_param($this->ects) . ', ' .
'semesterstunden=' . $this->db_add_param($this->semesterstunden, FHC_INTEGER) . ', ' .
'anmerkung=' . $this->db_add_param($this->anmerkung) . ', ' .
'lehre=' . $this->db_add_param($this->lehre, FHC_BOOLEAN) . ', ' .
'lehreverzeichnis=' . $this->db_add_param($this->lehreverzeichnis) . ', ' .
'aktiv=' . $this->db_add_param($this->aktiv, FHC_BOOLEAN) . ', ' .
'planfaktor=' . $this->db_add_param($this->planfaktor) . ', ' .
'planlektoren=' . $this->db_add_param($this->planlektoren, FHC_INTEGER) . ', ' .
'planpersonalkosten=' . $this->db_add_param($this->planpersonalkosten) . ', ' .
'plankostenprolektor=' . $this->db_add_param($this->plankostenprolektor) . ', ' .
'updateamum=' . $this->db_add_param($this->updateamum) . ',' .
'updatevon=' . $this->db_add_param($this->updatevon) . ',' .
'sort=' . $this->db_add_param($this->sort) . ',' .
'incoming=' . $this->db_add_param($this->incoming, FHC_INTEGER) . ',' .
'zeugnis=' . $this->db_add_param($this->zeugnis, FHC_BOOLEAN) . ',' .
'projektarbeit=' . $this->db_add_param($this->projektarbeit, FHC_BOOLEAN) . ',' .
'koordinator=' . $this->db_add_param($this->koordinator) . ',' .
'sprache=' . $this->db_add_param($this->sprache) . ',' .
'bezeichnung_english=' . $this->db_add_param($this->bezeichnung_english) . ',' .
'orgform_kurzbz=' . $this->db_add_param($this->orgform_kurzbz) . ',' .
'lehrtyp_kurzbz=' . $this->db_add_param($this->lehrtyp_kurzbz) . ',' .
'lehrmodus_kurzbz=' . $this->db_add_param($this->lehrmodus_kurzbz) . ',' .
'oe_kurzbz=' . $this->db_add_param($this->oe_kurzbz) . ',' .
'raumtyp_kurzbz=' . $this->db_add_param($this->raumtyp_kurzbz) . ',' .
'anzahlsemester=' . $this->db_add_param($this->anzahlsemester, FHC_INTEGER) . ',' .
'semesterwochen=' . $this->db_add_param($this->semesterwochen, FHC_INTEGER) . ',' .
'lvnr = ' . $this->db_add_param($this->lvnr) . ', ' .
'semester_alternativ = '.$this->db_add_param($this->semester_alternativ).', '.
'farbe = '.$this->db_add_param($this->farbe).', '.
'lehrveranstaltung_template_id = '.$this->db_add_param($this->lehrveranstaltung_template_id, FHC_INTEGER).', '.
'sws = '.$this->db_add_param($this->sws).', '.
'lvs = '.$this->db_add_param($this->lvs).', '.
'alvs = '.$this->db_add_param($this->alvs).', '.
'lvps = '.$this->db_add_param($this->lvps).', '.
'las = '.$this->db_add_param($this->las).', '.
'benotung = '.$this->db_add_param($this->benotung, FHC_BOOLEAN).', '.
'lvinfo = '.$this->db_add_param($this->lvinfo, FHC_BOOLEAN).', '.
'lehrauftrag = '.$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN).' '.
'WHERE lehrveranstaltung_id = ' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER, false) . ';';
}
if ($this->db_query($qry))
{
if ($new)
{
$qry = "SELECT currval('lehre.tbl_lehrveranstaltung_lehrveranstaltung_id_seq') as id";
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
$this->lehrveranstaltung_id = $row->id;
$this->db_query('COMMIT;');
return true;
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK');
return false;
}
}
return true;
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Speichern des Datensatzes';
return false;
}
}
/**
* Laedt die Lehrveranstaltung zu der ein Mitarbeiter
* in einem Studiensemester zugeordnet ist
* @param studiengang_kz, uid, studiensemester_kurzbz
* @return true wenn ok, false wenn Fehler
*/
public function loadLVAfromMitarbeiter($studiengang_kz, $uid, $studiensemester_kurzbz)
{
if (!is_numeric($studiengang_kz))
{
$this->errormsg = 'Studiengang_kz ist ungueltig';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter WHERE ";
if ($studiengang_kz != 0)
$qry.="tbl_lehrveranstaltung.studiengang_kz=" . $this->db_add_param($studiengang_kz) . " AND ";
$qry.= "tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id AND
tbl_lehreinheitmitarbeiter.lehreinheit_id = tbl_lehreinheit.lehreinheit_id AND
tbl_lehreinheit.studiensemester_kurzbz = " . $this->db_add_param($studiensemester_kurzbz) . " AND
tbl_lehreinheitmitarbeiter.mitarbeiter_uid=" . $this->db_add_param($uid) . ";";
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$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->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
$lv_obj->semesterwochen = $row->semesterwochen;
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Lesen aus der Datenbank';
return false;
}
}
/**
* Liefert die Tabellenelemente die den Kriterien der Parameter entsprechen
* @param $stg Studiengangs_kz
* $sem Semester
* $order Sortierkriterium
* @return array mit Lehrferanstaltungen oder false=fehler
*/
public function getTab($stg = null, $sem = null, $order = 'lehrveranstaltung_id')
{
if ($stg != null && !is_numeric($stg))
{
$this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein';
return false;
}
if ($sem != null && !is_numeric($sem))
{
$this->errormsg = 'Semester muss eine gueltige Zahl sein';
return false;
}
$sql_query = "SELECT * FROM lehre.tbl_lehrveranstaltung";
if ($stg != null || $sem != null)
$sql_query .= " WHERE true";
if ($stg != null)
$sql_query .= " AND studiengang_kz=".$this->db_add_param($stg);
if ($sem != null)
$sql_query .= " AND semester=".$this->db_add_param($sem);
$sql_query .= " ORDER BY $order";
if ($this->db_query($sql_query))
{
while ($row = $this->db_fetch_object())
{
$l = new lehrveranstaltung();
$l->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$l->kurzbz = $row->kurzbz;
$l->bezeichnung = $row->bezeichnung;
$l->lehrform_kurzbz = $row->lehrform_kurzbz;
$l->studiengang_kz = $row->studiengang_kz;
$l->sprache = $row->sprache;
$l->ects = $row->ects;
$l->semesterstunden = $row->semesterstunden;
$l->anmerkung = $row->anmerkung;
$l->lehre = $row->lehre;
$l->lehreverzeichnis = $row->lehreverzeichnis;
$l->aktiv = $row->aktiv;
$l->planfaktor = $row->planfaktor;
$l->planlektoren = $row->planlektoren;
$l->planpersonalkosten = $row->planpersonalkosten;
$l->plankostenprolektor = $row->plankostenprolektor;
$l->updateamum = $row->updateamum;
$l->updatevon = $row->updatevon;
$l->insertamum = $row->insertamum;
$l->insertvon = $row->insertvon;
$l->sort = $row->sort;
$l->incoming = $row->incoming;
$l->zeugnis = $this->db_parse_bool($row->zeugnis);
$l->projektarbeit = $this->db_parse_bool($row->projektarbeit);
$l->koordinator = $row->koordinator;
$l->bezeichnung_english = $row->bezeichnung_english;
$l->orgform_kurzbz = $row->orgform_kurzbz;
$l->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$l->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$l->oe_kurzbz = $row->oe_kurzbz;
$l->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$l->anzahlsemester = $row->anzahlsemester;
$l->semesterwochen = $row->semesterwochen;
$l->lvnr = $row->lvnr;
$l->semester_alternativ = $row->semester_alternativ;
$l->farbe = $row->farbe;
$l->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$l->benotung = $this->db_parse_bool($row->benotung);
$l->lvinfo = $this->db_parse_bool($row->lvinfo);
$l->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$l->bezeichnung_arr['German'] = $row->bezeichnung;
$l->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($l->bezeichnung_arr['English'] == '')
$l->bezeichnung_arr['English'] = $l->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $l;
}
}
else
{
$this->errormsg = $this->db_last_error();
return false;
}
return true;
}
/**
* Laedt die LVs die als Array uebergeben werden
* @param $ids Array mit den LV ids
* @return true wenn ok, false im Fehlerfall
*/
public function loadArray($ids)
{
if (count($ids) == 0)
return true;
$ids = $this->db_implode4SQL($ids);
$qry = 'SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id in(' . $ids . ')';
$qry .=" ORDER BY bezeichnung";
if (!$result = $this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
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->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
$lv_obj->semesterwochen = $row->semesterwochen;
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
/**
* Laedt alle Lehrveranstaltungen eines Studienplans
*
* @param $studienplan_id ID des Studienplans
* @param $semeser Semester optional
* @return boolean true wenn ok, false im Fehlerfall
*/
public function loadLehrveranstaltungStudienplan($studienplan_id, $semester = null, $order=null)
{
if (!is_numeric($studienplan_id) || $studienplan_id === '')
{
$this->errormsg = 'StudienplanID ist ungueltig';
return false;
}
$qry = "SELECT tbl_lehrveranstaltung.*,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent,
tbl_studienplan_lehrveranstaltung.sort stpllv_sort,
tbl_studienplan_lehrveranstaltung.curriculum,
tbl_studienplan_lehrveranstaltung.export,
tbl_studienplan_lehrveranstaltung.genehmigung
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung
USING(lehrveranstaltung_id)
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id=" . $this->db_add_param($studienplan_id, FHC_INTEGER);
if (defined("CIS_PROFIL_STUDIENPLAN_MODULE_AUSBLENDEN") && CIS_PROFIL_STUDIENPLAN_MODULE_AUSBLENDEN)
$qry .= " AND tbl_lehrveranstaltung.lehrtyp_kurzbz != 'modul'";
if (!is_null($semester))
{
$qry.=" AND tbl_studienplan_lehrveranstaltung.semester=" . $this->db_add_param($semester, FHC_INTEGER);
}
if(is_null($order))
$qry.=" ORDER BY stpllv_sort, semester, sort";
else
$qry.=' ORDER BY '.$order;
$this->lehrveranstaltungen = array();
if ($result = $this->db_query($qry))
{
while ($row = $this->db_fetch_object($result))
{
$obj = new lehrveranstaltung();
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->bezeichnung = $row->bezeichnung;
$obj->kurzbz = $row->kurzbz;
$obj->lehrform_kurzbz = $row->lehrform_kurzbz;
$obj->semester = $row->semester;
$obj->ects = $row->ects;
$obj->semesterstunden = $row->semesterstunden;
$obj->anmerkung = $row->anmerkung;
$obj->lehre = $this->db_parse_bool($row->lehre);
$obj->lehreverzeichnis = $row->lehreverzeichnis;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$obj->ext_id = $row->ext_id;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->planfaktor = $row->planfaktor;
$obj->planlektoren = $row->planlektoren;
$obj->planpersonalkosten = $row->planpersonalkosten;
$obj->plankostenprolektor = $row->plankostenprolektor;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->sprache = $row->sprache;
$obj->sort = $row->sort;
$obj->incoming = $row->incoming;
$obj->zeugnis = $this->db_parse_bool($row->zeugnis);
$obj->projektarbeit = $this->db_parse_bool($row->projektarbeit);
$obj->koordinator = $row->koordinator;
$obj->bezeichnung_english = $row->bezeichnung_english;
$obj->orgform_kurzbz = $row->orgform_kurzbz;
$obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$obj->anzahlsemester = $row->anzahlsemester;
$obj->semesterwochen = $row->semesterwochen;
$obj->lvnr = $row->lvnr;
$obj->semester_alternativ = $row->semester_alternativ;
$obj->farbe = $row->farbe;
$obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$obj->stpllv_sort = $row->stpllv_sort;
$obj->benotung = $this->db_parse_bool($row->benotung);
$obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$obj->bezeichnung_arr['German'] = $row->bezeichnung;
$obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($obj->bezeichnung_arr['English'] == '')
$obj->bezeichnung_arr['English'] = $obj->bezeichnung_arr['German'];
$obj->sws = $row->sws;
$obj->lvs = $row->lvs;
$obj->alvs = $row->alvs;
$obj->lvps = $row->lvps;
$obj->las = $row->las;
$obj->stpllv_semester = $row->stpllv_semester;
$obj->stpllv_pflicht = $this->db_parse_bool($row->stpllv_pflicht);
$obj->stpllv_koordinator = $row->stpllv_koordinator;
$obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id;
$obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent;
$obj->curriculum = $this->db_parse_bool($row->curriculum);
$obj->export = $this->db_parse_bool($row->export);
$obj->genehmigung = $this->db_parse_bool($row->genehmigung);
$obj->new = false;
$this->lehrveranstaltungen[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Liefert die Lehrveranstaltungen als verschachtelten Tree
*/
public function getLehrveranstaltungTree()
{
$tree = array();
foreach ($this->lehrveranstaltungen as $row)
{
if ($row->studienplan_lehrveranstaltung_id_parent == ''
|| (defined("CIS_PROFIL_STUDIENPLAN_MODULE_AUSBLENDEN")
&& CIS_PROFIL_STUDIENPLAN_MODULE_AUSBLENDEN))
{
$tree[$row->studienplan_lehrveranstaltung_id] = $row;
$tree[$row->studienplan_lehrveranstaltung_id]->childs = $this->getLehrveranstaltungTreeChilds($row->studienplan_lehrveranstaltung_id);
}
}
return $tree;
}
/**
* Generiert die Subtrees des Lehrveranstaltungstrees
*/
public function getLehrveranstaltungTreeChilds($studienplan_lehrveranstaltung_id)
{
$childs = array();
foreach ($this->lehrveranstaltungen as $row)
{
if ($row->studienplan_lehrveranstaltung_id_parent === $studienplan_lehrveranstaltung_id)
{
$childs[$row->studienplan_lehrveranstaltung_id] = $row;
$childs[$row->studienplan_lehrveranstaltung_id]->childs = $this->getLehrveranstaltungTreeChilds($row->studienplan_lehrveranstaltung_id);
}
}
return $childs;
}
/**
* Generiert die Subtrees des Lehrveranstaltungstrees
*/
public function hasChildren($studienplan_lehrveranstaltung_id)
{
$childs = array();
foreach ($this->lehrveranstaltungen as $row)
{
if ($row->studienplan_lehrveranstaltung_id_parent === $studienplan_lehrveranstaltung_id)
{
$childs[$row->studienplan_lehrveranstaltung_id] = $row;
$childs[$row->studienplan_lehrveranstaltung_id]->childs = $this->getLehrveranstaltungTreeChilds($row->studienplan_lehrveranstaltung_id);
}
}
if(count($childs) > 0)
{
return true;
}
else
{
return false;
}
}
/**
* Baut die Datenstruktur für senden als JSON Objekt auf
*/
public function cleanResult()
{
$values = array();
if (count($this->lehrveranstaltungen) > 0)
{
foreach ($this->lehrveranstaltungen as $lv)
{
$obj = new stdClass();
$obj->lehrveranstaltung_id = $lv->lehrveranstaltung_id;
$obj->studiengang_kz = $lv->studiengang_kz;
$obj->bezeichnung = $lv->bezeichnung;
$obj->kurzbz = $lv->kurzbz;
$obj->lehrform_kurzbz = $lv->lehrform_kurzbz;
$obj->semester = $lv->semester;
$obj->ects = $lv->ects;
$obj->semesterstunden = $lv->semesterstunden;
$obj->lehrtyp_kurzbz = $lv->lehrtyp_kurzbz;
$obj->lehrmodus_kurzbz = $lv->lehrmodus_kurzbz;
$obj->studienplan_lehrveranstaltung_id = $lv->studienplan_lehrveranstaltung_id;
$obj->stpllv_semester = $lv->stpllv_semester;
$obj->stpllv_pflicht = $lv->stpllv_pflicht;
$obj->stpllv_koordinator = $lv->stpllv_koordinator;
$obj->oe_kurzbz = $lv->oe_kurzbz;
$obj->lvnr = $lv->lvnr;
$obj->lehrveranstaltung_template_id = $lv->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($lv->benotung);
$obj->lvinfo =$this->db_parse_bool( $lv->lvinfo);
$obj->zeugnis = $this->db_parse_bool($lv->zeugnis);
$obj->lehrauftrag = $this->db_parse_bool($lv->lehrauftrag);
$values[] = $obj;
}
}
else
{
$obj = new stdClass();
$obj->lehrveranstaltung_id = $this->lehrveranstaltung_id;
$obj->studiengang_kz = $this->studiengang_kz;
$obj->bezeichnung = $this->bezeichnung;
$obj->kurzbz = $this->kurzbz;
$obj->lehrform_kurzbz = $this->lehrform_kurzbz;
$obj->semester = $this->semester;
$obj->ects = $this->ects;
$obj->semesterstunden = $this->semesterstunden;
$obj->stpllv_semester = $this->stpllv_semester;
$obj->stpllv_pflicht = $this->stpllv_pflicht;
$obj->stpllv_koordinator = $this->stpllv_koordinator;
$obj->oe_kurzbz = $this->oe_kurzbz;
$obj->lvnr = $this->lvnr;
$obj->lehrveranstaltung_template_id = $this->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($this->benotung);
$obj->lvinfo =$this->db_parse_bool( $this->lvinfo);
$obj->zeugnis = $this->db_parse_bool($this->zeugnis);
$obj->lehrauftrag = $this->db_parse_bool($this->lehrauftrag);
$values[] = $obj;
}
return $values;
}
/**
* Baut die Baumstruktur für jsTree in Studienordnung auf
* @param $tree Array von Lehrveranstaltungen
* @return Array mit der Baumstruktur
*/
protected function cleanTreeResult($tree)
{
$values = array();
if (count($tree) > 0)
{
foreach ($tree as $lv)
{
$obj = new stdClass();
$obj->lehrveranstaltung_id = $lv->lehrveranstaltung_id;
$obj->studiengang_kz = $lv->studiengang_kz;
$obj->bezeichnung = $lv->bezeichnung;
$obj->bezeichnung_english = $lv->bezeichnung_english;
$obj->kurzbz = $lv->kurzbz;
$obj->lehrform_kurzbz = $lv->lehrform_kurzbz;
$obj->semester = $lv->semester;
$obj->ects = $lv->ects;
$obj->semesterstunden = $lv->semesterstunden;
$obj->studienplan_lehrveranstaltung_id = $lv->studienplan_lehrveranstaltung_id;
$obj->lehrtyp_kurzbz = $lv->lehrtyp_kurzbz;
$obj->lehrmodus_kurzbz = $lv->lehrmodus_kurzbz;
$obj->stpllv_semester = $lv->stpllv_semester;
$obj->stpllv_pflicht = $lv->stpllv_pflicht;
$obj->stpllv_koordinator = $lv->stpllv_koordinator;
$obj->lvnr = $lv->lvnr;
$obj->lehrveranstaltung_template_id = $lv->lehrveranstaltung_template_id;
$obj->stpllv_sort = $lv->stpllv_sort;
$obj->oe_kurzbz = $lv->oe_kurzbz;
$obj->sws = $lv->sws;
$obj->alvs = $lv->alvs;
$obj->lvs = $lv->lvs;
$obj->lvps = $lv->lvps;
$obj->las = $lv->las;
$obj->semesterwochen = $lv->semesterwochen;
$obj->orgform_kurzbz = $lv->orgform_kurzbz;
$obj->incoming = $lv->incoming;
$obj->sprache = $lv->sprache;
$obj->benotung = $lv->benotung;
$obj->lvinfo = $lv->lvinfo;
$obj->zeugnis = $lv->zeugnis;
$obj->curriculum = $lv->curriculum;
$obj->export = $lv->export;
$obj->genehmigung = $lv->genehmigung;
$obj->lehrauftrag = $lv->lehrauftrag;
$obj->lehre = $lv->lehre;
$obj->children = array();
if(count($lv->childs) > 0)
{
$obj->children = $this->cleanTreeResult($lv->childs);
}
$values[] = $obj;
}
}
else
{
$obj = new stdClass();
$obj->lehrveranstaltung_id = $this->lehrveranstaltung_id;
$obj->studiengang_kz = $this->studiengang_kz;
$obj->bezeichnung = $this->bezeichnung;
$obj->kurzbz = $this->kurzbz;
$obj->lehrform_kurzbz = $this->lehrform_kurzbz;
$obj->semester = $this->semester;
$obj->ects = $this->ects;
$obj->semesterstunden = $this->semesterstunden;
$obj->stpllv_semester = $this->stpllv_semester;
$obj->stpllv_pflicht = $this->stpllv_pflicht;
$obj->stpllv_koordinator = $this->stpllv_koordinator;
$obj->lvnr = $this->lvnr;
$obj->lehrveranstaltung_template_id = $this->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($this->benotung);
$obj->lvinfo =$this->db_parse_bool( $this->lvinfo);
$obj->zeugnis = $this->db_parse_bool($this->zeugnis);
$obj->curriculum = $this->db_parse_bool($this->curriculum);
$obj->lehrauftrag = $this->lehrauftrag;
$values[] = $obj;
}
return $values;
}
/**
* Baut die Datenstruktur für jsTree in Studienordnung auf
* @param $studienplan_id ID des Studienpland
*/
public function getLvTree($studienplan_id)
{
$values = array();
$this->loadLehrveranstaltungStudienplan($studienplan_id);
$tree = $this->getLehrveranstaltungTree();
$values = $this->cleanTreeResult($tree);
unset($this->lehrveranstaltungen);
$this->lehrveranstaltungen=array();
return $values;
}
/**
* Lädt alle kompatiblen LVs zu einer Lehrveranstaltung
* @param $lehrveranstaltung_id ID der Lehrveranstaltung
*/
public function loadLVkompatibel($lehrveranstaltung_id)
{
if (!is_numeric($lehrveranstaltung_id))
{
$this->errormsg = 'Lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT lehrveranstaltung_id_kompatibel FROM lehre.tbl_lehrveranstaltung_kompatibel
WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).";";
if($this->db_query($qry))
{
$data = array();
while($row = $this->db_fetch_object())
{
$data[] = $row->lehrveranstaltung_id_kompatibel;
}
return $data;
}
}
/**
* Lädt alle kompatiblen LVs zu einer Lehrveranstaltung
* @param $lehrveranstaltung_id ID der Lehrveranstaltung
*/
public function getLVkompatibel($lehrveranstaltung_id)
{
if (!is_numeric($lehrveranstaltung_id))
{
$this->errormsg = 'Lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id IN (
SELECT lehrveranstaltung_id_kompatibel
FROM lehre.tbl_lehrveranstaltung_kompatibel
WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).");";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$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->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
}
/**
* Lädt alle Lehrveranstaltungen zu denen die übergebene LV ID kompatibel ist
* @param $lehrveranstaltung_id ID der Lehrveranstaltung
*/
public function getLVkompatibelTo($lehrveranstaltung_id, $studienplan_ids=array())
{
if (!is_numeric($lehrveranstaltung_id))
{
$this->errormsg = 'Lehrveranstaltung_id muss eine gueltige Zahl sein';
return false;
}
if((!is_array($studienplan_ids)) && (count($studienplan_ids) < 1))
{
$this->errormsg = 'Es muss ein Array von Studienplan_IDs mit mindestens einem Element übergeben werden.';
return false;
}
$studienplaene = "";
foreach($studienplan_ids as $stplId)
{
$studienplaene .= $stplId.",";
}
$studienplaene = rtrim($studienplaene, ",");
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung USING (lehrveranstaltung_id)
WHERE lehrveranstaltung_id IN (
SELECT lehrveranstaltung_id
FROM lehre.tbl_lehrveranstaltung_kompatibel
WHERE lehrveranstaltung_id_kompatibel=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).")
AND studienplan_id IN(".$studienplaene.");";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$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->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
}
/**
* Speichert eine Kombination aus LV und ihrer kompatiblen Lehrveranstaltung
* @param $lehrveranstaltung_id ID der Lehrveranstaltung
* @param $lehrveranstaltung_id ID der kompatiblen Lehrveranstaltung
*/
public function saveKompatibleLehrveranstaltung($lehrveranstaltung_id, $lehrveranstaltung_id_kompatibel)
{
$qry = 'SELECT
*
FROM
lehre.tbl_lehrveranstaltung_kompatibel
WHERE
lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).'
AND lehrveranstaltung_id_kompatibel='.$this->db_add_param($lehrveranstaltung_id_kompatibel, FHC_INTEGER).';';
if($this->db_query($qry))
{
if(!$this->db_fetch_object())
{
$qry = 'INSERT INTO lehre.tbl_lehrveranstaltung_kompatibel (lehrveranstaltung_id, lehrveranstaltung_id_kompatibel)
VALUES ('.$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).', '.
$this->db_add_param($lehrveranstaltung_id_kompatibel, FHC_INTEGER).');';
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern des Datensatzes';
return false;
}
}
else
{
$this->errormsg = 'Lehrveranstaltung bereits vorhanden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Datensatzes';
return false;
}
}
/**
* Löscht eine kompatible Lehrveranstaltung
* @param $lehrveranstaltung_id ID der Lehrveranstaltung
* @param $lehrveranstaltung_id ID der kompatiblen Lehrveranstaltung
*/
public function deleteKompatibleLehrveranstaltung($lehrveranstaltung_id, $lehrveranstaltung_id_kompatibel)
{
$qry = 'DELETE FROM lehre.tbl_lehrveranstaltung_kompatibel WHERE
lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).' AND
lehrveranstaltung_id_kompatibel='.$this->db_add_param($lehrveranstaltung_id_kompatibel, FHC_INTEGER).';';
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden des Datensatzes';
return false;
}
}
/**
* Lädt Lehrveranstaltungen nach ihrer Organisationseinheit
* @param $oe_kurzbz Kurzbezeichnung der Organisationseinheit
* @param $aktiv optional, true wenn nur aktive LVs
* @param $lehrtyp optional, gewünschter Lehrtyp
*/
public function load_lva_oe($oe_kurzbz, $aktiv=null, $lehrtyp=null, $sort=null, $semester=null, $lehrmodus=null)
{
if (is_null($oe_kurzbz))
{
$this->errormsg = 'OE KurzBz darf nicht null sein';
return false;
}
if (!is_null($aktiv) && !is_bool($aktiv))
{
$this->errormsg = 'Aktivkz muss ein boolscher Wert sein';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE oe_kurzbz=" . $this->db_add_param($oe_kurzbz, FHC_STRING);
//Select Befehl zusammenbauen
if (!is_null($aktiv) && $aktiv)
$qry .= " AND aktiv ";
if(!is_null($lehrtyp))
$qry .= " AND lehrtyp_kurzbz=".$this->db_add_param($lehrtyp);
if(!is_null($lehrmodus))
$qry .= " AND lehrmodus_kurzbz=".$this->db_add_param($lehrmodus);
if(!is_null($semester))
$qry .= " AND semester=".$this->db_add_param ($semester);
if (is_null($sort) || empty($sort))
$qry .= " ORDER BY semester, bezeichnung";
else
$qry .= " ORDER BY $sort ";
$qry .= ";";
//Datensaetze laden
if (!$this->db_query($qry))
{
$this->errormsg = 'Datensatz konnte nicht geladen werden';
return false;
}
while ($row = $this->db_fetch_object())
{
$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->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
/**
* Loescht den Datenensatz mit der ID die uebergeben wird
* @param $lvid ID die geloescht werden soll
* @return true wenn ok, false im Fehlerfall
*/
public function delete($lvid)
{
//Pruefen ob adresse_id eine gueltige Zahl ist
if(!is_numeric($lvid) || $lvid == '')
{
$this->errormsg = 'lvid muss eine gültige Zahl sein'."\n";
return false;
}
$qry = "SELECT count(*) as anzahl FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER)."
OR lehrfach_id=".$this->db_add_param($lvid, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
if($row->anzahl>0)
{
$this->errormsg = 'Zu dieser Lehrveranstaltung existieren Lehreinheiten oder Lehrfächer in der Datenbank. Sie kann daher nicht gelöscht werden.';
return false;
}
else
{
//loeschen des Datensatzes
$qry="DELETE FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER, false);
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Löschen der Daten'."\n";
return false;
}
}
}
else
{
$this->errormsg = 'Fehler beim Abfragen zugewiesener Lehreinheiten'."\n";
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Abfragen zugewiesener Lehreinheiten'."\n";
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->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
$lv_obj->semesterwochen = $row->semesterwochen;
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->studiengang_kurzbzlang = $row->studiengang_kurzbzlang;
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage';
return false;
}
}
/**
* Liefert die Anzahl der ECTS Punkte die ein Student in einem Studiensemester
* bereits verbraucht hat (fuer reduzierte Studiengebuehr)
* @param $uid UID
* @param $studiensemester_kurzbz
* @return numeric - Anzahl der ECTS Punkte
*/
public function getUsedECTS($uid, $studiensemester_kurzbz)
{
$qry = "
SELECT sum(ects) as ectssumme FROM (
SELECT
lehrveranstaltung_id, ects
FROM
campus.vw_student_lehrveranstaltung
WHERE
uid=".$this->db_add_param($uid)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
UNION
SELECT
lehrveranstaltung_id, ects
FROM
lehre.tbl_zeugnisnote
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE
student_uid=".$this->db_add_param($uid)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
) a";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->ectssumme;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der ECTS Punkte';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der ECTS Punkte';
return false;
}
}
/**
* lädt die Lehrveranstaltungen zum zugehörigen Mitarbeiter
* @param String $uid User ID des Mitarbeiters
* @param String $studiensemster_kurzbz Kurzbezeichnung des Studiensemesters
*/
public function getLVByMitarbeiter($uid, $studiensemester_kurzbz = null)
{
$qry = 'SELECT DISTINCT tbl_lehrveranstaltung.* FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id)
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
WHERE
mitarbeiter_uid='.$this->db_add_param($uid);
if($studiensemester_kurzbz != null)
{
$qry .= ' AND tbl_lehreinheit.studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz).';';
}
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$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->zeugnis = $row->koordinator;
$lv_obj->bezeichnung_english = $row->bezeichnung_english;
$lv_obj->orgform_kurzbz = $row->orgform_kurzbz;
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$lv_obj->anzahlsemester = $row->anzahlsemester;
$lv_obj->semesterwochen = $row->semesterwochen;
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
$lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$lv_obj->bezeichnung_arr['German'] = $row->bezeichnung;
$lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($lv_obj->bezeichnung_arr['English'] == '')
$lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German'];
$this->lehrveranstaltungen[] = $lv_obj;
}
return true;
}
else
{
$this->errormsg = "Lehrveranstaltungen konnten nicht geladen werden.";
}
}
/**
* Lädt alle Studenten UIDs die die angegebenen LV besuchen (optional mit Studiensemester)
* @param integer $lehrveranstaltung_id ID der Lehrveranstaltung
* @param string $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters
* @return boolean|array false, wenn eine Fehler auftritt; Array mit UIDs wenn erfolgreich
*/
public function getStudentsOfLv($lehrveranstaltung_id, $studiensemester_kurzbz=null, $lehreinheit_id=null)
{
if(!is_numeric($lehrveranstaltung_id))
{
$this->errormsg = "Lehrveranstaltung ID muss eine gültige Zahl sein.";
return false;
}
$qry = 'SELECT distinct uid FROM campus.vw_student_lehrveranstaltung WHERE '
. 'lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id);
if(!is_null($studiensemester_kurzbz))
{
$qry .= ' AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz);
}
if(!is_null($lehreinheit_id))
{
$qry .= ' AND lehreinheit_id='.$this->db_add_param($lehreinheit_id);
}
$qry .= ';';
if($this->db_query($qry))
{
$result = array();
while($row = $this->db_fetch_object())
{
array_push($result, $row->uid);
}
return $result;
}
return false;
}
/**
*
* @param type $lv_id
* @param type $semester -> Ausbildungssemester
* @return boolean
*/
public function getALVS($lv_id, $semester)
{
if($semester=='')
{
$this->errormsg = "Kein Semester übergeben";
return false;
}
$ss = ($semester%2==0)?'SS':'WS';
$qry_ss = "SELECT studiensemester_kurzbz, start, ende
FROM public.tbl_studiensemester
WHERE substring(studiensemester_kurzbz from 1 for 2)='$ss'
AND start < now() ORDER BY start DESC LIMIT 1";
if(!$result = $this->db_query($qry_ss))
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
if(!$row= $this->db_fetch_object($result))
{
$this->errormsg = "Kein Semester gefunden";
return false;
}
$qry_alvs = "SELECT sum(lm.semesterstunden) as alvs
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_lehreinheit USING (lehrveranstaltung_id)
JOIN lehre.tbl_lehreinheitmitarbeiter lm USING (lehreinheit_id)
WHERE lehrveranstaltung_id = ".$this->db_add_param($lv_id, FHC_STRING)."
AND studiensemester_kurzbz = ".$this->db_add_param($row->studiensemester_kurzbz).";";
if(!$result_alvs=$this->db_query($qry_alvs))
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
if($row_alvs = $this->db_fetch_object($result_alvs))
{
return $row_alvs->alvs;
}
else
{
$this->errormsg = $qry_alvs;
return false;
}
}
/**
* Lädt alle Lehreinheit_IDs eine Lehrveranstaltung (optional mit Studiensemester)
* @param integer $lehrveranstaltung_id ID der Lehrveranstaltung
* @param string $uid UID eines Studenten
* @param string $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters
* @return boolean|array false, wenn eine Fehler auftritt; Array mit UIDs wenn erfolgreich
*/
public function getLehreinheitenOfLv($lehrveranstaltung_id, $uid, $studiensemester_kurzbz=null)
{
if(!is_numeric($lehrveranstaltung_id))
{
$this->errormsg = "Lehrveranstaltung ID muss eine gültige Zahl sein.";
return false;
}
$qry = 'SELECT lehreinheit_id FROM campus.vw_student_lehrveranstaltung WHERE '
. 'lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id)
. ' AND uid='.$this->db_add_param($uid);
if(!is_null($studiensemester_kurzbz))
{
$qry .= ' AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz);
}
$qry .= ' ORDER BY lehreinheit_id;';
if($this->db_query($qry))
{
$result = array();
while($row = $this->db_fetch_object())
{
array_push($result, $row->lehreinheit_id);
}
return $result;
}
return false;
}
/**
* Prueft ob das Lehrverzeichnis bereits anderwertig verwendet wird
* @param $lehreverzeichnis
* @param $studiengang_kz
* @param $semester
*/
public function lehreverzeichnisExists($lehreverzeichnis, $studiengang_kz, $semester)
{
$qry = 'SELECT
1
FROM
lehre.tbl_lehrveranstaltung
WHERE
lehreverzeichnis='.$this->db_add_param($lehreverzeichnis).'
AND studiengang_kz='.$this->db_add_param($studiengang_kz).'
AND semester='.$this->db_add_param($semester).';';
if($this->db_query($qry))
{
if($this->db_num_rows() > 0)
{
return true;
}
return false;
}
else
{
$this->errormsg = "Fehler beim Laden der Daten";
return false;
}
}
/**
* Lädt alle Lehrveranstaltungen eines Studienplans
* Optionale Filterung nach Lehrtyp und Semester
* @param type $studienplan_id
* @param type $lehrtyp_kurzbz
* @param type $semester
* @return boolean
*/
public function getLVFromStudienplanByLehrtyp($studienplan_id, $lehrtyp_kurzbz=NULL, $semester=NULL)
{
if (!is_numeric($studienplan_id) || $studienplan_id === '')
{
$this->errormsg = 'StudienplanID ist ungueltig';
return false;
}
$qry = "SELECT DISTINCT tbl_lehrveranstaltung.*
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung
USING(lehrveranstaltung_id)
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id=" . $this->db_add_param($studienplan_id, FHC_INTEGER);
if (!is_null($lehrtyp_kurzbz))
{
$qry.=" AND tbl_lehrveranstaltung.lehrtyp_kurzbz=" . $this->db_add_param($lehrtyp_kurzbz, FHC_STRING);
}
if (!is_null($lehrmodus_kurzbz))
{
$qry.=" AND tbl_lehrveranstaltung.lehrmodus_kurzbz=" . $this->db_add_param($lehrmodus_kurzbz, FHC_STRING);
}
if (!is_null($semester))
{
$qry.=" AND tbl_studienplan_lehrveranstaltung.semester=" . $this->db_add_param($semester, FHC_INTEGER);
}
$qry.=" ORDER BY bezeichnung;";
$this->lehrveranstaltungen = array();
if ($result = $this->db_query($qry))
{
while ($row = $this->db_fetch_object($result))
{
$obj = new lehrveranstaltung();
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->bezeichnung = $row->bezeichnung;
$obj->kurzbz = $row->kurzbz;
$obj->lehrform_kurzbz = $row->lehrform_kurzbz;
$obj->semester = $row->semester;
$obj->ects = $row->ects;
$obj->semesterstunden = $row->semesterstunden;
$obj->anmerkung = $row->anmerkung;
$obj->lehre = $this->db_parse_bool($row->lehre);
$obj->lehreverzeichnis = $row->lehreverzeichnis;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$obj->ext_id = $row->ext_id;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->planfaktor = $row->planfaktor;
$obj->planlektoren = $row->planlektoren;
$obj->planpersonalkosten = $row->planpersonalkosten;
$obj->plankostenprolektor = $row->plankostenprolektor;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->sprache = $row->sprache;
$obj->sort = $row->sort;
$obj->incoming = $row->incoming;
$obj->zeugnis = $this->db_parse_bool($row->zeugnis);
$obj->projektarbeit = $this->db_parse_bool($row->projektarbeit);
$obj->koordinator = $row->koordinator;
$obj->bezeichnung_english = $row->bezeichnung_english;
$obj->orgform_kurzbz = $row->orgform_kurzbz;
$obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->raumtyp_kurzbz = $row->raumtyp_kurzbz;
$obj->anzahlsemester = $row->anzahlsemester;
$obj->semesterwochen = $row->semesterwochen;
$obj->lvnr = $row->lvnr;
$obj->semester_alternativ = $row->semester_alternativ;
$obj->farbe = $row->farbe;
$obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($row->benotung);
$obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
$obj->bezeichnung_arr['German'] = $row->bezeichnung;
$obj->bezeichnung_arr['English'] = $row->bezeichnung_english;
if ($obj->bezeichnung_arr['English'] == '')
$obj->bezeichnung_arr['English'] = $obj->bezeichnung_arr['German'];
$obj->new = false;
$this->lehrveranstaltungen[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Gibt alle Organisationseinheiten der Studiengänge zurück, mit denen
* die Lehrveranstaltung über Studienpläne verknüpft ist
* @return boolean|array false im Fehlerfall, sonst ein Array
*/
public function getAllOe()
{
$oe = array();
$qry = 'SELECT DISTINCT oe_kurzbz
FROM lehre.tbl_studienplan_lehrveranstaltung
JOIN lehre.tbl_studienplan USING(studienplan_id)
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE lehrveranstaltung_id = '.$this->db_add_param($this->lehrveranstaltung_id);
if($result = $this->db_query($qry))
{
while ($row = $this->db_fetch_object($result))
{
$oe[] = $row->oe_kurzbz;
}
}
else
{
$this->errormsg = "Fehler beim Laden der Daten";
return false;
}
// oe_kurzbz des Studiengangs der LVA hinzufügen
$stg = new studiengang($this->studiengang_kz);
if(!in_array($stg->oe_kurzbz, $oe))
{
$oe[] = $stg->oe_kurzbz;
}
return $oe;
}
/**
* Laedt den LV-Leiter einer Lehrveranstaltung, wenn keiner der Lektoren als LVLeiter eingetragen ist,
* wird der erstbeste Lektor geliefert
* @param $lehrveranstaltung_id ID der Lehrveranstaltung
* @param $studiensemester_kurzbz Studiensemester
* @return UID des Mitarbeiters
*/
public function getLVLeitung($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
mitarbeiter_uid,
CASE WHEN lehrfunktion_kurzbz='LV-Leitung' THEN 1 ELSE 2 END as sort
FROM
lehre.tbl_lehreinheit
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
WHERE
tbl_lehreinheit.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
ORDER BY sort LIMIT 1";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->mitarbeiter_uid;
}
else
{
$this->errormsg = 'Keine Eintrag gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt den LV-Leiter einer Lehrveranstaltung
* ist keiner der Lektoren als LV-Leitung eingetragen, wird Null zurückgegeben
* @param int $lehrveranstaltung_id ID der Lehrveranstaltung.
* @param char $studiensemester_kurzbz Studiensemester.
* @return char $mitarbeiter_uid UID des Mitarbeiters oder NULL, wenn keine LV-Leitung vorhanden
*/
public function getEingetrageneLVLeitung($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheit
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
WHERE
tbl_lehreinheit.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
AND lehrfunktion_kurzbz='LV-Leitung';";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->mitarbeiter_uid;
}
else
{
$this->errormsg = 'Keine Eintrag gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Liefert den Koordinator einer Lehrveranstaltung
* @param $lehrveranstaltung_id
* @param $studiensemester_kurzbz
*/
public function getKoordinator($lehrveranstaltung_id, $studiensemester_kurzbz=null)
{
$qry = "
SELECT a.uid, vorname, nachname, titelpre, titelpost
FROM
(
SELECT
koordinator as uid
FROM
lehre.tbl_lehrveranstaltung
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
UNION
SELECT
uid
FROM
lehre.tbl_lehreinheit
JOIN lehre.tbl_lehrveranstaltung as lehrfach on(tbl_lehreinheit.lehrfach_id = lehrfach.lehrveranstaltung_id)
JOIN public.tbl_fachbereich ON(lehrfach.oe_kurzbz=tbl_fachbereich.oe_kurzbz)
JOIN public.tbl_benutzerfunktion ON(tbl_fachbereich.fachbereich_kurzbz=tbl_benutzerfunktion.fachbereich_kurzbz)
WHERE
tbl_benutzerfunktion.funktion_kurzbz='fbk'
AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
AND tbl_lehreinheit.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND tbl_benutzerfunktion.oe_kurzbz=(
SELECT
tbl_studiengang.oe_kurzbz
FROM
lehre.tbl_lehrveranstaltung
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
)
AND EXISTS(
SELECT
lehrveranstaltung_id
FROM
lehre.tbl_lehrveranstaltung
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND koordinator is null
)
";
if(!is_null($studiensemester_kurzbz))
$qry.=" AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$qry.="
) as a
JOIN campus.vw_mitarbeiter ON(a.uid=vw_mitarbeiter.uid)
WHERE vw_mitarbeiter.aktiv";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
$obj->uid = $row->uid;
$obj->vorname = $row->vorname;
$obj->nachname = $row->nachname;
$obj->titelpost = $row->titelpost;
$obj->titelpre = $row->titelpre;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Prüft ob eine Lehrvernstaltung in Studienplordnungen verwendet wird die
* nicht mehr in bearbeitung sind. Diese sind fuer die bearbeitung gesperrt
* @param integer $lehrveranstaltung_id
* @return boolean true wenn gesperrt
* @return boolean false wenn nicht gesperrt
* @return boolean false und errormsg im Fehlerfall
*/
public function isGesperrt($lehrveranstaltung_id)
{
$qry = "SELECT
count(*) as anzahl
FROM
lehre.tbl_studienplan
JOIN lehre.tbl_studienplan_lehrveranstaltung USING(studienplan_id)
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
WHERE
tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND tbl_studienordnung.status_kurzbz<>'development'";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
if($row->anzahl>0)
{
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Prueft ob eine Lehrveranstaltung im gewaehlten Studiensemester angeboten wird.
* Dazu wird geprueft ob die LV einem aktuellen Studienplan zugeordnet ist, und ob ein Lehrauftrag vorhanden ist.
*
* @param $lehrveranstaltung_id ID der Lehrveranstaltung.
* @param $studiensemester_kurzbz Kurzbz des Studiensemesters.
* @return boolean true wenn angeboten, false wenn nicht angeboten
*/
public function isOffered($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
*
FROM
lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id = ".$this->db_add_param($lehrveranstaltung_id)."
AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
AND EXISTS (
SELECT
*
FROM
lehre.tbl_studienplan_lehrveranstaltung
JOIN lehre.tbl_studienplan_semester USING(studienplan_id)
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
)";
if($result = $this->db_query($qry))
{
if($row = $this->db_num_rows($result)>0)
{
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Sucht nach LV Templates und gibt Id und Label ("bezeichnung [kurzbz]") aus
* Diese funktion ist für autocomplete gedacht
*
* @param string $filter Suchfilter
* @return array
*/
public function loadTemplates($filter)
{
$filter = strtolower($filter);
$qry = "SELECT
tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz
FROM
lehre.tbl_lehrveranstaltung
WHERE
tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) LIKE '%".$this->db_escape($filter)."%' OR
LOWER(tbl_lehrveranstaltung.bezeichnung) LIKE '%".$this->db_escape($filter). "%' OR
LOWER(tbl_lehrveranstaltung.kurzbz) LIKE '%".$this->db_escape($filter). "%'
)
";
$lehrveranstaltungen = [];
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$lehrveranstaltungen[] = $row;
}
return $lehrveranstaltungen;
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage';
return [];
}
}
/**
* Lädt Template und gibt Id und Label ("bezeichnung [kurzbz]") zurück
* Diese funktion ist für autocomplete gedacht
*
* @param string $name
* @return stdClass | null
*/
public function loadTemplateByName($name)
{
$qry = "SELECT
tbl_lehrveranstaltung.lehrveranstaltung_id as id, CONCAT(tbl_lehrveranstaltung.bezeichnung, ' [', tbl_lehrveranstaltung.kurzbz, ']') as label
FROM
lehre.tbl_lehrveranstaltung
WHERE
tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) = '".($name ? $this->db_escape($name) : 0)."' OR tbl_lehrveranstaltung.bezeichnung = '".$this->db_escape($name). "' OR tbl_lehrveranstaltung.kurzbz = '".$this->db_escape($name). "'
)
";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
return $row;
}
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
}
return null;
}
/**
* Prueft ob die Lehrveranstaltungen in dem Studiensemestern angeboten wird.
* Dazu wird geprueft ob die LVs einem aktuellen Studienplan zugeordnet ist und ob ein Lehrauftrag vorhanden ist.
*
* @param $lehrveranstaltung_id
* @param $studiensemester_kurzbz
* @return array
*/
public function getOfferedSemester($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
DISTINCT(studiensemester_kurzbz)
FROM
lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id = ".$this->db_add_param($lehrveranstaltung_id)."
AND studiensemester_kurzbz IN (".$this->db_implode4SQL($studiensemester_kurzbz).")
AND EXISTS (
SELECT
*
FROM
lehre.tbl_studienplan_lehrveranstaltung
JOIN lehre.tbl_studienplan_semester USING(studienplan_id)
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
AND studiensemester_kurzbz IN (".$this->db_implode4SQL($studiensemester_kurzbz).")
)";
$studiensemester = [];
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$studiensemester[] = $row;
}
return $studiensemester;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Prueft ob die Lehrveranstaltungen in den gewaehlten Studiensemestern angeboten wird.
* Dazu wird geprueft ob die LVs einem aktuellen Studienplan zugeordnet ist, und ob ein Lehrauftrag vorhanden ist.
*
* @param $lehrveranstaltung_id
* @param $studiensemester_kurzbz
* @return array
*/
public function getOfferedLVs($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
DISTINCT(tbl_lehreinheit.lehrveranstaltung_id)
FROM
lehre.tbl_lehreinheit
WHERE tbl_lehreinheit.lehrveranstaltung_id IN (".$this->db_implode4SQL($lehrveranstaltung_id).")
AND tbl_lehreinheit.studiensemester_kurzbz IN (".$this->db_implode4SQL($studiensemester_kurzbz).")
AND EXISTS (
SELECT
*
FROM
lehre.tbl_studienplan_lehrveranstaltung
JOIN lehre.tbl_studienplan_semester USING(studienplan_id)
WHERE
tbl_lehreinheit.lehrveranstaltung_id IN (".$this->db_implode4SQL($lehrveranstaltung_id).")
AND tbl_lehreinheit.studiensemester_kurzbz IN (".$this->db_implode4SQL($studiensemester_kurzbz).")
)";
$lehrveranstaltungen = [];
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$lehrveranstaltungen[] = $row;
}
return $lehrveranstaltungen;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
public function getStudienplanLehrveranstaltung($lehrveranstaltung_id, $studienplan_id)
{
$qry = "SELECT studienplan_lehrveranstaltung_id
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE lehrveranstaltung_id = ".$this->db_add_param($lehrveranstaltung_id)."
AND tbl_studienplan_lehrveranstaltung.studienplan_id = ".$this->db_add_param($studienplan_id);"";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->studienplan_lehrveranstaltung_id;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der studienplan_lehrveranstaltung_id';
return false;
}
}
else
{
$this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
}
return null;
}
}
?>