Merge remote-tracking branch 'origin/master'

This commit is contained in:
Manfred Kindl
2018-08-29 11:34:17 +02:00
10 changed files with 721 additions and 428 deletions
@@ -11,4 +11,164 @@ class Lehrveranstaltung_model extends DB_Model
$this->dbTable = 'lehre.tbl_lehrveranstaltung'; $this->dbTable = 'lehre.tbl_lehrveranstaltung';
$this->pk = 'lehrveranstaltung_id'; $this->pk = 'lehrveranstaltung_id';
} }
/**
* Gets unique Groupstrings for Lehrveranstaltungen, e.g. WS2018_BIF_1_PRJM_VZ_LV12345
* @param $studiensemester_kurzbz
* @param null $ausbildungssemester
* @param null $studiengang_kz
* @param null $lehrveranstaltung_ids
* @return StdClass
*/
public function getLehrveranstaltungGroupNames($studiensemester_kurzbz, $ausbildungssemester = null, $studiengang_kz = null, $lehrveranstaltung_ids = null)
{
$this->load->model('system/studiensemester_model', 'StudiensemesterModel');
$this->load->model('organisation/studiengang_model', 'StudiengangModel');
$studiengang_kz_arr = array();
$ausbildungssemester_arr = array();
$lehrveranstaltung_id_arr = array();
if (is_numeric($studiengang_kz))
{
$studiengang_kz_arr[] = $studiengang_kz;
}
elseif (is_array($studiengang_kz))
{
$studiengang_kz_arr = $studiengang_kz;
}
else
{
$studiengangdata = $this->StudiengangModel->getStudiengaengeByStudiensemester($studiensemester_kurzbz);
if (!hasData($studiengangdata))
show_error('no studiengaenge retrieved');
foreach ($studiengangdata->retval as $studiengang)
{
$studiengang_kz_arr[] = $studiengang->studiengang_kz;
}
}
if (is_numeric($ausbildungssemester))
{
$ausbildungssemester_arr[] = $ausbildungssemester;
}
elseif (is_array($ausbildungssemester))
{
$ausbildungssemester_arr = $ausbildungssemester;
}
else
{
foreach ($studiengang_kz_arr as $studiengang_kz_item)
{
$result = $this->StudiensemesterModel->getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz_item);
if (isError($result))
return error($result->retval);
foreach ($result->retval as $semester)
{
if (!in_array($semester->semester, $ausbildungssemester_arr))
$ausbildungssemester_arr[] = $semester->semester;
}
}
}
if (is_numeric($lehrveranstaltung_ids))
{
$lehrveranstaltung_id_arr[] = $lehrveranstaltung_ids;
}
elseif (is_array($lehrveranstaltung_ids))
{
$lehrveranstaltung_id_arr = $lehrveranstaltung_ids;
}
$parametersarray = array($studiensemester_kurzbz, $studiensemester_kurzbz);
$query = "
SELECT lehrveranstaltung_id, ? || '_' || kuerzel || '_' || lvpostfix AS lvgroupname
FROM(
SELECT DISTINCT ON (kuerzel, lvpostfix)
lehrveranstaltung_id,
UPPER(tbl_studiengang.typ :: VARCHAR(1) || tbl_studiengang.kurzbz) AS kuerzel,
tbl_lehrveranstaltung.semester || '_' || tbl_lehrveranstaltung.kurzbz || '_' || COALESCE(tbl_lehrveranstaltung.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) || '_LV' || lehrveranstaltung_id AS lvpostfix
FROM lehre.tbl_lehrveranstaltung
JOIN public.tbl_studiengang ON tbl_lehrveranstaltung.studiengang_kz = tbl_studiengang.studiengang_kz
WHERE tbl_lehrveranstaltung.lehrtyp_kurzbz != 'modul'
AND EXISTS (SELECT 1 FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND studiensemester_kurzbz = ?)";
if (count($ausbildungssemester_arr) > 0)
$query .= " AND tbl_lehrveranstaltung.semester IN (". implode(", ", $ausbildungssemester_arr).")";
if (count($studiengang_kz_arr) > 0)
$query .= " AND tbl_lehrveranstaltung.studiengang_kz IN (". implode(", ", $studiengang_kz_arr).")";
if (count($lehrveranstaltung_id_arr) > 0)
{
$query .= " AND tbl_lehrveranstaltung.lehrveranstaltung_id IN (". implode(', ', $lehrveranstaltung_id_arr).")";
}
$query .= ") lvgroups ORDER BY lvgroupname";
return $this->execQuery($query, $parametersarray);
}
/**
* Gets all students of a Lehrveranstaltung
* @param $studiensemester_kurzbz
* @param $lehrveranstaltung_id
* @return array|null
*/
public function getStudentsByLv($studiensemester_kurzbz, $lehrveranstaltung_id)
{
$query = "SELECT
distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr,
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student,
tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_benutzer.uid,
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung
FROM
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
LEFT JOIN public.tbl_studiengang ON(vw_student_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz)
WHERE
vw_student_lehrveranstaltung.studiensemester_kurzbz=?
AND
vw_student_lehrveranstaltung.lehrveranstaltung_id=?
ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC";
return $this->execQuery($query, array($studiensemester_kurzbz, $lehrveranstaltung_id));
}
/**
* Gets all lecturers of a Lehrveranstaltung
* @param $studiensemester_kurzbz
* @param $lehrveranstaltung_id
* @return array|null
*/
public function getLecturersByLv($studiensemester_kurzbz, $lehrveranstaltung_id)
{
$query = "SELECT * FROM (SELECT distinct on(uid) vorname, nachname, tbl_benutzer.uid as uid,
CASE WHEN lehrfunktion_kurzbz='LV-Leitung' THEN true ELSE false END as lvleiter
FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_benutzer, public.tbl_person
WHERE
tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND
tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND
tbl_person.person_id=tbl_benutzer.person_id AND
lehrveranstaltung_id=? AND
tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT like '_Dummy%' AND
tbl_benutzer.aktiv=true AND tbl_person.aktiv=true AND
studiensemester_kurzbz=?) AS a
ORDER BY lvleiter DESC, nachname, vorname";
return $this->execQuery($query, array($lehrveranstaltung_id, $studiensemester_kurzbz));
}
} }
@@ -407,4 +407,26 @@ class Studiengang_model extends DB_Model
array('reihungstest') array('reihungstest')
); );
} }
/**
* Gets Studiengaenge of a Studiensemesester
* @param $studiensemester_kurzbz
* @return array|null
*/
public function getStudiengaengeByStudiensemester($studiensemester_kurzbz)
{
$query = "SELECT
distinct tbl_studiengang.*, UPPER(typ::varchar(1) || kurzbz) AS kuerzel
FROM
public.tbl_studiengang
JOIN lehre.tbl_studienordnung USING(studiengang_kz)
JOIN lehre.tbl_studienplan USING(studienordnung_id)
JOIN lehre.tbl_studienplan_semester USING(studienplan_id)
WHERE
tbl_studienplan_semester.studiensemester_kurzbz=?
ORDER BY
typ, kurzbz";
return $this->execQuery($query, array($studiensemester_kurzbz));
}
} }
@@ -32,6 +32,26 @@ class Studiensemester_model extends DB_Model
return $this->execQuery($query); return $this->execQuery($query);
} }
/**
* getNextOrAktSemester
* 62 days - in july and august, semester after summer is returned
*/
public function getAktOrNextSemester($days = 62)
{
if (!is_numeric($days))
{
$days = 62;
}
$query = 'SELECT studiensemester_kurzbz
FROM public.tbl_studiensemester
WHERE start < NOW() + \'' . $days . ' DAYS\':: INTERVAL
ORDER BY start DESC
LIMIT 1';
return $this->execQuery($query);
}
/** /**
* getNextFrom * getNextFrom
*/ */
@@ -80,4 +100,23 @@ class Studiensemester_model extends DB_Model
return $this->execQuery($query); return $this->execQuery($query);
} }
/**
* Gets valid Ausbildungssemester of a Studiensemester with a Studiengang
* @param $studiensemester_kurzbz
* @param $studiengang_kz
* @return array|null
*/
public function getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz)
{
$query = "SELECT DISTINCT semester
FROM lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
JOIN lehre.tbl_studienplan_semester USING(studienplan_id)
WHERE tbl_studienplan_semester.studiensemester_kurzbz = ?
AND tbl_studienordnung.studiengang_kz = ?
ORDER BY semester";
return $this->execQuery($query, array($studiensemester_kurzbz, $studiengang_kz));
}
} }
@@ -22,4 +22,55 @@ class Benutzerfunktion_model extends DB_Model
return $this->loadWhere(array('person_id' => $person_id)); return $this->loadWhere(array('person_id' => $person_id));
} }
/**
* Gets all Benutzer for a given OE and specified Benutzerfunktionen
* @param $oe_kurzbz
* @param $funktion_kurzbz string with one benutzerfunktionname or array with one or more
* @return array|null
*/
public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz = null, $activeoeonly = false, $activebenonly = false)
{
$parametersArray = array();
$query = "SELECT * FROM public.tbl_benutzerfunktion";
if ($activeoeonly === true)
$query .= " JOIN public.tbl_organisationseinheit USING(oe_kurzbz)";
if ($activebenonly === true)
$query .= " JOIN public.tbl_benutzer USING(uid)";
$query .= "WHERE (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)";
if (is_string($funktion_kurzbz))
{
$query .= " AND funktion_kurzbz = ".$funktion_kurzbz.")";
}
elseif (is_array($funktion_kurzbz) && count($funktion_kurzbz) > 0)
{
$funktionstr = "'".implode("', '", $funktion_kurzbz)."'";
$query .= " AND funktion_kurzbz IN (".$funktionstr.")";
}
if (is_string($oe_kurzbz))
{
$query .= " AND tbl_benutzerfunktion.oe_kurzbz = ?";
$parametersArray[] = $oe_kurzbz;
}
if ($activebenonly === true)
{
$query .= " AND tbl_benutzer.aktiv";
}
if ($activeoeonly === true)
{
$query .= " AND tbl_organisationseinheit.aktiv";
}
$query .= " ORDER BY funktion_kurzbz, oe_kurzbz, uid";
return $this->execQuery($query, $parametersArray);
}
} }
+4 -2
View File
@@ -166,7 +166,7 @@ $qry = 'SELECT
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student, tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student,
tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang
FROM FROM
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid) JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
@@ -174,6 +174,7 @@ $qry = 'SELECT
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz) LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz) LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
WHERE WHERE
vw_student_lehrveranstaltung.lehrveranstaltung_id='.$db->db_add_param($lvid, FHC_INTEGER).' AND vw_student_lehrveranstaltung.lehrveranstaltung_id='.$db->db_add_param($lvid, FHC_INTEGER).' AND
vw_student_lehrveranstaltung.studiensemester_kurzbz='.$db->db_add_param($studiensemester); vw_student_lehrveranstaltung.studiensemester_kurzbz='.$db->db_add_param($studiensemester);
@@ -229,7 +230,8 @@ if($result = $db->db_query($qry))
'semester'=>$row->semester, 'semester'=>$row->semester,
'verband'=>trim($row->verband), 'verband'=>trim($row->verband),
'gruppe'=>trim($row->gruppe), 'gruppe'=>trim($row->gruppe),
'zusatz'=>$zusatz 'zusatz'=>$zusatz,
'studiengang_kurzbz'=>$row->kurzbzlang
)); ));
} }
} }
+3
View File
@@ -197,4 +197,7 @@ define('DVB_PORTAL', 'https://stubei-p.portal.at');
define('DVB_USERNAME','username'); define('DVB_USERNAME','username');
// Passwort // Passwort
define('DVB_PASSWORD','passwort'); define('DVB_PASSWORD','passwort');
define('CI_ENVIRONMENT', 'development'); // Code igniter environment variable
?> ?>
+1 -5
View File
@@ -60,12 +60,8 @@ if(isset($_POST['submitbild']))
if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{ {
if(!chgrp($uploadfile,'dms'))
echo 'CHGRP failed';
if(!chmod($uploadfile, 0774))
echo 'CHMOD failed';
$dms = new dms(); $dms = new dms();
$dms->setPermission($uploadfile);
$dms->version='0'; $dms->version='0';
$dms->kategorie_kurzbz=$kategorie_kurzbz; $dms->kategorie_kurzbz=$kategorie_kurzbz;
+25 -8
View File
@@ -308,7 +308,8 @@ class pruefling extends basis_db
/** /**
* Berechnet das Reihungstestergebnis fuer eine Person und ggf Reihungstest * Berechnet das Reihungstestergebnis fuer eine Person und ggf Reihungstest
* * ACHTUNG - Diese Funktion liefert keine zuverlaessigen Ergebnisse wenn keine ReihungstestID uebergeben wird
* und die Person mehrere Reihungstests absolviert hat!
* @param $person_id ID der Person. * @param $person_id ID der Person.
* @param $punkte Wenn true werden Punkte geliefert, sonst Prozentsumme. * @param $punkte Wenn true werden Punkte geliefert, sonst Prozentsumme.
* @param $reihungstest_id ID des Reihungstests. * @param $reihungstest_id ID des Reihungstests.
@@ -318,13 +319,31 @@ class pruefling extends basis_db
{ {
$qry = "SELECT * FROM testtool.vw_auswertung $qry = "SELECT * FROM testtool.vw_auswertung
WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
$ergebnis=0; $ergebnis=0;
if(!is_null($reihungstest_id)) if(!is_null($reihungstest_id))
{
$qry.=" AND reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER); $qry.=" AND reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER);
// Quercheck der PrestudentID ueber den Status damit bei Personen
// die den Reihungstest oefter im selben Studiengang gemacht haben nicht das
// Ergebniss der beiden Tests summiert bekommen
// Im Zweifelsfall wird der neuere Reihungstest genommen
$qry.= " AND prestudent_id = (
SELECT
prestudent_id
FROM
public.tbl_rt_person
JOIN public.tbl_reihungstest ON(rt_id=reihungstest_id)
JOIN public.tbl_prestudent USING(person_id)
JOIN public.tbl_prestudentstatus USING(prestudent_id, studienplan_id)
WHERE
tbl_rt_person.person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
AND tbl_rt_person.rt_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER)."
AND tbl_prestudentstatus.status_kurzbz='Interessent'
ORDER BY
tbl_reihungstest.datum desc LIMIT 1)";
}
if($result = $this->db_query($qry)) if($result = $this->db_query($qry))
{ {
@@ -332,8 +351,6 @@ class pruefling extends basis_db
if($this->db_num_rows($result)==0) if($this->db_num_rows($result)==0)
return false; return false;
while($row = $this->db_fetch_object($result)) while($row = $this->db_fetch_object($result))
{ {
//wenn maxpunkte ueberschritten wurde -> 100% //wenn maxpunkte ueberschritten wurde -> 100%
@@ -346,9 +363,9 @@ class pruefling extends basis_db
$prozent = ($row->punkte/$row->maxpunkte)*100; $prozent = ($row->punkte/$row->maxpunkte)*100;
if($punkte) if($punkte)
{ {
$ergebnis +=$row->punkte; $ergebnis +=$row->punkte;
} }
else else
$ergebnis+=$prozent*$row->gewicht; $ergebnis+=$prozent*$row->gewicht;
+8 -5
View File
@@ -55,6 +55,14 @@
* *
*/ */
// Loads FHC config files
require_once 'config/global.config.inc.php';
require_once 'config/vilesci.config.inc.php';
// Check if the CI_ENVIRONMENT constants is set and eventually use it to set the CI_ENV environment variable
if (defined('CI_ENVIRONMENT')) $_SERVER['CI_ENV'] = CI_ENVIRONMENT;
// If the CI_ENV environment variable is not set then use "development" as default
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development'); define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
/* /*
@@ -65,7 +73,6 @@ define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'developm
* Different environments will require different levels of error reporting. * Different environments will require different levels of error reporting.
* By default development will show errors but testing and live will hide them. * By default development will show errors but testing and live will hide them.
*/ */
switch (ENVIRONMENT) switch (ENVIRONMENT)
{ {
case 'development': case 'development':
@@ -299,10 +306,6 @@ switch (ENVIRONMENT)
* *
*/ */
// First load the FHC-Config-Files ...
require_once 'config/global.config.inc.php';
require_once 'config/vilesci.config.inc.php';
// ... and the vendor autoload // ... and the vendor autoload
include_once 'vendor/autoload.php'; include_once 'vendor/autoload.php';
+2 -2
View File
@@ -110,8 +110,8 @@ function draw_content_xml($row)
$studiengangbezeichnung_englisch = $studienordnung->__get('studiengangbezeichnung_englisch'); $studiengangbezeichnung_englisch = $studienordnung->__get('studiengangbezeichnung_englisch');
} }
} }
$studiengang_bezeichnung = empty($studiengangbezeichnung) ? $row->bezeichnung : $studiengangbezeichnung; $studiengang_bezeichnung = empty($studiengangbezeichnung) ? $studiengang->bezeichnung : $studiengangbezeichnung;
$studiengang_bezeichnung_englisch = empty($studiengangbezeichnung_englisch) ? $row->english : $studiengangbezeichnung_englisch; $studiengang_bezeichnung_englisch = empty($studiengangbezeichnung_englisch) ? $studiengang->english : $studiengangbezeichnung_englisch;
if($mitarbeiter->load($row->vorsitz)) if($mitarbeiter->load($row->vorsitz))
{ {