* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
* Manfred Kindl < manfred.kindl@technikum-wien.at >
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../config/global.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/lehreinheit.class.php');
require_once('../../include/lehreinheitmitarbeiter.class.php');
require_once('../../include/lehreinheitgruppe.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/mitarbeiter.class.php');
require_once('../../include/gruppe.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if (!$rechte->isBerechtigt('lehre/vorrueckung', null, 'suid'))
die($rechte->errormsg);
$stg_obj = new studiengang();
$stg_obj->loadArray($rechte->getStgKz('lehre/vorrueckung'),'typ, kurzbz');
$stg_arr = array();
foreach ($stg_obj->result as $stg)
{
$stg_arr[$stg->studiengang_kz] = $stg->kuerzel;
}
$studiengang_kz = (isset($_GET['studiengang_kz'])?$_GET['studiengang_kz']:'');
$semester = (isset($_GET['semester'])?$_GET['semester']:'');
$stsem_von = (isset($_GET['stsem_von'])?$_GET['stsem_von']:'');
$stsem_nach = (isset($_GET['stsem_nach'])?$_GET['stsem_nach']:'');
$text = '';
$anzahl_lehreinheiten = 0;
$anzahl_lehreinheitmitarbeiter = 0;
$anzahl_lehreinheitgruppe = 0;
$error_lehreinheit = 0;
$error_lehreinheitmitarbeiter = 0;
$error_lehreinheitgruppe = 0;
if ($stsem_von == '')
{
$stsem_obj = new studiensemester();
$stsem_von = $stsem_obj->getPrevious();
}
if ($stsem_nach == '')
{
$stsem_obj = new studiensemester();
$stsem_obj->getNextStudiensemester();
$stsem_nach = $stsem_obj->studiensemester_kurzbz;
}
echo '
Lehreinheit Vorrueckung
Lehreinheiten Vorrückung
';
echo '';
if ($studiengang_kz != '' && $stsem_von != '' && $stsem_nach != '')
{
$stg_obj = new studiengang();
if (!$stg_obj->load($studiengang_kz))
die('Studiengang kann nicht geladen werden');
if (!$rechte->isBerechtigt('lehre/vorrueckung', $stg_obj->oe_kurzbz, 'suid'))
die($rechte->errormsg);
echo ' Starte Vorrückung '.$stg_arr[$studiengang_kz]." $semester von $stsem_von nach $stsem_nach ...";
$qry = "SELECT tbl_lehreinheit.lehreinheit_id
FROM
lehre.tbl_lehreinheit JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz)." AND
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsem_von);
if ($semester != '')
$qry .= " AND tbl_lehrveranstaltung.semester=".$db->db_add_param($semester);
if ($result = $db->db_query($qry))
{
$anzahl_von = $db->db_num_rows($result);
}
//Pruefen, ob schon eine Vorrueckung stattgefunden hat
$qry_nach = "SELECT tbl_lehreinheit.lehreinheit_id
FROM
lehre.tbl_lehreinheit JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz)." AND
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsem_nach);
if ($semester != '')
$qry_nach .= " AND tbl_lehrveranstaltung.semester=".$db->db_add_param($semester);
if ($result = $db->db_query($qry_nach))
{
$anzahl_nach = $db->db_num_rows($result);
$baseurl = basename($_SERVER['REQUEST_URI']);
if ($anzahl_nach >= $anzahl_von && !isset($_GET['continue']))
{
echo '
Es sind schon Lehreinheiten fuer das
'.$stsem_nach.' in '.$stg_arr[$studiengang_kz].' '.$semester.' vorhanden.
Trotzdem fortsetzen?
';
die ();
}
}
if ($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$text .= " Lehreinheit $row->lehreinheit_id wird vorgerueckt";
$le_obj = new lehreinheit();
//Lehreinheit Neu Anlegen
if ($le_obj->load($row->lehreinheit_id))
{
$le_obj->new = true;
$le_obj->studiensemester_kurzbz = $stsem_nach;
$le_obj->insertamum = date('Y-m-d H:i:s');
$le_obj->insertvon = 'Vorrueckung_'.$user;
$le_obj->ext_id = '';
$le_obj->unr = '';
if ($le_obj->save())
{
$anzahl_lehreinheiten++;
//LehreinheitMitarbeiter Eintrag neu Anlengen
$qry_lem = "SELECT mitarbeiter_uid FROM lehre.tbl_lehreinheitmitarbeiter
WHERE lehreinheit_id=".$db->db_add_param($row->lehreinheit_id);
if ($result_lem = $db->db_query($qry_lem))
{
while ($row_lem = $db->db_fetch_object($result_lem))
{
$lem_obj = new lehreinheitmitarbeiter();
if ($lem_obj->load($row->lehreinheit_id, $row_lem->mitarbeiter_uid))
{
// Pruefen ob der Lektor ueber die im Config festgelegte Stundengrenze
// kommt und Meldung ausgeben
$qry_stundengrenze="
SELECT
mitarbeiter_uid,fixangestellt,SUM(semesterstunden) AS summe, aktiv
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
JOIN public.tbl_mitarbeiter USING (mitarbeiter_uid)
JOIN public.tbl_benutzer ON (uid=mitarbeiter_uid)
WHERE
mitarbeiter_uid=".$db->db_add_param($row_lem->mitarbeiter_uid)."
AND studiensemester_kurzbz=".$db->db_add_param($stsem_von)."
GROUP BY
mitarbeiter_uid, fixangestellt, aktiv";
if ($result_stundengrenze = $db->db_query($qry_stundengrenze))
{
if ($row_stundengrenze = $db->db_fetch_object($result_stundengrenze))
{
if (!$db->db_parse_bool($row_stundengrenze->fixangestellt)
&& $row_stundengrenze->summe > WARN_SEMESTERSTD_FREI)
{
$text .= "
Stundengrenze ".WARN_SEMESTERSTD_FREI." Stunden ueberschritten
von $row_lem->mitarbeiter_uid";
}
elseif ($db->db_parse_bool($row_stundengrenze->fixangestellt)
&& $row_stundengrenze->summe > WARN_SEMESTERSTD_FIX)
{
$text .= "
Stundengrenze ".WARN_SEMESTERSTD_FIX." Stunden ueberschritten
von $row_lem->mitarbeiter_uid";
}
// Meldung, wenn Benutzer inaktiv
if ($db->db_parse_bool($row_stundengrenze->aktiv) == false)
{
$text .= "; Achtung! MitarbeiterIn
$row_lem->mitarbeiter_uid ist nicht aktiv";
}
}
}
$lem_obj->lehreinheit_id = $le_obj->lehreinheit_id;
$lem_obj->new = true;
// Wenn VILESCI_STUNDENSATZ_VORRUECKUNG definiert ist,
// wird nicht der Stundensatz des Vorjahres verwendet
// Wenn VILESCI_STUNDENSATZ_VORRUECKUNG numerisch ist,
// wird dieser Wert fuer den Stundensatz verwendet
if (defined('VILESCI_STUNDENSATZ_VORRUECKUNG')
&& VILESCI_STUNDENSATZ_VORRUECKUNG != ''
&& is_numeric(VILESCI_STUNDENSATZ_VORRUECKUNG))
{
$lem_obj->stundensatz = VILESCI_STUNDENSATZ_VORRUECKUNG;
}
// Wenn VILESCI_STUNDENSATZ_VORRUECKUNG default ist,
//wird der Standard-Stundensatz des jeweiligen Lektors geladen und gespeichert
elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG')
&& VILESCI_STUNDENSATZ_VORRUECKUNG != ''
&& VILESCI_STUNDENSATZ_VORRUECKUNG == 'default')
{
$stundensatz = new mitarbeiter($row_lem->mitarbeiter_uid);
$lem_obj->stundensatz = $stundensatz->stundensatz;
}
$lem_obj->insertamum = date('Y-m-d H:i:s');
$lem_obj->insertvon = 'Vorrueckung_'.$user;
$lem_obj->ext_id = '';
$lem_obj->vertrag_id = '';
if (!$lem_obj->save())
{
$error_lehreinheitmitarbeiter++;
$text .= 'Fehler beim Anlegen des Lehreinheitmitarbeiter
Eintrages: '.$lem_obj->errormsg;
}
else
$anzahl_lehreinheitmitarbeiter++;
}
else
{
$text .= 'Fehler beim Laden der Mitarbeiter';
$error_lehreinheitmitarbeiter++;
}
}
}
else
{
$text .= 'Fehler beim Laden der Mitarbeiter '.$db->db_last_error();
$error_lehreinheitmitarbeiter++;
}
//LehreinheitGruppe Eintrag neu Anlegen
$qry_leg = "
SELECT
lehreinheitgruppe_id
FROM
lehre.tbl_lehreinheitgruppe
WHERE
lehreinheit_id=".$db->db_add_param($row->lehreinheit_id)."
AND NOT (tbl_lehreinheitgruppe.semester='0' AND tbl_lehreinheitgruppe.verband='I')";
if ($result_leg = $db->db_query($qry_leg))
{
while($row_leg = $db->db_fetch_object($result_leg))
{
$leg_obj = new lehreinheitgruppe();
if ($leg_obj->load($row_leg->lehreinheitgruppe_id))
{
// Direktinskriptionsgruppen werden nicht vorgerückt
if ($leg_obj->gruppe_kurzbz != '')
{
$grp = new gruppe();
$grp->load($leg_obj->gruppe_kurzbz);
if ($grp->direktinskription)
continue;
}
$leg_obj->lehreinheit_id = $le_obj->lehreinheit_id;
$leg_obj->new = true;
$leg_obj->insertamum = date('Y-m-d H:i:s');
$leg_obj->insertvon = 'Vorrueckung_'.$user;
$leg_obj->ext_id = '';
if (!$leg_obj->save())
{
$error_lehreinheitgruppe++;
$text .= 'Fehler beim Anlegen des Lehreinheitgruppe Eintrages: '.$leg_obj->errormsg;
}
else
$anzahl_lehreinheitgruppe++;
}
else
{
$text .= 'Fehler beim Laden der Gruppe '.$leg_obj->errormsg.' '.$db->db_last_error();
$error_lehreinheitgruppe++;
}
}
}
else
{
$text .= 'Fehler beim Auslesen der Gruppen';
$error_lehreinheitgruppe++;
}
}
else
{
$error_lehreinheit++;
$text .= 'Fehler beim Speichern der Lehreinheit '.$le_obj->errormsg;
}
}
else
{
$error_lehreinheit++;
$text .= 'Fehler beim Laden der Lehreinheit '.$le_obj->errormsg;
}
}
}
else
{
$text .= 'Fehler beim Laden der Lehreinheiten '.$db->db_last_error();
$error_lehreinheit++;
}
echo "