Merge branch 'master' into 9503/csvExportProjektÜbersicht

This commit is contained in:
Andreas Österreicher
2020-12-15 09:48:42 +01:00
80 changed files with 5504 additions and 3605 deletions
+19 -3
View File
@@ -43,6 +43,7 @@ class adresse extends basis_db
public $typ; // string
public $heimatadresse; // boolean
public $zustelladresse; // boolean
public $coname; // string
public $firma_id; // integer
public $updateamum; // timestamp
public $updatevon; // string
@@ -51,6 +52,7 @@ class adresse extends basis_db
public $ext_id; // integer
public $rechnungsadresse=false; // boolean
public $anmerkung; // string
public $co_name;
/**
* Konstruktor
@@ -99,6 +101,7 @@ class adresse extends basis_db
$this->person_id = $row->person_id;
$this->plz = $row->plz;
$this->strasse = $row->strasse;
$this->co_name = $row->co_name;
$this->typ = $row->typ;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
@@ -161,6 +164,7 @@ class adresse extends basis_db
$adr_obj->insertamum = $row->insertamum;
$adr_obj->insertvon = $row->insertvon;
$adr_obj->zustelladresse = $this->db_parse_bool($row->zustelladresse);
$adr_obj->co_name = $row->co_name;
$adr_obj->rechnungsadresse = $this->db_parse_bool($row->rechnungsadresse);
$adr_obj->anmerkung = $row->anmerkung;
@@ -217,6 +221,7 @@ class adresse extends basis_db
$adr_obj->insertamum = $row->insertamum;
$adr_obj->insertvon = $row->insertvon;
$adr_obj->zustelladresse = $this->db_parse_bool($row->zustelladresse);
$adr_obj->co_name = $row->co_name;
$adr_obj->rechnungsadresse = $this->db_parse_bool($row->rechnungsadresse);
$adr_obj->anmerkung = $row->anmerkung;
@@ -269,6 +274,12 @@ class adresse extends basis_db
return false;
}
if(mb_strlen($this->co_name)>64)
{
$this->errormsg = 'Gemeinde darf nicht länger als 64 Zeichen sein';
return false;
}
$this->errormsg = '';
return true;
}
@@ -289,7 +300,7 @@ class adresse extends basis_db
{
//Neuen Datensatz einfuegen
$qry='BEGIN;INSERT INTO public.tbl_adresse (person_id, name, strasse, plz, typ, ort, nation, insertamum, insertvon,
gemeinde, heimatadresse, zustelladresse, firma_id, updateamum, updatevon, rechnungsadresse, anmerkung) VALUES('.
gemeinde, heimatadresse, zustelladresse, firma_id, updateamum, updatevon, rechnungsadresse, anmerkung, co_name) VALUES('.
$this->db_add_param($this->person_id, FHC_INTEGER).', '.
$this->db_add_param($this->name).', '.
$this->db_add_param($this->strasse).', '.
@@ -304,7 +315,8 @@ class adresse extends basis_db
$this->db_add_param($this->firma_id, FHC_INTEGER).', now(), '.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->rechnungsadresse, FHC_BOOLEAN, false).','.
$this->db_add_param($this->anmerkung).');';
$this->db_add_param($this->anmerkung).','.
$this->db_add_param($this->co_name).');';
}
else
{
@@ -314,6 +326,7 @@ class adresse extends basis_db
$this->errormsg = 'adresse_id muss eine gueltige Zahl sein';
return false;
}
$qry='UPDATE public.tbl_adresse SET'.
' person_id='.$this->db_add_param($this->person_id, FHC_INTEGER).', '.
' name='.$this->db_add_param($this->name).', '.
@@ -329,7 +342,8 @@ class adresse extends basis_db
' heimatadresse='.$this->db_add_param($this->heimatadresse, FHC_BOOLEAN, false).', '.
' zustelladresse='.$this->db_add_param($this->zustelladresse, FHC_BOOLEAN, false).', '.
' rechnungsadresse='.$this->db_add_param($this->rechnungsadresse, FHC_BOOLEAN, false).','.
' anmerkung='.$this->db_add_param($this->anmerkung).' '.
' anmerkung='.$this->db_add_param($this->anmerkung).', '.
' co_name='.$this->db_add_param($this->co_name).' '.
'WHERE adresse_id='.$this->db_add_param($this->adresse_id, FHC_INTEGER, false).';';
}
@@ -442,6 +456,7 @@ class adresse extends basis_db
$this->firma_id = $row->firma_id;
$this->rechnungsadresse = $this->db_parse_bool($row->rechnungsadresse);
$this->anmerkung = $row->anmerkung;
$this->co_name = $row->co_name;
}
else
{
@@ -498,6 +513,7 @@ class adresse extends basis_db
$adr_obj->zustelladresse = $this->db_parse_bool($row->zustelladresse);
$adr_obj->rechnungsadresse = $this->db_parse_bool($row->rechnungsadresse);
$adr_obj->anmerkung = $row->anmerkung;
$adr_obj->co_name = $row->co_name;
$this->result[] = $adr_obj;
}
+13 -4
View File
@@ -407,7 +407,7 @@ class betriebsmittel extends basis_db
* @param $nummer
* @return boolean
*/
public function getBetriebsmittel($betriebsmitteltyp, $nummer)
public function getBetriebsmittel($betriebsmitteltyp, $nummer, $nummer2 = null)
{
// Initialisieren
$this->result=array();
@@ -415,7 +415,16 @@ class betriebsmittel extends basis_db
$qry= 'SELECT * ';
$qry.= ' FROM wawi.tbl_betriebsmittel ';
$qry.= " WHERE betriebsmitteltyp=".$this->db_add_param($betriebsmitteltyp)." AND nummer=".$this->db_add_param($nummer);
$qry.= " WHERE betriebsmitteltyp=".$this->db_add_param($betriebsmitteltyp);
if (is_null($nummer2))
{
$qry.= " AND nummer=".$this->db_add_param($nummer);
}
else
{
$qry.= " AND nummer2=".$this->db_add_param($nummer2);
}
$qry.= ' ORDER BY updateamum DESC';
if($this->db_query($qry))
@@ -1222,7 +1231,7 @@ class betriebsmittel extends basis_db
{
$this->result='';
$this->errormsg = '';
$qry ="SELECT * FROM wawi.tbl_betriebsmittelperson WHERE uid =".$this->db_add_param($uid, FHC_STRING)."
AND betriebsmittel_id IN(
SELECT betriebsmittel_id
@@ -1252,7 +1261,7 @@ class betriebsmittel extends basis_db
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
/**
@@ -368,6 +368,47 @@ class betriebsmittel_betriebsmittelstatus extends basis_db
$this->errormsg = 'Fehler beim Entfernen des Betriebsmittel Betriebsmittelstatus-Datensatzes';
return false;
}
}
}
/**
* Laedt den letzten Stauts eines Betriebsmittels
* @param $betriebsmittel_id
* @return betriebsmittelstatus_kurzbz wenn ok, false im Fehlerfall
*/
public function load_last_status_by_betriebsmittel_id($betriebsmittel_id)
{
$this->result=array();
$this->errormsg='';
if ($betriebsmittel_id)
$this->betriebsmittel_id=$betriebsmittel_id;
if(!is_numeric($this->betriebsmittel_id))
{
$this->errormsg = 'Betriebsmittel_id ist ungueltig';
return false;
}
$qry=' SELECT * FROM wawi.tbl_betriebsmittel_betriebsmittelstatus
WHERE betriebsmittel_id='.$this->db_add_param(trim($this->betriebsmittel_id), FHC_INTEGER).'
ORDER BY betriebsmittelbetriebsmittelstatus_id DESC LIMIT 1';
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
return $row->betriebsmittelstatus_kurzbz;
}
else
{
$this->errormsg='Es wurde kein Eintrag gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+1 -1
View File
@@ -595,7 +595,7 @@ class betriebsmittelperson extends basis_db
FROM
wawi.tbl_betriebsmittel
JOIN wawi.tbl_betriebsmittelperson USING(betriebsmittel_id)
WHERE tbl_betriebsmittel.nummer='.$this->db_add_param($nummer).'
WHERE tbl_betriebsmittel.nummer2='.$this->db_add_param($nummer).'
AND tbl_betriebsmittel.betriebsmitteltyp=\'Zutrittskarte\'
AND tbl_betriebsmittelperson.person_id='.$this->db_add_param($person_id);
+168 -1
View File
@@ -188,6 +188,7 @@ class dvb extends basis_db
AND tbl_benutzer.aktiv
AND tbl_prestudentstatus.status_kurzbz in('Student','Incoming')
AND tbl_prestudent.bismelden
AND tbl_prestudent.studiengang_kz<10000
ORDER BY tbl_prestudentstatus.datum desc LIMIT 1
";
@@ -1012,6 +1013,134 @@ class dvb extends basis_db
}
}
public function setMatrikelnummerErnp($bildungseinrichtung, $person, $reisepass)
{
$this->debug('ernpMeldung');
$uuid = $this->getUUID();
if ($this->tokenIsExpired())
{
$result = $this->authenticate();
if (ErrorHandler::isError($result))
return ErrorHandler::error();
}
$data = '<?xml version="1.0" encoding="UTF-8"?>';
$data .= '<matrikelnummernmeldung xmlns="http://www.brz.gv.at/datenverbund-unis">
<uuid>'.$uuid.'</uuid>';
$data .= $this->getPersonmeldungXml($bildungseinrichtung, $person);
$data .= '
<ernpmeldung xmlns="http://www.brz.gv.at/datenverbund-unis">
<ausgabedatum>'.$reisepass->ausgabedatum.'</ausgabedatum>
<ausstellBehoerde>'.$reisepass->ausstellBehoerde.'</ausstellBehoerde>
<ausstellland>'.$reisepass->ausstellland.'</ausstellland>
<dokumentnr>'.$reisepass->dokumentnr.'</dokumentnr>
<dokumenttyp>'.$reisepass->dokumenttyp.'</dokumenttyp>
</ernpmeldung>
';
$data .= '</matrikelnummernmeldung>';
$curl = curl_init();
$url = self::DVB_URL_WEBSERVICE_MELDUNG;
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$headers = array(
'Accept: application/xml',
'Content-Type: application/xml',
'Authorization: Bearer '.$this->authentication->access_token,
'User-Agent: FHComplete',
'Connection: Keep-Alive',
'Expect:'
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$this->debug('Request URL:'.$url);
$this->debug('Request Data:'.$data);
$response = curl_exec($curl);
$curl_info = curl_getinfo($curl);
curl_close($curl);
$this->debug('Response: '.$curl_info['http_code']);
$this->debug('Response: '.print_r($response, true));
if ($curl_info['http_code'] == '200')
{
$dom = new DOMDocument();
$dom->loadXML($response);
$domnodes_fehlerliste = $dom->getElementsByTagName('fehlerliste');
$fehleranzahl = $domnodes_fehlerliste->item(0)->getAttribute('fehleranzahl');
if ($fehleranzahl === '0')
{
// Keine Fehler -> Meldung erfolgreich
$retval = new stdClass();
$retval->matrikelnummer = $person->matrikelnummer;
return ErrorHandler::success($retval);
}
else
{
$this->errormsg = 'Es gab '.$fehleranzahl.' Fehler:';
$domnodes_fehler = $dom->getElementsByTagName('fehler');
foreach ($domnodes_fehler as $row)
{
$fehlernummer = $row->getElementsByTagName('fehlernummer');
/**
* Bei Fehlernummer ED10065 wurde die Matrikelnummer korrekt gesetzt.
* Das BPK wurde vom Datenverbund versucht zu ermitteln und wird in der Fehlermeldung
* zurückgeliefert. Dieses sollte dann gespeichert werden.
* Es muss eine erneute Vergabemeldung mit korrigierten Daten vorgenommen werden um die Daten im
* DVB zu aktualisieren
* Dies gilt nur, wenn ED10065 alleine geliefert wird und keine sonstigen Fehler auftreten
*/
if ($fehlernummer->length == 1 && $fehlernummer->item(0)->textContent == 'ED10065')
{
$this->debug('ED10065 Response');
$domnodes_feldinhalt = $row->getElementsByTagName('feldinhalt');
if ($domnodes_feldinhalt->length > 0 && $domnodes_feldinhalt->item(0)->textContent!='')
{
$bpk = $domnodes_feldinhalt->item(0)->textContent;
$retval = new stdClass();
$retval->matrikelnummer = $person->matrikelnummer;
if ($bpk != 'keine bPK gefunden')
$retval->bpk = $bpk;
$this->errormsg .= 'ED10065 Response';
$this->errormsg .= 'Eine Personendatenprüfung ist erforderlich';
$this->errormsg .= 'Danach muss eine erneute Vergabemeldung mit dieser Matrikelnummer erfolgen.';
$this->debug('BPK:'.$bpk);
$this->debug('MatrNr:'.$person->matrikelnummer);
return ErrorHandler::success($retval);
}
}
else
{
$datenfeld = $row->getElementsByTagName('datenfeld');
$fehlertext = $row->getElementsByTagName('fehlertext');
$this->errormsg .= ' Datenfeld:'.$datenfeld->item(0)->textContent;
$this->errormsg .= ' Fehlertext:'.$fehlertext->item(0)->textContent;
}
}
return ErrorHandler::error();
}
}
else
{
$errormsg = 'Request Failed with HTTP Code:'.$curl_info['http_code'].' and Response:'.$response;
return ErrorHandler::error($errormsg);
}
}
/**
* Get BPK from Person
* @param string $person_id ID of the Person.
@@ -1608,8 +1737,11 @@ class dvb extends basis_db
$curl = curl_init();
$url = self::DVB_URL_WEBSERVICE_MATRIKELNUMMER;
$uuid = $this->getUUID();
$url = self::DVB_URL_WEBSERVICE_MATRIKELNUMMER;
$url .= '?matrikelNummer='.curl_escape($curl, $matrikelnr);
$url .= '&uuid='.curl_escape($curl, $uuid);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
@@ -1733,6 +1865,41 @@ class dvb extends basis_db
$this->debug_output .= "\n".date('Y-m-d H:i:s').': '.$msg;
}
private function getPersonmeldungXml($bildungseinrichtung, $person)
{
$gebdat = str_replace("-", "", $person->geburtsdatum);
$data = '<personmeldung xmlns="http://www.brz.gv.at/datenverbund-unis">
<be>'.$bildungseinrichtung.'</be>
<gebdat>'.$gebdat.'</gebdat>
<geschlecht>'.$person->geschlecht.'</geschlecht>
<matrikelnummer>'.$person->matrikelnummer.'</matrikelnummer>';
if (isset($person->matura) && $person->matura != '')
$data .= '<matura>'.$person->matura.'</matura>';
else
$data .= '<matura>00000000</matura>';
$data .= '<nachname>'.$person->nachname.'</nachname>';
if (isset($person->plz) && $person->plz != '')
$data .= '<plz>'.$person->plz.'</plz>';
$data .= '<staat>'.$person->staat.'</staat>';
if (isset($person->svnr) && $person->svnr != '')
$data .= '<svnr>'.$person->svnr.'</svnr>';
$data .= '<vorname>'.$person->vorname.'</vorname>';
if (isset($person->writeonerror) && $person->writeonerror === true)
$data .= '<writeOnError>J</writeOnError>';
$data .= '
</personmeldung>';
return $data;
}
/**
* Erstellt einen Logeintrag
* @param object $person Personen objekt.
+30 -1
View File
@@ -374,7 +374,7 @@ class person extends basis_db
$this->errormsg = 'Staatsbuergerschaft darf nicht laenger als 3 Zeichen sein';
return false;
}
//Pruefen ob das Geburtsdatum mit der SVNR uebereinstimmt.
if ($this->svnr != '' && $this->gebdatum != '')
{
@@ -1018,4 +1018,33 @@ class person extends basis_db
return false;
}
}
public function getFullNameFromBenutzer($uid)
{
$qry = "SELECT
vorname, nachname
FROM
public.tbl_person
JOIN public.tbl_benutzer USING(person_id)
WHERE
uid=".$this->db_add_param($uid, FHC_STRING);
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
return (string)$row->vorname.' '.$row->nachname;
}
else
{
$this->errormsg = 'Keine Personendaten zu dieser UID gefunden';
return false;
}
}
else
{
$this->errormsg = "Fehler beim Laden der Personendaten";
return false;
}
}
}
+19 -2
View File
@@ -590,7 +590,7 @@ class pruefungCis extends basis_db
* @param String|Array $lehrveranstaltung_IDs einzelne ID einer Lehrveranstaltung oder ein Array von IDs
* @return boolean true, wenn ok; false, im Fehlerfall
*/
public function getPruefungByLv($lehrveranstaltung_IDs)
public function getPruefungByLv($lehrveranstaltung_IDs, $uid = null)
{
if(empty($lehrveranstaltung_IDs))
{
@@ -612,7 +612,24 @@ class pruefungCis extends basis_db
$in = $lehrveranstaltung_IDs;
}
$qry = 'SELECT * FROM campus.tbl_lehrveranstaltung_pruefung WHERE lehrveranstaltung_id IN ('.$in.');';
$qry = 'SELECT * FROM campus.tbl_lehrveranstaltung_pruefung WHERE lehrveranstaltung_id IN ('.$in.')';
if ($uid !== null)
{
// LVs entfernen wo schon eine positive Note für UID vorhanden ist
$qry .= " AND lehrveranstaltung_id NOT IN (
SELECT lehrveranstaltung_id
FROM lehre.tbl_pruefung
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE student_uid = " . $this->db_add_param($uid) . "
AND note NOT IN (5, 7, 9, 11, 13, 14)
UNION
SELECT lehrveranstaltung_id
FROM lehre.tbl_zeugnisnote
WHERE student_uid = " . $this->db_add_param($uid) . "
AND note NOT IN (5, 7, 9, 11, 13, 14)
);";
}
if($this->db_query($qry))
{
+17 -17
View File
@@ -287,7 +287,7 @@ class studiensemester extends basis_db
$qry.= " WHERE substring(studiensemester_kurzbz from 1 for 2)='$ss' ";
}
$qry.=' ORDER BY delta LIMIT 1';
$qry.=' ORDER BY delta, start LIMIT 1';
if(!$this->db_query($qry))
{
@@ -573,7 +573,7 @@ class studiensemester extends basis_db
{
$qry = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester
WHERE studiensemester_kurzbz<>".$this->db_add_param($studiensemester_kurzbz)."
ORDER BY delta LIMIT 1";
ORDER BY delta, start LIMIT 1";
if($this->db_query($qry))
{
@@ -907,13 +907,13 @@ class studiensemester extends basis_db
ORDER BY ende ASC";
if ($plus != '')
$qry .= " LIMIT ".$this->db_add_param($plus, FHC_INTEGER);
$qry .= ") UNION
(SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start <= now()
ORDER BY start DESC ";
if ($minus != '')
$qry .= " LIMIT ".$this->db_add_param($minus, FHC_INTEGER);
$qry .= ")) ORDER BY ".$order;
if($this->db_query($qry))
@@ -967,7 +967,7 @@ class studiensemester extends basis_db
FROM tbl_studiensemester
) a
WHERE a.studiensemester_kurzbz!=".$this->db_add_param($studiensemester_kurzbz)."
ORDER BY delta LIMIT 1";
ORDER BY delta, start LIMIT 1";
if($this->db_query($qry))
{
@@ -1029,7 +1029,7 @@ class studiensemester extends basis_db
return false;
}
}
/**
* Gibt das Wintersemester eines Studienjahres zurück (zb WS2017)
*
@@ -1040,10 +1040,10 @@ class studiensemester extends basis_db
{
$qry = "
SELECT studiensemester_kurzbz
FROM tbl_studiensemester
FROM tbl_studiensemester
WHERE studienjahr_kurzbz LIKE " . $this->db_add_param($studienjahr_kurzbz) . "
AND studiensemester_kurzbz LIKE 'WS%';";
if ($result = $this->db_query($qry))
{
if ($row = $this->db_fetch_object())
@@ -1063,7 +1063,7 @@ class studiensemester extends basis_db
return false;
}
}
/**
* Gibt das Sommersemester eines Studienjahres zurück (zb SS2018)
*
@@ -1074,10 +1074,10 @@ class studiensemester extends basis_db
{
$qry = "
SELECT studiensemester_kurzbz
FROM tbl_studiensemester
FROM tbl_studiensemester
WHERE studienjahr_kurzbz LIKE " . $this->db_add_param($studienjahr_kurzbz) . "
AND studiensemester_kurzbz LIKE 'SS%';";
if ($result = $this->db_query($qry))
{
if ($row = $this->db_fetch_object())
@@ -1097,7 +1097,7 @@ class studiensemester extends basis_db
return false;
}
}
/**
* Gibt die Studiensemester zwischen $studiensemesterStart und $studiensemesterEnde zurück
* Wenn $inklusive true ist (default), werden auch $studiensemesterStart und $studiensemesterEnde selbst zurückgegeben
@@ -1116,7 +1116,7 @@ class studiensemester extends basis_db
}
if ($inklusive = true)
$equalSign = '=';
else
else
$equalSign = '';
$qry = "
SELECT *
@@ -1132,13 +1132,13 @@ class studiensemester extends basis_db
WHERE studiensemester_kurzbz = " . $this->db_add_param($studiensemesterEnde) . "
)
ORDER BY start DESC;";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$stsem_obj = new studiensemester();
$stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$stsem_obj->start = $row->start;
$stsem_obj->ende = $row->ende;
@@ -1146,7 +1146,7 @@ class studiensemester extends basis_db
$stsem_obj->studienjahr_kurzbz = $row->studienjahr_kurzbz;
$stsem_obj->beschreibung = $row->beschreibung;
$stsem_obj->onlinebewerbung = $row->onlinebewerbung;
$this->studiensemester[] = $stsem_obj;
}
return true;
@@ -1158,4 +1158,4 @@ class studiensemester extends basis_db
}
}
}
?>
?>
+9
View File
@@ -510,6 +510,15 @@ class zeitsperre extends basis_db
}
}
public function getVonDatum()
{
return $this->vondatum;
}
public function getBisDatum()
{
return $this->bisdatum;
}
}
?>