Files
FHC-Core/content/student/studentDBDML.php
T
2025-06-03 08:57:28 +02:00

5293 lines
158 KiB
PHP

<?php
/* Copyright (C) 2006 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> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
// ****************************************
// * Insert/Update/Delete
// * der Studenten
// *
// * Script sorgt fuer den Datenbanzugriff
// * fuer das XUL - Studenten-Modul
// *
// ****************************************
require_once('../../config/vilesci.config.inc.php');
require_once('../../config/global.config.inc.php');
require_once('../../include/'.EXT_FKT_PATH.'/generateuid.inc.php');
require_once('../../include/'.EXT_FKT_PATH.'/generatematrikelnr.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/benutzergruppe.class.php');
require_once('../../include/log.class.php');
require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/student.class.php');
require_once('../../include/prestudent.class.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/akte.class.php');
require_once('../../include/konto.class.php');
require_once('../../include/dokument.class.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/betriebsmittel.class.php');
require_once('../../include/betriebsmittelperson.class.php');
require_once('../../include/bisio.class.php');
require_once('../../include/zeugnisnote.class.php');
require_once('../../include/lvgesamtnote.class.php');
require_once('../../include/pruefung.class.php');
require_once('../../include/abschlusspruefung.class.php');
require_once('../../include/projektarbeit.class.php');
require_once('../../include/projektbetreuer.class.php');
require_once('../../include/lehrverband.class.php');
require_once('../../include/gruppe.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/pruefling.class.php');
require_once('../../include/mail.class.php');
require_once('../../include/kontakt.class.php');
require_once('../../include/dms.class.php');
require_once('../../include/notenschluessel.class.php');
require_once('../../include/anrechnung.class.php');
require_once('../../include/lehrveranstaltung.class.php');
require_once('../../include/anwesenheit.class.php');
require_once('../../include/benutzerfunktion.class.php');
require_once('../../include/note.class.php');
require_once('../../include/standort.class.php');
require_once('../../include/adresse.class.php');
require_once('../../include/reihungstest.class.php');
require_once('../../include/studienplan.class.php');
require_once('../../include/mobilitaet.class.php');
require_once('../../include/studienordnung.class.php');
require_once('../../include/mitarbeiter.class.php');
require_once('../../include/bisverwendung.class.php');
require_once('../../include/bismeldestichtag.class.php');
require_once('../../include/stundensatz.class.php');
$user = get_uid();
$db = new basis_db();
$return = false;
$errormsg = 'unknown';
$warning = '';
$data = '';
$error = false;
loadVariables($user);
//Berechtigungen laden
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('mitarbeiter'))
{
$return = false;
$errormsg = 'Keine Berechtigung';
$data = '';
$error = true;
}
$check_statusaenderung_berechtigung = 'student/keine_studstatuspruefung';
// *** FUNKTIONEN ***
// ****
// * Generiert die Matrikelnummer
// * FORMAT: 0710254001
// * 07 = Jahr
// * 1/2/0 = WS/SS/Incomming
// * 0254 = Studiengangskennzahl vierstellig
// * 001 = Laufende Nummer
// ****
function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz)
{
$db = new basis_db();
$studiengang_details = new studiengang();
$studiengang_details->load($studiengang_kz);
if (!isset($studiengang_details->studiengang_kz))
{
return false;
}
$jahr = substr($studiensemester_kurzbz, 4);
$art = substr($studiensemester_kurzbz, 0, 2);
if (($studiengang_kz < 0) || (isset($studiengang_details->typ) && ($studiengang_details->typ == 'l')))
{
$studiengang_kz=abs($studiengang_kz);
//Lehrgang
switch($art)
{
case 'WS': $art = '3'; break;
case 'SS': $art = '4'; break;
default: $art = '0'; break;
}
}
else
{
//Studiengang
switch($art)
{
case 'WS': $art = '1'; break;
case 'SS': $art = '2'; break;
default: $art = '0'; break;
}
}
if($art=='2' || $art=='4')
$jahr = $jahr-1;
//FH-Burgenland - weil leider die AO Studiengänge aufgeteilt sind
//(AO sind normal 9+erhalter Nummer, matrikelnr/personenkz wird auch im DVUH Extension berücksichtigt)
if ($studiengang_kz >= 90010 && $studiengang_kz <= 90019)
{
$matrikelnummer = sprintf("%02d",$jahr).$art.substr($studiengang_kz, 0, 4);
}
else
{
$matrikelnummer = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz);
}
$qry = "SELECT matrikelnr FROM public.tbl_student WHERE matrikelnr LIKE '$matrikelnummer%' ORDER BY matrikelnr DESC LIMIT 1";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$max = substr($row->matrikelnr, (strlen(trim($row->matrikelnr))-3));
}
else
$max = 0;
$max += 1;
return $matrikelnummer.sprintf("%03d",$max);
}
else
{
return false;
}
}
/**
* Wenn die Anwesenheit und einen bestimmten Prozentsatz faellt, wird ein Pruefungstermin abgezogen
* @param $studiensemester_kurzbz
* @param $student_uid
* @param $lehrveranstaltung_id
* @param $note
* @return null, error wird direkt in globale Variable geschrieben
*/
function NotePruefungAnlegen($studiensemester_kurzbz, $student_uid, $lehrveranstaltung_id, $note, $punkte)
{
global $return, $error, $errormsg;
$db = new basis_db();
$anwesenheit = new anwesenheit();
$anwesenheit->loadAnwesenheitStudiensemester($studiensemester_kurzbz, $student_uid, $lehrveranstaltung_id);
// Lehreinheit ermitteln
$error = false;
$qry = "
SELECT
lehreinheit_id
FROM
campus.vw_student_lehrveranstaltung
WHERE
uid=".$db->db_add_param($student_uid)."
AND lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id)."
AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)."
ORDER BY lehreinheit_id ASC
LIMIT 1";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$lehreinheit_id = $row->lehreinheit_id;
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln der Lehreinheit ID';
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln der Lehreinheit ID';
}
if(!$error)
{
$pruefung = new pruefung;
$pruefung->new = true;
$pruefung->student_uid = $student_uid;
$pruefung->lehreinheit_id = $lehreinheit_id;
$pruefung->datum = date("Y-m-d");
$stsem_obj = new studiensemester();
$stsem_obj->load($studiensemester_kurzbz);
// In Benutzerfunktion nachsehen ob eine Anwesenheitsbefreiung eingetragen ist
$benutzerfunktion = new benutzerfunktion();
$benutzerfunktion->getBenutzerFunktionByUid($student_uid, 'awbefreit', $stsem_obj->start, $stsem_obj->ende);
$anwesenheitsbefreit=false;
if(count($benutzerfunktion->result)>0)
$anwesenheitsbefreit=true;
$gesamtnote_punkte = defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE;
// Wenn nicht Anwesenheitsbefreit und Anwesenheit unter einem bestimmten Prozentsatz faellt dann wird ein
// Pruefungsantritt abgezogen
if(isset($anwesenheit->result[0]) && $anwesenheit->result[0]->prozent < FAS_ANWESENHEIT_ROT && !$anwesenheitsbefreit)
{
// 1. Termin mit "nicht beurteilt" erstellen
$pruefung->pruefungstyp_kurzbz = "Termin1";
$pruefung->note = 7;
if($pruefung->save())
{
// 2. Termin mit Note erstellen
$pruefung->pruefungstyp_kurzbz = "Termin2";
$pruefung->note = $note;
if($gesamtnote_punkte)
$pruefung->punkte = $punkte;
if($pruefung->save())
{
$return = true;
}
else
{
$errormsg = $pruefung->errormsg;
$return = false;
}
}
else
{
$errormsg = $pruefung->errormsg;
$return = false;
}
}
else
{
// 1. Termin mit Note erstellen
$pruefung->pruefungstyp_kurzbz = "Termin1";
$pruefung->note = $note;
if($gesamtnote_punkte)
$pruefung->punkte = $punkte;
if($pruefung->save())
{
$return = true;
}
else
{
$errormsg = $pruefung->errormsg;
$return = false;
}
}
}
}
function deleteFromSAP($buchung)
{
global $db, $user;
if(defined('BUCHUNGEN_CHECK_SAP') && BUCHUNGEN_CHECK_SAP == true)
{
$qry = "SELECT * FROM sync.tbl_sap_salesorder WHERE buchungsnr=".$db->db_add_param($buchung->buchungsnr);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$qry = "DELETE FROM sync.tbl_sap_salesorder WHERE buchungsnr=".$db->db_add_param($buchung->buchungsnr);
if($db->db_query($qry))
{
$log = new log();
$log->mitarbeiter_uid = $user;
$log->beschreibung = 'Buchungszuordnung SAP geloescht: SalesOrder:'.$row->sap_sales_order_id;
$log->sql = $qry;
if(!$log->save(true))
{
echo "Fehler beim Schreiben des Log".$log->errormsg;
return false;
}
return true;
}
else
{
echo "Fehler beim Löschen der Zahlungszuordnung";
return false;
}
}
else
{
//Gegenbuchung
}
}
else
{
echo "Zahlung nicht gefunden";
return false;
}
}
return true;
}
/**
* Prueft ob die Kontobuchung bereits ins SAP Ubertragen wurde oder noch geändert werden darf
*/
function isBuchungAllowedToChange($buchung_obj)
{
global $db;
if(defined('BUCHUNGEN_CHECK_SAP') && BUCHUNGEN_CHECK_SAP == true)
{
$qry = "SELECT * FROM sync.tbl_sap_salesorder WHERE buchungsnr=".$db->db_add_param($buchung_obj->buchungsnr);
if ($buchung_obj->buchungsnr_verweis != '')
$qry .= " OR buchungsnr=".$db->db_add_param($buchung_obj->buchungsnr_verweis);
if ($result = $db->db_query($qry))
{
if($db->db_num_rows($result) > 0)
{
return false;
}
else
return true;
}
else
return false;
}
else
return true;
}
/**
*
* Prüft für einen Prestudenten, ob eine bestimmte Statusänderung valide ist.
* @param $prestudent_id
* @param $status_kurzbz des neuen/bearbeiteten Status
* @param $new_status_studiensemester Studiensemester des neuen/zu ändernen Status
* @param $new_status_datum Datum des neuen/zu ändernen Status
* @param $new_status_ausbildungssemester Ausbildungssemester des neuen/zu ändernen Status
* @param $old_status_studiensemester Studiensemester des alten Status, leer wenn neuer Status
* @param $old_status_ausbildungssemester Ausbildungssemester des alten Status, leer wenn neuer Status
* @return array mit error = true und Fehlerbeschreibung wenn ungültig, andernfalls error = false
*/
function checkStatusaenderung(
$prestudent_id, $status_kurzbz, $new_status_studiensemester, $new_status_datum, $new_status_ausbildungssemester,
$old_status_studiensemester = '', $old_status_ausbildungssemester = ''
)
{
global $db;
// Es ist ein neuer Status wenn es kein altes Semester gibt
$isNewStatus = $old_status_studiensemester == '' && $old_status_ausbildungssemester == '';
// status_kurzbz für Endstatus
$endstatusArr = array('Absolvent', 'Abbrecher');
// Datum des neuen Status setzen
$new_status_datum = new DateTime($new_status_datum);
// Wenn neuer Status
if ($isNewStatus)
{
// Datum des neuen Status darf nicht in Vergangenheit liegen, sonst Probleme wenn neues Datum < Bismeldedatum
$current_date = new DateTime('today');
if ($new_status_datum < $current_date)
{
return array(
'error' => true,
'errormsg' => 'Datum eines neuen Statuseintrags darf nicht in der Vergangenheit liegen'
);
}
}
// start des Studiensemesters holen
$studiensemester = new studiensemester();
$studiensemester->load($new_status_studiensemester);
$new_status_semesterstart = new DateTime($studiensemester->start);
// Alle prestudentstatus nach Datum sortiert
$qry = "SELECT status_kurzbz, studiensemester_kurzbz, ausbildungssemester, datum, sem.start AS studiensemester_start
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_studiensemester sem USING (studiensemester_kurzbz)
WHERE prestudent_id=".$db->db_add_param($prestudent_id, FHC_INTEGER);
// zu ändernden Status rausfiltern wenn Status bearbeitet wird
if (!$isNewStatus)
{
$qry .= " AND NOT (
status_kurzbz=".$db->db_add_param($status_kurzbz)
." AND studiensemester_kurzbz=".$db->db_add_param($old_status_studiensemester)
." AND ausbildungssemester=".$db->db_add_param($old_status_ausbildungssemester, FHC_INTEGER)."
)";
}
$qry .= " ORDER BY datum DESC, pss.insertamum DESC, pss.ext_id DESC";
$statusArr = array();
if ($result = $db->db_query($qry))
{
$newStatusInserted = false;
// für jeden Status
while ($row = $db->db_fetch_object($result))
{
$studiensemester_start = new DateTime($row->studiensemester_start);
$status_datum = new DateTime($row->datum);
// Neuer/editierter Statuseintrag nach bestehendem Statuseintrag
if ($new_status_datum >= $status_datum && $new_status_semesterstart >= $studiensemester_start)
{
if (!$newStatusInserted)
{
// neuer Status erstmals größer als Datum eines bestehenden Status -> neuen Status einfügen
$new_status = new stdClass();
$new_status->status_kurzbz = $status_kurzbz;
$new_status->studiensemester_kurzbz = $new_status_studiensemester;
$new_status->datum = $new_status_datum;
$new_status->ausbildungssemester = $new_status_ausbildungssemester;
$statusArr[] = $new_status;
$newStatusInserted = true;
}
// Gültige Zeitabfolge, bestehenden Status hinzufügen
$statusArr[] = $row;
}
// oder Neuer/editierter Statuseintrag vor bestehendem Statuseintrag
elseif ($new_status_datum <= $status_datum && $new_status_semesterstart <= $studiensemester_start)
{
// Gültige Zeitabfolge, bestehenden Status hinzufügen
$statusArr[] = $row;
}
else
{
// Zeitabfolge ungültig, Fehler
return array(
'error' => true,
'errormsg' => 'Ungültige Zeitabfolge der Statuseinträge (Statusdatum oder Semester)'
);
}
}
// Prüfungen den Prestudentstatus betreffend
// Über alle gespeicherten Status gehen und Statusabfolge prüfen
for ($i = 0; $i < count($statusArr); $i++)
{
$curr_status = $statusArr[$i];
$curr_status_kurzbz = $curr_status->status_kurzbz;
$curr_status_ausbildungssemester = $curr_status->ausbildungssemester;
$next_idx = $i - 1; //absteigend sortiert, nächster Status ist vorheriger Eintrag
$next_status = isset($statusArr[$next_idx]) ? $statusArr[$next_idx] : null;
// Abbrecher- oder Absolventenstatus muss Endstatus sein
if (isset($next_status) && in_array($curr_status_kurzbz, $endstatusArr))
{
return array(
'error' => true,
'errormsg' => 'Nach Abbrecher- und Absolventenstatus darf kein anderer Status mehr eingetragen werden'
);
}
// wenn Unterbrecher auf Unterbrecher folgt, muss Ausbildungssemester gleich sein
if (
$curr_status_kurzbz == 'Unterbrecher' && isset($next_status) && $next_status->status_kurzbz == 'Unterbrecher'
&& $curr_status_ausbildungssemester != $next_status->ausbildungssemester
)
{
return array(
'error' => true,
'errormsg' => 'Aufeinanderfolgende Unterbrecher müssen gleiches Ausbildungssemester haben'
);
}
// wenn Abbrecher auf Unterbrecher folgt, muss Ausbildungssemester gleich sein
if (
isset($next_status) && $curr_status_kurzbz == 'Unterbrecher'
&& $next_status->status_kurzbz == 'Abbrecher' && $curr_status_ausbildungssemester != $next_status->ausbildungssemester
)
{
return array(
'error' => true,
'errormsg' => 'Unterbrecher und folgender Abbrecher müssen gleiches Ausbildungssemester haben'
);
}
// keine Studenten nach Diplomand Status
if (
isset($next_status) && $curr_status_kurzbz == 'Diplomand' && $next_status->status_kurzbz == 'Student'
)
{
return array(
'error' => true,
'errormsg' => 'Nach Diplomantenstatus darf kein Studentenstatus mehr eingetragen werden'
);
}
}
}
else
return array('error' => true, 'errormsg' => 'Fehler bei Statusänderungcheck');
return array('error' => false, 'errormsg' => '');
}
if(!$error)
{
if(isset($_POST['type']) && $_POST['type']=='savestudent')
{
if(!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid'))
{
$error = true;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
//Studentendaten speichern
if(!$error)
{
$student = new student();
if(!$student->load($_POST['uid']))
{
$return = false;
$errormsg = 'Fehler beim Laden:'.$student->errormsg;
$error = true;
}
$datum = new datum();
$gebdatum = $_POST['geburtsdatum'];
if($gebdatum!='' && !$datum->checkDatum($gebdatum))
{
$return = false;
$errormsg = 'Geburtsdatum ist nicht korrekt.';
$error = true;
}
if(!$error)
{
$student->uid = $_POST['uid'];
$student->anrede = $_POST['anrede'];
$student->titelpre = $_POST['titelpre'];
$student->titelpost = $_POST['titelpost'];
$student->vorname = $_POST['vorname'];
$student->wahlname = $_POST['wahlname'];
$student->vornamen = $_POST['vornamen'];
$student->nachname = $_POST['nachname'];
$student->gebdatum = $_POST['geburtsdatum'];
$student->gebort = $_POST['geburtsort'];
$student->gebzeit = $_POST['geburtszeit'];
$student->anmerkungen = $_POST['anmerkung'];
$student->homepage = $_POST['homepage'];
$student->matr_nr = $_POST['matr_nr'];
$student->ersatzkennzeichen = $_POST['ersatzkennzeichen'];
$student->familienstand = $_POST['familienstand'];
$student->geschlecht = $_POST['geschlecht'];
$student->bnaktiv = ($_POST['aktiv']=='true'?true:false);
$student->anzahlkinder = $_POST['anzahlderkinder'];
$student->staatsbuergerschaft = $_POST['staatsbuergerschaft'];
$student->geburtsnation = $_POST['geburtsnation'];
$student->sprache = $_POST['sprache'];
$student->matrikelnr = $_POST['matrikelnummer'];
if (isset($_POST['bpk']))
$student->bpk = $_POST['bpk'];
$student->updateamum = date('Y-m-d H:i:s');
$student->updatevon = $user;
if($_POST['alias']!='')
{
if(checkalias($_POST['alias']))
{
$student->alias = $_POST['alias'];
}
else
{
$error = true;
$return = false;
$errormsg = 'Alias ist ungueltig';
}
}
else
$student->alias = '';
if(!$error)
{
$stsem = new studiensemester();
$stsem_kurzbz = $stsem->getaktorNext();
//Wenn das ausgewaehlte Semester das aktuelle ist, dann wird auch in der
//Tabelle Student der Stg/Semester/Verband/Gruppe geaendert.
//Sonst nur in der Tabelle Studentlehrverband
if($semester_aktuell == $stsem_kurzbz)
{
$student->studiengang_kz = $_POST['studiengang_kz'];
$student->semester = $_POST['semester'];
$student->verband = ($_POST['verband']==''?' ':$_POST['verband']);
$student->gruppe = ($_POST['gruppe']==''?' ':$_POST['gruppe']);
}
$student->new=false;
$lehrverband = new lehrverband();
if(!$lehrverband->exists($_POST['studiengang_kz'],$_POST['semester'],$_POST['verband'], $_POST['gruppe']))
{
$errormsg = 'Die angegebene Lehrverbandsgruppe existiert nicht!';
$return = false;
$error = true;
}
if(!$error)
{
if($student->save())
{
$student_lvb = new student();
// Studentlehrverband Eintrag nur Speichern, wenn der Student in diesem Studiensemester
// einen Status besitzt da es sonst beim Bearbeiten von alten Studenten immer in das
// entsprechende Studiensemester gewechselt werden muss.
$prestudentobj = new prestudent();
$prestudentobj->getPrestudentRolle($student->prestudent_id, null, $semester_aktuell);
if(count($prestudentobj->result)>0)
{
if($student_lvb->studentlehrverband_exists($_POST['uid'], $semester_aktuell))
$student_lvb->new = false;
else
$student_lvb->new = true;
$student_lvb->uid = $_POST['uid'];
$student_lvb->studiensemester_kurzbz = $semester_aktuell;
$student_lvb->studiengang_kz = $_POST['studiengang_kz'];
$student_lvb->semester = $_POST['semester'];
$student_lvb->verband = ($_POST['verband']==''?' ':$_POST['verband']);
$student_lvb->gruppe = ($_POST['gruppe']==''?' ':$_POST['gruppe']);
$student_lvb->updateamum = date('Y-m-d H:i:s');
$student_lvb->updatevon = $user;
if($student_lvb->save_studentlehrverband())
{
$return = true;
$error=false;
$data = $student->prestudent_id;
}
else
{
$error = true;
$errormsg = $student_lvb->errormsg;
$return = false;
}
}
else
{
$error = false;
$return = true;
$data = $student->prestudent_id;
}
}
else
{
$return = false;
$errormsg = $student->errormsg;
$error = true;
}
}
}
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='saveperson')
{
if(!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid'))
{
$error = true;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
//Personendaten Speichern
if(!$error)
{
$person = new person();
if(!$person->load($_POST['person_id']))
{
$return = false;
$errormsg = 'Fehler beim Laden:'.$person->errormsg;
$error = true;
}
if(!$error)
{
$person->person_id = $_POST['person_id'];
$person->anrede = $_POST['anrede'];
$person->titelpre = $_POST['titelpre'];
$person->titelpost = $_POST['titelpost'];
$person->vorname = $_POST['vorname'];
$person->vornamen = $_POST['vornamen'];
$person->wahlname = $_POST['wahlname'];
$person->nachname = $_POST['nachname'];
$person->gebdatum = $_POST['geburtsdatum'];
$person->gebort = $_POST['geburtsort'];
$person->gebzeit = $_POST['geburtszeit'];
$person->anmerkungen = $_POST['anmerkung'];
$person->homepage = $_POST['homepage'];
$person->ersatzkennzeichen = $_POST['ersatzkennzeichen'];
$person->familienstand = $_POST['familienstand'];
$person->geschlecht = $_POST['geschlecht'];
//$person->aktiv = ($_POST['aktiv']=='true'?true:false);
$person->anzahlkinder = $_POST['anzahlderkinder'];
$person->staatsbuergerschaft = $_POST['staatsbuergerschaft'];
$person->geburtsnation = $_POST['geburtsnation'];
$person->sprache = $_POST['sprache'];
$person->matr_nr = $_POST['matr_nr'];
if (isset($_POST['bpk']))
$person->bpk = $_POST['bpk'];
$person->updateamum = date('Y-m-d H:i:s');
$person->updatevon = $user;
$person->new=false;
if(!$error)
{
if($person->save())
{
$return = true;
$error=false;
$data = $person->person_id;
}
else
{
$return = false;
$errormsg = $person->errormsg;
$error = true;
}
}
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='saveprestudent')
{
//PreStudentdaten Speichern
if(!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid'))
{
$error = true;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
if(!$error)
{
$prestudent = new prestudent();
if(!$prestudent->load($_POST['prestudent_id']))
{
$return = false;
$errormsg = 'Fehler beim Laden:'.$prestudent->errormsg;
$error = true;
}
if(!$error)
{
$prestudent->prestudent_id = $_POST['prestudent_id'];
$prestudent->aufmerksamdurch_kurzbz = $_POST['aufmerksamdurch_kurzbz'];
$prestudent->person_id = $_POST['person_id'];
$prestudent->studiengang_kz = $_POST['studiengang_kz'];
$prestudent->berufstaetigkeit_code = $_POST['berufstaetigkeit_code'];
$prestudent->ausbildungcode = $_POST['ausbildungcode'];
// Die Bachelor-ZGV darf nur mit einem eigenen Recht geändert werden
if($rechte->isBerechtigt('student/editBakkZgv',$_POST['studiengang_kz'],'suid'))
{
$prestudent->zgv_code = $_POST['zgv_code'];
}
elseif ($prestudent->zgv_code != $_POST['zgv_code'])
{
$errormsg = 'Keine Berechtigung zum Ändern der ZGV';
$error = true;
}
$prestudent->zgvort = $_POST['zgvort'];
$prestudent->zgvdatum = $_POST['zgvdatum'];
$prestudent->zgvnation = $_POST['zgvnation'];
$prestudent->zgv_erfuellt = $_POST['zgv_erfuellt'];
// Die Master-ZGV darf nur mit einem eigenen Recht geändert werden
if($rechte->isBerechtigt('student/editMakkZgv',$_POST['studiengang_kz'],'suid'))
{
$prestudent->zgvmas_code = $_POST['zgvmas_code'];
}
elseif ($prestudent->zgvmas_code != $_POST['zgvmas_code'])
{
$errormsg = 'Keine Berechtigung zum Ändern der ZGV';
$error = true;
}
$prestudent->zgvmaort = $_POST['zgvmaort'];
$prestudent->zgvmadatum = $_POST['zgvmadatum'];
$prestudent->zgvmanation = $_POST['zgvmanation'];
$prestudent->zgvmas_erfuellt = $_POST['zgvmas_erfuellt'];
$prestudent->zgvdoktor_code = $_POST['zgvdoktor_code'];
$prestudent->zgvdoktorort = $_POST['zgvdoktorort'];
$prestudent->zgvdoktordatum = $_POST['zgvdoktordatum'];
$prestudent->zgvdoktornation = $_POST['zgvdoktornation'];
$prestudent->zgvdoktor_erfuellt = $_POST['zgvdoktor_erfuellt'];
$prestudent->aufnahmeschluessel = $_POST['aufnahmeschluessel'];
$prestudent->facheinschlberuf = ($_POST['facheinschlberuf']=='true'?true:false);
$prestudent->bismelden = ($_POST['bismelden']=='true'?true:false);
$foerderrelevant = null;
if ($_POST['foerderrelevant'] === 'true')
$foerderrelevant = true;
elseif ($_POST['foerderrelevant'] === 'false')
$foerderrelevant = false;
$prestudent->foerderrelevant = $foerderrelevant;
$prestudent->dual = ($_POST['dual']=='true'?true:false);
$prestudent->anmerkung = $_POST['anmerkung'];
$prestudent->mentor = $_POST['mentor'];
$prestudent->gsstudientyp_kurzbz = $_POST['gsstudientyp_kurzbz'];
$prestudent->priorisierung = $_POST['priorisierung'];
$prestudent->standort_code = $_POST['standort_code'];
//$prestudent->insertamum = date('Y-m-d H:i:s');
//$prestudent->insertvon = $user;
$prestudent->updateamum = date('Y-m-d H:i:s');
$prestudent->updatevon = $user;
$prestudent->new=false;
if(!$error)
{
if($prestudent->save())
{
$return = true;
$error=false;
$data = $prestudent->prestudent_id;
}
else
{
$return = false;
$errormsg = $prestudent->errormsg;
$error = true;
}
}
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='addrolle')
{
//Prestudentrolle hinzufuegen
if(!$error)
{
$prestudent_ids = explode(';', $_POST['prestudent_id']);
$errormsg='';
$anzahl_fehler=0;
foreach($prestudent_ids as $prestudent_id)
{
$error = false;
if($prestudent_id!='')
{
$prestd = new prestudent();
if(!$prestd->load($prestudent_id))
{
$error = true;
$errormsg .= "\n$prestd->vorname $prestd->nachname: Fehler beim Laden des Prestudenten";
$anzahl_fehler++;
}
else
{
if(!$rechte->isBerechtigt('assistenz',$prestd->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$prestd->studiengang_kz, 'suid'))
{
$error = true;
$errormsg .= "\n$prestd->vorname $prestd->nachname: Sie haben keine Schreibrechte fuer diesen Studiengang";
$anzahl_fehler++;
}
}
// Check ob Reihungstest berücksichtigt werden soll
// kann in Config abgestellt werden
if(REIHUNGSTEST_CHECK)
{
$reihungstestangetreten = $prestd->reihungstestangetreten;
if($_POST['status_kurzbz']=='Bewerber' && !$reihungstestangetreten)
{
$error = true;
$errormsg .= "\n $prestd->vorname $prestd->nachname: Um einen Interessenten zum Bewerber zu machen, muss die Person das Reihungstestverfahren abgeschlossen haben";
$anzahl_fehler++;
}
}
if(!defined("ZGV_CHECK") || ZGV_CHECK)
{
if($_POST['status_kurzbz']=='Bewerber' && $prestd->zgv_code=='')
{
$error = true;
$errormsg .= "\n $prestd->vorname $prestd->nachname: Um einen Interessenten zum Bewerber zu machen, muss die Zugangsvoraussetzung eingetragen sein.";
$anzahl_fehler++;
}
}
$stg_obj = new studiengang();
$stg_obj->load($prestd->studiengang_kz);
if(!defined("ZGV_CHECK") || ZGV_CHECK)
{
if($_POST['status_kurzbz']=='Bewerber' && $prestd->zgvmas_code=='' && $stg_obj->typ=='m')
{
$error = true;
$errormsg .= "\n $prestd->vorname $prestd->nachname: Um einen Interessenten zum Bewerber zu machen, muss die Zugangsvoraussetzung Master eingetragen sein.";
$anzahl_fehler++;
}
}
if(!$error)
{
if($prestd->getLastStatus($prestudent_id))
{
if($_POST['status_kurzbz']=='Absolvent' || $_POST['status_kurzbz']=='Diplomand')
$studiensemester = $semester_aktuell;
else
$studiensemester = $prestd->studiensemester_kurzbz;
$hlp = new prestudent();
if($_POST['status_kurzbz']=='Student')
$sem=$_POST['semester'];
else
$sem=$prestd->ausbildungssemester;
$hlp->getPrestudentRolle($prestudent_id, $_POST['status_kurzbz'], $studiensemester, "datum, insertamum", $sem);
if(count($hlp->result)>0)
{
$errormsg .= "\n$prestd->vorname $prestd->nachname: Diese Rolle ist bereits vorhanden";
$anzahl_fehler++;
$return = false;
}
else
{
//Wenn der Status auf Aufgenommener oder Wartender geaendert wird,
//muss ein Bewerberstatus vorhanden sein
if($_POST['status_kurzbz']=='Aufgenommener' || $_POST['status_kurzbz']=='Wartender')
{
$qry = "SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id=".$db->db_add_param($prestudent_id, FHC_INTEGER)." AND status_kurzbz='Bewerber'";
if($result_bw = $db->db_query($qry))
{
if($db->db_num_rows($result_bw)==0)
{
$return = false;
$error = true;
$errormsg .= "\n$prestd->vorname $prestd->nachname: Person muss zuerst zum Bewerber gemacht werden!";
$anzahl_fehler++;
}
}
}
// wenn keine spezielle Berechtiung zur Umgebung, Statusänderung Checks durchführen
if (!$rechte->isBerechtigt($check_statusaenderung_berechtigung))
{
$new_status_datum = isset($_POST['datum']) ? $_POST['datum'] : date('Y-m-d');
$bismeldestichtag = new bismeldestichtag();
$meldestichtag_erreicht = $bismeldestichtag->checkMeldestichtagErreicht($new_status_datum);
if ($meldestichtag_erreicht === true)
{
$return = false;
$error = true;
$errormsg .= 'Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht hinzugefügt werden.';
$anzahl_fehler++;
}
$check_statusaenderung_result = checkStatusaenderung(
$prestudent_id,
$_POST['status_kurzbz'],
$studiensemester,
$new_status_datum,
$sem
);
if (isset($check_statusaenderung_result['error']) && $check_statusaenderung_result['error'] === true)
{
$return = false;
$error = true;
$errormsg .= isset($check_statusaenderung_result['errormsg']) ? $check_statusaenderung_result['errormsg'] : '';
$anzahl_fehler++;
}
}
if(!$error)
{
$prestd_neu = new prestudent();
$prestd_neu->prestudent_id = $prestudent_id;
$prestd_neu->status_kurzbz = $_POST['status_kurzbz'];
$prestd_neu->studiensemester_kurzbz = $studiensemester;
$prestd_neu->datum = date('Y-m-d');
$prestd_neu->ausbildungssemester = $sem;
$prestd_neu->orgform_kurzbz = $prestd->orgform_kurzbz;
$prestd_neu->studienplan_id = $prestd->studienplan_id;
$prestd_neu->insertamum = date('Y-m-d H:i:s');
$prestd_neu->insertvon = $user;
$prestd_neu->bestaetigtam = date('Y-m-d');
$prestd_neu->bestaetigtvon = $user;
if(isset($_POST['statusgrund_id']))
$prestd_neu->statusgrund_id = $_POST['statusgrund_id'];
$prestd_neu->new = true;
if($prestd_neu->save_rolle())
{
// wenn kein fehler und status bewerber und "email senden an bewerber" eingestellt ist
if($_POST['status_kurzbz']=='Bewerber' && SEND_BEWERBER_INFOMAIL)
{
// hole Email Adresse
$kontakt = new kontakt();
$kontakt->load_persKontakttyp($prestd->person_id, 'email');
// Wenn zumindest eine Email Adresse gefunden wurde
if(count($kontakt->result)>0)
{
$email = "Sehr geehrter Frau/Herr ".$prestd->vorname." ".$prestd->nachname.",<br><br> ";
$email.= INFOMAIL_BEWERBER;
foreach($kontakt->result as $k)
{
$mail = new mail($k->kontakt, 'no-reply', 'Infomail', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.');
$mail->setHTMLContent($email);
if(!$mail->send())
{
$errormsg= 'Fehler beim Senden des Mails!';
$anzahl_fehler++;
}
}
}
}
//Unterbrecher und Abbrecher werden ins 0. Semester verschoben
if($_POST['status_kurzbz']=='Unterbrecher' || $_POST['status_kurzbz']=='Abbrecher')
{
$student = new student();
$uid = $student->getUid($prestudent_id);
$student->load($uid);
$student->studiensemester_kurzbz=$studiensemester;
$student->semester = '0';
if($_POST['status_kurzbz']=='Abbrecher')
{
$student->verband='A';
$student->gruppe='';
}
if($_POST['status_kurzbz']=='Unterbrecher')
{
$student->verband='B';
$student->gruppe='';
}
// noch nicht eingetragene Noten ergänzen
$noten = new zeugnisnote();
$noten->getZeugnisnoten(null, $uid, $semester_aktuell);
foreach($noten->result as $obj)
{
if($obj->note == '')
{
$obj->note = 9;
$obj->save(true);
}
}
//Nachschauen ob dieser Lehrverband schon existiert, falls nicht dann anlegen
$lehrverband = new lehrverband();
if(!$lehrverband->exists($student->studiengang_kz, $student->semester, $student->verband, ''))
{
//Pruefen ob der uebergeordnete Lehrverband existiert, falls nicht dann anlegen
if(!$lehrverband->exists($student->studiengang_kz, $student->semester, '', ''))
{
$lehrverband->studiengang_kz = $student->studiengang_kz;
$lehrverband->semester = $student->semester;
$lehrverband->verband = '';
$lehrverband->gruppe = '';
$lehrverband->aktiv = true;
$lehrverband->bezeichnung = 'Ab-Unterbrecher';
$lehrverband->save(true);
}
$lehrverband->studiengang_kz = $student->studiengang_kz;
$lehrverband->semester = $student->semester;
$lehrverband->verband = $student->verband;
$lehrverband->gruppe = '';
$lehrverband->aktiv = true;
if($student->verband=='A')
$lehrverband->bezeichnung = 'Abbrecher';
else
$lehrverband->bezeichnung = 'Unterbrecher';
$lehrverband->save(true);
}
$student->updatevon = $user;
$student->updateamum = date('Y-m-d H:i:s');
//Student Speichern
$student->save(false, false);
//Studentlehrverband Eintrag Speichern
$student->save_studentlehrverband(false);
}
//Wenn Unterbrecher zu Studenten werden, dann wird das Semester mituebergeben
//Verband und Gruppe wird entfernt.
if($_POST['status_kurzbz']=='Student')
{
$student = new student();
$uid = $student->getUid($prestudent_id);
$student->load($uid);
$student->studiensemester_kurzbz=$semester_aktuell;
$student->semester = $_POST['semester'];
$student->verband = '';
$student->gruppe = '';
$student->save(false, false);
$student->save_studentlehrverband(false);
//Aktiv Status setzen
$benutzer = new benutzer();
if($benutzer->load($uid))
{
$benutzer->updateamum = date('Y-m-d H:i:s');
$benutzer->updatevon = $user;
$benutzer->bnaktiv=true;
$benutzer->save(false, false);
}
}
//bei Abbrechern und Absolventen wird der Aktiv Status auf false gesetzt
if($_POST['status_kurzbz']=='Abbrecher' || $_POST['status_kurzbz']=='Absolvent')
{
$student = new student();
$uid = $student->getUid($prestudent_id);
$benutzer = new benutzer();
if($benutzer->load($uid))
{
$benutzer->updateamum = date('Y-m-d H:i:s');
$benutzer->updatevon = $user;
$benutzer->bnaktiv=false;
$benutzer->save(false, false);
}
}
$return = true;
}
else
{
$return = false;
$errormsg = "\n$prestd->vorname $prestd->nachname: ".$prestd_neu->errormsg;
$anzahl_fehler++;
}
}
}
}
else
{
$return = false;
$errormsg .= "\n$prestd->vorname $prestd->nachname: Es ist keine Rolle fuer diesen Prestudent vorhanden";
$anzahl_fehler++;
}
}
}
}
if($anzahl_fehler>0)
{
$return = false;
$errormsg = "Es sind $anzahl_fehler Fehler aufgetreten: ".$errormsg;
}
else
{
$return = true;
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deleterolle')
{
//Loescht eine Prestudentrolle
$deletePrestudent = false;
if(isset($_POST['studiensemester_kurzbz']) && isset($_POST['status_kurzbz']) &&
isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']) &&
isset($_POST['ausbildungssemester']) && is_numeric($_POST['ausbildungssemester']) &&
isset($_POST['datum']))
{
$erweiterteBerechtigungen = $rechte->isBerechtigt('admin', null, 'suid') || $rechte->isBerechtigt('student/keine_studstatuspruefung', null, 'suid');
$bismeldestichtag = new bismeldestichtag();
$meldestichtag_erreicht = $bismeldestichtag->checkMeldestichtagErreicht($_POST['datum']);
if($_POST['status_kurzbz']=='Student' && !$erweiterteBerechtigungen)
{
$return = false;
$errormsg = 'Studentenrolle kann nur durch den Administrator geloescht werden';
}
elseif ($meldestichtag_erreicht && !$erweiterteBerechtigungen)
{
$return = false;
$errormsg = 'Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht gelöscht werden.';
}
else
{
$qry = "SELECT count(*) as anzahl FROM public.tbl_prestudentstatus WHERE prestudent_id=".$db->db_add_param($_POST['prestudent_id'], FHC_INTEGER);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
// Die letzte Rolle darf nur durch einen Administrator geloescht werden. Danach wird auch der PreStudent-Eintrag geloescht
if($row->anzahl<=1)
{
$deletePrestudent = true;
if (!$rechte->isBerechtigt('admin', null, 'suid') && !$rechte->isBerechtigt('student/keine_studstatuspruefung', null, 'suid'))
{
$return = false;
$errormsg = 'Die letzte Rolle kann nur durch den Administrator geloescht werden';
$error = true;
}
}
}
else
{
$return = false;
$errormsg = 'Fehler beim Ermitteln der Rollen';
$error = true;
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln der Rollen';
}
if(!$error)
{
$rolle = new prestudent();
if($rolle->load_rolle($_POST['prestudent_id'],$_POST['status_kurzbz'],$_POST['studiensemester_kurzbz'], $_POST['ausbildungssemester']))
{
if($rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') || $rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
if($rolle->delete_rolle($_POST['prestudent_id'],$_POST['status_kurzbz'],$_POST['studiensemester_kurzbz'], $_POST['ausbildungssemester']))
{
$log_id = $rolle->log_id;
$return = true;
// Wenn in diesem Semester kein Status mehr vorhanden ist,
// dann wird auch der Studentlehrverband eintrag entfernt
if($rolle->getLastStatus($_POST['prestudent_id'],$_POST['studiensemester_kurzbz'])===false)
{
if($return)
{
$student = new student();
$temp_uid = $student->getUid($rolle->prestudent_id);
if(!$student->delete_studentLehrverband($temp_uid, $_POST['studiengang_kz'], $rolle->studiensemester_kurzbz, $rolle->ausbildungssemester))
{
$return = false;
$errormsg = "Fehler beim Löschen der Lehrverbandszuordnung.";
}
}
}
// Wenn kein Prestudent-Eintrag mehr vorhanden ist, wird der ganze Prestudent-Datensatz geloescht
if ($deletePrestudent == true)
{
$prestudent = new prestudent();
if(!$prestudent->deletePrestudent($_POST['prestudent_id']))
{
$return = false;
$errormsg = "Fehler beim Löschen des Prestudenten.";
$log = new log();
$log->undo($log_id);
}
}
}
else
{
$return = false;
$errormsg = $rolle->errormsg;
}
}
else
{
$return = false;
$errormsg = 'Sie haben keine Berechtigung zum Loeschen dieser Rolle';
}
}
else
{
$return = false;
$errormsg = $rolle->errormsg;
}
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='returnDeletePrestudent')
{
//Prueft, wie viele Prestudentrolle-Eintraege noch vorhanden sind und gibt diese Anzahl als Wert zurueck
if(isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']))
{
$qry = "SELECT count(*) as anzahl FROM public.tbl_prestudentstatus WHERE prestudent_id=".$db->db_add_param($_POST['prestudent_id'], FHC_INTEGER);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$return = true;
$data = $row->anzahl;
}
else
{
$return = false;
$errormsg = 'Fehler beim Zaehlen der Rollen';
$error = true;
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Zaehlen der Rollen';
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='bestaetigerolle')
{
//Bestaetigt eine Prestudentrolle
if(isset($_POST['studiensemester_kurzbz']) && isset($_POST['status_kurzbz']) &&
isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']) &&
isset($_POST['ausbildungssemester']) && is_numeric($_POST['ausbildungssemester']))
{
if(!$rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') && !$rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
$return = false;
$errormsg = 'keine Berechtigung';
}
else
{
$rolle = new prestudent();
if($rolle->load_rolle($_POST['prestudent_id'],$_POST['status_kurzbz'],$_POST['studiensemester_kurzbz'], $_POST['ausbildungssemester']))
{
if($rolle->bestaetige_rolle($_POST['prestudent_id'],$_POST['status_kurzbz'],$_POST['studiensemester_kurzbz'], $_POST['ausbildungssemester'],$user))
{
// Message verschicken
$prestudent = new prestudent();
$prestudent->load($_POST['prestudent_id']);
$url =APP_ROOT.'index.ci.php/api/v1/system/Message/MessageVorlage';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
$header=array();
$auth = base64_encode(FHC_REST_USER.':'.FHC_REST_PASSWORD);
$header[]="Authorization: Basic $auth";
$header[]='FHC-API-KEY:'.FHC_REST_API_KEY;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$studiengang = new studiengang();
$studiengang->load($prestudent->studiengang_kz);
$studiengang->getAllTypes();
$orgform='';
if($rolle->studienplan_id!='')
{
$studienplan = new studienplan();
$studienplan->loadStudienplan($rolle->studienplan_id);
$orgform = $studienplan->orgform_kurzbz;
}
else
$orgform = $rolle->orgform_kurzbz;
$curl_post_data = array(
"sender_id" => 1, // TODO
"receiver_id" => $prestudent->person_id,
"oe_kurzbz" => $studiengang->oe_kurzbz,
"vorlage_kurzbz" => 'MailStatConfirm'.$_POST['status_kurzbz'],
"data" => array(
'anrede'=>$prestudent->anrede,
'vorname'=>$prestudent->vorname,
'nachname'=>$prestudent->nachname,
'typ'=>$studiengang->studiengang_typ_arr[$studiengang->typ],
'studiengang'=>$studiengang->bezeichnung,
'orgform'=>$orgform,
'stgMail'=>$studiengang->email
)
);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($curl_post_data));
$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$jsonresult = json_decode($result);
if(isset($jsonresult->error) && $jsonresult->error==1)
{
$return = false;
$errormsg = $jsonresult->retval;
}
else
{
$return = true;
}
}
else
{
$return = false;
$errormsg = $rolle->errormsg;
}
}
else
{
$return = false;
$errormsg = $rolle->errormsg;
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='saverolle')
{
//Prestudentrolle speichern
if(!$error)
{
if(isset($_POST['prestudent_id']))
{
$rolle = new prestudent();
if(!$rolle->load($_POST['prestudent_id']))
{
$error = true;
$errormsg = 'Prestudent wurde nicht gefunden';
}
else
{
//Berechtigung pruefen
if(!$rechte->isBerechtigt('assistenz',$rolle->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$rolle->studiengang_kz, 'suid'))
{
$error = true;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
}
$rolle = new prestudent();
$rolle->prestudent_id = $_POST['prestudent_id'];
if(!$error)
{
if(($_POST['studiensemester_old']=='') || (!$rolle->load_rolle($_POST['prestudent_id'], $_POST['status_kurzbz'], $_POST['studiensemester_old'], $_POST['ausbildungssemester_old'])))
{
$rolle->new = true;
$rolle->insertamum = date('Y-m-d H:i:s');
$rolle->insertvon = $user;
$rolle->status_kurzbz = $_POST['status_kurzbz'];
$rolle->bestaetigtam = date('Y-m-d');
$rolle->bestaetigtvon = $user;
if($_POST['status_kurzbz']=='Student')
{
//Die Rolle Student darf nur eingefuegt werden, wenn schon eine Studentenrolle vorhanden ist
$qry = "SELECT count(*) as anzahl FROM public.tbl_student WHERE prestudent_id=".$db->db_add_param($_POST['prestudent_id'], FHC_INTEGER);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
if($row->anzahl==0)
{
$error = true;
$errormsg = 'Ein Studentenstatus kann hier nur hinzugefuegt werden wenn die Person bereits Student ist. Um einen Bewerber zum Studenten zu machen waehlen Sie bitte unter "Status aendern" den Punkt "Student".';
$return = false;
}
}
}
}
}
else
{
$rolle->ausbildungssemester_old = $_POST['ausbildungssemester_old'];
$rolle->studiensemester_old = $_POST['studiensemester_old'];
$rolle->updateamum = date('Y-m-d H:i:s');
$rolle->updatevon = $user;
$rolle->new = false;
}
// Statuschecks durchführen wenn keine spezielle Berechtigung zur Umgehung
if (!$rechte->isBerechtigt($check_statusaenderung_berechtigung))
{
// allgemeine Prüfung bei Änderung oder Hinzufügen eines Status, inkludiert alle Status
$check_statusaenderung_result = checkStatusaenderung(
$_POST['prestudent_id'],
$_POST['status_kurzbz'],
$_POST['studiensemester_kurzbz'],
$_POST['datum'],
$_POST['ausbildungssemester'],
$_POST['studiensemester_old'],
$_POST['ausbildungssemester_old']
);
if (isset($check_statusaenderung_result['error']) && $check_statusaenderung_result['error'] === true)
{
$return = false;
$error = true;
$errormsg = isset($check_statusaenderung_result['errormsg']) ? $check_statusaenderung_result['errormsg'] : '';
}
// Prüfung, ob Meldestichtag erreicht ist
$bismeldestichtag = new bismeldestichtag();
$meldestichtag_erreicht = $bismeldestichtag->checkMeldestichtagErreicht($_POST['datum']);
if ($meldestichtag_erreicht === true)
{
$return = false;
$error = true;
$errormsg = 'Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht hinzugefügt werden.';
}
}
if(!$error)
{
// Bei Studenten wird der Studentlehrverband Eintrag angelegt/korrigiert
$student = new student();
if($temp_uid = $student->getUid($rolle->prestudent_id))
{
if(in_array($rolle->status_kurzbz,array('Student','Diplomand','Absovlent','Incoming','Abbrecher','Unterbrecher')))
{
if($student->load($temp_uid))
{
$stdsem_new = filter_input(INPUT_POST, "studiensemester_kurzbz");
$semester = filter_input(INPUT_POST, "ausbildungssemester");
if($student->load_studentlehrverband($temp_uid, $stdsem_new))
$student->new=false;
else
$student->new=true;
$lehrverband = new lehrverband();
if(!$lehrverband->exists($student->studiengang_kz, $semester, $student->verband, $student->gruppe))
{
$student->studiensemester_kurzbz = $stdsem_new;
$return = false;
$errormsg = $student->errormsg;
}
else
{
$student->studiensemester_kurzbz = $stdsem_new;
$student->semester = $semester;
$student->updatevon = $user;
}
$student->save_studentlehrverband();
}
}
}
$rolle->ausbildungssemester = $_POST['ausbildungssemester'];
$rolle->studiensemester_kurzbz = $_POST['studiensemester_kurzbz'];
$rolle->datum = $_POST['datum'];
$rolle->bestaetigtam = $_POST['bestaetigtam'];
if($_POST['bestaetigtam']=='')
$rolle->bestaetigtvon = null;
$rolle->bewerbung_abgeschicktamum = $_POST['bewerbung_abgeschicktamum'];
$rolle->orgform_kurzbz = $_POST['orgform_kurzbz'];
$rolle->studienplan_id = $_POST['studienplan_id'];
$rolle->anmerkung_status = $_POST['anmerkung'];
$rolle->rt_stufe = $_POST['rt_stufe'];
$rolle->statusgrund_id = $_POST['statusgrund_id'];
if($rolle->save_rolle())
$return = true;
else
{
$return = false;
$errormsg = $rolle->errormsg;
}
}
}
}
else
{
$return = false;
$errormsg = 'Prestudent_id muss angegeben werden';
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='rolleVorruecken')
{
$errormsg='';
//Prestudentrolle speichern
if(!$error)
{
if(isset($_POST['prestudent_id']))
{
$rolle = new prestudent();
if(!$rolle->load($_POST['prestudent_id']))
{
$error = true;
$errormsg = 'Prestudent wurde nicht gefunden';
}
else
{
//Berechtigung pruefen
if(!$rechte->isBerechtigt('assistenz',$rolle->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$rolle->studiengang_kz, 'suid'))
{
$error = true;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
}
$rolle = new prestudent();
$rolle->prestudent_id = $_POST['prestudent_id'];
if(!$error)
{
$studiensem = new studiensemester();
$stdsem = $studiensem->getNextFrom($_POST["studiensemester_kurzbz"]);
// $stdsem = ($stdesm==false ? $_POST["studiensemester_kurzbz"]:$stdsem);
$semester = $_POST["ausbildungssemester"];
$semester++;
if((!$rolle->load_rolle($_POST['prestudent_id'], $_POST['status_kurzbz'], $stdsem, $semester)))
{
$rolle->new = true;
$rolle->insertamum = date('Y-m-d H:i:s');
$rolle->insertvon = $user;
$rolle->status_kurzbz = $_POST['status_kurzbz'];
$rolle->bestaetigtam = date('Y-m-d');
$rolle->bestaetigtvon = $user;
if($_POST['status_kurzbz']=='Student')
{
//Die Rolle Student darf nur eingefuegt werden, wenn schon eine Studentenrolle vorhanden ist
$qry = "SELECT count(*) as anzahl FROM public.tbl_student WHERE prestudent_id=".$db->db_add_param($_POST['prestudent_id'], FHC_INTEGER);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
if($row->anzahl==0)
{
$error = true;
$errormsg = 'Ein Studentenstatus kann hier nur hinzugefuegt werden wenn die Person bereits Student ist. Um einen Bewerber zum Studenten zu machen waehlen Sie bitte unter "Status aendern" den Punkt "Student".';
$return = false;
}
}
}
}
}
else
{
//Rolle existiert bereits
$error = true;
$errormsg = "Rolle existiert bereits.";
$return = false;
}
$student = new student();
$temp_uid = $student->getUid($rolle->prestudent_id);
if(!$error)
{
$student->load_studentlehrverband($temp_uid, $_POST["studiensemester_kurzbz"]);
$lehrverband = new lehrverband();
if(!$lehrverband->exists($student->studiengang_kz, $semester, $student->verband, $student->gruppe))
{
$student->studiensemester_kurzbz = $stdsem;
$return = false;
$errormsg = $student->errormsg;
}
else
{
$student->studiensemester_kurzbz = $stdsem;
$student->semester = $semester;
}
$student->save_studentlehrverband(true);
$rolle->ausbildungssemester = $semester;
$rolle->studiensemester_kurzbz = $stdsem;
$rolle->datum = date("Y-m-d");
$rolle->orgform_kurzbz = $_POST['orgform_kurzbz'];
$rolle->studienplan_id = $_POST['studienplan_id'];
if($rolle->save_rolle())
{
$return = true;
}
else
{
$return = false;
$errormsg = $rolle->errormsg;
}
}
}
}
else
{
$return = false;
$errormsg = 'Prestudent_id muss angegeben werden';
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='BewerberZuStudent')
{
// macht aus einem Bewerber einen Studenten
// Voraussetzungen:
// - ZGV muss ausgefuellt sein (bei Master beide)
// - Kaution muss bezahlt sein
// - Rolle Bewerber muss existieren
// Wenn die Voraussetzungen erfuellt sind, dann wird die Matrikelnr
// und UID generiert und der Studentendatensatz angelegt.
$errormsg='';
if(!$error)
{
if(isset($_POST['prestudent_id']))
{
$prestudent_ids = explode(';', $_POST['prestudent_id']);
$anzahl_fehler=0;
foreach ($prestudent_ids as $prestudent_id)
{
$error = false;
if($prestudent_id!='')
{
$prestd = new prestudent();
if($prestd->load($prestudent_id))
{
//Berechtigung pruefen
if(!$rechte->isBerechtigt('assistenz',$prestd->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$prestd->studiengang_kz, 'suid'))
{
$error = true;
$errormsg .= "\n$prestd->vorname $prestd->nachname: Sie haben keine Schreibrechte fuer diesen Studiengang";
$anzahl_fehler++;
}
if(!$error)
{
if((!defined("ZGV_CHECK") && $prestd->zgv_code!='') || (defined("ZGV_CHECK") && ZGV_CHECK == false) || (defined("ZGV_CHECK") && ZGV_CHECK == true && $prestd->zgv_code!=''))
{
$stg = new studiengang();
$stg->load($prestd->studiengang_kz);
if((defined("ZGV_CHECK") && ZGV_CHECK == true && $stg->typ=='m' && $prestd->zgvmas_code=='') || (!defined("ZGV_CHECK") && $stg->typ=='m' && $prestd->zgvmas_code==''))
{
$return = false;
$errormsg .= "\n$prestd->vorname $prestd->nachname: ZGV Master muss eingegeben werden";
$anzahl_fehler++;
}
else
{
//Pruefen ob die Rolle Bewerber existiert
$hlp = new prestudent();
$hlp->getPrestudentRolle($prestudent_id, 'Bewerber',null,'datum DESC, insertamum DESC');
if(count($hlp->result)>0)
{
$aufgenommener = new prestudent();
$aufgenommener ->getPrestudentRolle($prestudent_id, 'Aufgenommener', null,'datum DESC, insertamum DESC');
if(count($aufgenommener->result)>0)
{
if($hlp->result[0]->studiensemester_kurzbz==$aufgenommener->result[0]->studiensemester_kurzbz
&& $hlp->result[0]->ausbildungssemester==$aufgenommener->result[0]->ausbildungssemester)
{
//pruefen ob schon eine Studentenrolle Existiert
$hlp1 = new prestudent();
$hlp1->getPrestudentRolle($prestudent_id, 'Student', $aufgenommener->result[0]->studiensemester_kurzbz);
if(count($hlp1->result)>0)
{
$return = false;
$errormsg .= "\n$prestd->vorname $prestd->nachname: Diese Person ist bereits Student";
$anzahl_fehler++;
}
else
{
$db->db_query('BEGIN;');
//Matrikelnummer und UID generieren
$matrikelnr = generateMatrikelnummer($prestd->studiengang_kz, $aufgenommener->result[0]->studiensemester_kurzbz);
$jahr = substr($matrikelnr,0, 2);
$stg = $prestd->studiengang_kz;
$stg_obj = new studiengang();
$stg_obj->load(ltrim($stg,'0'));
$nachname_clean = mb_strtolower(convertProblemChars($prestd->nachname));
$vorname_clean = mb_strtolower(convertProblemChars($prestd->vorname));
$nachname_clean = str_replace(' ','_', $nachname_clean);
$vorname_clean = str_replace(' ','_', $vorname_clean);
$uid = generateUID($stg_obj->kurzbz,$jahr,$stg_obj->typ,$matrikelnr,$vorname_clean,$nachname_clean);
$matrikelnummer = generateMatrikelnr($stg_obj->oe_kurzbz);
if($matrikelnummer != null)
{
$qry = "UPDATE public.tbl_person SET matr_nr=".$db->db_add_param($matrikelnummer)." WHERE person_id=".$db->db_add_param($prestd->person_id, FHC_INTEGER).' AND matr_nr is null';
$db->db_query($qry);
}
if(defined('SET_UID_AS_PERSONENKENNZEICHEN') && SET_UID_AS_PERSONENKENNZEICHEN)
{
$matrikelnr = $uid;
}
if(defined('SET_UID_AS_MATRIKELNUMMER') && SET_UID_AS_MATRIKELNUMMER)
{
$qry = "UPDATE public.tbl_person SET matr_nr=".$db->db_add_param($uid)." WHERE person_id=".$db->db_add_param($prestd->person_id, FHC_INTEGER).' AND matr_nr is null';
$db->db_query($qry);
}
//Benutzerdatensatz anlegen
$benutzer = new benutzer();
$benutzer->uid = $uid;
$benutzer->person_id = $prestd->person_id;
$benutzer->aktiv = true;
$benutzer->aktivierungscode = generateActivationKey();
if(!defined('GENERATE_ALIAS_STUDENT') || GENERATE_ALIAS_STUDENT===true)
{
$qry_alias = "SELECT * FROM public.tbl_benutzer WHERE alias=LOWER(".$db->db_add_param($vorname_clean.".".$nachname_clean).")";
$result_alias = $db->db_query($qry_alias);
if($db->db_num_rows($result_alias)==0)
$benutzer->alias = $vorname_clean.'.'.$nachname_clean;
else
$benutzer->alias = '';
}
else
$benutzer->alias='';
$benutzer->insertamum = date('Y-m-d H:i:s');
$benutzer->insertvon = $user;
if($benutzer->save(true, false))
{
//Studentendatensatz anlegen
$student = new student();
$student->uid = $uid;
$student->matrikelnr = $matrikelnr;
$student->prestudent_id = $prestd->prestudent_id;
$student->studiengang_kz = $prestd->studiengang_kz;
$student->semester = $aufgenommener->result[0]->ausbildungssemester;
$student->verband = ' ';
$student->gruppe = ' ';
$student->insertamum = date('Y-m-d H:i:s');
$student->insertvon = $user;
//Pruefen ob der Lehrverband exisitert, falls nicht dann anlegen
$lehrverband = new lehrverband();
if(!$lehrverband->load($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe))
{
$lehrverband->studiengang_kz = $student->studiengang_kz;
$lehrverband->semester = $student->semester;
$lehrverband->verband = $student->verband;
$lehrverband->gruppe = $student->gruppe;
$lehrverband->aktiv = true;
if(!$lehrverband->save(true))
{
$error = true;
$errormsg = 'Fehler beim Speichern des Lehrverbandes';
$return = false;
}
}
if(!$error)
{
if($student->save(true, false))
{
//Prestudentrolle hinzugfuegen
$rolle = new prestudent();
$rolle->prestudent_id = $prestd->prestudent_id;
$rolle->status_kurzbz = 'Student';
$rolle->studiensemester_kurzbz = $aufgenommener->result[0]->studiensemester_kurzbz;
$rolle->ausbildungssemester = $aufgenommener->result[0]->ausbildungssemester;
$rolle->orgform_kurzbz = $aufgenommener->result[0]->orgform_kurzbz;
$rolle->studienplan_id = $aufgenommener->result[0]->studienplan_id;
$rolle->datum = date('Y-m-d');
$rolle->insertamum = date('Y-m-d H:i:s');
$rolle->insertvon = $user;
$rolle->bestaetigtam = date('Y-m-d');
$rolle->bestaetigtvon = $user;
if(isset($_POST['statusgrund_id']))
$rolle->statusgrund_id = $_POST['statusgrund_id'];
$rolle->new = true;
if($rolle->save_rolle())
{
//StudentLehrverband anlegen
$studentlehrverband = new student();
$studentlehrverband->uid = $uid;
$studentlehrverband->studiensemester_kurzbz = $aufgenommener->result[0]->studiensemester_kurzbz;
$studentlehrverband->studiengang_kz = $prestd->studiengang_kz;
$studentlehrverband->semester = $aufgenommener->result[0]->ausbildungssemester;
$studentlehrverband->verband = ' ';
$studentlehrverband->gruppe = ' ';
$studentlehrverband->insertamum = date('Y-m-d H:i:s');
$studentlehrverband->insertvon = $user;
if($studentlehrverband->save_studentlehrverband(true))
{
$return = true;
$db->db_query('COMMIT;');
}
else
{
$errormsg .= "\n$prestd->vorname $prestd->nachname: Fehler beim Speichern des Studentlehrverbandes: ".$studentlehrverband->errormsg;
$return = false;
$anzahl_fehler++;
$db->db_query('ROLLBACK;');
}
}
else
{
$errormsg .= "\n$prestd->vorname $prestd->nachname: Fehler beim Speichern des Rolle: ".$rolle->errormsg;
$return = false;
$anzahl_fehler++;
$db->db_query('ROLLBACK;');
}
}
else
{
$errormsg .= "\n$prestd->vorname $prestd->nachname: Fehler beim Speichern des Studenten: ".$student->errormsg;
$return = false;
$anzahl_fehler++;
$db->db_query('ROLLBACK;');
}
}
}
else
{
$errormsg .= "\n$prestd->vorname $prestd->nachname $matrikelnr: Fehler beim Speichern des Benutzers: ".$benutzer->errormsg;
$return = false;
$anzahl_fehler++;
$db->db_query('ROLLBACK;');
}
}
}
else
{
$return = false;
$errormsg .= "\n$prestd->vorname $prestd->nachname: Das Studiensemester oder Ausbildungsemester des Berwerberstatus und des Aufgenommenenstatus passen nicht überein";
$anzahl_fehler++;
}
}
else
{
$return = false;
$errormsg .= "\n$prestd->vorname $prestd->nachname: Die Person muss zuerst Aufgenommener sein bevor Sie zum Studenten gemacht werden kann";
$anzahl_fehler++;
}
}
else
{
$return = false;
$errormsg .= "\n$prestd->vorname $prestd->nachname: Die Person muss zuerst Bewerber sein bevor Sie zum Studenten gemacht werden kann";
$anzahl_fehler++;
}
}
}
else
{
$return = false;
$errormsg .= "\n$prestd->vorname $prestd->nachname: ZGV muss eingegeben werden";
$anzahl_fehler++;
}
}
}
else
{
$return = false;
$errormsg .= "\nPrestudent wurde nicht gefunden zu $prestudent_id";
}
}
}
}
else
{
$return = false;
$errormsg = 'Prestudent_id muss angegeben werden';
}
if($anzahl_fehler>0)
{
$return = false;
$errormsg = "Es sind $anzahl_fehler Fehler aufgetreten: ".$errormsg;
}
else
{
$return = true;
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='gruppenzuteilung')
{
if(isset($_POST['uid']) && isset($_POST['gruppe_kurzbz']))
{
$gruppe = new gruppe();
if(!$gruppe->load($_POST['gruppe_kurzbz']))
{
$error = true;
$errormsg='Gruppe wurde nicht gefunden';
}
else
{
//Berechtigung pruefen
if(!$rechte->isBerechtigt('assistenz',$gruppe->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$gruppe->studiengang_kz, 'suid'))
{
$error = true;
$errormsg = 'Sie haben keine Schreibrechte fuer diese Gruppe';
}
}
$benutzergruppe = new benutzergruppe();
$uids = explode(';',$_POST['uid']);
$errormsg = '';
foreach ($uids as $uid)
{
if($uid!='')
{
if($_POST['gruppe_kurzbz']!='')
{
//Zuteilung zu einer Spezialgruppe
if(!$benutzergruppe->load($uid, $_POST['gruppe_kurzbz']))
{
$benutzergruppe->uid = $uid;
$benutzergruppe->gruppe_kurzbz = $_POST['gruppe_kurzbz'];
$benutzergruppe->studiensemester_kurzbz = $semester_aktuell;
$benutzergruppe->insertamum = date('Y-m-d H:i:s');
$benutzergruppe->insertvon = $user;
$benutzergruppe->new = true;
if(!$benutzergruppe->save())
{
$errormsg .= "$uid konnte nicht hinzugefuegt werden\n";
}
}
else
$errormsg .= "Der Student $uid ist bereits im $benutzergruppe->studiensemester_kurzbz dieser Gruppe zugeteilt. Entfernen Sie vorher diese Zuteilung.\n";
}
else
{
//Zuteilung zu einer Lehrverbandsgruppe
$error = false;
$stsem = new studiensemester();
$stsem_kurzbz = $stsem->getaktorNext();
//Schauen ob die Lehrverbandsgruppe existiert
$lehrverband = new lehrverband();
if(!$lehrverband->exists($_POST['stg_kz'],$_POST['semester'],$_POST['verband'], $_POST['gruppe']))
{
$errormsg .= 'Die angegebene Lehrverbandsgruppe existiert nicht!';
$return = false;
$error = true;
}
//Wenn das ausgewaehlte Semester das aktuelle ist, dann wird auch in der
//Tabelle Student der Stg/Semester/Verband/Gruppe geaendert.
//Sonst nur in der Tabelle Studentlehrverband
if($semester_aktuell == $stsem_kurzbz)
{
//Eintrag in der Tabelle Student aendern
$student = new student();
if(!$student->load($uid))
{
$errormsg .= 'Fehler beim Laden des Studenten';
$error = true;
$return = false;
}
if($student->studiengang_kz!=$_POST['stg_kz'])
{
$errormsg.='Ein Student kann nicht in eine Lehrverbandsgruppe eines anderen Studienganges verschoben werden';
$return = false;
$error = true;
}
if(!$error)
{
$student->studiengang_kz = $_POST['stg_kz'];
$student->semester = $_POST['semester'];
$student->verband = ($_POST['verband']==''?' ':$_POST['verband']);
$student->gruppe = ($_POST['gruppe']==''?' ':$_POST['gruppe']);
$student->new=false;
if(!$student->save())
{
$errormsg .= 'Fehler beim Speichern des Studenteneintrages';
$return = false;
$error = true;
}
}
}
if(!$error)
{
//Eintrag in der Tabelle Student aendern
$student = new student();
if(!$student->load($uid))
{
$errormsg .= 'Fehler beim Laden des Studenten';
$error = true;
$return = false;
}
if($student->studiengang_kz!=$_POST['stg_kz'])
{
$errormsg.='Ein Student kann nicht in eine Lehrverbandsgruppe eines anderen Studienganges verschoben werden';
$return = false;
$error = true;
}
if(!$error)
{
//Eintrag in der Tabelle Studentlehrverband aendern
$student_lvb = new student();
if($student_lvb->studentlehrverband_exists($uid, $semester_aktuell))
$student_lvb->new = false;
else
$student_lvb->new = true;
$student_lvb->uid = $uid;
$student_lvb->studiensemester_kurzbz = $semester_aktuell;
$student_lvb->studiengang_kz = $_POST['stg_kz'];
$student_lvb->semester = $_POST['semester'];
$student_lvb->verband = ($_POST['verband']==''?' ':$_POST['verband']);
$student_lvb->gruppe = ($_POST['gruppe']==''?' ':$_POST['gruppe']);
$student_lvb->updateamum = date('Y-m-d H:i:s');
$student_lvb->updatevon = $user;
if($student_lvb->save_studentlehrverband())
{
$return = true;
$error=false;
}
else
{
$error = true;
$errormsg .= $student_lvb->errormsg;
$return = false;
}
}
}
}
}
}
if($errormsg=='')
$return = true;
else
$return = false;
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deleteGruppenzuteilung')
{
if(isset($_POST['uid']) && isset($_POST['gruppe_kurzbz']))
{
$gruppe = new gruppe();
if($gruppe->load($_POST['gruppe_kurzbz']))
{
$uids = explode(';',$_POST['uid']);
$errormsg = '';
foreach ($uids as $uid)
{
if($uid!='')
{
$qry = "SELECT studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($uid);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
//Berechtigung pruefen
if(!$rechte->isBerechtigt('assistenz',$gruppe->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$gruppe->studiengang_kz, 'suid') &&
!$rechte->isBerechtigt('admin',$row->studiengang_kz, 'suid') &&
!$rechte->isBerechtigt('assistenz',$row->studiengang_kz, 'suid'))
{
$error = true;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
if(!$error)
{
$benutzergruppe = new benutzergruppe();
if(!$benutzergruppe->delete($uid, $_POST['gruppe_kurzbz']))
{
$errormsg .= "$uid konnte nicht aus der Gruppe geloescht werden\n";
}
}
}
else
$errormsg .= "Studiengang von $uid konnte nicht ermittelt werden\n";
}
else
$errormsg .= "Studiengang von $uid konnte nicht ermittelt werden\n";
}
}
if($errormsg=='')
$return = true;
else
$return = false;
}
else
{
$return = false;
$errormsg = "Gruppe wurde nicht gefunden";
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deleteAkte')
{
if(isset($_POST['akte_id']) && is_numeric($_POST['akte_id']))
{
//Berechtigung pruefen
if(!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
if(!$error)
{
$akte = new akte($_POST['akte_id']);
//Akzeptierte Ausbildungsverträge dürfen nur von Admins gelöscht werden
if ($akte->dokument_kurzbz == 'Ausbvert' &&
$akte->akzeptiertamum != '' &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Akzeptierte Ausbildungsverträge dürfen nur von Administratoren gelöscht werden';
}
if(!$error)
{
if ($akte->delete($_POST['akte_id']))
{
$return = true;
}
else
{
$return = false;
$errormsg = $akte->errormsg;
}
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe'.$_POST['akte_id'];
}
}
elseif(isset($_POST['type']) && $_POST['type']=='savebuchung') // ***** KONTO *****
{
//Speichert eine Buchung
if(isset($_POST['buchungsnr']) && is_numeric($_POST['buchungsnr']))
{
$buchung = new konto();
if($buchung->load($_POST['buchungsnr']))
{
if(!$rechte->isBerechtigt('assistenz',$buchung->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$buchung->studiengang_kz, 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
else
{
if(isBuchungAllowedToChange($buchung)
|| $rechte->isBerechtigt('student/zahlungAdmin',$buchung->studiengang_kz,'suid'))
{
$buchung->betrag = $_POST['betrag'];
$buchung->buchungsdatum = $_POST['buchungsdatum'];
$buchung->buchungstext = $_POST['buchungstext'];
$buchung->mahnspanne = $_POST['mahnspanne'];
$buchung->buchungstyp_kurzbz = $_POST['buchungstyp_kurzbz'];
$buchung->studiensemester_kurzbz = $_POST['studiensemester_kurzbz'];
$buchung->studiengang_kz = $_POST['studiengang_kz'];
$buchung->credit_points = $_POST['credit_points'];
$buchung->new = false;
$buchung->updateamum = date('Y-m-d H:i:s');
$buchung->updatevon = $user;
$buchung->anmerkung = $_POST['anmerkung'];
if($buchung->save())
{
$return = true;
}
else
{
$return = false;
$errormsg = 'Fehler beim Speichern:'.$buchung->errormsg;
}
}
else
{
$return = false;
$errormsg = 'Buchung wurde bereits übertragen und darf nicht geändert werden';
}
}
}
else
{
$errormsg = 'Buchung wurde nicht gefunden:'.$_POST['buchungsnr'];
$return = false;
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe'.$_POST['buchungsnr'];
}
}
elseif(isset($_POST['type']) && $_POST['type']=='savegegenbuchung')
{
//Speichert eine Buchung
if(isset($_POST['buchungsnr']))
{
$bnr_arr = explode(';',$_POST['buchungsnr']);
$gegenbuchungsdatum = filter_input(INPUT_POST, "gegenbuchungsdatum");
if(strlen($gegenbuchungsdatum) != 0)
{
$gegenbuchungsdatum = date("Y-m-d", strtotime($gegenbuchungsdatum));
}
else
{
$gegenbuchungsdatum = date('Y-m-d');
}
$errormsg='';
foreach ($bnr_arr as $buchungsnr)
{
if(is_numeric($buchungsnr))
{
$buchung = new konto();
if($buchung->load($buchungsnr))
{
//Berechtigung pruefen
if(!$rechte->isBerechtigt('assistenz',$buchung->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$buchung->studiengang_kz, 'suid'))
{
$error = true;
$return = false;
$errormsg = "\nSie haben keine Schreibrechte fuer diese Buchung";
}
else
{
if($buchung->buchungsnr_verweis=='')
{
if(isBuchungAllowedToChange($buchung)
|| $rechte->isBerechtigt('student/zahlungAdmin',$buchung->studiengang_kz,'suid'))
{
$kto = new konto();
//$buchung->betrag*(-1);
$buchung->betrag = $kto->getDifferenz($buchungsnr);
$buchung->buchungsdatum = $gegenbuchungsdatum;
$buchung->mahnspanne = '0';
$buchung->buchungsnr_verweis = $buchung->buchungsnr;
$buchung->new = true;
$buchung->insertamum = date('Y-m-d H:i:s');
$buchung->insertvon = $user;
$buchung->anmerkung = '';
if($buchung->save())
{
//$data = $buchung->buchungsnr;
$return = true;
}
else
{
$return = false;
$errormsg .= "\n".'Fehler beim Speichern:'.$buchung->errormsg;
}
}
else
{
$return = false;
$errormsg .= "\n".'Buchung wurde bereits Übertragen und darf nicht geändert werden';
}
}
else
{
$return = false;
$errormsg .= "\n".'Gegenbuchungen koennen nur auf die obersten Buchungen getaetigt werden';
}
}
}
else
{
$errormsg .= "\n".'Buchung wurde nicht gefunden';
$return = false;
}
}
if($errormsg!='')
{
$return = false;
}
else
{
$return = true;
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deletebuchung')
{
//Loescht eine Buchung
if(isset($_POST['buchungsnr']) && is_numeric($_POST['buchungsnr']))
{
$buchung = new konto();
if($buchung->load($_POST['buchungsnr']))
{
if(!$rechte->isBerechtigt('assistenz',$buchung->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$buchung->studiengang_kz, 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
else
{
$isAllowedToChange = isBuchungAllowedToChange($buchung);
if($isAllowedToChange
|| $rechte->isBerechtigt('student/zahlungAdmin',$buchung->studiengang_kz,'suid')
)
{
if(!$isAllowedToChange)
{
// Buchung aus SAP Zwischentabelle loeschen
deleteFromSAP($buchung);
}
if($buchung->delete($_POST['buchungsnr']))
{
$return = true;
}
else
{
$errormsg = $buchung->errormsg;
$return = false;
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Diese Buchung darf nicht gelöscht werden da diese bereits übertragen wurde';
}
}
}
else
{
$errormsg = 'Buchung wurde nicht gefunden';
$return = false;
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='checkbuchung')
{
$person_ids = explode(';',$_POST['person_ids']);
$exists = false;
if (defined('FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK'))
{
$buchungen = unserialize(FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK);
$buchung = $_POST['buchungstyp_kurzbz'];
if (isset($buchungen[$buchung]))
{
$konto = new konto();
$exists = $konto->checkDoppelteBuchung($person_ids, $_POST['studiensemester_kurzbz'], $buchungen[$buchung]);
}
}
if($exists)
{
$return = true;
$zusatz = "\n";
if (count($exists) > 10)
{
$zusatz .= "und ";
$persons = implode("\n- ", array_slice($exists, 0, 10));
if (count($exists) === 11)
$zusatz .= "einer weiteren Person.";
else
$zusatz .= (count($exists) - 10) . " weiteren Personen.";
}
else
$persons = implode("\n- ", $exists);
$data = "Es ist bereits eine Buchung vorhanden:\n- ". $persons . $zusatz ." Trotzdem fortfahren?";
}
else
$return = false;
}
elseif(isset($_POST['type']) && $_POST['type']=='neuebuchung')
{
//Speichert eine neue Buchung
//Gleichzeitiges speichern mehrerer Personen ist moeglich
//Personen werden durch ';' getrennt
$person_ids = explode(';',$_POST['person_ids']);
$errormsg = '';
if(!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
else
{
if(defined('FAS_BUCHUNGSTYP_FIXE_KOSTENSTELLE') && isset(unserialize(FAS_BUCHUNGSTYP_FIXE_KOSTENSTELLE)[$_POST['buchungstyp_kurzbz']]))
$kostenstelle = unserialize(FAS_BUCHUNGSTYP_FIXE_KOSTENSTELLE)[$_POST['buchungstyp_kurzbz']];
foreach ($person_ids as $person_id)
{
if($person_id!='')
{
$buchung = new konto();
$buchung->person_id = $person_id;
$buchung->studiengang_kz = isset($kostenstelle) ? $kostenstelle : $_POST['studiengang_kz'];
$buchung->studiensemester_kurzbz = $_POST['studiensemester_kurzbz'];
$buchung->buchungsnr_verweis='';
$buchung->betrag = $_POST['betrag'];
$buchung->buchungsdatum = $_POST['buchungsdatum'];
$buchung->buchungstext = $_POST['buchungstext'];
$buchung->mahnspanne = $_POST['mahnspanne'];
$buchung->buchungstyp_kurzbz = $_POST['buchungstyp_kurzbz'];
$buchung->credit_points = $_POST["credit_points"];
$buchung->insertamum = date('Y-m-d H:i:s');
$buchung->insertvon = $user;
$buchung->anmerkung = $_POST['anmerkung'];
$buchung->new = true;
if($buchung->save())
{
$data = $buchung->buchungsnr;
}
else
{
$errormsg .= "Fehler beim Speichern: $buchung->errormsg\n";
}
}
}
}
if($errormsg=='')
$return = true;
else
$return = false;
}
elseif(isset($_POST['type']) && $_POST['type']=='dokumentprestudentadd')
{
//Speichert die Zuordnung von Dokumenten zu einem Prestudent
//Gleichzeitiges zuteilen mehrerer Dokumente auf einmal ist moeglich
//Dokumente werden durch ';' getrennt uebergeben
if(!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
else
{
$dokumente = explode(';',$_POST['dokumente']);
$errormsg = '';
$sonst = 0;
foreach ($dokumente as $dokument_kurzbz)
{
if ($dokument_kurzbz === 'Sonst' && $sonst !== 0)
continue;
if($dokument_kurzbz!='')
{
$dok = new dokument();
$dok->dokument_kurzbz = $dokument_kurzbz;
$dok->prestudent_id = $_POST['prestudent_id'];
$dok->mitarbeiter_uid = $user;
$dok->datum = date('Y-m-d');
$dok->insertamum = date('Y-m-d H:i:s');
$dok->insertvon = $user;
$dok->new = true;
if ($dokument_kurzbz === 'Sonst')
$sonst++;
if(!$dok->save())
{
$errormsg .= "Fehler bei $dokument_kurzbz: $dok->errormsg\n";
}
}
}
if($errormsg=='')
$return = true;
else
$return = false;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='dokumentprestudentDetailSave')
{
//Speichert die Zuordnung von Dokumenten zu einem Prestudent
//Gleichzeitiges zuteilen mehrerer Dokumente auf einmal ist moeglich
//Dokumente werden durch ';' getrennt uebergeben
if(!$rechte->isBerechtigt('assistenz',null,'suid') &&
!$rechte->isBerechtigt('admin',null, 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
else
{
$akte_id = $_POST['akte_id'];
$errormsg = '';
$akte = new akte();
if($akte->load($akte_id))
{
$akte->new=false;
$akte->anmerkung_intern = $_POST['anmerkung_intern'];
$akte->titel_intern = $_POST['titel_intern'];
$akte->dokument_kurzbz = $_POST['dokument_kurzbz'];
$akte->nachgereicht_am = $_POST['nachgereicht_am'];
$akte->updateamum = date('Y-m-d H:i:s');
$akte->updatevon = $user;
if(!$akte->save())
{
$errormsg='Speichern fehlgeschlagen:'.$akte->errormsg;
}
}
if($errormsg=='')
$return = true;
else
$return = false;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='dokumentprestudentDeleteDokument')
{
$prestudent_id = $_POST['prestudent_id'];
$prestudent = new prestudent();
if($prestudent->load($prestudent_id))
{
$studiengang = new studiengang();
$studiengang->load($prestudent->studiengang_kz);
if(!$rechte->isBerechtigt('assistenz',$studiengang->oe_kurzbz,'suid') &&
!$rechte->isBerechtigt('admin',$studiengang->oe_kurzbz, 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
else
{
$akte_id = $_POST['akte_id'];
$errormsg = '';
$akte = new akte();
if($akte->load($akte_id))
{
if($akte->person_id==$prestudent->person_id)
{
if($akte->dms_id!='')
{
$dms = new dms();
if($dms->load($akte->dms_id))
{
if($akte->delete($akte_id))
{
// Eintrag im DMS loeschen
if(!$dms->deleteDms($akte->dms_id))
{
$error=true;
$errormsg='Fehler beim Loeschen des Dokuments';
}
else
{
// Log schreiben
$logdata_dms = (array)$dms;
$logdata = var_export($logdata_dms, true);
$log = new log();
$log->executetime = date('Y-m-d H:i:s');
$log->mitarbeiter_uid = $user;
$log->beschreibung = "Löschen der DMS_ID ".$akte->dms_id;
$log->sql = 'LogData:'.$logdata;
$log->sqlundo = '';
$log->save(true);
}
// Log schreiben
$logdata_akte = (array)$akte;
$logdata = var_export($logdata_akte, true);
$log = new log();
$log->executetime = date('Y-m-d H:i:s');
$log->mitarbeiter_uid = $user;
$log->beschreibung = "Löschen der Akte '".$akte->dokument_kurzbz."' ID '".$akte_id."'";
$log->sql = 'DELETE FROM public.tbl_akte WHERE akte_id='.$db->db_add_param($akte_id, FHC_INTEGER).'; LogData:'.$logdata;
$log->sqlundo = '';
$log->save(true);
}
else
{
$error=true;
$errormsg='Fehler beim Loeschen der Akte';
}
}
else
{
$error=true;
$errormsg='Fehler beim Laden des Dokuments';
}
}
// Wenn kein Dokument im DMS vorhanden ist, aber die akte auf "wird nachgereicht" gesetzt ist
// darf das Dokument auch gelöscht werden
elseif($akte->nachgereicht === true && $akte->inhalt == '')
{
if($akte->delete($akte_id))
{
// Log schreiben
$logdata_akte = (array)$akte;
$logdata = var_export($logdata_akte, true);
$log = new log();
$log->executetime = date('Y-m-d H:i:s');
$log->mitarbeiter_uid = $user;
$log->beschreibung = "Löschen der Nachreichung der Akte '".$akte->dokument_kurzbz."' ID '".$akte_id."'";
$log->sql = 'DELETE FROM public.tbl_akte WHERE akte_id='.$db->db_add_param($akte_id, FHC_INTEGER).'; LogData:'.$logdata;
$log->sqlundo = '';
$log->save(true);
}
else
{
$error=true;
$errormsg='Fehler beim Loeschen der Akte';
}
}
else
{
$error=true;
$errormsg='Dieses Dokument darf hier nicht geloescht werden';
}
}
else
{
$error=true;
$errormsg='Akte und Prestudent passen nicht zusammen';
}
}
if($errormsg=='')
$return = true;
else
$return = false;
}
}
else
{
$errormsg='Prestudent konnte nicht geladen werden';
$error=true;
$return=false;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='dokumentprestudentdel')
{
//Loescht die Zuordnung von Dokumenten zu einem Prestudent
//Gleichzeitiges loeschen mehrerer Dokumente auf einmal ist moeglich
//Dokumente werden durch ';' getrennt uebergeben
if(!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
}
else
{
$dokumente = explode(';',$_POST['dokumente']);
$errormsg = '';
$sonst = 0;
foreach ($dokumente as $dokument_kurzbz)
{
if ($dokument_kurzbz === 'Sonst' && $sonst !== 0)
continue;
if($dokument_kurzbz!='')
{
$dok = new dokument();
if($dok->load($dokument_kurzbz, $_POST['prestudent_id']))
{
if($dok->mitarbeiter_uid==$user || $rechte->isBerechtigt('student/dokumente',$_POST['studiengang_kz'], 'suid'))
{
if(!$dok->delete($dokument_kurzbz, $_POST['prestudent_id']))
{
$errormsg .= "Fehler bei $dokument_kurzbz: $dok->errormsg\n";
}
else
{
if ($dokument_kurzbz === 'Sonst')
$sonst++;
}
}
else
{
$errormsg.="Fehler bei $dokument_kurzbz: Loeschen nur durch $dok->mitarbeiter_uid moeglich\n";
}
}
else
{
$errormsg.="Dokumentenzuteilung existiert nicht: $dokument_kurzbz\n";
}
}
}
if($errormsg=='')
$return = true;
else
$return = false;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deletebetriebsmittel')
{
//Loescht ein Betriebsmittel
//Wenn studiengang_kz uebergeben wird, dann handelt es sich um die Betriebsmittel eines Studenten
//Wenn studiengang_kz='' dann werden Mitarbeiterrechte benoetigt
//ToDo: hier sollte nicht der Studiengang uebergeben werden sonder aus der DB ermittelt werden ob es
//ein Student oder Mitarbeiter ist
if(($_POST['studiengang_kz']!='' &&
!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid') &&
!$rechte->isBerechtigt('basis/betriebsmittel',$_POST['studiengang_kz'], 'suid')
) ||
($_POST['studiengang_kz']=='' &&
!$rechte->isBerechtigt('admin', null, 'suid') &&
!$rechte->isBerechtigt('mitarbeiter', null, 'suid') &&
!$rechte->isBerechtigt('basis/betriebsmittel', null, 'suid')
))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
if(isset($_POST['betriebsmittelperson_id']) && is_numeric($_POST['betriebsmittelperson_id']))
{
$btm = new betriebsmittelperson();
if($btm->delete($_POST['betriebsmittelperson_id']))
{
$return = true;
}
else
{
$errormsg = $btm->errormsg;
$return = false;
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='savebetriebsmittel')
{
//Speichert eine Betriebsmittelzuordnung
//Wenn studiengang_kz uebergeben wird, dann handelt es sich um die Betriebsmittel eines Studenten
//Wenn studiengang_kz='' dann werden Mitarbeiterrechte benoetigt
//ToDo: hier sollte nicht der Studiengang uebergeben werden sonder aus der DB ermittelt werden ob es
//ein Student oder Mitarbeiter ist
if(($_POST['studiengang_kz']!='' &&
!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid') &&
!$rechte->isBerechtigt('basis/betriebsmittel',$_POST['studiengang_kz'], 'suid')
) ||
($_POST['studiengang_kz']=='' &&
!$rechte->isBerechtigt('admin', null, 'suid') &&
!$rechte->isBerechtigt('mitarbeiter', null, 'suid') &&
!$rechte->isBerechtigt('basis/betriebsmittel', null, 'suid')
))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$betriebsmittel_id = $_POST['betriebsmittel_id'];
$bm = new betriebsmittel();
// Wenn es kein vorhandenes Inventar ist, dann neu anlegen
if($_POST['betriebsmitteltyp']!='Inventar')
{
if($_POST['betriebsmitteltyp']=='Zutrittskarte')
$_POST['nummer']=$bm->transform_kartennummer($_POST['nummer']);
//Das speichern von Zutrittskarten ohne Nummern verhindern
if($_POST['betriebsmitteltyp']=='Zutrittskarte' && ($_POST['nummer']=='' && $_POST['nummer2']==''))
{
$error = true;
$return = false;
$errormsg = 'Eine Zutrittskarte muss eine Nummer haben. Um die Zuordnung zu dieser Karte zu loeschen entfernen Sie bitte den ganzen Datensatz';
}
else
{
if ($_POST['betriebsmitteltyp']=='Zutrittskarte' && $_POST['nummer'] == '')
{
$resultBM = $bm->getBetriebsmittel($_POST['betriebsmitteltyp'],null, $_POST['nummer2']);
}
else
{
$resultBM = $bm->getBetriebsmittel($_POST['betriebsmitteltyp'],$_POST['nummer']);
}
//Nachschauen ob dieses Betriebsmittel schon existiert
if($resultBM)
{
if(count($bm->result)>0)
{
//Wenn die Nummer gleich bleibt dann die alte ID verwenden da es
//unterschiedliche Schluessel gibt die die gleiche nummer haben ?!?
if($_POST['nummer'] != '' && $_POST['nummer'] == $_POST['nummerold'])
{
$betriebsmittel_id = $_POST['betriebsmittel_id'];
}
else
$betriebsmittel_id = $bm->result[0]->betriebsmittel_id;
//Wenn ein Eintrag gefunden wurde, dann wird die Beschreibung aktualisiert
if($bm->load($betriebsmittel_id))
{
$bm->beschreibung = $_POST['beschreibung'];
$bm->nummer = $_POST['nummer'];
$bm->nummer2 = $_POST['nummer2'];
if(!$bm->save(false))
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Speichern des Betriebsmittels';
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Gefundener Eintrag konnte nicht geladen werden!?!?';
}
}
else
{
//Wenn kein Eintrag gefunden wurde, dann wird ein neuer Eintrag angelegt
$bm->betriebsmitteltyp = $_POST['betriebsmitteltyp'];
$bm->nummer = $_POST['nummer'];
$bm->nummer2 = $_POST['nummer2'];
$bm->beschreibung = $_POST['beschreibung'];
$bm->reservieren = false;
$bm->ort_kurzbz = null;
$bm->insertamum = date('Y-m-d H:i:s');
$bm->insertvon = $user;
if($bm->save(true))
{
$betriebsmittel_id = $bm->betriebsmittel_id;
}
else
{
$error = true;
$return = false;
$errormsg = 'Fehler beim Anlegen des Betriebsmittels';
}
}
if($_POST['betriebsmitteltyp']=='Zutrittskarte')
{
//Bei Zutrittskarten schauen ob diese schon vergeben sind
$qry = "SELECT vorname, nachname, uid
FROM public.vw_betriebsmittelperson
WHERE betriebsmitteltyp='Zutrittskarte' AND
nummer='".$db->db_escape($_POST['nummer'])."'::varchar AND
person_id<>".$db->db_add_param($_POST['person_id'], FHC_INTEGER)." AND
retouram is null";
if($result_bmp = $db->db_query($qry))
{
if($db->db_num_rows($result_bmp)>0)
{
$row_bmp = $db->db_fetch_object($result_bmp);
$error = true;
$return = false;
$errormsg = "Diese Zutrittskarte ist bereits ausgegeben an: $row_bmp->vorname $row_bmp->nachname ($row_bmp->uid)";
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Fehler beim Laden der Zutrittskarte';
}
}
}
}
}
if(!$error)
{
//Zuordnung Betriebsmittel-Person anlegen
$bmp = new betriebsmittelperson();
if($_POST['neu']!='true')
{
if($bmp->load($_POST['betriebsmittelperson_id']))
{
$bmp->updateamum = date('Y-m-d H:i:s');
$bmp->updatevon = $user;
$bmp->betriebsmittelperson_id = $_POST['betriebsmittelperson_id'];
$bmp->new = false;
}
else
{
$error = true;
$errormsg = "Zuordnung unbekannt:".$_POST['betriebsmittelperson_id'];
$return = false;
}
}
else
{
$bmp->insertamum = date('Y-m-d H:i:s');
$bmp->insertvon = $user;
$bmp->new = true;
}
if(!$error)
{
$bmp->person_id = $_POST['person_id'];
$bmp->betriebsmittel_id=$betriebsmittel_id;
$bmp->anmerkung = $_POST['anmerkung'];
$bmp->kaution = trim(str_replace(',','.',$_POST['kaution']));
$bmp->ausgegebenam = $_POST['ausgegebenam'];
$bmp->retouram = $_POST['retouram'];
if($bmp->new)
$bmp->uid = $_POST['uid'];
if($bmp->save())
{
$return = true;
$data = $bmp->betriebsmittelperson_id;
}
else
{
$return = false;
$errormsg = $bmp->errormsg;
}
}
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deletebisio')
{
if(!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
//Loescht einen BisIO Eintrag
if(isset($_POST['bisio_id']) && is_numeric($_POST['bisio_id']))
{
$bisio = new bisio();
if($bisio->delete($_POST['bisio_id']))
{
$return = true;
}
else
{
$errormsg = $bisio->errormsg;
$return = false;
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='savebisio')
{
//Speichert einen BisIO Eintrag
if(!$rechte->isBerechtigt('assistenz',$_POST['studiengang_kz'],'suid') &&
!$rechte->isBerechtigt('admin',$_POST['studiengang_kz'], 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$bisio = new bisio();
if($_POST['neu']=='true')
{
$bisio->insertamum = date('Y-m-d H:i:s');
$bisio->insertvon = $user;
$bisio->new = true;
}
else
{
if($bisio->load($_POST['bisio_id']))
$bisio->new = false;
else
{
$error = true;
$errormsg = $bisio->errormsg;
$return = false;
}
}
$bisio->bisio_id = (isset($_POST['bisio_id'])?$_POST['bisio_id']:'');
$bisio->mobilitaetsprogramm_code = $_POST['mobilitaetsprogramm_code'];
$bisio->nation_code = $_POST['nation_code'];
$bisio->herkunftsland_code = $_POST['herkunftsland_code'];
$bisio->von = $_POST['von'];
$bisio->bis = $_POST['bis'];
$bisio->student_uid = $_POST['student_uid'];
$bisio->lehreinheit_id = $_POST['lehreinheit_id'];
$bisio->ort = $_POST['ort'];
$bisio->universitaet = $_POST['universitaet'];
$bisio->ects_erworben = $_POST['ects_erworben'];
$bisio->ects_angerechnet = $_POST['ects_angerechnet'];
$bisio->updateamum = date('Y-m-d H:i:s');
$bisio->updatevon = $user;
if(!$error)
{
if($bisio->save())
{
$return = true;
$data = $bisio->bisio_id;
}
else
{
$errormsg = $bisio->errormsg;
$return = false;
}
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='savebisiozweck')
{
$bisio = new bisio();
if($bisio->load($_POST['bisio_id']))
{
$student = new student();
if($student->load($bisio->student_uid))
{
//Speichert einen BisIO Eintrag
if(!$rechte->isBerechtigt('assistenz',$student->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$student->studiengang_kz, 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$bisio = new bisio();
$bisio->bisio_id = (isset($_POST['bisio_id'])?$_POST['bisio_id']:'');
$bisio->zweck_code = $_POST['zweck_code'];
if(!$error)
{
if($bisio->saveZweck())
{
$return = true;
$data = $bisio->bisio_id;
}
else
{
$errormsg = $bisio->errormsg;
$return = false;
}
}
}
}
else
{
$errormsg = $student->errormsg;
$return = false;
}
}
else
{
$errormsg = $bisio->errormsg;
$return = false;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deletebisiozweck')
{
$bisio = new bisio();
if($bisio->load($_POST['bisio_id']))
{
$student = new student();
if($student->load($bisio->student_uid))
{
//Speichert einen BisIO Eintrag
if(!$rechte->isBerechtigt('assistenz',$student->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$student->studiengang_kz, 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$bisio = new bisio();
$bisio->bisio_id = (isset($_POST['bisio_id'])?$_POST['bisio_id']:'');
$bisio->zweck_code = $_POST['zweck_code'];
if(!$error)
{
if($bisio->deleteZweck())
{
$return = true;
}
else
{
$errormsg = $bisio->errormsg;
$return = false;
}
}
}
}
else
{
$errormsg = $student->errormsg;
$return = false;
}
}
else
{
$errormsg = $bisio->errormsg;
$return = false;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='savebisioaufenthaltfoerderung')
{
$bisio = new bisio();
if($bisio->load($_POST['bisio_id']))
{
$student = new student();
if($student->load($bisio->student_uid))
{
//Speichert einen BisIO Eintrag
if(!$rechte->isBerechtigt('assistenz',$student->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$student->studiengang_kz, 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$bisio = new bisio();
$bisio->bisio_id = (isset($_POST['bisio_id'])?$_POST['bisio_id']:'');
$bisio->aufenthaltfoerderung_code = $_POST['aufenthaltfoerderung_code'];
if(!$error)
{
if($bisio->saveAufenthaltFoerderung())
{
$return = true;
$data = $bisio->bisio_id;
}
else
{
$errormsg = $bisio->errormsg;
$return = false;
}
}
}
}
else
{
$errormsg = $student->errormsg;
$return = false;
}
}
else
{
$errormsg = $bisio->errormsg;
$return = false;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deletebisioaufenthaltfoerderung')
{
$bisio = new bisio();
if($bisio->load($_POST['bisio_id']))
{
$student = new student();
if($student->load($bisio->student_uid))
{
//Speichert einen BisIO Eintrag
if(!$rechte->isBerechtigt('assistenz',$student->studiengang_kz,'suid') &&
!$rechte->isBerechtigt('admin',$student->studiengang_kz, 'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$bisio = new bisio();
$bisio->bisio_id = (isset($_POST['bisio_id'])?$_POST['bisio_id']:'');
$bisio->aufenthaltfoerderung_code = $_POST['aufenthaltfoerderung_code'];
if(!$error)
{
if($bisio->deleteAufenthaltFoerderung())
{
$return = true;
}
else
{
$errormsg = $bisio->errormsg;
$return = false;
}
}
}
}
else
{
$errormsg = $student->errormsg;
$return = false;
}
}
else
{
$errormsg = $bisio->errormsg;
$return = false;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='getnotenotenschluessel')
{
if(!$rechte->isBerechtigt('admin', null, 's') && !$rechte->isBerechtigt('assistenz', null, 's') &&
!$rechte->isBerechtigt('student/noten', null, 's'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$punkte=$_POST['punkte'];
if(is_numeric($punkte))
{
$lehrveranstaltung_id=$_POST['lehrveranstaltung_id'];
$studiensemester_kurzbz=$semester_aktuell;
$notenschluessel = new notenschluessel();
if(($note = $notenschluessel->getNote($punkte, $lehrveranstaltung_id, $studiensemester_kurzbz))!==false)
{
$return = true;
$error = false;
$data = $note;
}
else
{
$return = false;
$error = true;
$errormsg=$notenschluessel->errormsg;
}
}
else
{
$return = true;
$error = false;
$data = '';
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='savenote')
{
//Speichert einen Noteneintrag
$noten = new zeugnisnote();
$lehrveranstaltung_id = filter_input(INPUT_POST, 'lehrveranstaltung_id');
$student_uid = filter_input(INPUT_POST, 'student_uid');
$studiensemester_kurzbz = filter_input(INPUT_POST, 'studiensemester_kurzbz');
if(!is_null($lehrveranstaltung_id) && !is_null($student_uid) && !is_null($studiensemester_kurzbz))
{
//Berechtigung pruefen
$qry = "SELECT studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($student_uid);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$stg_std = $row->studiengang_kz;
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln des Studenten';
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln des Studenten';
}
if(!$error)
{
$lva = new lehrveranstaltung($lehrveranstaltung_id);
if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigt('admin', $stg_std, 'suid') &&
!$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigt('assistenz', $stg_std, 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
if($noten->load($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz))
{
$noten->new = false;
$noten->updateamum = date('Y-m-d H:i:s');
$noten->updatevon = $user;
$log = new log();
$log->executetime = date('Y-m-d H:i:s');
$log->mitarbeiter_uid = $user;
$log->beschreibung = "Ändern der Note ".$noten->note." bei ".$noten->student_uid;
$log->sql = 'UPDATE lehre.tbl_zeugnisnote SET '.
'note='.$db->db_add_param($noten->note).', '.
'punkte='.$db->db_add_param($noten->punkte).','.
'uebernahmedatum='.$db->db_add_param($noten->uebernahmedatum).', '.
'benotungsdatum='.$db->db_add_param($noten->benotungsdatum).', '.
'bemerkung='.$db->db_add_param($noten->bemerkung).', '.
'updateamum= '.$db->db_add_param($noten->updateamum).', '.
'updatevon='.$db->db_add_param($noten->updatevon).' '.
'WHERE lehrveranstaltung_id='.$db->db_add_param($noten->lehrveranstaltung_id, FHC_INTEGER).' '.
'AND student_uid='.$db->db_add_param($noten->student_uid).' '.
'AND studiensemester_kurzbz='.$db->db_add_param($noten->studiensemester_kurzbz).';';
$log->sqlundo = $noten->getUndo('update');
$log->save(true);
}
else
{
$noten->new = true;
$noten->insertamum = date('Y-m-d H:i:s');
$noten->insertvon = $user;
}
$noten->lehrveranstaltung_id = $_POST['lehrveranstaltung_id'];
$noten->student_uid = $_POST['student_uid'];
$noten->studiensemester_kurzbz = $_POST['studiensemester_kurzbz'];
$noten->benotungsdatum = date('Y-m-d H:i:s');
$noten->note = $_POST['note'];
if(isset($_POST['punkte']))
$noten->punkte=str_replace(',','.',$_POST['punkte']);
if($noten->save())
{
$return = true;
}
else
{
$errormsg = $noten->errormsg;
$return = false;
}
if(defined('FAS_PRUEFUNG_BEI_NOTENEINGABE_ANLEGEN') && FAS_PRUEFUNG_BEI_NOTENEINGABE_ANLEGEN && $return == true && $noten->new == true)
{
NotePruefungAnlegen($studiensemester_kurzbz, $student_uid, $lehrveranstaltung_id, $noten->note, $noten->punkte);
}
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='movenote')
{
//Speichert einen LVGesamtNoten Eintrag in die Tbl Zeugnisnote
//Die Daten werden per POST uebermittelt. Es wird ein Feld Anzahl mituebergeben
//mit der Anzahl der Felder. Die Felder sind durchnummeriert zB lehreinheit_id_0, lehreinheit_id_1, ...
$errormsg = '';
$ueberschreibbar=true;
$nueberschreibbarbez=array();
for($i=0;$i<$_POST['anzahl'];$i++)
{
$lvgesamtnote = new lvgesamtnote();
$zeugnisnote = new zeugnisnote();
$noten_ueberschreibbar = array();
$noten_bezeichnung = array();
$note_obj = new note();
$note_obj->getAll();
foreach($note_obj->result as $row)
{
$noten_ueberschreibbar[$row->note] = $row->lkt_ueberschreibbar;
$noten_bezeichnung[$row->note] = $row->bezeichnung;
}
//Berechtigung pruefen
$qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($_POST['lehrveranstaltung_id_'.$i], FHC_INTEGER);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$stg_lva = $row->studiengang_kz;
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln der LVA';
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln der LVA';
}
$qry = "SELECT studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($_POST['student_uid_'.$i]);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$stg_std = $row->studiengang_kz;
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln des Studenten';
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln des Studenten';
}
if(!$error)
{
if(!$rechte->isBerechtigt('student/noten', $stg_lva, 'suid') && !$rechte->isBerechtigt('student/noten', $stg_std, 'suid'))
{
$return = false;
$error = true;
$errormsg .= 'Sie haben keine Berechtigung';
}
else
{
if($lvgesamtnote->load($_POST['lehrveranstaltung_id_'.$i], $_POST['student_uid_'.$i], $_POST['studiensemester_kurzbz_'.$i]))
{
if($zeugnisnote->load($_POST['lehrveranstaltung_id_'.$i], $_POST['student_uid_'.$i], $_POST['studiensemester_kurzbz_'.$i]))
{
$zeugnisnote->new = false;
$zeugnisnote->updateamum = date('Y-m-d H:i:s');
$zeugnisnote->updatevon = $user;
// Noten wie "angerechnet", "nicht erforderlich" werden nicht ueberschrieben
if(isset($zeugnisnote->note) && array_key_exists($zeugnisnote->note, $noten_ueberschreibbar) && $noten_ueberschreibbar[$zeugnisnote->note] === false)
{
$notenbez = '"'.$noten_bezeichnung[$zeugnisnote->note].'"';
if (!in_array($notenbez, $nueberschreibbarbez))
$nueberschreibbarbez[] = $notenbez;
$ueberschreibbar = false;
continue;
}
}
else
{
$zeugnisnote->new = true;
$zeugnisnote->insertamum = date('Y-m-d H:i:s');
$zeugnisnote->insertvon = $user;
$zeugnisnote->lehrveranstaltung_id = $_POST['lehrveranstaltung_id_'.$i];
$zeugnisnote->student_uid = $_POST['student_uid_'.$i];
$zeugnisnote->studiensemester_kurzbz = $_POST['studiensemester_kurzbz_'.$i];
}
$zeugnisnote->note = $lvgesamtnote->note;
$zeugnisnote->punkte = $lvgesamtnote->punkte;
$zeugnisnote->uebernahmedatum = date('Y-m-d H:i:s');
$zeugnisnote->benotungsdatum = $lvgesamtnote->benotungsdatum;
$zeugnisnote->bemerkung = $lvgesamtnote->bemerkung;
if(!$zeugnisnote->save())
{
$errormsg .= "\n".$zeugnisnote->errormsg;
}
else
{
if(defined('FAS_PRUEFUNG_BEI_NOTENEINGABE_ANLEGEN') && FAS_PRUEFUNG_BEI_NOTENEINGABE_ANLEGEN && $zeugnisnote->new == true)
{
NotePruefungAnlegen($zeugnisnote->studiensemester_kurzbz, $zeugnisnote->student_uid, $zeugnisnote->lehrveranstaltung_id, $zeugnisnote->note, $zeugnisnote->punkte);
}
}
}
else
{
$errormsg .= "\nLvGesamtNote wurde nicht gefunden";
}
}
}
}
if(!$ueberschreibbar)
{
$errormsg.="\nNote(n) ".implode(', ', $nueberschreibbarbez)." waren nicht ueberschreibbar";
}
if($errormsg=='')
$return = true;
else
$return = false;
}
elseif(isset($_POST['type']) && $_POST['type']=='importnoten')
{
//Importiert die Noten einer Lehrveranstaltung
//als Parameter wird die Matrikelnummer und die Note uebergeben
//Die Felder sind durchnummeriert zB matrikelnummer_0, matrikelnummer_1, ...
//Die Anzahl der Gesamten Daten wird auch als Parameter uebergeben
$errormsg = '';
$ueberschreibbar=true;
$nueberschreibbarbez=array();
$noten_anmerkung_arr=array();
$noten_ueberschreibbar = array();
$noten_bezeichnung = array();
$note_obj = new note();
$note_obj->getAll();
foreach($note_obj->result as $row)
{
$noten_ueberschreibbar[$row->note] = $row->lkt_ueberschreibbar;
$noten_bezeichnung[$row->note] = $row->bezeichnung;
$noten_anmerkung_arr[$row->anmerkung] = $row->note;
}
for($i=0;$i<$_POST['anzahl'];$i++)
{
if($_POST['matrikelnummer_'.$i]!='')
{
$zeugnisnote = new zeugnisnote();
$error = false;
if(!is_numeric(trim($_POST['matrikelnummer_'.$i])))
{
$error = true;
$errormsg = "\nMatrikelnummer ist ungueltig: ".$_POST['matrikelnummer_'.$i];
}
if((isset($_POST['note_'.$i]) && !is_numeric($_POST['note_'.$i]) && !isset($noten_anmerkung_arr[$_POST['note_'.$i]])))
{
$error = true;
$errormsg = "\nNote ist ungueltig: ".$_POST['note_'.$i];
}
if(!$error)
{
$qry = "SELECT student_uid, studiengang_kz FROM public.tbl_student WHERE trim(matrikelnr)=".$db->db_add_param(trim($_POST['matrikelnummer_'.$i]));
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$uid = $row->student_uid;
$stg_std = $row->studiengang_kz;
}
else
{
$error = true;
$errormsg.="\nMatrikelnummer ".$_POST['matrikelnummer_'.$i]." wurde nicht gefunden";
}
}
else
{
$error = true;
$errormsg.="\nFehler beim Ermitteln der UID";
}
//Berechtigung pruefen
$qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($_POST['lehrveranstaltung_id'], FHC_INTEGER);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$stg_lva = $row->studiengang_kz;
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln der LVA';
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln der LVA';
}
if(!$error)
{
if(!$rechte->isBerechtigt('admin', $stg_lva, 'suid') && !$rechte->isBerechtigt('admin', $stg_std, 'suid') &&
!$rechte->isBerechtigt('assistenz', $stg_lva, 'suid') && !$rechte->isBerechtigt('assistenz', $stg_std, 'suid'))
{
$return = false;
$error = true;
$errormsg .= 'Sie haben keine Berechtigung';
}
else
{
if($zeugnisnote->load($_POST['lehrveranstaltung_id'], $uid, $semester_aktuell))
{
$zeugnisnote->new = false;
$zeugnisnote->updateamum = date('Y-m-d H:i:s');
$zeugnisnote->updatevon = $user;
// Noten wie "angerechnet", "nicht erforderlich" werden nicht ueberschrieben
if(isset($zeugnisnote->note) && array_key_exists($zeugnisnote->note, $noten_ueberschreibbar) && $noten_ueberschreibbar[$zeugnisnote->note] === false)
{
$notenbez = '"'.$noten_bezeichnung[$zeugnisnote->note].'"';
if (!in_array($notenbez, $nueberschreibbarbez))
$nueberschreibbarbez[] = $notenbez;
$ueberschreibbar = false;
continue;
}
}
else
{
$zeugnisnote->new = true;
$zeugnisnote->insertamum = date('Y-m-d H:i:s');
$zeugnisnote->insertvon = $user;
$zeugnisnote->lehrveranstaltung_id = $_POST['lehrveranstaltung_id'];
$zeugnisnote->student_uid = $uid;
$zeugnisnote->studiensemester_kurzbz = $semester_aktuell;
}
if(isset($_POST['note_'.$i]))
{
$zeugnisnote->note = $_POST['note_'.$i];
$zeugnisnote->punkte = null;
// Wenn es nicht numerisch ist, dann nachsehen ob es eine anmerkung gibt die so heisst
// zB fuer met, nb, ar, etc
if(!is_numeric($zeugnisnote->note) && isset($noten_anmerkung_arr[$zeugnisnote->note]))
{
$zeugnisnote->note = $noten_anmerkung_arr[$zeugnisnote->note];
}
}
elseif(isset($_POST['punkte_'.$i]))
{
$zeugnisnote->punkte=$_POST['punkte_'.$i];
$zeugnisnote->punkte = str_replace(',','.', $zeugnisnote->punkte);
$notenschluessel = new notenschluessel();
$note = $notenschluessel->getNote($zeugnisnote->punkte, $_POST['lehrveranstaltung_id'], $semester_aktuell);
$zeugnisnote->note = $note;
}
$zeugnisnote->uebernahmedatum = date('Y-m-d H:i:s');
$zeugnisnote->benotungsdatum = date('Y-m-d H:i:s');
if(!$zeugnisnote->save())
{
$errormsg .= "\n".$zeugnisnote->errormsg;
}
else
{
if(defined('FAS_PRUEFUNG_BEI_NOTENEINGABE_ANLEGEN') && FAS_PRUEFUNG_BEI_NOTENEINGABE_ANLEGEN && $zeugnisnote->new == true)
{
NotePruefungAnlegen($semester_aktuell, $uid, $_POST['lehrveranstaltung_id'], $zeugnisnote->note, $zeugnisnote->punkte);
}
}
}
}
}
}
}
if(!$ueberschreibbar)
{
$errormsg.="\nNote(n) ".implode(', ', $nueberschreibbarbez)." waren nicht ueberschreibbar";
}
if($errormsg=='')
$return = true;
else
$return = false;
}
elseif(isset($_POST['type']) && $_POST['type']=='deletenote')
{
//Loescht einen Noteneintrag
$noten = new zeugnisnote();
$lehrveranstaltung_id = filter_input(INPUT_POST, 'lehrveranstaltung_id');
$student_uid = filter_input(INPUT_POST, 'student_uid');
$studiensemester_kurzbz = filter_input(INPUT_POST, 'studiensemester_kurzbz');
if(!is_null($lehrveranstaltung_id) && !is_null($student_uid) && !is_null($studiensemester_kurzbz))
{
//Berechtigung pruefen
$qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$stg_lva = $row->studiengang_kz;
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln der LVA';
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln der LVA';
}
$qry = "SELECT studiengang_kz FROM public.tbl_student WHERE student_uid=".$db->db_add_param($student_uid);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$stg_std = $row->studiengang_kz;
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln des Studenten';
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln des Studenten';
}
if(!$error)
{
if(!$rechte->isBerechtigt('admin', $stg_lva, 'suid') && !$rechte->isBerechtigt('admin', $stg_std, 'suid') &&
!$rechte->isBerechtigt('assistenz', $stg_lva, 'suid') && !$rechte->isBerechtigt('assistenz', $stg_std, 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$noten->load($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz);
if($noten->delete($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz))
{
$log = new log();
$log->executetime = date('Y-m-d H:i:s');
$log->mitarbeiter_uid = $user;
$log->beschreibung = "Löschen der Note ".$noten->note." bei ".$noten->student_uid;
$log->sql = "DELETE FROM lehre.tbl_zeugnisnote WHERE
lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER, false)." AND
student_uid=".$db->db_add_param($student_uid)." AND
studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz).";";
$log->sqlundo = $noten->getUndo('insert');
$log->save(true);
$return = true;
}
else
{
$return = false;
$errormsg = $noten->errormsg;
}
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deletepruefung') // **** PRUEFUNGEN **** //
{
//Loescht einen Pruefungs Eintrag
if(isset($_POST['pruefung_id']) && is_numeric($_POST['pruefung_id']))
{
if(!$rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') && !$rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$pruefung = new pruefung();
if($pruefung->delete($_POST['pruefung_id']))
{
$return = true;
}
else
{
$errormsg = $pruefung->errormsg;
$return = false;
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='savepruefung') // **** PRUEFUNGEN **** //
{
$datum_obj = new datum();
if(!$rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') && !$rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$pruefung = new pruefung();
if($_POST['neu']=='false')
{
if($pruefung->load($_POST['pruefung_id']))
{
$pruefung->new = false;
}
else
{
$error = true;
$return = false;
$errormsg = $pruefung->errormsg;
}
}
else
{
$pruefung->new = true;
$pruefung->insertamum = date('Y-m-d H:i:s');
$pruefung->insertvon = $user;
}
$db->db_query('BEGIN');
if($_POST['pruefungstyp_kurzbz']=='Termin2')
{
//Wenn ein 2. Termin angelegt wird, und kein 1. Termin vorhanden ist,
//dann wird auch ein 1. Termin angelegt mit der derzeitigen Zeugnisnote
$qry = "SELECT * FROM lehre.tbl_pruefung WHERE
student_uid=".$db->db_add_param($_POST['student_uid'])." AND
lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND
pruefungstyp_kurzbz='Termin1'";
if($result = $db->db_query($qry))
{
if($db->db_num_rows($result)==0)
{
$qry = "SELECT note,punkte, benotungsdatum FROM lehre.tbl_zeugnisnote JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) WHERE
student_uid=".$db->db_add_param($_POST['student_uid'])." AND
tbl_lehreinheit.lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND
tbl_lehreinheit.studiensemester_kurzbz = tbl_zeugnisnote.studiensemester_kurzbz";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
//Wenn kein Ersttermin existiert, dann wird einer angelegt
$ersttermin = new pruefung();
$ersttermin->new=true;
$ersttermin->insertamum = date('Y-m-d H:i:s');
$ersttermin->insertvon = $user;
$ersttermin->lehreinheit_id = $_POST['lehreinheit_id'];
$ersttermin->student_uid = $_POST['student_uid'];
$ersttermin->mitarbeiter_uid = $_POST['mitarbeiter_uid'];
$ersttermin->note = $row->note;
$ersttermin->punkte = $row->punkte;
$ersttermin->pruefungstyp_kurzbz = 'Termin1';
$ersttermin->datum = $row->benotungsdatum;
$ersttermin->anmerkung = '';
if(!$ersttermin->save())
{
$error = true;
$return = false;
$errormsg = 'Fehler beim Anlegen des 1.Termin:'.$ersttermin->errormsg;
}
}
}
//Wenn keine Zeugnisnote vorhanden ist, dann wird kein
//1.Termin angelegt
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Fehler beim Ermitteln des Ersttermines';
}
}
if(!$error)
{
$pruefung->lehreinheit_id = $_POST['lehreinheit_id'];
$pruefung->student_uid = $_POST['student_uid'];
$pruefung->mitarbeiter_uid = $_POST['mitarbeiter_uid'];
$pruefung->note = $_POST['note'];
if(isset($_POST['punkte']))
$pruefung->punkte = str_replace(',','.',$_POST['punkte']);
$pruefung->pruefungstyp_kurzbz = $_POST['pruefungstyp_kurzbz'];
$pruefung->datum = $_POST['datum'];
$pruefung->anmerkung = $_POST['anmerkung'];
$pruefung->updateamum = date('Y-m-d H:i:s');
$pruefung->updatevon = $user;
if($pruefung->save())
{
$return = true;
$data = $pruefung->pruefung_id;
//Zeugnisnote aktualisieren
$qry = "SELECT lehrveranstaltung_id, studiensemester_kurzbz FROM lehre.tbl_lehreinheit
WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER);
if($result_le = $db->db_query($qry))
{
if($row_le = $db->db_fetch_object($result_le))
{
$lehrveranstaltung_id = $row_le->lehrveranstaltung_id;
$studiensemester_kurzbz = $row_le->studiensemester_kurzbz;
}
else
{
$error = true;
$return = false;
$errormsg = 'Fehler beim Ermitteln der Lehrveranstaltung';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Fehler beim Ermitteln der Lehrveranstaltung';
}
if(!$error)
{
$zeugnisnote = new zeugnisnote();
if($zeugnisnote->load($lehrveranstaltung_id, $_POST['student_uid'], $studiensemester_kurzbz))
{
if($zeugnisnote->uebernahmedatum=='' ||
($datum_obj->mktime_fromtimestamp($zeugnisnote->benotungsdatum) >
$datum_obj->mktime_fromtimestamp($zeugnisnote->uebernahmedatum)))
$checkdatum = $zeugnisnote->benotungsdatum;
else
$checkdatum = $zeugnisnote->uebernahmedatum;
if($datum_obj->mktime_fromtimestamp($checkdatum)>$datum_obj->mktime_fromdate($_POST['datum']))
{
if($zeugnisnote->note!=$_POST['note'])
{
$error = true;
$return = false;
$errormsg = 'ACHTUNG! Diese Pruefungsnote wurde nicht ins Zeugnis uebernommen da die Zeugnisnote nach dem Pruefungsdatum veraendert wurde';
}
}
else
{
$zeugnisnote->new = false;
}
}
else
{
$zeugnisnote->new = true;
$zeugnisnote->insertamum = date('Y-m-d H:i:s');
$zeugnisnote->insertvon = $user;
}
if(!$error)
{
$zeugnisnote->student_uid = $_POST['student_uid'];
$zeugnisnote->lehrveranstaltung_id = $lehrveranstaltung_id;
$zeugnisnote->studiensemester_kurzbz = $studiensemester_kurzbz;
$zeugnisnote->note = $_POST['note'];
if(isset($_POST['punkte']))
$zeugnisnote->punkte = str_replace(',','.',$_POST['punkte']);
else
$zeugnisnote->punkte='';
$zeugnisnote->uebernahmedatum = date('Y-m-d H:i:s');
$zeugnisnote->benotungsdatum = date('Y-m-d',$datum_obj->mktime_fromdate($_POST['datum']));
$zeugnisnote->updateamum = date('Y-m-d H:i:s');
$zeugnisnote->updatevon = $user;
if(!$zeugnisnote->save())
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Speichern der Zeungisnote:'.$zeugnisnote->errormsg;
$db->db_query('ROLLBACK');
}
else
{
$db->db_query('COMMIT');
}
}
else
{
//Kein Rollback damit die Pruefung gespeichert wird
//returnwert ist aber false damit die Meldung angezeigt wird,
//dass die Note nicht ins Zeugnis uebernommen wird
$db->db_query('COMMIT');
}
}
else
{
$db->db_query('ROLLBACK');
}
}
else
{
$return = false;
$errormsg = $pruefung->errormsg;
$db->db_query('ROLLBACK');
}
}
else
{
$db->db_query('ROLLBACK');
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='saveabschlusspruefung') // **** ABSCHLUSSPRUEFUNGEN **** //
{
if(!$rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') && !$rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$pruefung = new abschlusspruefung();
if($_POST['neu']=='false')
{
if($pruefung->load($_POST['abschlusspruefung_id']))
{
$pruefung->new = false;
}
else
{
$error = true;
$return = false;
$errormsg = $pruefung->errormsg;
}
}
else
{
$pruefung->new = true;
$pruefung->insertamum = date('Y-m-d H:i:s');
$pruefung->insertvon = $user;
}
$pruefung->student_uid = $_POST['student_uid'];
$pruefung->vorsitz = $_POST['vorsitz'];
$pruefung->pruefer1 = $_POST['pruefer1'];
$pruefung->pruefer2 = $_POST['pruefer2'];
$pruefung->pruefer3 = $_POST['pruefer3'];
$pruefung->abschlussbeurteilung_kurzbz = $_POST['abschlussbeurteilung_kurzbz'];
if(isset($_POST['pruefungsantritt_kurzbz']))
$pruefung->pruefungsantritt_kurzbz = $_POST['pruefungsantritt_kurzbz'];
$pruefung->note = $_POST['notekommpruef'];
$pruefung->akadgrad_id = $_POST['akadgrad_id'];
$pruefung->pruefungstyp_kurzbz = $_POST['pruefungstyp_kurzbz'];
$pruefung->datum = $_POST['datum'];
$pruefung->uhrzeit = $_POST['uhrzeit'];
$pruefung->sponsion = $_POST['sponsion'];
$pruefung->anmerkung = $_POST['anmerkung'];
$pruefung->updateamum = date('Y-m-d H:i:s');
$pruefung->updatevon = $user;
if(!$error)
{
if($pruefung->save())
{
$return = true;
$data = $pruefung->abschlusspruefung_id;
}
else
{
$return = false;
$errormsg = $pruefung->errormsg;
}
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deleteabschlusspruefung')
{
//Loescht einen Pruefungs Eintrag
if(!$rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') && !$rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
if(isset($_POST['abschlusspruefung_id']) && is_numeric($_POST['abschlusspruefung_id']))
{
$pruefung = new abschlusspruefung();
if($pruefung->load($_POST['abschlusspruefung_id']))
{
if ($pruefung->freigabedatum == '')
{
if($pruefung->delete($_POST['abschlusspruefung_id']))
{
$return = true;
}
else
{
$errormsg = $pruefung->errormsg;
$return = false;
}
}
else
{
$errormsg = 'Löschen ist nicht möglich da bereits ein freigegebenes Protokoll vorhanden ist';
$return = false;
}
}
else
{
$errormsg = $pruefung->errormsg;
$return = false;
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='saveprojektarbeit') // **** Projektarbeit **** //
{
if(!$rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') && !$rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$projektarbeit = new projektarbeit();
if($_POST['neu']=='false')
{
if($projektarbeit->load($_POST['projektarbeit_id']))
{
$projektarbeit->new = false;
}
else
{
$error = true;
$return = false;
$errormsg = $projektarbeit->errormsg;
}
}
else
{
$projektarbeit->new = true;
$projektarbeit->insertamum = date('Y-m-d H:i:s');
$projektarbeit->insertvon = $user;
}
$projektarbeit->projekttyp_kurzbz = $_POST['projekttyp_kurzbz'];
$projektarbeit->titel = $_POST['titel'];
$projektarbeit->titel_english = $_POST['titel_english'];
$projektarbeit->lehreinheit_id = $_POST['lehreinheit_id'];
$projektarbeit->student_uid = $_POST['student_uid'];
$projektarbeit->firma_id = $_POST['firma_id'];
$projektarbeit->note = $_POST['note'];
$projektarbeit->punkte = str_replace(',','.',$_POST['punkte']);
$projektarbeit->beginn = $_POST['beginn'];
$projektarbeit->ende = $_POST['ende'];
$projektarbeit->faktor = str_replace(',','.',$_POST['faktor']);
$projektarbeit->freigegeben = ($_POST['freigegeben']=='true'?true:false);
$projektarbeit->gesperrtbis = $_POST['gesperrtbis'];
$projektarbeit->stundensatz = str_replace(',','.',$_POST['stundensatz']);
$projektarbeit->gesamtstunden = $_POST['gesamtstunden'];
$projektarbeit->themenbereich = $_POST['themenbereich'];
$projektarbeit->anmerkung = $_POST['anmerkung'];
$projektarbeit->updateamum = date('Y-m-d H:i:s');
$projektarbeit->updatevon = $user;
$projektarbeit->final = ($_POST['final']=='true'?true:false);
if(!$error)
{
if($projektarbeit->save())
{
$return = true;
$data = $projektarbeit->projektarbeit_id;
}
else
{
$return = false;
$errormsg = $projektarbeit->errormsg;
}
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deleteprojektarbeit')
{
if(!$rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') && !$rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
//Loescht einen Projektarbeit Eintrag
if(isset($_POST['projektarbeit_id']) && is_numeric($_POST['projektarbeit_id']))
{
$projektarbeit = new projektarbeit();
$qry = "SELECT count(*) as anzahl FROM lehre.tbl_projektbetreuer
WHERE projektarbeit_id=".$db->db_add_param($_POST['projektarbeit_id'], FHC_INTEGER);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
if($row->anzahl>0)
{
$errormsg = 'Bitte zuerst alle BetreuerInnen loeschen';
$return = false;
}
else
{
$qry = "SELECT count(*) as anzahl FROM campus.tbl_paabgabe
WHERE projektarbeit_id=".$db->db_add_param($_POST['projektarbeit_id'], FHC_INTEGER).";";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
if($row->anzahl>0)
{
$errormsg = 'Diese Projektarbeit kann nicht gelöscht werden, da bereits AbgabeTermine bzw Abgaben vorhanden sind';
$return = false;
}
else
{
if($projektarbeit->delete($_POST['projektarbeit_id']))
{
$return = true;
}
else
{
$errormsg = $projektarbeit->errormsg;
$return = false;
}
}
}
}
}
}
else
{
$errormsg = 'Fehler beim Loeschen';
$return = false;
}
}
else
{
$errormsg = 'Fehler beim Loeschen';
$return = false;
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='saveprojektbetreuer') // **** Projektbetreuer **** //
{
if(!$rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') && !$rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$projektbetreuer = new projektbetreuer();
if($_POST['neu']=='false')
{
if($projektbetreuer->load($_POST['person_id_old'], $_POST['projektarbeit_id'], $_POST['betreuerart_kurzbz_old']))
{
$projektbetreuer->new = false;
}
else
{
$error = true;
$return = false;
$errormsg = $projektbetreuer->errormsg;
}
}
else
{
if($projektbetreuer->load($_POST['person_id'], $_POST['projektarbeit_id'], $_POST['betreuerart_kurzbz']))
{
$error = true;
$errormsg = 'Diese/r BetreuerIn ist bereits zugeteilt';
}
$projektbetreuer->new = true;
$projektbetreuer->insertamum = date('Y-m-d H:i:s');
$projektbetreuer->insertvon = $user;
}
$projektbetreuer->person_id = $_POST['person_id'];
$projektbetreuer->person_id_old = $_POST['person_id_old'];
$projektbetreuer->projektarbeit_id = $_POST['projektarbeit_id'];
$projektbetreuer->note = $_POST['note'];
$projektbetreuer->faktor = str_replace(',','.', $_POST['faktor']);
$projektbetreuer->name = $_POST['name'];
$projektbetreuer->punkte = str_replace(',','.', $_POST['punkte']);
$projektbetreuer->stunden = str_replace(',','.', $_POST['stunden']);
$projektbetreuer->stundensatz = str_replace(',','.', $_POST['stundensatz']);
$projektbetreuer->betreuerart_kurzbz = $_POST['betreuerart_kurzbz'];
$projektbetreuer->betreuerart_kurzbz_old = $_POST['betreuerart_kurzbz_old'];
$projektbetreuer->updateamum = date('Y-m-d H:i:s');
$projektbetreuer->updatevon = $user;
if(!$error)
{
if($projektbetreuer->save())
{
$return = true;
}
else
{
$return = false;
$errormsg = $projektbetreuer->errormsg;
}
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deleteprojektbetreuer')
{
if(!$rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') && !$rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
// Wenn der Projektbetreuer schon einen Vertrag hat, wird das Loeschen verhindert
if (isset($_POST['vertrag_id']) && is_numeric($_POST['vertrag_id']) &&
(defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN') && FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN))
{
$return = false;
$errormsg = 'Löschen nur nach Stornierung des Vertrags möglich.';
}
else
{
//Loescht einen Projektbetreuer Eintrag
if (isset($_POST['person_id']) && is_numeric($_POST['person_id'])) {
$projektbetreuer = new projektbetreuer();
if ($projektbetreuer->delete($_POST['person_id'], $_POST['projektarbeit_id'], $_POST['betreuerart_kurzbz'])) {
$return = true;
} else {
$errormsg = $projektbetreuer->errormsg;
$return = false;
}
} else {
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='getprivatemailadress')
{
if(isset($_POST['person_ids']))
{
$pers_arr = explode(';',$_POST['person_ids']);
$data='';
$anz_error=0;
foreach ($pers_arr as $person_id)
{
if(is_numeric($person_id))
{
$qry = "SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email'
AND person_id=".$db->db_add_param($person_id, FHC_INTEGER)." AND zustellung=true LIMIT 1";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
if($data!='')
$data.=$emailadressentrennzeichen.$row->kontakt;
else
$data = $row->kontakt;
}
else
{
$anz_error++;
}
}
}
}
if($data!='')
{
if($anz_error==0)
$return = true;
else
{
$return = false;
$errormsg = "Bei $anz_error Personen wurde keine Emailadresse gefunden!";
}
}
else
{
$return = false;
$errormsg = 'Es wurde keine Privatadresse gefunden';
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='getReihungstestPunkte')
{
//Liefert die Reihungstestpunkte eines Prestudenten
if(isset($_POST['person_id']) && isset($_POST['reihungstest_id']) && isset($_POST['studienplan_studiengang_kz']))
{
$pruefling = new pruefling();
if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE)
$data = $pruefling->getReihungstestErgebnisPerson($_POST['person_id'], true, $_POST['reihungstest_id'], false, null, $_POST['studienplan_studiengang_kz']);
else
$data = $pruefling->getReihungstestErgebnisPerson($_POST['person_id'], false, $_POST['reihungstest_id'], false, null, $_POST['studienplan_studiengang_kz']);
// Runden auf 4 Nachkommastellen
$data = number_format($data, 4, '.','');
$return = true;
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz')
{
if(isset($_POST['person_id']) && isset($_POST['studiensemester_kurzbz']))
{
$studiensemester = new studiensemester();
if ($studiensemester->load($_POST['studiensemester_kurzbz']))
{
if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ')
&& !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ)
{
// Mitarbeiter laden
$qry = "
SELECT
mitarbeiter_uid, fixangestellt
FROM
public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON(tbl_benutzer.uid=tbl_mitarbeiter.mitarbeiter_uid)
WHERE
person_id=".$db->db_add_param($_POST['person_id'], FHC_INTEGER) ."
ORDER BY tbl_mitarbeiter.insertamum DESC NULLS LAST LIMIT 1
";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$uid = $row->mitarbeiter_uid;
if($db->db_parse_bool($row->fixangestellt)==true)
{
// Fixangestellte haben keinen Stundensatz
$data = '';
$return = true;
}
else
{
// Stundensatz des Mitarbeiters laden
$stundensatz = new stundensatz();
if($stundensatz->getStundensatzDatum($uid, $studiensemester->start, $studiensemester->ende, 'lehre'))
{
$data = $stundensatz->stundensatz;
$return = true;
}
else
{
// Keine Stundensatz hinterlegt
$data = '0.00';
$return = true;
}
}
}
else
{
// Kein Mitarbeiter gefunden, kein Stundensatz
$data = '0.00';
$return = true;
}
}
}
else
{
$qry = "SELECT ss.stundensatz
FROM hr.tbl_stundensatz ss
JOIN public.tbl_mitarbeiter ON ss.uid = tbl_mitarbeiter.mitarbeiter_uid
JOIN public.tbl_benutzer ON(tbl_benutzer.uid=tbl_mitarbeiter.mitarbeiter_uid)
WHERE person_id=".$db->db_add_param($_POST['person_id'], FHC_INTEGER) ."
AND stundensatztyp = ". $db->db_add_param('lehre') ."
AND gueltig_von <= ". $db->db_add_param($studiensemester->ende) ."
AND (gueltig_bis >= ". $db->db_add_param($studiensemester->start) ." OR gueltig_bis IS NULL)
ORDER BY gueltig_bis DESC NULLS FIRST, gueltig_von DESC NULLS LAST LIMIT 1
";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$data = $row->stundensatz;
$return = true;
}
else
{
$data = '80.00';
$return = true;
}
}
else
{
$return = false;
$errormsg = 'Unbekannter Fehler';
}
}
}
else
{
$return = false;
$errormsg = 'Fehler beim Laden des Studiensemesters';
}
}
else
{
$data = '20.00'.$_POST['studiensemester_kurzbz'];
$return = true;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='saveanrechnung')
{
$anrechnung = new anrechnung();
$anrechnung->new = $_POST['neu'];
$anrechnung->anrechnung_id = $_POST['anrechnung_id'];
$anrechnung->prestudent_id = $_POST['prestudent_id'];
$anrechnung->lehrveranstaltung_id = $_POST['lehrveranstaltung_id'];
$anrechnung->begruendung_id = $_POST['begruendung_id'];
isset($_POST['lehrveranstaltung_id_kompatibel']) ? $anrechnung->lehrveranstaltung_id_kompatibel = $_POST['lehrveranstaltung_id_kompatibel'] : $anrechnung->lehrveranstaltung_id_kompatibel = null;
isset($_POST['notiz_id']) ? $anrechnung->notiz_id = $_POST['notiz_id'] : $anrechnung->notiz_id = null;
$anrechnung->genehmigt_von = $_POST['genehmigt_von'];
$anrechnung->insertvon = $user;
$anrechnung->updatevon = $user;
if($anrechnung->save())
{
$return = true;
}
else
{
$return = false;
$errormsg = $anrechnung->errormsg;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deleteanrechnung')
{
//Loescht eine Anrechunng
if(isset($_POST['anrechnung_id']) && is_numeric($_POST['anrechnung_id']))
{
if(!$rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') && !$rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$anrechnung = new anrechnung();
if($anrechnung->delete($_POST['anrechnung_id']))
{
$return = true;
}
else
{
$errormsg = $anrechnung->errormsg;
$return = false;
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
//******** AUFNAHMETERMINE *****
elseif(isset($_POST['type']) && $_POST['type']=='AufnahmeTermineSave') // **** AufnahmeTermine **** //
{
//Speichert einen Aufnahmetermin einer Person
if(isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']))
{
$prestudent = new prestudent();
if(!$prestudent->load($_POST['prestudent_id']))
{
$return = false;
$error = true;
$errormsg = $prestudent->errormsg;
}
else
{
if(!$rechte->isBerechtigt('admin', $prestudent->studiengang_kz, 'suid') && !$rechte->isBerechtigt('assistenz', $prestudent->studiengang_kz, 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$rt_person_id = $_POST['rt_person_id'];
$rt_id = $_POST['rt_id'];
$person_id = $_POST['person_id'];
if($person_id=='')
$person_id=$prestudent->person_id;
$punkte = str_replace(',','.',$_POST['punkte']);
$teilgenommen = ($_POST['teilgenommen']=='true'?true:false);
$anmeldedatum = $_POST['anmeldedatum'];
$studienplan_id = $_POST['studienplan_id'];
$reihungstest = new reihungstest();
if($rt_person_id!='')
{
$reihungstest->loadReihungstestPerson($rt_person_id);
}
else
{
$reihungstest->new=true;
}
$warnung_zu_viele_teilnehmer = false;
$warnung_raumzuordnungentfernt = false;
if($reihungstest->reihungstest_id != $rt_id)
{
// Wenn ein neuer Reihungstesttermin ausgewählt wird, dann wird geprueft ob
// noch genuegend Platz vorhanden ist.
$rt_help = new reihungstest();
$aktuelle_anzahl = $rt_help->getTeilnehmerAnzahl($rt_id);
$rt_help->load($rt_id);
$max_teilnehmer = $rt_help->max_teilnehmer;
if($max_teilnehmer == '')
{
// Wenn keine Teilnehmer eingetragen sind, dann schauen welche Raeume zugeteilt
// sind und wie viel Platz dort ist
$max_teilnehmer = $rt_help->getPlatzAnzahlRaum($rt_id);
}
if($max_teilnehmer!='' && $aktuelle_anzahl >= $max_teilnehmer)
$warnung_zu_viele_teilnehmer = true;
if ($reihungstest->ort_kurzbz != '')
{
$reihungstest->ort_kurzbz = '';
$warnung_raumzuordnungentfernt = true;
}
}
$reihungstest->reihungstest_id = $rt_id;
$reihungstest->person_id = $person_id;
$reihungstest->punkte = $punkte;
$reihungstest->teilgenommen = $teilgenommen;
$reihungstest->anmeldedatum = $anmeldedatum;
$reihungstest->studienplan_id = $studienplan_id;
($reihungstest->new) ? $reihungstest->insertamum = date('Y-m-d H:i:s'): $reihungstest->updateamum = date('Y-m-d H:i:s');
($reihungstest->new) ? $reihungstest->insertvon = $user : $reihungstest->updatevon = $user;
if($reihungstest->savePersonReihungstest())
{
$return = true;
$error = false;
$errormsg = 'Erfolgreich gespeichert';
$data = $reihungstest->rt_person_id;
if($warnung_zu_viele_teilnehmer)
{
$return = false;
$error = true;
$errormsg .= ' - Achtung - die Maximalanzahl der Teilnehmer wurde überschritten;'.
' Prüfen Sie ob genug Platz zur Verfügung steht';
}
if ($warnung_raumzuordnungentfernt)
{
$return = false;
$error = true;
$errormsg .= ' - Achtung - Die Person war bereits einem Raum für den Reihungstest zugeordnet.'.
'Die Raumzuordnung wurde entfernt.';
}
}
else
{
$return = false;
$error = true;
$errormsg = $reihungstest->errormsg;
}
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='AufnahmeTermineDelete')
{
//Loescht einen Aufnahmetermin einer Person
if(isset($_POST['rt_person_id']) && is_numeric($_POST['rt_person_id']))
{
$rt_person_id = $_POST['rt_person_id'];
$reihungstest = new reihungstest();
if(!$reihungstest->loadReihungstestPerson($rt_person_id))
{
$return = false;
$error = true;
$errormsg = $reihungstest->errormsg;
}
else
{
$prestudent = new prestudent();
if(!$prestudent->getPrestudenten($reihungstest->person_id))
{
$return = false;
$error = true;
$errormsg = $prestudent->errormsg;
}
else
{
$berechtigt = false;
foreach($prestudent->result as $row_prest)
{
if($rechte->isBerechtigt('admin', $row_prest->studiengang_kz, 'suid') || $rechte->isBerechtigt('assistenz', $row_prest->studiengang_kz, 'suid'))
{
$berechtigt = true;
break;
}
}
if(!$berechtigt)
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$reihungstest = new reihungstest();
if($reihungstest->deletePersonReihungstest($rt_person_id))
{
$return = true;
$error = false;
$errormsg = 'Erfolgreich geloescht';
}
else
{
$return = false;
$error = true;
$errormsg = $reihungstest->errormsg;
}
}
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='AufnahmeTermineSaveGesamtpunkte')
{
//Speichert einen Aufnahmetermin einer Person
if(isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']))
{
$prestudent = new prestudent();
if(!$prestudent->load($_POST['prestudent_id']))
{
$return = false;
$error = true;
$errormsg = $prestudent->errormsg;
}
else
{
if(!$rechte->isBerechtigt('admin', $prestudent->studiengang_kz, 'suid') && !$rechte->isBerechtigt('assistenz', $prestudent->studiengang_kz, 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$punkte = str_replace(',','.',$_POST['punkte']);
$reihungstestangetreten = ($_POST['reihungstestangetreten']=='true'?true:false);
$prestudent->punkte = $punkte;
$prestudent->reihungstestangetreten = $reihungstestangetreten;
$prestudent->aufnahmegruppe_kurzbz = $_POST['aufnahmegruppe_kurzbz'];
$prestudent->new=false;
if($prestudent->save())
{
$return = true;
$error = false;
$errormsg = 'Erfolgreich gespeichert';
}
else
{
$return = false;
$error = true;
$errormsg = $reihungstest->errormsg;
}
}
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='AufnahmeTermineBerechneGesamtpunkte')
{
//Speichert einen Aufnahmetermin einer Person
if(isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id']))
{
$prestudent = new prestudent();
if(!$prestudent->load($_POST['prestudent_id']))
{
$return = false;
$error = true;
$errormsg = $prestudent->errormsg;
}
else
{
if(!$rechte->isBerechtigt('admin', $prestudent->studiengang_kz, 'suid') && !$rechte->isBerechtigt('assistenz', $prestudent->studiengang_kz, 'suid'))
{
$return = false;
$error = true;
}
else
{
$gesamtpunkte_arr = array();
$reihungstest = new reihungstest();
if($reihungstest->getReihungstestPerson($prestudent->person_id))
{
foreach($reihungstest->result as $row)
{
$studienplan = new studienplan();
if($studienplan->loadStudienplan($row->studienplan_id))
{
$studienordnung = new studienordnung();
if($studienordnung->loadStudienordnung($studienplan->studienordnung_id))
{
if($studienordnung->studiengang_kz == $prestudent->studiengang_kz)
{
$rt_obj = new reihungstest();
$rt_obj->load($row->reihungstest_id);
if(!isset($gesamtpunkte_arr[$rt_obj->studiensemester_kurzbz]))
$gesamtpunkte_arr[$rt_obj->studiensemester_kurzbz]=0;
$gesamtpunkte_arr[$rt_obj->studiensemester_kurzbz] += $row->punkte;
}
}
else
{
$return = false;
$errormsg = $studienordnung->errormsg;
$error = true;
}
}
else
{
$return = false;
$errormsg = $studienplan->errormsg;
$error = true;
}
}
if(!$error)
{
if(count(array_keys($gesamtpunkte_arr))>0)
{
$studiensemester = new studiensemester();
$stsem = $studiensemester->getYoungestFromArray(array_keys($gesamtpunkte_arr));
$gesamtpunkte = $gesamtpunkte_arr[$stsem];
}
else
$gesamtpunkte = '0';
$return = true;
$error = false;
$data = $gesamtpunkte;
$errormsg = 'Erfolgreich gespeichert';
}
}
else
{
$return = false;
$error = true;
$errormsg = $reihungstest->errormsg;
}
}
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Falsche Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='savemobilitaet')
{
// Speichert Mobilitaet/Gemeinsames Studium
$prestudent_id = $_POST['prestudent_id'];
$prestudent_obj = new prestudent();
$prestudent_obj->load($prestudent_id);
if(!$rechte->isBerechtigt('student/stammdaten', $prestudent_obj->studiengang_kz, 'suid'))
{
$return = false;
$error = true;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
$mob = new mobilitaet();
$error = false;
if(isset($_POST['mobilitaet_id']))
{
$mobilitaet_id = $_POST['mobilitaet_id'];
if(!$mob->load($mobilitaet_id))
{
$error=true;
$errormsg = $mob->errormsg;
}
}
else
{
$mob->new = true;
$mob->inservon = $user;
}
if(isset($_POST['studiensemester_kurzbz'])
&& isset($_POST['mobilitaetsprogramm_code'])
&& isset($_POST['gsprogramm_id'])
&& isset($_POST['mobilitaetstyp_kurzbz'])
&& isset($_POST['firma_id'])
&& isset($_POST['status_kurzbz'])
&& isset($_POST['ausbildungssemester']))
{
$studiensemester_kurzbz = $_POST['studiensemester_kurzbz'];
$mobilitaetsprogramm_code = $_POST['mobilitaetsprogramm_code'];
$gsprogramm_id = $_POST['gsprogramm_id'];
$mobilitaetstyp_kurzbz = $_POST['mobilitaetstyp_kurzbz'];
$firma_id = $_POST['firma_id'];
$status_kurzbz = $_POST['status_kurzbz'];
$ausbildungssemester = $_POST['ausbildungssemester'];
}
else
{
$error = true;
$errormsg = 'Fehlerhafte Parameteruebergabe';
$return = false;
}
if(!$error)
{
$mob->prestudent_id = $prestudent_id;
$mob->studiensemester_kurzbz = $studiensemester_kurzbz;
$mob->mobilitaetsprogramm_code = $mobilitaetsprogramm_code;
$mob->gsprogramm_id = $gsprogramm_id;
$mob->mobilitaetstyp_kurzbz = $mobilitaetstyp_kurzbz;
$mob->firma_id = $firma_id;
$mob->status_kurzbz = $status_kurzbz;
$mob->ausbildungssemester = $ausbildungssemester;
$mob->updatevon = $user;
if($mob->save())
{
$return = true;
$data = $mob->mobilitaet_id;
}
else
{
$return = false;
$error = true;
$errormsg = $mob->errormsg;
}
}
else
{
$return = false;
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deletemobilitaet')
{
$mobilitaet_id = $_POST['mobilitaet_id'];
$mob = new mobilitaet();
if($mob->load($mobilitaet_id))
{
$prestudent = new prestudent();
if($prestudent->load($mob->prestudent_id))
{
if(!$rechte->isBerechtigt('student/stammdaten',$prestudent->studiengang_kz,'suid'))
{
$error = true;
$return = false;
$errormsg = 'Sie haben keine Berechtigung';
}
else
{
if($mob->delete($mobilitaet_id))
{
$return = true;
}
else
{
$errormsg = $mob->errormsg;
$return = false;
}
}
}
else
{
$error = true;
$return = false;
$errormsg = $prestudent->errormsg;
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
$errormsg = $mob->errormsg;
}
}
else
{
$return = false;
$errormsg = 'Unkown type: "'.$db->convert_html_chars($_POST['type']).'"';
$data = '';
}
}
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:NC="http://home.netscape.com/NC-rdf#"
xmlns:DBDML="http://www.technikum-wien.at/dbdml/rdf#"
>
<RDF:Seq RDF:about="http://www.technikum-wien.at/dbdml/msg">
<RDF:li>
<RDF:Description RDF:about="http://www.technikum-wien.at/dbdml/0" >
<DBDML:return>'.($return?'true':'false').'</DBDML:return>
<DBDML:errormsg><![CDATA['.$errormsg.']]></DBDML:errormsg>
<DBDML:warning><![CDATA['.$warning.']]></DBDML:warning>
<DBDML:data><![CDATA['.$data.']]></DBDML:data>
</RDF:Description>
</RDF:li>
</RDF:Seq>
</RDF:RDF>';
?>