This commit is contained in:
Rudolf Hangl
2007-01-11 16:45:34 +00:00
parent 2ef2603fe9
commit d0fa45769b
+545 -20
View File
@@ -25,7 +25,6 @@
*/
require_once('../../../vilesci/config.inc.php');
$conn=pg_connect(CONN_STRING) or die("Connection zur Portal Datenbank fehlgeschlagen");
$conn_fas=pg_connect(CONN_STRING_FAS) or die("Connection zur FAS Datenbank fehlgeschlagen");
@@ -34,6 +33,16 @@ $text = '';
$anzahl_eingefuegt=0;
$anzahl_fehler=0;
$new_person=false;
$new_prestudent=false;
$new_student=false;
$new_benutzer=false;
function addslashes($var)
{
return ($var!=''?"'".addslashes($var)."'":'null');
}
// ***********************************
// * VILESCI->PORTAL - Synchronisation
// ***********************************
@@ -84,7 +93,7 @@ if($result = pg_query($conn_fas, $qry))
$aufmerksam_kurzbz=$row->aufmerksamdurch;
$person_id='';
$studiengang_kz='';
$beruftaetigkeit_code=$row->berufstaetigkeit;
$berufstaetigkeit_code=$row->berufstaetigkeit;
$ausbildungcode='';
$zgv_code=$row->zgv;
$zgvort=$row->zgvort;
@@ -94,7 +103,7 @@ if($result = pg_query($conn_fas, $qry))
$zgvmadatum=$row->zgvmagisterdatum;
$facheinschlberuf=($row->berufstätigkeit=='J'?true:false);
$reihungstest_id='';
$punkte='';
$punkte=$row->punkte;
$ext_id_pre=$row->person_pk;
$anmeldungreihungstest='';
@@ -142,7 +151,7 @@ if($result = pg_query($conn_fas, $qry))
}
//Start der Transaktion
pg_query($this->conn,'BEGIN;');
pg_query($conn,'BEGIN;');
//Reihenfolge: person - prestudent - student - benutzer
@@ -197,7 +206,6 @@ if($result = pg_query($conn_fas, $qry))
{
$new_person=false;
$person_id=$rowz->person_id;
//echo nl2br("update3 von ".$row->uid.", ".$row->familienname."\n");
}
else
{
@@ -209,7 +217,6 @@ if($result = pg_query($conn_fas, $qry))
{
//insert
$new_person=true;
//echo nl2br("insert von ".$row->uid.", ".$row->familienname."\n");
}
}
}
@@ -219,32 +226,550 @@ if($result = pg_query($conn_fas, $qry))
if(new_person)
{
//insert person
$qry = 'INSERT INTO public.tbl_person (sprache, anrede, titelpost, titelpre, nachname, vorname, vornamen,
gebdatum, gebort, gebzeit, foto, anmerkungen, homepage, svnr, ersatzkennzeichen,
familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon,
geschlecht, geburtsnation, staatsbuergerschaft, ext_id)
VALUES('.$this->addslashes($sprache).','.
$this->addslashes($anrede).','.
$this->addslashes($titelpost).','.
$this->addslashes($titelpre).','.
$this->addslashes($nachname).','.
$this->addslashes($vorname).','.
$this->addslashes($vornamen).','.
$this->addslashes($gebdatum).','.
$this->addslashes($gebort).','.
$this->addslashes($gebzeit).','.
$this->addslashes($foto).','.
$this->addslashes($anmerkungen).','.
$this->addslashes($homepage).','.
$this->addslashes($svnr).','.
$this->addslashes($ersatzkennzeichen).','.
$this->addslashes($familienstand).','.
$this->addslashes($anzahlkinder).','.
($aktiv?'true':'false').','.
"now()".','.
$this->addslashes($insertvon).','.
"now()".','.
$this->addslashes($updatevon).','.
$this->addslashes($geschlecht).','.
$this->addslashes($geburtsnation).','.
$this->addslashes($staatsbuergerschaft).','.
$this->addslashes($ext_id_person).');';
}
else
{
//update person
//person_id auf gueltigkeit pruefen
if(!is_numeric($person_id))
{
$error=true;
$error_log.= 'person_id muss eine gueltige Zahl sein';
}
//update nur wenn änderungen gemacht
$qry="SELECT * FROM public.tbl_person WHERE person_id='$person_id';";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
$update=false;
if($row->sprache!=$sprache) $update=true;
if($row->anrede!=$anrede) $update=true;
if($row->titelpost!=$titelpost) $update=true;
if($row->titelpre!=$titelpre) $update=true;
if($row->nachname!=$nachname) $update=true;
if($row->vorname!=$vorname) $update=true;
if($row->vornamen!=$vornamen) $update=true;
if($row->gebdatum!=$gebdatum) $update=true;
if($row->gebort!=$gebort) $update=true;
//if($row->gebzeit!=$gebzeit) $update=true;
//if($row->foto!=$foto) $update=true;
if($row->anmerkungen!=$anmerkungen) $update=true;
if($row->homepage!=$homepage) $update=true;
if($row->svnr!=$svnr) $update=true;
if($row->ersatzkennzeichen!=$ersatzkennzeichen) $update=true;
if($row->familienstand!=$familienstand) $update=true;
if($row->anzahlkinder!=$anzahlkinder) $update=true;
if($row->aktiv!=$aktiv) $update=true;
if($row->geburtsnation!=$geburtsnation) $update=true;
if($row->geschlecht!=$geschlecht) $update=true;
if($row->staatsbuergerschaft!=$staatsbuergerschaft) $update=true;
if($update)
{
$qry = 'UPDATE public.tbl_person SET'.
' sprache='.$this->addslashes($sprache).','.
' anrede='.$this->addslashes($anrede).','.
' titelpost='.$this->addslashes($titelpost).','.
' titelpre='.$this->addslashes($titelpre).','.
' nachname='.$this->addslashes($nachname).','.
' vorname='.$this->addslashes($vorname).','.
' vornamen='.$this->addslashes($vornamen).','.
' gebdatum='.$this->addslashes($gebdatum).','.
' gebort='.$this->addslashes($gebort).','.
//' gebzeit='.$this->addslashes($gebzeit).','.
//' foto='.$this->addslashes($foto).','.
' anmerkungen='.$this->addslashes($anmerkungen).','.
' homepage='.$this->addslashes($homepage).','.
' svnr='.$this->addslashes($svnr).','.
' ersatzkennzeichen='.$this->addslashes($ersatzkennzeichen).','.
' familienstand='.$this->addslashes($familienstand).','.
' anzahlkinder='.$this->addslashes($anzahlkinder).','.
' aktiv='.($aktiv?'true':'false').','.
' updateamum='.$this->addslashes($updateamum).','.
' updatevon='.$this->addslashes($updatevon).','.
' geschlecht='.$this->addslashes($geschlecht).','.
' geburtsnation='.$this->addslashes($geburtsnation).','.
' staatsbuergerschaft='.$this->addslashes($staatsbuergerschaft).','.
" insertamum=now()".','.
' insertvon='.$this->addslashes($insertvon).','.
" updateamum=now()".','.
" updatevon=".$this->addslashes($updatevon).','.
' ext_id='.$this->addslashes($ext_id_person).
' WHERE person_id='.$person_id.';';
}
}
}
}
if(pg_query(conn,$qry))
{
if(new_person)
{
$qry = "SELECT currval('public.tbl_person_person_id_seq') AS id;";
if($row=pg_fetch_object(pg_query($conn,$qry)))
$person_id=$row->id;
else
{
$error=true;
$error_log.='Person-Sequence konnte nicht ausgelesen werden';
}
}
}
else
{
$error=true;
$error_log.='Fehler beim Speichern des Person-Datensatzes:'.$nachname.' '.$qry;
}
if(!$error)
{
//Reihenfolge: prestudent - student - benutzer
//Weitere Reihenfolge: prestudent - student - benutzer
//Prestudent schon vorhanden?
$qry="SELECT prestudent_id FROM public.tbl_prestudent WHERE ext_id='$row->student_pk'";
if($resultu = pg_query($conn, $qry))
{
if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist
{
if($rowu=pg_fetch_object($resultu))
{
$prestudent_id=$rowu->prestudent_id;
$new_prestudent=true;
}
else $new_prestudent=false;
}
else $new_prestudent=false;
}
else
{
$error=true;
$error_log.='Fehler beim Zugriff auf Tabelle tbl_prestudent bei student_pk: '.$row->student_pk;
}
//Studiengang ermitteln
$qry="SELECT studiengang_kz FROM public.tbl_studiengang WHERE ext_id";
if($resultu = pg_query($conn, $qry))
{
if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist
{
if($rowu=pg_fetch_object($resultu))
{
$studiengang_kz=$rowu->studiengang_kz;
}
}
}
if(new_prestudent)
{
//insert prestudent
$qry = 'INSERT INTO public.tbl_prestudent (aufmerksamdurch_kurzbz, person_id, studiengang_kz,
berufstaetigkeit_code, zgv_code, zgvort, zgvdatum, zgvmas_code, zgvmaort, zgvmadatum,
facheinschlberuf, reihungstest_id, punkte, anmeldungreihungstest,
insertamum, insertvon, updateamum, updatevon, ext_id)
VALUES('.$this->addslashes($aufmerksam_kurzbz).', '.
$this->addslashes($person_id).', '.
$this->addslashes($studiengang_kz).', '.
$this->addslashes($berufstaetigkeit_code).', '.
$this->addslashes($zgv_code).', '.
$this->addslashes($zgvort).', '.
$this->addslashes($zgvdatum).', '.
$this->addslashes($zgvmas_code).', '.
$this->addslashes($zgvmaort).', '.
$this->addslashes($zgvmadatum).', '.
$this->addslashes($facheinschlberuf).', '.
$this->addslashes($reihungstest_id).', '.
$this->addslashes($punkte).', '.
$this->addslashes($anmeldungreihungstest).', '.
"now()".', '.
'SYNC'.', '.
"now()".', '.
'SYNC'.', '.
$this->addslashes($ext_id_pre).';';
}
else
{
//update prestudent
//prestudent_id auf gueltigkeit pruefen
if(!is_numeric($prestudent_id))
{
$error=true;
$error_log.= 'prestudent_id muss eine gueltige Zahl sein';
}
//update nur wenn änderungen gemacht
$qry="SELECT * FROM public.tbl_prestudent WHERE prestudent_id='$prestudent_id';";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
$update=false;
if($row->aufmerksam_durch_kurzbz!=$aufmerksamdurch_kurzbz) $update=true;
if($row->person_id!=$person_id) $update=true;
if($row->studiengang_kz!=$studiengang_kz) $update=true;
if($row->berufstaetigkeit_code!=$berufstaetigkeit_code) $update=true;
if($row->zgv_code!=$zgv_code) $update=true;
if($row->zgvort!=$zgvort) $update=true;
if($row->zgvdatum!=$zgvdatum) $update=true;
if($row->zgvmas_code!=$zgvmas_code) $update=true;
if($row->zgvmaort!=$zgvmaort) $update=true;
if($row->zgvmadatum!=$zgvmadatum) $update=true;
if($row->facheinschlberuf!=$facheinschlberuf) $update=true;
if($row->reihungstest_id!=$reihungstest_id) $update=true;
if($row->punkte!=$punkte) $update=true;
if($row->anmeldungreihungstest!=$anmeldungreihungstest) $update=true;
if($update)
{
$qry = 'UPDATE public.tbl_prestudent SET'.
' aufmerksamdurch_kurzbz='.$this->addslashes($aufmerksamdurch_kurzbz).','.
' person_id='.$this->addslashes($person_id).','.
' studiengang_kz='.$this->addslashes($studiengang_kz).','.
' berufstaetigkeit_code='.$this->addslashes($berufstaetigkeit_code).','.
' zgv_code='.$this->addslashes($zgv_code).','.
' zgvort='.$this->addslashes($zgvort).','.
' zgvdatum='.$this->addslashes($zgvdatum).','.
' zgvmas_code='.$this->addslashes($zgvmas_code).','.
' zgvmaort='.$this->addslashes($zgvmaort).','.
' zgvmadatum='.$this->addslashes($person_id).','.
' facheinschlberuf='.$this->addslashes($facheinschlberuf).','.
' reihungstest_id='.$this->addslashes($reihungstest_id).','.
' punkte='.$this->addslashes($punkte).','.
' anmeldungreihungstest='.$this->addslashes($anmeldungreihungstest).','.
" insertamum=now()".','.
' insertvon='.$this->addslashes($insertvon).','.
" updateamum=now()".','.
" updatevon=".$this->addslashes($updatevon).','.
' ext_id='.$this->addslashes($ext_id_pre).
' WHERE prestudent_id='.$prestudent_id.';';
}
}
}
}
if(pg_query(conn,$qry))
{
if(new_pre)
{
$qry = "SELECT currval('public.tbl_prestudent_prestudent_id_seq') AS id;";
if($row=pg_fetch_object(pg_query($conn,$qry)))
$prestudent_id=$row->id;
else
{
$error=true;
$error_log.='Prestudent-Sequence konnte nicht ausgelesen werden';
}
}
}
else
{
$error=true;
$error_log.='Fehler beim Speichern des Prestudent-Datensatzes:'.$nachname.' '.$qry;
}
if(!$error)
{
//Weitere Reihenfolge: student, benutzer
//Student schon vorhanden?
$qry="SELECT student_id FROM public.tbl_student WHERE ext_id='$row->student_pk'";
if($resultu = pg_query($conn, $qry))
{
if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist
{
if($rowu=pg_fetch_object($resultu))
{
$student_id=$rowu->student_id;
$new_student=true;
}
else $new_student=false;
}
else $new_student=false;
}
else
{
$error=true;
$error_log.='Fehler beim Zugriff auf Tabelle tbl_student bei student_pk: '.$row->student_pk;
}
//Gruppenverband ermitteln
$qry="SELECT fas_function_find_verband_from_student(".$row->student_pk.") as verband
fas_function_find_jahrgang_from_student(".$row->student_pk.") as jahrgang
fas_function_find_gruppe_from_student(".$row->student_pk.") as gruppe;";
if($resultu = pg_query($conn, $qry))
{
if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist
{
if($rowu=pg_fetch_object($resultu))
{
$semester=$rowu->$rowu->jahrgang;
$verband=$rowu->$rowu->verband;
$gruppe=$rowu->gruppe;
}
}
}
if(new_student)
{
//insert student
$qry = 'INSERT INTO public.tbl_student (matrikelnr, prestudent_id, studiengang_kz,
semester, verband, gruppe,
insertamum, insertvon, updateamum, updatevon, ext_id)
VALUES('.$this->addslashes($matrikelnr).', '.
$this->addslashes($prestudent_id).', '.
$this->addslashes($studiengang_kz).', '.
$this->addslashes($semester).', '.
$this->addslashes($verband).', '.
$this->addslashes($gruppe).', '.
"now()".', '.
"SYNC".', '.
"now()".', '.
"SYNC".', '.
$this->addslashes($ext_id_student).', ';
}
else
{
//update student
//student_uid auf gueltigkeit pruefen
if(!is_numeric($student_uid))
{
$error=true;
$error_log.= 'student_id muss eine gueltige Zahl sein';
}
//update nur wenn änderungen gemacht
$qry="SELECT * FROM public.tbl_student WHERE student_id='$student_id';";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
$update=false;
if($row->matrikelnr!=$matrikelnr) $update=true;
if($row->prestudent_id!=$prestudent_id) $update=true;
if($row->studiengang_kz!=$studiengang_kz) $update=true;
if($row->semester!=$semester) $update=true;
if($row->verband!=$verband) $update=true;
if($row->gruppe!=$gruppe) $update=true;
if($update)
{
$qry = 'UPDATE public.tbl_student SET'.
' matrikelnr='.$this->addslashes($matrikelnr).','.
' prestudent_id='.$this->addslashes($prestudent_id).','.
' studiengang_kz='.$this->addslashes($studiengang_kz).','.
' semester='.$this->addslashes($semester).','.
' verband='.$this->addslashes($verband).','.
' gruppe='.$this->addslashes($gruppe).','.
" insertamum=now()".','.
' insertvon='.$this->addslashes($insertvon).','.
" updateamum=now()".','.
" updatevon=".$this->addslashes($updatevon).','.
' ext_id='.$this->addslashes($ext_id_student).
' WHERE student_id='.$student_id.';';
}
}
}
}
if(pg_query(conn,$qry))
{
if(new_student)
{
$qry = "SELECT currval('public.tbl_student_student_id_seq') AS id;";
if($row=pg_fetch_object(pg_query($conn,$qry)))
$student_id=$row->id;
else
{
$error=true;
$error_log.='Student-Sequence konnte nicht ausgelesen werden';
}
}
}
else
{
$error=true;
$error_log.='Fehler beim Speichern des Student-Datensatzes:'.$nachname.' '.$qry;
}
if(!$error)
{
//Weitere Reihenfolge: benutzer
//Benutzer schon vorhanden?
$qry="SELECT uid, person_id FROM public.tbl_benutzer WHERE ext_id='$row->student_pk'";
if($resultu = pg_query($conn, $qry))
{
if(pg_num_rows($resultu)>0) //wenn dieser eintrag schon vorhanden ist
{
if($rowu=pg_fetch_object($resultu))
{
$new_beutzer=true;
}
else $new_benutzer=false;
}
else $new_benutzer=false;
}
else
{
$error=true;
$error_log.='Fehler beim Zugriff auf Tabelle tbl_benutzer bei student_pk: '.$row->student_pk;
}
//Benutzer aktiv?
$qry="SELECT * FORM (SELECT status, creationdate FROM student_ausbildungssemester WHERE student_fk= ".$row->student_pk." AND
studiensemester_fk=(SELECT studiensemester_pk FROM studiensemester WHERE aktuell='J') ORDER BY 2 DESC LIMIT 1)
WHERE status IN ('3', '10', '11', '12', '13');";
if($resultu = pg_query($conn_fas, $qry))
{
if(pg_num_rows($resultu)>0)
{
$aktiv=true;
}
else
{
$aktiv=false;
}
}
else
{
$error=true;
$error_log.='Fehler beim Holen des aktuellen Status bei student_pk: '.$row->student_pk;
}
if(new_benutzer)
{
//insert benutzer
$qry = 'INSERT INTO public.tbl_benutzer (uid, person_id, aktiv, alias,
insertamum, insertvon, updateamum, updatevon, ext_id)
VALUES('.$this->addslashes($student_uid).', '.
$this->addslashes($person_id).', '.
$this->addslashes($aktiv).', '.
$this->addslashes($alias).', '.
"now()".', '.
"SYNC".', '.
"now()".', '.
"SYNC".', '.
$this->addslashes($ext_id_benutzer).', ';
}
else
{
//update benutzer
//uid auf gueltigkeit pruefen
if(!is_numeric($uid))
{
$error=true;
$error_log.= 'uid muss eine gueltige Zahl sein';
}
if(!is_numeric($person_id))
{
$error=true;
$error_log.= 'person_id muss eine gueltige Zahl sein';
}
//update nur wenn änderungen gemacht
$qry="SELECT * FROM public.tbl_benutzer WHERE ext_id='$ext_id_benutzer';";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
$update=false;
if($row->aktiv!=$aktiv) $update=true;
if($update)
{
$qry = 'UPDATE public.tbl_benutzer SET'.
' uid='.$this->addslashes($student_id).','.
' person_id='.$this->addslashes($person_id).','.
' aktiv='.$this->addslashes($aktiv).','.
" insertamum=now()".','.
' insertvon='.$this->addslashes($insertvon).','.
" updateamum=now()".','.
" updatevon=".$this->addslashes($updatevon).
' WHERE ext_id='.$ext_id_benutzer.';';
}
}
}
}
if(pg_query(conn,$qry))
{
if(new_student)
{
$qry = "SELECT currval('public.tbl_student_student_id_seq') AS id;";
if($row=pg_fetch_object(pg_query($conn,$qry)))
$student_id=$row->id;
else
{
$error=true;
$error_log.='Student-Sequence konnte nicht ausgelesen werden';
}
}
}
else
{
$error=true;
$error_log.='Fehler beim Speichern des Student-Datensatzes:'.$nachname.' '.$qry;
}
if(!$error)
{
pg_query($this->conn,'COMMIT;');
}
else
{
pg_query($conn,'ROLLBACK;');
}
}
else
{
pg_query($conn,'ROLLBACK;');
}
}
else
{
pg_query($conn,'ROLLBACK;');
}
}
else
{
pg_query($this->conn,'ROLLBACK;');
}
//Basisdaten speichern
if(!benutzer::save())
{
pg_query($this->conn,'ROLLBACK;');
return false;
pg_query($conn,'ROLLBACK;');
}
}
}
?>