mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 00:12:15 +00:00
personen zusammenlegen mit udf
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
require_once(dirname(__FILE__).'/datum.class.php');
|
||||
require_once(dirname(__FILE__).'/udf.class.php');
|
||||
|
||||
class person extends basis_db
|
||||
{
|
||||
@@ -64,6 +65,7 @@ class person extends basis_db
|
||||
public $foto_sperre = false; // boolean
|
||||
public $matr_nr; //varchar(32)
|
||||
public $bpk; //varchar(255)
|
||||
public $udf_values; //json
|
||||
|
||||
/**
|
||||
* Konstruktor - Uebergibt die Connection und laedt optional eine Person
|
||||
@@ -84,6 +86,8 @@ class person extends basis_db
|
||||
**/
|
||||
public function load($personId)
|
||||
{
|
||||
$udf = new UDF();
|
||||
|
||||
//person_id auf gueltigkeit pruefen
|
||||
if (is_numeric($personId) && $personId != '')
|
||||
{
|
||||
@@ -91,8 +95,11 @@ class person extends basis_db
|
||||
gebdatum, gebort, gebzeit, foto, anmerkung, homepage, svnr, ersatzkennzeichen,
|
||||
familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon, ext_id,
|
||||
geschlecht, staatsbuergerschaft, geburtsnation, kurzbeschreibung, zugangscode, foto_sperre,
|
||||
matr_nr, bpk
|
||||
FROM public.tbl_person
|
||||
matr_nr, bpk";
|
||||
if ($hasUDF = $udf->personHasUDF())
|
||||
$qry .= ", udf_values ";
|
||||
|
||||
$qry .= "FROM public.tbl_person
|
||||
WHERE person_id = " . $this->db_add_param($personId, FHC_INTEGER);
|
||||
|
||||
if (!$this->db_query($qry))
|
||||
@@ -135,6 +142,10 @@ class person extends basis_db
|
||||
$this->foto_sperre = $this->db_parse_bool($row->foto_sperre);
|
||||
$this->matr_nr = $row->matr_nr;
|
||||
$this->bpk = $row->bpk;
|
||||
if ($hasUDF)
|
||||
{
|
||||
$this->udf_values = $row->udf_values;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -26,6 +26,7 @@ require_once(dirname(__FILE__).'/log.class.php');
|
||||
require_once(dirname(__FILE__).'/phrasen.class.php');
|
||||
require_once(dirname(__FILE__).'/globals.inc.php');
|
||||
require_once(dirname(__FILE__).'/sprache.class.php');
|
||||
require_once(dirname(__FILE__).'/udf.class.php');
|
||||
|
||||
$sprache = getSprache();
|
||||
$lang = new sprache();
|
||||
@@ -73,6 +74,7 @@ class prestudent extends person
|
||||
public $priorisierung = null;
|
||||
public $foerderrelevant = null;
|
||||
public $standort_code = null;
|
||||
public $udf_values = null;
|
||||
|
||||
public $status_kurzbz;
|
||||
public $studiensemester_kurzbz;
|
||||
@@ -1413,6 +1415,9 @@ class prestudent extends person
|
||||
person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
|
||||
ORDER BY prestudent_id";
|
||||
|
||||
$udf = new UDF();
|
||||
$hasUDF = $udf->prestudentHasUDF();
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
@@ -1455,6 +1460,10 @@ class prestudent extends person
|
||||
$obj->gsstudientyp_kurzbz = $row->gsstudientyp_kurzbz;
|
||||
$obj->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
|
||||
$obj->priorisierung = $row->priorisierung;
|
||||
if ($hasUDF)
|
||||
{
|
||||
$obj->udf_values = $row->udf_values;
|
||||
}
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ require_once ('../../include/kontakt.class.php');
|
||||
require_once ('../../include/dokument.class.php');
|
||||
require_once ('../../include/reihungstest.class.php');
|
||||
require_once ('../../include/pruefling.class.php');
|
||||
require_once ('../../include/udf.class.php');
|
||||
|
||||
|
||||
if (! $db = new basis_db())
|
||||
@@ -54,6 +55,7 @@ $rechte->getBerechtigungen($uid);
|
||||
if (! $rechte->isBerechtigt('basis/person', null, 'suid'))
|
||||
die($rechte->errormsg);
|
||||
|
||||
$udf = new UDF();
|
||||
$msg_info = array();
|
||||
$msg_error = array();
|
||||
$msg_warning = array();
|
||||
@@ -283,6 +285,40 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
if ($doppelteReihungstestzuordnung === false)
|
||||
$sql_query_upd1 .= "UPDATE public.tbl_rt_person SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
|
||||
|
||||
|
||||
$personUDF = $udf->personHasUDF();
|
||||
|
||||
if ($personUDF)
|
||||
{
|
||||
$udfToKeep = json_decode($personToKeep_obj->udf_values, true);
|
||||
$udfToDelete = json_decode($personToDelete_obj->udf_values, true);
|
||||
|
||||
$udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep;
|
||||
$udfToDelete = is_null($udfToDelete) ? array() : $udfToDelete;
|
||||
|
||||
if ($udfToKeep != $udfToDelete)
|
||||
{
|
||||
foreach ($udfToDelete as $key => $udf)
|
||||
{
|
||||
if (!array_key_exists($key, $udfToKeep))
|
||||
{
|
||||
$udfToKeep[$key] = $udf;
|
||||
}
|
||||
elseif ($udfToKeep[$key] !== $udf && !is_null($udf))
|
||||
{
|
||||
if (is_null($udfToKeep[$key]))
|
||||
$udfToKeep[$key] = $udf;
|
||||
else
|
||||
{
|
||||
$msg_error[] = 'Beide Personen haben unterschiedliche Werte in den UDFs und können nicht zusammengelegt werden.<br>
|
||||
Sie müssen die Datensätze manuell bereinigen, bevor Sie die Personen zusammenlegen können.';
|
||||
$error = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($error == false)
|
||||
{
|
||||
// Wenn bei einer der Personen das Foto gesperrt ist, dann die Sperre uebernehmen
|
||||
@@ -437,6 +473,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
$sql_query_upd1 .= "UPDATE system.tbl_filters SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
|
||||
$sql_query_upd1 .= "UPDATE system.tbl_log SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
|
||||
$sql_query_upd1 .= "UPDATE system.tbl_person_lock SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
|
||||
$sql_query_upd1 .= "UPDATE system.tbl_issue SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
|
||||
$sql_query_upd1 .= "UPDATE wawi.tbl_betriebsmittelperson SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
|
||||
$sql_query_upd1 .= "UPDATE wawi.tbl_konto SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
|
||||
$sql_query_upd1 .= $alma_query_upd;
|
||||
@@ -456,6 +493,9 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
// BPK erst setzen, wenn nur mehr eine Person vorhanden ist
|
||||
$sql_query_upd1 .= "UPDATE public.tbl_person SET bpk=" . $db->db_add_param($bpk, FHC_STRING) . " WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";";
|
||||
|
||||
if ($personUDF)
|
||||
$sql_query_upd1 .= "UPDATE public.tbl_person SET udf_values=" . $db->db_add_param(json_encode($udfToKeep)) . " WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";";
|
||||
|
||||
if ($db->db_query($sql_query_upd1))
|
||||
{
|
||||
$msg_info[] = "Update Query:";
|
||||
@@ -730,9 +770,10 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
|
||||
usort($prestudenten->result, "sortPrestudents");
|
||||
|
||||
$prestudentUDF = $udf->prestudentHasUDF();
|
||||
$prestudentenArray = array();
|
||||
$kontaktLoeschArray = array();
|
||||
foreach ($prestudenten->result AS $row)
|
||||
foreach ($prestudenten->result AS $key => $row)
|
||||
{
|
||||
$prestudentenArray[] = array(
|
||||
'prestudent_id' => $row->prestudent_id,
|
||||
@@ -753,6 +794,8 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
'zgvmanation' => $row->zgvmanation,
|
||||
'studiengang_typ' => $row->studiengang_typ
|
||||
);
|
||||
if ($prestudentUDF)
|
||||
$prestudentenArray[$key] = array_merge($prestudentenArray[$key], array('udf_values' => $row->udf_values));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -793,6 +836,48 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
$i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
//Wenn die UDF values nicht zusammengeführt werden können, wird mit dem nächsten weitergemacht und eine Warnung ausgegeben
|
||||
if ($prestudentUDF)
|
||||
{
|
||||
$udfError = false;
|
||||
|
||||
$udfToKeep = json_decode($prestudentenArray[$previousKey]['udf_values'], true);;
|
||||
$udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep;
|
||||
|
||||
$udfToDelete = json_decode($value['udf_values'], true);
|
||||
$udfToDelete = is_null($udfToDelete) ? array() : $udfToDelete;
|
||||
|
||||
if ($udfToKeep != $udfToDelete)
|
||||
{
|
||||
foreach ($udfToDelete as $udfKey => $udf)
|
||||
{
|
||||
if (!array_key_exists($udfKey, $udfToKeep))
|
||||
{
|
||||
$udfToKeep[$udfKey] = $udf;
|
||||
}
|
||||
elseif ($udfToKeep[$udfKey] !== $udf && !is_null($udf))
|
||||
{
|
||||
if (is_null($udfToKeep[$udfKey]))
|
||||
$udfToKeep[$udfKey] = $udf;
|
||||
else
|
||||
{
|
||||
|
||||
$warningList['udfUnklar'][$i][1] = $prestudentId;
|
||||
$warningList['udfUnklar'][$i][2] = $value['prestudent_id'];
|
||||
$i++;
|
||||
$udfError = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$prestudentenArray[$previousKey]['udf_values'] = json_encode($udfToKeep);
|
||||
if ($udfError)
|
||||
continue;
|
||||
|
||||
}
|
||||
// Wenn der Status gleich ist, wird auf bestätigt-datum geprüft
|
||||
if ($status_kurzbz == $value['status_kurzbz'])
|
||||
{
|
||||
@@ -894,6 +979,11 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
$zgvmadatum = $value['zgvmadatum'];
|
||||
$zgvmanation = $value['zgvmanation'];
|
||||
$previousKey = $key;
|
||||
if ($prestudentUDF)
|
||||
{
|
||||
$udfToKeep = json_decode($value['udf_values'], true);
|
||||
$udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep;
|
||||
}
|
||||
}
|
||||
|
||||
// Messages in $msg_warning schreiben
|
||||
@@ -934,6 +1024,22 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
}
|
||||
}
|
||||
|
||||
$msg_warning[] = $messageOutput;
|
||||
$messageOutput = '';
|
||||
if(isset($warningList['udfUnklar']))
|
||||
{
|
||||
foreach ($warningList['udfUnklar'] as $key => $value) {
|
||||
|
||||
$messageOutput .= '<div>Bei folgenden PreStudenten sind die UDFs widersprüchlich oder unklar:<br>';
|
||||
|
||||
foreach ($value as $presstudentid)
|
||||
{
|
||||
$messageOutput .= ' '.$presstudentid.'<br>';
|
||||
}
|
||||
$messageOutput .= '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
$msg_warning[] = $messageOutput;
|
||||
|
||||
//Wenn Prüfling auf zu löschenden Prestudenten zeigt und ggf auf bleibenden umhängen.
|
||||
|
||||
Reference in New Issue
Block a user