This commit is contained in:
Cris
2024-03-05 13:05:03 +01:00
15 changed files with 712 additions and 32 deletions
+165
View File
@@ -0,0 +1,165 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
require_once('schedulers/ESIScheduler.php');
/**
* Controller for initialising generateESI job
*/
class ESIJob extends JQW_Controller
{
const ESI_PREFIX = 'urn:schac:personalUniqueCode:int:esi:at:';
const INSERT_VON = 'generateEsiJob';
/**
* Controller initialization
*/
public function __construct()
{
parent::__construct();
// load models
$this->load->model('person/Person_model', 'PersonModel');
$this->load->model('person/Kennzeichen_model', 'KennzeichenModel');
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Initialises generateESI job, handles job queue, logs infos/errors
*/
public function generateESI()
{
//$jobType = 'DVUHSendPruefungsaktivitaeten';
$this->logInfo(ESIScheduler::JOB_TYPE_GENERATE_ESI.' job start');
// Gets the latest jobs
$lastJobs = $this->getLastJobs(ESIScheduler::JOB_TYPE_GENERATE_ESI);
if (isError($lastJobs))
{
$this->logError(getCode($lastJobs).': '.getError($lastJobs), ESIScheduler::JOB_TYPE_GENERATE_ESI);
}
else
{
$this->updateJobs(
getData($lastJobs), // Jobs to be updated
array(JobsQueueLib::PROPERTY_START_TIME), // Job properties to be updated
array(date('Y-m-d H:i:s')) // Job properties new values
);
$person_arr = $this->_getInputObjArray(getData($lastJobs));
foreach ($person_arr as $persobj)
{
if (!isset($persobj->person_id))
$this->logError("Error when generating ESI: invalid parameters");
else
{
$person_id = $persobj->person_id;
// check if there already is an active ESI
$this->KennzeichenModel->addSelect('1');
$activeKennzeichenRes = $this->KennzeichenModel->loadWhere(
array('person_id' => $person_id, 'kennzeichentyp_kurzbz' => ESIScheduler::KENNZEICHENTYP_KURZBZ, 'aktiv' => true)
);
if (hasData($activeKennzeichenRes))
{
$this->logError("Active ESI for person Id $person_id already exists");
continue;
}
// get Matrikelnr for person for which ESI should be generated
$this->PersonModel->addSelect('matr_nr');
$personRes = $this->PersonModel->load($person_id);
if (!hasData($personRes))
{
$this->logError("Person with Id $person_id not found");
continue;
}
$matr_nr = getData($personRes)[0]->matr_nr;
if (isEmptyString($matr_nr))
{
$this->logError("Matrikelnummer for person with Id $person_id is empty");
continue;
}
$esi = self::ESI_PREFIX.$matr_nr;
// check if ESI was already used
$this->KennzeichenModel->addSelect('1');
$existingKennzeichenRes = $this->KennzeichenModel->loadWhere(
array('person_id' => $person_id, 'kennzeichentyp_kurzbz' => ESIScheduler::KENNZEICHENTYP_KURZBZ, 'inhalt' => $esi)
);
if (hasData($existingKennzeichenRes))
{
$this->logError("ESI $esi for person Id $person_id already exists");
continue;
}
// if everything ok, save the esi for the person
$saveEsiResult = $this->KennzeichenModel->insert(
array(
'person_id' => $person_id,
'kennzeichentyp_kurzbz' => ESIScheduler::KENNZEICHENTYP_KURZBZ,
'inhalt' => $esi,
'aktiv' => true,
'insertvon' => self::INSERT_VON
)
);
if (isError($saveEsiResult))
{
$this->logError("Error when sending ESI, person Id $person_id ".getError($saveEsiResult));
}
}
}
// Update jobs properties values
$this->updateJobs(
getData($lastJobs), // Jobs to be updated
array(JobsQueueLib::PROPERTY_STATUS, JobsQueueLib::PROPERTY_END_TIME), // Job properties to be updated
array(JobsQueueLib::STATUS_DONE, date('Y-m-d H:i:s')) // Job properties new values
);
if (hasData($lastJobs)) $this->updateJobsQueue(ESIScheduler::JOB_TYPE_GENERATE_ESI, getData($lastJobs));
}
$this->logInfo(ESIScheduler::JOB_TYPE_GENERATE_ESI.' job stop');
}
// --------------------------------------------------------------------------------------------
// Private methods
/**
* Extracts input data from jobs.
* @param $jobs
* @return array with jobinput
*/
private function _getInputObjArray($jobs)
{
$mergedUsersArray = array();
if (count($jobs) == 0) return $mergedUsersArray;
foreach ($jobs as $job)
{
$decodedInput = json_decode($job->input);
if ($decodedInput != null)
{
foreach ($decodedInput as $el)
{
$mergedUsersArray[] = $el;
}
}
}
return $mergedUsersArray;
}
}
@@ -0,0 +1,108 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* Scheduler for generating ESI (European Student Identifier)
*/
class ESIScheduler extends JQW_Controller
{
const JOB_TYPE_GENERATE_ESI = 'generateESI';
const KENNZEICHENTYP_KURZBZ = 'esi';
private $_active_status_kurzbz = array('Student', 'Diplomand');
/**
* Controller initialization
*/
public function __construct()
{
parent::__construct();
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Creates jobs queue entries for generateESI job.
* @param string $studiensemester_kurzbz semester for which ESIs should be generated
*/
public function generateESI($studiensemester_kurzbz = null)
{
// if no semester given, get current studiensemester
if (!isset($studiensemester_kurzbz))
{
$semRes = $this->StudiensemesterModel->getAkt();
if (hasData($semRes))
{
$studiensemester_kurzbz = getData($semRes)[0]->studiensemester_kurzbz;
}
}
if (isset($studiensemester_kurzbz))
{
$this->logInfo('Start job queue scheduler '.self::JOB_TYPE_GENERATE_ESI);
$qry = "
SELECT
DISTINCT person_id
FROM
public.tbl_person pers
JOIN public.tbl_prestudent ps USING (person_id)
JOIN public.tbl_prestudentstatus pss USING (prestudent_id)
WHERE
pss.studiensemester_kurzbz = ?
AND pers.matr_nr IS NOT NULL
AND pss.status_kurzbz IN ?
AND NOT EXISTS ( -- has no ESI yet
SELECT 1
FROM
public.tbl_kennzeichen
WHERE
person_id = pers.person_id
AND kennzeichentyp_kurzbz = ?
AND aktiv
)
AND NOT EXISTS ( -- making sure it's not an incoming
SELECT 1
FROM
public.tbl_prestudentstatus
WHERE
prestudent_id = ps.prestudent_id
AND status_kurzbz = 'Incoming'
)";
$db = new DB_Model();
$jobInputResult = $db->execReadOnlyQuery($qry, array($studiensemester_kurzbz, $this->_active_status_kurzbz, self::KENNZEICHENTYP_KURZBZ));
// If an error occured then log it
if (isError($jobInputResult))
{
$this->logError(getError($jobInputResult));
}
elseif (hasData($jobInputResult)) // if persons found
{
// Add the new job to the jobs queue
$addNewJobResult = $this->addNewJobsToQueue(
self::JOB_TYPE_GENERATE_ESI, // job type
$this->generateJobs( // gnerate the structure of the new job
JobsQueueLib::STATUS_NEW,
json_encode(getData($jobInputResult))
)
);
// If error occurred return it
if (isError($addNewJobResult)) $this->logError(getError($addNewJobResult));
}
}
else
{
$this->logError('Error when getting Studiensemester');
}
$this->logInfo('End job queue scheduler '.self::JOB_TYPE_GENERATE_ESI);
}
}
@@ -0,0 +1,15 @@
<?php
class Kennzeichen_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'public.tbl_kennzeichen';
$this->pk = 'kennzeichen_id';
}
}
+16 -7
View File
@@ -114,12 +114,15 @@ else
$format_highlight->setFgColor(15);
$format_highlight->setBorder(1);
$format_highlight->setBorderColor('white');
$format_highlight->setAlign('left');
$format_highlight->setNumFormat(49);
$format_highlightright=& $workbook->addFormat();
$format_highlightright->setFgColor(15);
$format_highlightright->setBorder(1);
$format_highlightright->setBorderColor('white');
$format_highlightright->setAlign('right');
$format_highlightright->setNumFormat(49);
$format_highlightright_date=& $workbook->addFormat();
$format_highlightright_date->setFgColor(15);
@@ -318,17 +321,23 @@ else
$worksheet->write($lines,1,$elem->uid);
$worksheet->write($lines,2,$elem->nachname.$inc);
$worksheet->write($lines,3,$elem->vorname);
//wenn Wahlname vorhanden überschreibt dieser den Vornamen
$worksheet->write($lines,3,$elem->wahlname);
$worksheet->write($lines,4,'="'.$elem->semester.$elem->verband.$elem->gruppe.'"');
$worksheet->write($lines,5,'="'.trim($elem->matrikelnr).'"',$format_highlight);
if( NULL !== $elem->wahlname )
{
//wenn Wahlname vorhanden überschreibt dieser den Vornamen
$worksheet->write($lines,3,$elem->wahlname);
}
else
{
$worksheet->write($lines,3,$elem->vorname);
}
$worksheet->write($lines,4,$elem->semester.$elem->verband.$elem->gruppe);
$worksheet->write($lines,5,trim($elem->matrikelnr),$format_highlight);
$worksheet->write($lines,6, $note, $format_highlightright);
// Nachprüfung
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
{
$worksheet->write($lines,8, '="'.trim($elem->matrikelnr).'"', $format_highlight);
$worksheet->write($lines,8, trim($elem->matrikelnr), $format_highlight);
$pr = new Pruefung();
$pr->getPruefungen($elem->uid, "Termin2", $lvid, $sem);
$output2 = $pr->result;
@@ -349,7 +358,7 @@ else
// Nachprüfung
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
{
$worksheet->write($lines,12, '="'.trim($elem->matrikelnr).'"', $format_highlight);
$worksheet->write($lines,12, trim($elem->matrikelnr), $format_highlight);
$pr = new Pruefung();
$pr->getPruefungen($elem->uid, "Termin3", $lvid, $sem);
$output3 = $pr->result;
+10 -1
View File
@@ -283,7 +283,7 @@ define('FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK', serialize(
'StudiengebuehrRestzahlung' => array('StudiengebuehrErhoeht', 'Studiengebuehr', 'StudiengebuehrRestzahlung'),
'OEH' => array('OEH')
))
));
);
// Spezialnoten die am Zeunigs und Diplomasupplement ignoriert werden
define('ZEUGNISNOTE_NICHT_ANZEIGEN',serialize(array('iar', 'nz')));
@@ -295,4 +295,13 @@ define ('DEFAULT_LEHRMODUS','regulaer');
//Echter Dienstvertrag
define ('DEFAULT_ECHTER_DIENSTVERTRAG',[103,110]);
//Buchungstypen die fix auf eine bestimmte Kostenstelle gebucht werden sollen
//Buchungstyp => Studiengang_kz
define('FAS_BUCHUNGSTYP_FIXE_KOSTENSTELLE', serialize(
array(
'Test_1' => 0,
'Test_2' => 2
)
));
?>
@@ -64,7 +64,7 @@ $format_title->setAlign('merge');
//Zeilenueberschriften ausgeben
$headline = array('Typ der Projektarbeit','Titel der Projektarbeit','Student',
'Note','Punkte','Beginn','Ende','Freigegeben','Gesperrt bis','Gesamtstunden','Themenbereich',
'Note','Punkte','Beginn','Ende','Freigegeben','Gesperrt bis','Themenbereich',
'Anmerkung','Projektarbeit ID');
$i = 0;
@@ -81,7 +81,7 @@ $qry = "SELECT
trim(COALESCE(titelpre,'') || ' ' || COALESCE(vorname,'')
|| ' ' || COALESCE(nachname,'') || ' ' || COALESCE(titelpost,'')),
(SELECT anmerkung FROM lehre.tbl_note WHERE note=tbl_projektarbeit.note) as anmerkung, punkte, beginn,
ende, CASE WHEN freigegeben THEN 'Ja' ELSE 'Nein' END, gesperrtbis, gesamtstunden, themenbereich,
ende, CASE WHEN freigegeben THEN 'Ja' ELSE 'Nein' END, gesperrtbis, themenbereich,
tbl_projektarbeit.anmerkung, projektarbeit_id
FROM
lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung,
+4 -1
View File
@@ -2584,13 +2584,16 @@ if(!$error)
}
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 = $_POST['studiengang_kz'];
$buchung->studiengang_kz = isset($kostenstelle) ? $kostenstelle : $_POST['studiengang_kz'];
$buchung->studiensemester_kurzbz = $_POST['studiensemester_kurzbz'];
$buchung->buchungsnr_verweis='';
$buchung->betrag = $_POST['betrag'];
+7 -1
View File
@@ -1,4 +1,4 @@
@import '../../vendor/olifolkerd/tabulator5/dist/css/tabulator_bootstrap5.min.css';
@import '../../vendor/olifolkerd/tabulator5/dist/css/tabulator_simple.min.css';
/* Apply borders and background to Cell instead of the Row
* otherwise frozen columns won't look good (columns behind
@@ -38,3 +38,9 @@
.tabulator .tabulator-col-resize-handle:last-of-type {
z-index: 999999;
}
.tabulator-cell .btn {
padding: 0 .5rem;
max-height: 22px;
min-width: 30px;
}
+4 -5
View File
@@ -85,7 +85,6 @@ if(isset($_GET['prestudent']) && $_GET['prestudent']=='false')
else
$berechtigt_studiengang = array_merge($berechtigt_studiengang, $berechtigung->getStgKz('assistenz'));
//var_dump($berechtigung);
array_unique($berechtigt_studiengang);
$stg_kz_query='';
if (count($berechtigt_studiengang)>0)
@@ -382,13 +381,13 @@ function draw_orgformsubmenu($stg_kz, $orgform)
$orgform_sequence[$stg_kz].= "\n\t\t\t</RDF:li>\n";
$orgform_sequence[$stg_kz].= "\t\t\t<RDF:li>";
$orgform_sequence[$stg_kz].= "\n\t\t\t\t<RDF:Seq RDF:resource=\"$rdf_url$stg_kurzbz/$orgform/$stsem->studiensemester_kurzbz/bewerber\">\n";
$orgform_sequence[$stg_kz].= "\n\t\t\t\t<RDF:Seq RDF:about=\"$rdf_url$stg_kurzbz/$orgform/$stsem->studiensemester_kurzbz/bewerber\">\n";
$orgform_sequence[$stg_kz].= "\t\t\t<RDF:li RDF:resource=\"$rdf_url$stg_kurzbz/$orgform/$stsem->studiensemester_kurzbz/bewerber/reihungstestnichtangemeldet\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\t<RDF:li>";
$orgform_sequence[$stg_kz].= "\t\t\t<RDF:Seq RDF:about=\"$rdf_url$stg_kurzbz/$orgform/$stsem->studiensemester_kurzbz/bewerber/reihungstestangemeldet\">\n";
$orgform_sequence[$stg_kz].= "\t\t\t\t<RDF:li RDF:resource=\"$rdf_url$stg_kurzbz/$orgform/$stsem->studiensemester_kurzbz/bewerber/reihungstestangemeldet/reihungstestnichtangemeldet/teilgenommen\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\t\t<RDF:li RDF:resource=\"$rdf_url$stg_kurzbz/$orgform/$stsem->studiensemester_kurzbz/bewerber/reihungstestangemeldet/reihungstestnichtangemeldet/nichtteilgenommen\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\t\t<RDF:li RDF:resource=\"$rdf_url$stg_kurzbz/$orgform/$stsem->studiensemester_kurzbz/bewerber/reihungstestangemeldet/teilgenommen\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\t\t<RDF:li RDF:resource=\"$rdf_url$stg_kurzbz/$orgform/$stsem->studiensemester_kurzbz/bewerber/reihungstestangemeldet/nichtteilgenommen\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\t\t</RDF:Seq>";
$orgform_sequence[$stg_kz].= "\n\t\t\t</RDF:li>\n";
@@ -915,7 +914,7 @@ draw_orgformpart($stg_kz);
echo "\n\t\t\t</RDF:li>\n";
echo "\t\t\t<RDF:li>";
echo "\t\t\t\t<RDF:Seq RDF:about=\"$rdf_url$stg_kurzbz/$stsem->studiensemester_kurzbz/bewerber\">\n";
echo "\n\t\t\t\t<RDF:Seq RDF:about=\"$rdf_url$stg_kurzbz/$stsem->studiensemester_kurzbz/bewerber\">\n";
echo "\t\t\t\t<RDF:li RDF:resource=\"$rdf_url$stg_kurzbz/$stsem->studiensemester_kurzbz/bewerber/reihungstestnichtangemeldet\" />\n";
echo "\t\t\t<RDF:li>";
echo "\t\t\t\t<RDF:Seq RDF:about=\"$rdf_url$stg_kurzbz/$stsem->studiensemester_kurzbz/bewerber/reihungstestangemeldet\">\n";
+16 -4
View File
@@ -269,11 +269,23 @@ foreach($uid_arr as $uid)
echo "\t\t<studienplan_sprache><![CDATA[".$studienplan->sprache."]]></studienplan_sprache>\n";
echo "\t\t<regelstudiendauer><![CDATA[".$studienplan->regelstudiendauer."]]></regelstudiendauer>\n";
$akadgrad = new akadgrad();
$akadgrad->getAkadgradStudent($student->uid);
// Abschlussgrad ermitteln
// Erst aus Studienordnung, wenn nicht gesetzt aus akadgrad-Tabelle
echo "\t\t<akadgrad><![CDATA[".$akadgrad->titel."]]></akadgrad>\n";
echo "\t\t<akadgrad_kurzbz><![CDATA[".$akadgrad->akadgrad_kurzbz."]]></akadgrad_kurzbz>\n";
if ($studienordnung->akadgrad_id != '')
{
$akadgrad = new akadgrad($studienordnung->akadgrad_id);
echo "\t\t<akadgrad><![CDATA[".$akadgrad->titel."]]></akadgrad>\n";
echo "\t\t<akadgrad_kurzbz><![CDATA[".$akadgrad->akadgrad_kurzbz."]]></akadgrad_kurzbz>\n";
}
else
{
$akadgrad = new akadgrad();
$akadgrad->getAkadgradStudent($student->uid);
echo "\t\t<akadgrad><![CDATA[".$akadgrad->titel."]]></akadgrad>\n";
echo "\t\t<akadgrad_kurzbz><![CDATA[".$akadgrad->akadgrad_kurzbz."]]></akadgrad_kurzbz>\n";
}
//für ao. Studierende wird die StgKz der Lehrveranstaltungen benötigt, die sie besuchen
$lv_studiengang_kz='';
+16 -2
View File
@@ -50,12 +50,13 @@ require_once('dbupdate_3.4/29529_infocenter_anpassungen.php');
require_once('dbupdate_3.4/29835_uhstat1_erfassung_der_uhstat1_daten_ueber_das_bewerbungstool.php');
require_once('dbupdate_3.4/33714_erhoehter_studienbeitrag_fuer_drittsaatenangehoerig.php');
require_once('dbupdate_3.4/36275_zeitaufzeichnung_karenz.php');
require_once('dbupdate_3.4/21620_neues_feld_zum_erfassen_des_ESI.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
$tabellen=array(
"bis.tbl_abschluss" => array("ausbildung_code","abschluss_bez","bezeichnung","aktiv","in_oesterreich"),
"bis.tbl_bisorgform" => array("bisorgform_kurzbz","code","bezeichnung"),
"bis.tbl_archiv" => array("archiv_id","studiensemester_kurzbz","meldung","html","studiengang_kz","insertamum","insertvon","typ"),
"bis.tbl_aufenthaltfoerderung" => array("aufenthaltfoerderung_code", "bezeichnung"),
@@ -87,6 +88,7 @@ $tabellen=array(
"bis.tbl_nationengruppe" => array("nationengruppe_kurzbz","nationengruppe_bezeichnung","aktiv"),
"bis.tbl_oehbeitrag" => array("oehbeitrag_id","studierendenbeitrag","versicherung","von_studiensemester_kurzbz","bis_studiensemester_kurzbz","insertamum","insertvon","updateamum","updatevon"),
"bis.tbl_orgform" => array("orgform_kurzbz","code","bezeichnung","rolle","bisorgform_kurzbz","bezeichnung_mehrsprachig"),
"bis.tbl_uhstat1daten" => array("uhstat1daten_id", "mutter_geburtsstaat", "mutter_bildungsstaat", "mutter_geburtsjahr", "mutter_bildungmax", "vater_geburtsstaat", "vater_bildungsstaat", "vater_geburtsjahr", "vater_bildungmax", "person_id", "insertamum", "insertvon", "updateamum", "updatevon"),
"bis.tbl_verwendung" => array("verwendung_code","verwendungbez"),
"bis.tbl_zgv" => array("zgv_code","zgv_bez","zgv_kurzbz","bezeichnung","aktiv"),
"bis.tbl_zgvmaster" => array("zgvmas_code","zgvmas_bez","zgvmas_kurzbz","bezeichnung","aktiv"),
@@ -135,6 +137,10 @@ $tabellen=array(
"campus.tbl_pruefungsanmeldung" => array("pruefungsanmeldung_id","uid","pruefungstermin_id","lehrveranstaltung_id","status_kurzbz","wuensche","reihung","kommentar","statusupdatevon","statusupdateamum","anrechnung_id","pruefungstyp_kurzbz","insertamum"),
"campus.tbl_pruefungsstatus" => array("status_kurzbz","bezeichnung"),
"campus.tbl_reservierung" => array("reservierung_id","ort_kurzbz","studiengang_kz","uid","stunde","datum","titel","beschreibung","semester","verband","gruppe","gruppe_kurzbz","veranstaltung_id","insertamum","insertvon"),
"campus.tbl_studierendenantrag" => array("studierendenantrag_id","prestudent_id","studiensemester_kurzbz","datum","typ","insertamum","insertvon","datum_wiedereinstieg","grund","dms_id"),
"campus.tbl_studierendenantrag_lehrveranstaltung" => array("studierendenantrag_lehrveranstaltung_id","studierendenantrag_id","lehrveranstaltung_id","studiensemester_kurzbz","note","anmerkung","insertamum","insertvon"),
"campus.tbl_studierendenantrag_status" => array("studierendenantrag_status_id","studierendenantrag_id","studierendenantrag_statustyp_kurzbz","insertamum","insertvon", "grund"),
"campus.tbl_studierendenantrag_statustyp"=> array("studierendenantrag_statustyp_kurzbz","bezeichnung"),
"campus.tbl_studentbeispiel" => array("student_uid","beispiel_id","vorbereitet","probleme","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_studentuebung" => array("student_uid","mitarbeiter_uid","abgabe_id","uebung_id","note","mitarbeitspunkte","punkte","anmerkung","benotungsdatum","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_template" => array("template_kurzbz","bezeichnung","xsd","xslt_xhtml","xslfo_pdf"),
@@ -158,8 +164,12 @@ $tabellen=array(
"fue.tbl_ressource" => array("ressource_id","student_uid","mitarbeiter_uid","betriebsmittel_id","firma_id","bezeichnung","beschreibung","insertamum","insertvon","updateamum","updatevon"),
"fue.tbl_scrumteam" => array("scrumteam_kurzbz","bezeichnung","punkteprosprint","tasksprosprint","gruppe_kurzbz"),
"fue.tbl_scrumsprint" => array("scrumsprint_id","scrumteam_kurzbz","sprint_kurzbz","sprintstart","sprintende","insertamum","insertvon","updateamum","updatevon"),
"hr.tbl_audit_log" => array("audit_log_id","mtime","action","username","table_name","diff_data","row_data"),
"hr.tbl_sachaufwand" => array("sachaufwand_id","mitarbeiter_uid","sachaufwandtyp_kurzbz","dienstverhaeltnis_id","beginn","ende","anmerkung","insertamum","insertvon","updateamum","updatevon"),
"hr.tbl_sachaufwandtyp" => array("sachaufwandtyp_kurzbz","bezeichnung","sort", "aktiv"),
"hr.tbl_stundensatz" => array("stundensatz_id","uid","stundensatztyp","stundensatz","oe_kurzbz","gueltig_von","gueltig_bis","insertamum","insertvon","updateamum","updatevon"),
"hr.tbl_stundensatztyp" => array("stundensatztyp","bezeichnung","aktiv","insertamum","insertvon","updateamum","updatevon"),
"hr.tbl_tmp_store" => array("tmp_store_id","typ","mitarbeiter_uid","formdata","insertvon","insertamum","updatevon","updateamum"),
"hr.tbl_dienstverhaeltnis" => array("dienstverhaeltnis_id","mitarbeiter_uid","vertragsart_kurzbz","oe_kurzbz","von","bis","insertamum","insertvon","updateamum","updatevon"),
"hr.tbl_vertragsart" => array("vertragsart_kurzbz","bezeichnung","anmerkung","dienstverhaeltnis","vertragsart_kurzbz_parent","aktiv","sort"),
"hr.tbl_vertragsbestandteil" => array("vertragsbestandteil_id","dienstverhaeltnis_id","vertragsbestandteiltyp_kurzbz","von", "bis","insertamum", "insertvon","updateamum","updatevon"),
@@ -262,6 +272,8 @@ $tabellen=array(
"public.tbl_geschaeftsjahr" => array("geschaeftsjahr_kurzbz","start","ende","bezeichnung"),
"public.tbl_gruppe" => array("gruppe_kurzbz","studiengang_kz","semester","bezeichnung","beschreibung","sichtbar","lehre","aktiv","sort","mailgrp","generiert","updateamum","updatevon","insertamum","insertvon","ext_id","orgform_kurzbz","gid","content_visible","gesperrt","zutrittssystem","aufnahmegruppe","direktinskription"),
"public.tbl_gruppe_manager" => array("gruppe_manager_id","gruppe_kurzbz","uid","insertamum","insertvon"),
"public.tbl_kennzeichen" => array("kennzeichen_id", "person_id", "kennzeichentyp_kurzbz", "inhalt", "aktiv", "insertamum", "insertvon", "updateamum", "updatevon"),
"public.tbl_kennzeichentyp" => array("kennzeichentyp_kurzbz", "bezeichnung", "aktiv"),
"public.tbl_kontakt" => array("kontakt_id","person_id","kontakttyp","anmerkung","kontakt","zustellung","updateamum","updatevon","insertamum","insertvon","ext_id","standort_id"),
"public.tbl_kontaktmedium" => array("kontaktmedium_kurzbz","beschreibung"),
"public.tbl_kontakttyp" => array("kontakttyp","beschreibung","bezeichnung_mehrsprachig"),
@@ -294,8 +306,10 @@ $tabellen=array(
"public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"),
"public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values","priorisierung","foerderrelevant","standort_code","zgv_erfuellt","zgvmas_erfuellt","zgvdoktor_erfuellt"),
"public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung","bewerbung_abgeschicktamum","rt_stufe","statusgrund_id"),
"public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung","kosten"),
"public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung","kosten","aktiv"),
"public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich","studiensemester_kurzbz","aufnahmegruppe_kurzbz","stufe","anmeldefrist","zugangs_ueberpruefung","zugangscode"),
"public.tbl_rueckstellung" => array("rueckstellung_id","person_id","status_kurzbz","datum_bis","insertamum","insertvon"),
"public.tbl_rueckstellung_status" => array("status_kurzbz", "bezeichnung_mehrsprachig", "sort", "aktiv"),
"public.tbl_rt_ort" => array("rt_id","ort_kurzbz","uid"),
"public.tbl_rt_person" => array("rt_person_id","person_id","rt_id","studienplan_id","anmeldedatum","teilgenommen","ort_kurzbz","punkte","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_rt_studienplan" => array("reihungstest_id","studienplan_id"),
@@ -0,0 +1,146 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
// Creates table public.tbl_kennzeichentyp if it doesn't exist and grants privileges
if (!$result = @$db->db_query('SELECT 0 FROM public.tbl_kennzeichentyp WHERE 0 = 1'))
{
$qry = 'CREATE TABLE public.tbl_kennzeichentyp (
kennzeichentyp_kurzbz varchar(32) NOT NULL,
bezeichnung varchar(256) NOT NULL,
aktiv boolean NOT NULL DEFAULT TRUE
);
COMMENT ON TABLE public.tbl_kennzeichentyp IS \'Tabelle zur Verwaltung von Typen von externen Personenkennzeichen.\';
COMMENT ON COLUMN public.tbl_kennzeichentyp.bezeichnung IS \'Voller Name des Kennzeichentyps.\';
COMMENT ON COLUMN public.tbl_kennzeichentyp.aktiv IS \'Ob der Kennzeichentyp noch aktiv und verwendet wird.\';
ALTER TABLE public.tbl_kennzeichentyp ADD CONSTRAINT pk_tbl_kennzeichentyp PRIMARY KEY (kennzeichentyp_kurzbz)';
if (!$db->db_query($qry))
echo '<strong>public.tbl_kennzeichentyp: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_kennzeichentyp table created';
$qry = 'GRANT SELECT ON TABLE public.tbl_kennzeichentyp TO web;';
if (!$db->db_query($qry))
echo '<strong>public.tbl_kennzeichentyp: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on public.tbl_kennzeichentyp';
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.tbl_kennzeichentyp TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>public.tbl_kennzeichentyp: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on public.tbl_kennzeichentyp';
}
// SEQUENCE tbl_kennzeichen_id_seq
if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_kennzeichen_id_seq'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = 'CREATE SEQUENCE public.tbl_kennzeichen_id_seq
START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;';
if(!$db->db_query($qry))
echo '<strong>public.tbl_kennzeichen_id_seq '.$db->db_last_error().'</strong><br>';
else
echo '<br>Created sequence: public.tbl_kennzeichen_id_seq';
// GRANT SELECT, UPDATE ON SEQUENCE public.tbl_kennzeichen_id_seq TO vilesci;
$qry = 'GRANT SELECT, UPDATE ON SEQUENCE public.tbl_kennzeichen_id_seq TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>public.tbl_kennzeichen_id_seq '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on public.tbl_kennzeichen_id_seq';
// GRANT SELECT, UPDATE ON SEQUENCE public.tbl_kennzeichen_id_seq TO fhcomplete;
$qry = 'GRANT SELECT, UPDATE ON SEQUENCE public.tbl_kennzeichen_id_seq TO fhcomplete;';
if (!$db->db_query($qry))
echo '<strong>public.tbl_kennzeichen_id_seq '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>fhcomplete</strong> on public.tbl_kennzeichen_id_seq';
}
}
// Creates table public.tbl_kennzeichen if it doesn't exist and grants privileges
if (!$result = @$db->db_query('SELECT 0 FROM public.tbl_kennzeichen WHERE 0 = 1'))
{
$qry = 'CREATE TABLE public.tbl_kennzeichen (
kennzeichen_id integer NOT NULL DEFAULT NEXTVAL(\'public.tbl_kennzeichen_id_seq\'),
person_id integer NOT NULL,
kennzeichentyp_kurzbz varchar(32) NOT NULL,
inhalt text NOT NULL,
aktiv boolean NOT NULL DEFAULT TRUE,
insertamum timestamp DEFAULT NOW(),
insertvon varchar(32),
updateamum timestamp,
updatevon varchar(32)
);
COMMENT ON TABLE public.tbl_kennzeichen IS \'Tabelle zum Speichern von externen Personenkennzeichen.\';
COMMENT ON COLUMN public.tbl_kennzeichen.kennzeichentyp_kurzbz IS \'Typ des externen Personen Kennzeichens.\';
COMMENT ON COLUMN public.tbl_kennzeichen.inhalt IS \'Das externe Kennzeichen.\';
COMMENT ON COLUMN public.tbl_kennzeichen.aktiv IS \'Ob das Kennzeichen noch aktiv ist und verwendet wird.\';
ALTER TABLE public.tbl_kennzeichen ADD CONSTRAINT pk_tbl_kennzeichen PRIMARY KEY (kennzeichen_id);
ALTER TABLE public.tbl_kennzeichen ADD CONSTRAINT fk_kennzeichen_person FOREIGN KEY (person_id)
REFERENCES public.tbl_person(person_id) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE public.tbl_kennzeichen ADD CONSTRAINT fk_kennzeichen_kennzeichentyp_kurzbz FOREIGN KEY (kennzeichentyp_kurzbz)
REFERENCES public.tbl_kennzeichentyp(kennzeichentyp_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
-- create unique constraint, no person can have the same kennzeichen twice
ALTER TABLE public.tbl_kennzeichen ADD CONSTRAINT uk_kennzeichen_person_id_inhalt UNIQUE (person_id, kennzeichentyp_kurzbz, inhalt);
-- create unique index - person can only have one active kennzeichen of each type
CREATE UNIQUE INDEX kennzeichen_aktiv_constraint ON public.tbl_kennzeichen (person_id, kennzeichentyp_kurzbz) WHERE aktiv;';
if (!$db->db_query($qry))
echo '<strong>public.tbl_kennzeichen: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_kennzeichen table created';
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.tbl_kennzeichen TO web;';
if (!$db->db_query($qry))
echo '<strong>public.tbl_kennzeichen: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on public.tbl_kennzeichen';
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.tbl_kennzeichen TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>public.tbl_kennzeichen: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on public.tbl_kennzeichen';
}
// public.tbl_kennzeichentyp: add type esi
if ($result = $db->db_query("SELECT 1 FROM public.tbl_kennzeichentyp WHERE kennzeichentyp_kurzbz='esi'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "INSERT INTO public.tbl_kennzeichentyp(kennzeichentyp_kurzbz, bezeichnung) VALUES('esi', 'European Student Identifier');";
if(!$db->db_query($qry))
echo '<strong>Kennzeichentyp: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Neuer Kennzeichentyp esi in public.tbl_kennzeichentyp hinzugefügt';
}
}
// system.tbl_jobtypes: add type esi
if ($result = $db->db_query("SELECT 1 FROM system.tbl_jobtypes WHERE type='generateESI'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "INSERT INTO system.tbl_jobtypes(type, description) VALUES('generateESI', 'Generate and save European Student Identifier');";
if(!$db->db_query($qry))
echo '<strong>Jobtyp: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Neuer Jobtyp generateESI in system.tbl_jobtypes hinzugefügt';
}
}
+2 -1
View File
@@ -378,7 +378,8 @@ $filters = array(
{"name" : "FoerderfallId"},
{"name" : "LeistungsdatenId"},
{"name" : "startjahr"},
{"name" : "endjahr"}
{"name" : "endjahr"},
{"name" : "Uebermittelt"}
],
"filters": []
}
+5 -5
View File
@@ -4424,7 +4424,7 @@ When on hold, the date is only a reminder.',
'sprache' => 'German',
'text' => 'Wir möchten Sie darauf aufmerksam machen, dass bei der Überweisung *immer* die Rechnungsnummer als Zahlungsreferenz anzuführen ist.
Andernfalls erfolgt keine automatische Zahlungszuordnung und es kann zu einer Verzögerung der Darstellung des aktuellen Zahlungsstatus
der Rechnung im CIS kommen.
der Rechnung im Campus Informations-System kommen.
<br/>
<br/>
Im Falle dass der Betrag an ein falsches Konto überwiesen wurde, bitten wir Sie höflichst sich an Ihre Bank zu wenden.
@@ -4439,7 +4439,7 @@ When on hold, the date is only a reminder.',
array(
'sprache' => 'English',
'text' => 'We would like to draw your attention to the fact that the invoice number must *always* be quoted as the payment reference when making a bank transfer.
Otherwise, no automatic payment allocation will take place and there may be a delay in displaying the current payment status of the invoice in CIS.
Otherwise, no automatic payment allocation will take place and there may be a delay in displaying the current payment status of the invoice in Campus Informations-System.
<br />
<br />
In the event that the amount has been transferred to an incorrect account, we kindly ask you to contact your bank.
@@ -4513,7 +4513,7 @@ When on hold, the date is only a reminder.',
'sprache' => 'English',
'text' => 'Foreign bank transfers:
<br />
In the case of foreign bank transfers, the charges are to be paid by the
In the case of foreign bank transfers, the charges are to be paid by
<br />
the payer in addition to the invoice amounts.',
'description' => '',
@@ -4622,7 +4622,7 @@ Die Rechnung wird Ihnen erneut zugesendet. <u><strong>Erst nach Erhalt der Rechn
array(
'sprache' => 'English',
'text' => 'In this case, please check your spam folder. If the invoice has not been sent, please inform us at <a href="mailto:billing@technikum-wien.at">billing@technikum-wien.at</a>.
The invoice will be sent to you again. <u><strong>The amount is only to be transferred after receipt of the invoice</strong></u>',
The invoice will be sent to you again. <u><strong>The amount is only to be transferred after receipt of the invoice!</strong></u>',
'description' => '',
'insertvon' => 'system'
)
@@ -4714,7 +4714,7 @@ The invoice will be sent to you again. <u><strong>The amount is only to be trans
),
array(
'sprache' => 'English',
'text' => 'Please contact your study program assistant. The outstanding invoice will be canceled.',
'text' => 'Please contact your degree program assistant. The outstanding invoice will be canceled.',
'description' => '',
'insertvon' => 'system'
)
+196 -3
View File
@@ -229,7 +229,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
die('Es sind bereits beide Personen in SAP vorhanden. Bitte zuerst direkt in der tbl_sap_students lösen.');
}
}
$personToDelete_obj = new person();
if ($personToDelete_obj->load($personToDelete))
{
@@ -319,6 +319,199 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
}
}
}
if($result = @$db->db_query("SELECT 1 FROM public.tbl_kennzeichen LIMIT 1"))
{
$kennzeichen_has_personToKeep = array();
$kennzeichen_has_personToDelete = array();
$kennzeichen_query = "
SELECT *
FROM public.tbl_kennzeichen
WHERE (
person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR
person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . "
)
ORDER BY kennzeichentyp_kurzbz, aktiv DESC";
if ($result = $db->db_query($kennzeichen_query))
{
while ($row = $db->db_fetch_object($result))
{
if ($row->person_id === $personToKeep)
{
$kennzeichen_has_personToKeep[] = $row;
}
else if ($row->person_id === $personToDelete)
{
$kennzeichen_has_personToDelete[] = $row;
}
}
}
if (!empty($kennzeichen_has_personToDelete))
{
foreach ($kennzeichen_has_personToDelete as $kennzeichen_toDelete)
{
$kennzeichen_toKeep_Kurzbz = array_column($kennzeichen_has_personToKeep, 'kennzeichentyp_kurzbz');
if (in_array($kennzeichen_toDelete->kennzeichentyp_kurzbz, $kennzeichen_toKeep_Kurzbz))
{
$kennzeichen_toKeep_Keys = array_keys($kennzeichen_toKeep_Kurzbz, $kennzeichen_toDelete->kennzeichentyp_kurzbz);
foreach ($kennzeichen_toKeep_Keys as $key)
{
if (($kennzeichen_has_personToKeep[$key]->aktiv === 't' && $kennzeichen_toDelete->aktiv === 'f') ||
($kennzeichen_has_personToKeep[$key]->aktiv === 'f' && $kennzeichen_toDelete->aktiv === 't') ||
($kennzeichen_has_personToKeep[$key]->aktiv === 'f' && $kennzeichen_toDelete->aktiv === 'f'))
{
if ($kennzeichen_has_personToKeep[$key]->inhalt !== $kennzeichen_toDelete->inhalt)
{
$sql_query_upd1 .= "UPDATE public.tbl_kennzeichen SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE kennzeichen_id=" . $db->db_add_param($kennzeichen_toDelete->kennzeichen_id, FHC_INTEGER) . ";";
$kennzeichen_has_personToKeep[] = $kennzeichen_toDelete;
continue 2;
}
else
{
if ($kennzeichen_toDelete->aktiv === 'f')
{
$sql_query_upd1 .= "DELETE FROM public.tbl_kennzeichen WHERE kennzeichen_id=" . $db->db_add_param($kennzeichen_toDelete->kennzeichen_id, FHC_INTEGER) . ";";
$msg_warning[] = "Das nicht aktive Kennzeichen mit der ID '" . $kennzeichen_toDelete->kennzeichen_id . "' wurde gelöscht, <br>
da es der gleiche Inhalt wie beim Kennzeichen mit der ID '". $kennzeichen_has_personToKeep[$key]->kennzeichen_id ."' ist.";
continue 2;
}
$msg_error[] = 'Beide Personen haben ein Kennzeichen mit dem gleichen Typ ('. $kennzeichen_toDelete->kennzeichentyp_kurzbz.') und den gleichen Inhalt. Können nicht zusammengelegt werden.<br>
Sie müssen die Datensätze manuell bereinigen, bevor Sie die Personen zusammenlegen können.';
$error = true;
break 2;
}
}
else if ($kennzeichen_has_personToKeep[$key]->aktiv === 't' && $kennzeichen_toDelete->aktiv === 't')
{
$msg_error[] = 'Beide Personen haben ein aktives Kennzeichen mit dem gleichen Typ ('. $kennzeichen_toDelete->kennzeichentyp_kurzbz.'). Können nicht zusammengelegt werden.<br>
Sie müssen die Datensätze manuell bereinigen, bevor Sie die Personen zusammenlegen können.';
$error = true;
break 2;
}
}
}
else
{
$sql_query_upd1 .= "UPDATE public.tbl_kennzeichen SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE kennzeichen_id=" . $db->db_add_param($kennzeichen_toDelete->kennzeichen_id, FHC_INTEGER) . ";";
}
}
}
}
if($result = @$db->db_query("SELECT 1 FROM bis.tbl_uhstat1daten LIMIT 1"))
{
$uhstat_has_personToKeep = array();
$uhstat_has_personToDelete = array();
$uhstat_query = "
SELECT uhstat1daten_id, person_id
FROM bis.tbl_uhstat1daten
WHERE (
person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR
person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . "
)
ORDER BY updateamum DESC NULLS LAST, insertamum DESC NULLS LAST";
// Herausfinden, ob UHSTAT Daten der löschenden oder zu belassenden Person zugeordnet sind
if ($result = $db->db_query($uhstat_query))
{
while ($row = $db->db_fetch_object($result))
{
if ($row->person_id === $personToKeep)
{
$uhstat_has_personToKeep[] = $row;
}
else if ($row->person_id === $personToDelete)
{
$uhstat_has_personToDelete[] = $row;
}
}
}
// wenn UHSTAT Daten an Person, die gelöscht werden soll, hängen
if (!empty($uhstat_has_personToDelete))
{
// Wenn es auch UHSTAT Daten für die Person, die bleibt, gibt
if (!empty($uhstat_has_personToKeep))
{
// Unklar: welche Version der Daten soll behalten werden?
$msg_error[] = 'Beide Personen haben UHSTAT1 Daten. Können nicht zusammengelegt werden.<br>
Sie müssen die Datensätze manuell bereinigen, bevor Sie die Personen zusammenlegen können:<br>
<a href="'.APP_ROOT.'index.ci.php/codex/UHSTAT1?person_id='.$personToDelete.'" target="_blank">zum UHSTAT von Person A</a>
/
<a href="'.APP_ROOT.'index.ci.php/codex/UHSTAT1?person_id='.$personToKeep.'" target="_blank">zum UHSTAT von Person B</a>
<br>';
$error = true;
}
else
{
// Es gibt nur UHSTAT Daten für die zu löschende Person: Update
foreach ($uhstat_has_personToDelete as $uhstat_toDelete)
{
$sql_query_upd1 .= "UPDATE bis.tbl_uhstat1daten SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE uhstat1daten_id=" . $db->db_add_param($uhstat_toDelete->uhstat1daten_id, FHC_INTEGER) . ";";
}
}
}
}
if($result = @$db->db_query("SELECT 1 FROM public.tbl_rueckstellung LIMIT 1"))
{
$rueckstellung_has_personToKeep = array();
$rueckstellung_has_personToDelete = array();
$rueckstellung_query = "
SELECT rueckstellung_id, person_id
FROM public.tbl_rueckstellung
WHERE (
person_id = " . $db->db_add_param($personToKeep, FHC_INTEGER) . " OR
person_id = " . $db->db_add_param($personToDelete, FHC_INTEGER) . "
)
ORDER BY insertamum DESC NULLS LAST";
// Herausfinden, ob Rueckstellung Daten der löschenden oder zu belassenden Person zugeordnet sind
if ($result = $db->db_query($rueckstellung_query))
{
while ($row = $db->db_fetch_object($result))
{
if ($row->person_id === $personToKeep)
{
$rueckstellung_has_personToKeep[] = $row;
}
else if ($row->person_id === $personToDelete)
{
$rueckstellung_has_personToDelete[] = $row;
}
}
}
// wenn Rueckstellung Daten an Person, die gelöscht werden soll, hängen
if (!empty($rueckstellung_has_personToDelete))
{
// Wenn es auch Rueckstellung Daten für die Person, die bleibt, gibt
if (!empty($rueckstellung_has_personToKeep))
{
// Unklar: welche Version der Daten soll behalten werden?
$msg_error[] = 'Beide Personen haben Rückstellung Daten. Können nicht zusammengelegt werden.<br>
Sie müssen die Datensätze manuell bereinigen, bevor Sie die Personen zusammenlegen können.';
$error = true;
}
else
{
// Es gibt nur Rueckstellung Daten für die zu löschende Person: Update
foreach ($rueckstellung_has_personToDelete as $rueckstellung_toDelete)
{
$sql_query_upd1 .= "UPDATE public.tbl_rueckstellung SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE rueckstellung_id=" . $db->db_add_param($rueckstellung_toDelete->rueckstellung_id, FHC_INTEGER) . ";";
}
}
}
}
if ($error == false)
{
// Wenn bei einer der Personen das Foto gesperrt ist, dann die Sperre uebernehmen
@@ -437,7 +630,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
Alte Anmerkungen: ".$personToDelete_obj->anmerkungen;
$anmerkung .= "
Zusammengelegt mit Person-ID ".$personToDelete_obj->person_id." am ".date('d.m.Y H:i:s')." von ".$uid;
// Letztbenutzten Zugangscode abfragen und übernehmen
@@ -1335,7 +1528,7 @@ if ($filter != '' || ($person_id_1 != '' && $person_id_2 != ''))
$messageOutput .= '<br/>'.$value;
}
}
echo '<br><br><div contenteditable="true" style="width: 100%; height : 150px; border : 1px dotted grey; overflow-y:auto; text-align: left; font-size: 9pt">' . $messageOutput . '</div><br>';
echo '<br><br><div contenteditable="false" style="width: 100%; height : 150px; border : 1px dotted grey; overflow-y:auto; text-align: left; font-size: 9pt">' . $messageOutput . '</div><br>';
// Tabellen anzeigen
echo '<form name="form_table" action="personen_wartung.php?filter='.$db->convert_html_chars($filter).'&person_id_1='.$person_id_1.'&person_id_2='.$person_id_2.'" method="POST">';