This commit is contained in:
Rudolf Hangl
2007-04-03 11:45:25 +00:00
parent f38822a616
commit 6120faf3b2
3 changed files with 561 additions and 11 deletions
@@ -0,0 +1,240 @@
<?php
/* Copyright (C) 2007 Technikum-Wien
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
//*
//* Synchronisiert Benutzergruppendatensaetze von FAS DB in PORTAL DB
//*
//*
include('../../../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");
$adress='ruhan@technikum-wien.at';
//$adress='fas_sync@technikum-wien.at';
$error_log='';
$error_log_fas='';
$text = '';
$anzahl_quelle=0;
$anzahl_quelle_student=0;
$anzahl_eingefuegt=0;
$anzahl_update=0;
$anzahl_fehler=0;
$nicht_gefunden=0;
$ausgabe='';
$ausgabe_slv='';
$ausgabe_all='';
$update=false;
function myaddslashes($var)
{
return ($var!=''?"'".addslashes($var)."'":'null');
}
/*************************
* FAS-PORTAL - Synchronisation
*/
?>
<html>
<head>
<title>Synchro - FAS -> Vilesci - Benutzergruppe</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//nation
$qry="SELECT * FROM person left join student on person_pk=person_fk
WHERE uid IS NOT null AND uid<>'' AND perskz IS NOT null AND perskz<>''
ORDER BY Familienname, Vorname;";
if($result = pg_query($conn_fas, $qry))
{
echo nl2br("Benutzergruppe Sync\n----------------------\n");
$anzahl_quelle_student=pg_num_rows($result);
while($row = pg_fetch_object($result))
{
$error=false;
$uid ="";
$gruppe_kurzbz ="";
$studiensemester_kurzbz ="";
$updateamum ="";
$updatevon ="SYNC";
$insertamum =$row->creationdate;
$insertvon =$row->creationuser;
$ext_id ="";
$error=false;
$error_log="";
$qry4="SELECT * from public.tbl_benutzer WHERE ext_id='".$row->student_pk."';";
if($result4 = pg_query($conn, $qry4))
{
if(pg_num_rows($result4)<1)
{
$error=true;
$error_log_fas.="Benutzer mit ext_id='".$row->student_pk."' nicht gefunden! ('".$row->perskz."', '".$row->familienname."', '".$row->vorname."')\n";
$nicht_gefunden++;
}
else
{
if($row4=pg_fetch_object($result4))
{
$uid=$row4->uid;
}
}
}
if(!$error)
{
$qry1="SELECT gruppe_fk FROM student_gruppe WHERE student_fk='".$row->student_pk."' ORDER BY gruppe_fk;";
if($result1 = pg_query($conn_fas, $qry1))
{
while($row1=pg_fetch_object($result1))
{
$error=false;
$error_log="";
$anzahl_quelle++;
$qry2="SELECT * FROM sync.tbl_syncgruppe WHERE fas_gruppe='".$row1->gruppe_fk."';";
$gruppe_kurzbz="";
if($result2 = pg_query($conn, $qry2))
{
if($row2=pg_fetch_object($result2))
{
//echo nl2br("qry2=".$qry2."\n");
$gruppe_kurzbz=$row2->vilesci_gruppe;
}
else
{
$error=true;
}
}
else
{
$error=true;
$error_log="Fehler beim Zugriff auf Tablelle tbl_gruppe.".$qry2;
$anzahl_fehler++;
}
$qry3="SELECT studiensemester_fk FROM gruppe WHERE gruppe_pk='".$row1->gruppe_fk."';";
$studiensemester_kurzbz="";
if($result3 = pg_query($conn_fas, $qry3))
{
if($row3=pg_fetch_object($result3))
{
$qry4="SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE ext_id='".$row3->studiensemester_fk."';";
if($result4 = pg_query($conn, $qry4))
{
if($row4=pg_fetch_object($result4))
{
$studiensemester_kurzbz=$row4->studiensemester_kurzbz;
}
}
else
{
$error=true;
$error_log="Fehler beim Zugriff auf Tablelle tbl_studiensemester.".$qry4;
$anzahl_fehler++;
}
}
else
{
$error=true;
}
}
else
{
$error=true;
$error_log="Fehler beim Zugriff auf Tablelle gruppe.".$qry3;
$anzahl_fehler++;
}
if($gruppe_kurzbz!="" && $studiensemester_kurzbz!="" && !$error && $uid!="")
{
$qrychk2="SELECT * FROM public.tbl_benutzergruppe WHERE uid='".$uid."' AND gruppe_kurzbz='".$gruppe_kurzbz."';";
//echo nl2br("...".$qrychk2."\n");
if($resultchk2 = pg_query($conn, $qrychk2))
{
if($rowchk2=pg_fetch_object($resultchk2))
{
//update
if($rowchk2->uid!=$uid || $rowchk2->gruppe_kurzbz!=$gruppe_kurzbz || $rowchk2->studiensemester_kurzbz!=$studiensemester_kurzbz)
{
$qrybg="UPDATE public.tbl_benutzergruppe SET ".
"uid=".myaddslashes($uid).", ".
"gruppe_kurzbz=".myaddslashes($gruppe_kurzbz).", ".
"studiensemester_kurzbz=".myaddslashes($studiensemester_kurzbz).", ".
"updateamum=now(), ".
"updatevon='SYNC'".
"WHERE uid='".$uid."' AND gruppe_kurzbz='".$gruppe_kurzbz."';";
if($resultbg=pg_query($conn, $qrybg))
{
$anzahl_update++;
$ausgabe="Benutzergruppe auf UID='".$uid."', Gruppe='".$gruppe_kurzbz."', Studiensemester='".$studiensemester_kurzbz."' geändert (statt UID='".$rowchk2->uid."', Gruppe='".$rowchk2->gruppe_kurzbz."', Studiensemester='".$rowchk2->studiensemester_kurzbz."').\n";
}
else
{
$anzahl_fehler++;
$error_log="Fehler beim Ändern in Tabelle tbl_benutzergruppe. ".$qrybg."\n";
}
}
}
else
{
//insert
$qrybg="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, studiensemester_kurzbz, insertamum, insertvon, updateamum, updatevon, ext_id) VALUES( ".
myaddslashes($uid).", ".
myaddslashes($gruppe_kurzbz).", ".
myaddslashes($studiensemester_kurzbz).", ".
myaddslashes($insertamum).", ".
myaddslashes($insertvon).", ".
"now(), ".
"'SYNC', ".
myaddslashes($ext_id).");";
if($resultbg=pg_query($conn, $qrybg))
{
$ausgabe="Benutzergruppe mit UID='".$uid."', Gruppe='".$gruppe_kurzbz."', Studiensemester='".$studiensemester_kurzbz."' angelegt.\n";
$anzahl_eingefuegt++;
}
else
{
$anzahl_fehler++;
$error_log="Fehler beim Einfügen in Tabelle tbl_benutzergruppe. ".$qrybg."\n";
}
}
}
}
//echo nl2br($ext_id.", ".$error);
$ausgabe_all.=$ausgabe;
$error_log_fas.=$error_log;
$ausgabe='';
$error_log='';
}
}
}
}
}
//echo nl2br($text);
echo nl2br("\nBenutzergruppe\nStudenten: $anzahl_quelle_student / Gruppen: $anzahl_quelle / Eingefügt: $anzahl_eingefuegt / Geändert: $anzahl_update / Fehler: $anzahl_fehler\n");
echo nl2br("\nStudenten, die in tbl_benutzer nicht gefunden wurden: ".$nicht_gefunden."\n".$error_log_fas);
echo nl2br ("\n\n".$ausgabe_all);
$ausgabe="\nBenutzergruppe\nStudenten: $anzahl_quelle_student / Gruppen: $anzahl_quelle / Eingefügt: $anzahl_eingefuegt / Geändert: $anzahl_update / Fehler: $anzahl_fehler."
."\n\n".$ausgabe_all;
if(strlen(trim($error_log_fas))>0)
{
mail($adress, 'SYNC-Fehler Benutzergruppe von '.$_SERVER['HTTP_HOST'], "Studenten, die in tbl_benutzer nicht gefunden wurden: ".$nicht_gefunden."\n".$error_log_fas,"From: vilesci@technikum-wien.at");
}
mail($adress, 'SYNC Benutzergruppe von '.$_SERVER['HTTP_HOST'], $ausgabe,"From: vilesci@technikum-wien.at");
?>
</body>
</html>
+310
View File
@@ -0,0 +1,310 @@
<?php
/* Copyright (C) 2007 Technikum-Wien
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
//*
//* Synchronisiert Gruppendatensaetze von FAS DB in PORTAL DB
//*
//*
include('../../../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");
//$adress='ruhan@technikum-wien.at';
$adress='fas_sync@technikum-wien.at';
$error_log='';
$error_log_fas='';
$text = '';
$anzahl_quelle=0;
$anzahl_eingefuegt=0;
$anzahl_update=0;
$anzahl_fehler=0;
$ausgabe='';
$ausgabe_all='';
$update=false;
function myaddslashes($var)
{
return ($var!=''?"'".addslashes($var)."'":'null');
}
/*************************
* FAS-PORTAL - Synchronisation
*/
?>
<html>
<head>
<title>Synchro - FAS -> Vilesci - Gruppe</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//nation
$qry="SELECT * FROM gruppe WHERE typ='4' OR typ='5' Or typ='6' ORDER BY gruppe_pk;";
if($result = pg_query($conn_fas, $qry))
{
echo nl2br("Gruppe Sync\n-------------\n");
$anzahl_quelle=pg_num_rows($result);
while($row = pg_fetch_object($result))
{
$error=false;
$gruppe_kurzbz ="";
$studiengang_kz ="";
$semester ="";
$bezeichnung ="";
$beschreibung ="";
$sichtbar =TRUE;
$lehre =TRUE;
$aktiv =TRUE;
$sort =NULL;
$mailgrp =FALSE;
$generiert =FALSE;
$updateamum ="";
$updatevon ="SYNC";
$insertamum ="";
$insertvon ="SYNC";
$ext_id ="";
$verband ="";
$gruppe ="";
$untergruppe ="";
if($row->obergruppe_fk!='0')
{
$qry1="SELECT * FROM gruppe WHERE gruppe_pk='".$row->obergruppe_fk."';";
if($result1 = pg_query($conn_fas, $qry1))
{
if($row1=pg_fetch_object($result1))
{
if($row1->obergruppe_fk!='0')
{
$qry2="SELECT * FROM gruppe WHERE gruppe_pk='".$row1->obergruppe_fk."';";
if($result2 = pg_query($conn_fas, $qry2))
{
if($row2=pg_fetch_object($result2))
{
if($row2->obergruppe_fk!='0')
{
$qry3="SELECT * FROM gruppe WHERE gruppe_pk='".$row2->obergruppe_fk."';";
if($result3 = pg_query($conn_fas, $qry3))
{
if($row3=pg_fetch_object($result3))
{
$semester=$row3->name;
$verband=$row2->name;
$gruppe=$row1->name;
$untergruppe=$row->name;
}
}
else
{
$error=true;
$error_log="Zugriff auf Tabelle gruppe ist fehlgeschlagen.\n";
}
}
else
{
$semester=$row2->name;
$verband=$row1->name;
$gruppe=$row->name;
}
}
}
else
{
$error=true;
$error_log="Zugriff auf Tabelle Gruppe fehlgeschlagen.\n";
}
}
else
{
$semester=$row1->name;
$verband=$row->name;
$gruppe=' ';
}
}
}
else
{
$error=true;
$error_log="Zugriff auf Tabelle gruppe fehlgeschlagen.\n";
}
}
else
{
$semester=$row->name;
$verband=' ';
$gruppe=' ';
}
$ext_id=$row->gruppe_pk;
//echo nl2br($semester."/".$verband."/".$gruppe."/".$untergruppe."--".$ext_id."\n");
//continue;
$qry2="SELECT * FROM studiengang WHERE studiengang_pk='".$row1->studiengang_fk."';";
if($result2 = pg_query($conn_fas, $qry2))
{
if($row2=pg_fetch_object($result2))
{
$studiengang_kz=$row2->kennzahl;
}
else
{
$error_log.="Studiengang mit studiengang_pk='".$row1->studiengang_fk."' nicht gefunden.\n";
$error=true;
}
}
else
{
$error=true;
$error_log="Fehler beim Zugriff auf Tabelle studiengang.\n";
}
$qry2="SELECT * FROM public.tbl_studiengang WHERE studiengang_kz='".$studiengang_kz."';";
if($result2 = pg_query($conn, $qry2))
{
if($row2=pg_fetch_object($result2))
{
$gruppe_kurzbz=strtoupper($row2->typ).strtoupper($row2->kurzbz)."-".strtoupper(trim($semester)).strtoupper(trim($verband)).strtoupper(trim($gruppe)).strtoupper(trim($untergruppe));
if(strlen($gruppe_kurzbz)>16)
{
$verband=substr($verband,0,strlen($verband)-(strlen($gruppe_kurzbz)-16));
$gruppe_kurzbz=strtoupper($row2->typ).strtoupper($row2->kurzbz)."-".strtoupper(trim($semester)).strtoupper(trim($verband)).strtoupper(trim($gruppe)).strtoupper(trim($untergruppe));
}
}
else
{
$error_log.="Studiengang mit studiengang_kz='".$studiengang_kz."' nicht gefunden.\n";
$error=true;
}
}
else
{
$error=true;
$error_log="Fehler beim Zugriff auf Tabelle tbl_studiengang.\n";
}
$bezeichnung=$gruppe_kurzbz;
$beschreibung=$bezeichnung;
if(!$error)
{
$qry2="SELECT * FROM public.tbl_gruppe WHERE gruppe_kurzbz='".$gruppe_kurzbz."' AND studiengang_kz='".$studiengang_kz."';";
if($result2 = pg_query($conn, $qry2))
{
if($row2=pg_fetch_object($result2))
{
//Eintrag bereits vorhanden - Eintragung in Sync-Tabelle
$anzahl_update++;
$qrysync="SELECT * FROM sync.tbl_syncgruppe WHERE fas_gruppe='".$ext_id."' AND vilesci_gruppe='".$gruppe_kurzbz."';";
if($resultsync = pg_query($conn, $qrysync))
{
$ausgabe="Gruppe in Vilesci bereits vorhanden.\n";
$qryupd="UPDATE public.tbl_gruppe SET ext_id='".$ext_id."' WHERE gruppe_kurzbz='".$gruppe_kurzbz."' AND studiengang_kz='".$studiengang_kz."';";
if($resultupd = pg_query($conn, $qryupd))
{
if($rowsync=pg_fetch_object($resultsync))
{
//Sync-Eintrag bereits vorhanden
$qryinss="INSERT INTO sync.tbl_syncgruppe (fas_gruppe, vilesci_gruppe) VALUES ('".$ext_id."','".$rowsync->vilesci_gruppe."');";
$ausgabe.="---Sync-Eintrag 1: FAS-'".$ext_id."', Vilesci-'".$rowsync->vilesci_gruppe."'.\n";
}
else
{
//Sync-Eintrag nicht vorhanden
$qryinss="INSERT INTO sync.tbl_syncgruppe (fas_gruppe, vilesci_gruppe) VALUES ('".$ext_id."','".$gruppe_kurzbz."');";
$ausgabe.="---Sync-Eintrag 2: FAS-'".$ext_id."', Vilesci-'".$gruppe_kurzbz."'.\n";
}
if(!(pg_query($conn, $qryinss)))
{
$error=true;
$error_log="Eintrag in Tabelle tbl_syncgruppe fehlgeschlagen: ".$qryinss."\n";
}
}
else
{
$error=true;
$error_log="Update in Tabelle tbl_gruppe fehlgeschlagen: ".$qryupd."\n";
}
}
}
else
{
//Eintrag noch nicht vorhanden - Insert und Eintragung in Sync-Tabelle
$qryinsg="INSERT INTO public.tbl_gruppe (gruppe_kurzbz, studiengang_kz, semester, bezeichnung, beschreibung, sichtbar, lehre, aktiv, sort, mailgrp, generiert, updateamum, updatevon, insertamum, insertvon, ext_id) VALUES(".
myaddslashes($gruppe_kurzbz).", ".
myaddslashes($studiengang_kz).", ".
myaddslashes($semester).", ".
myaddslashes($bezeichnung).", ".
myaddslashes($beschreibung).", ".
($sichtbar?'true':'false').", ".
($lehre?'true':'false').", ".
($aktiv?'true':'false').", ".
myaddslashes($sort).", ".
($mailgrp?'true':'false').", ".
($generiert?'true':'false').",
now(),
'SYNC',
now(),
'SYNC', ".
$ext_id.");";
if($resultinsg = pg_query($conn, $qryinsg))
{
$anzahl_eingefuegt++;
$ausgabe="Gruppe mit gruppe_pk='".$ext_id."' eingetragen als: Gruppe='".$gruppe_kurzbz."', Stg.='".$studiengang_kz."'.\n";
$qryinss="INSERT INTO sync.tbl_syncgruppe (fas_gruppe, vilesci_gruppe) VALUES ('".$ext_id."','".$gruppe_kurzbz."');";
if(!(pg_query($conn, $qryinss)))
{
$error=true;
$error_log="Eintrag in Tabelle tbl_syncgruppe fehlgeschlagen: ".$qryinss.";\n";
}
else
{
$ausgabe.="---Sync-Eintrag: FAS-'".$ext_id."', Vilesci-'".$gruppe_kurzbz."'.\n";
}
}
else
{
$error=true;
$error_log="Eintrag in Tabelle tbl_gruppe fehlgeschlagen: ".$qryinsg."\n";
}
}
}
else
{
$error=true;
$error_log="Fehler bei Zugriff auf Tabelle tbl_gruppe";
}
}
else
{
$anzahl_fehler++;
}
$ausgabe_all.=$ausgabe;
}
}
//echo nl2br($text);
echo nl2br("\nGruppe\nGruppe: $anzahl_quelle / Eingefügt: $anzahl_eingefuegt / Nicht eingefügt: $anzahl_update / Fehler: $anzahl_fehler\n\n");
echo nl2br($error_log_fas."\n\n");
echo nl2br ($ausgabe_all);
$ausgabe="\nGruppe\nGruppe: $anzahl_quelle / Eingefügt: $anzahl_eingefuegt / Nicht eingefügt: $anzahl_update / Fehler: $anzahl_fehler."
."\n\n".$ausgabe_all;
if(strlen(trim($error_log_fas))>0)
{
mail($adress, 'SYNC-Fehler Gruppe von '.$_SERVER['HTTP_HOST'], $error_log_fas,"From: vilesci@technikum-wien.at");
}
mail($adress, 'SYNC Gruppe von '.$_SERVER['HTTP_HOST'], $ausgabe,"From: vilesci@technikum-wien.at");
?>
</body>
</html>
@@ -17,8 +17,8 @@ include('../../../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");
$adress='ruhan@technikum-wien.at';
//$adress='fas_sync@technikum-wien.at';
//$adress='ruhan@technikum-wien.at';
$adress='fas_sync@technikum-wien.at';
$error_log='';
$error_log_fas='';
@@ -55,7 +55,9 @@ function myaddslashes($var)
<body>
<?php
//nation
$qry="SELECT * FROM person, student WHERE person_pk=person_fk AND uid IS NOT null AND uid<>'' AND perskz IS NOT null AND perskz<>'' ORDER BY Familienname, Vorname ;";
$qry="SELECT * FROM person, student
WHERE person_pk=person_fk AND uid IS NOT null AND uid<>'' AND perskz IS NOT null AND perskz<>''
ORDER BY Familienname, Vorname;";
if($result = pg_query($conn_fas, $qry))
{
@@ -76,8 +78,6 @@ if($result = pg_query($conn_fas, $qry))
$insertvon ="SYNC";
$ext_id ="";
$update=false;
$qry="SELECT * FROM student_gruppe WHERE student_fk='".$row->student_pk."';";
if($result1 = pg_query($conn_fas, $qry))
{
@@ -213,7 +213,7 @@ if($result = pg_query($conn_fas, $qry))
}
else
{
$error_log="Gruppentyp nicht 1, 2 oder 3.\n";
$error_log="Gruppentyp nicht 1, 2, 3 oder 10.\n";
$error=true;
}
}
@@ -235,7 +235,7 @@ if($result = pg_query($conn_fas, $qry))
}
else
{
$error_log.="Studiengang mit studiengang_pk='".$row2->studiengang_fk."' nicht gefunden.";
$error_log.="Studiengang mit studiengang_pk='".$row2->studiengang_fk."' nicht gefunden.\n";
$error=true;
}
}
@@ -249,7 +249,7 @@ if($result = pg_query($conn_fas, $qry))
}
else
{
$error_log.="Studiensemester '".$row2->studiensemester_fk."' nicht gefunden.";
$error_log.="Studiensemester '".$row2->studiensemester_fk."' nicht gefunden.\n";
$error=true;
}
}
@@ -271,7 +271,7 @@ if($result = pg_query($conn_fas, $qry))
else
{
$error=true;
$error_log.="Student mit matrikelnr=".$row->perskz." in tbl_student nicht gefunden";
$error_log.="Student mit matrikelnr=".$row->perskz." in tbl_student nicht gefunden.\n";
}
}
else
@@ -416,11 +416,11 @@ if($result = pg_query($conn_fas, $qry))
$error_log_fas.="### Student ".$student_uid.", ".$row->familienname.", (".$row->perskz.") gruppe_pk='".$row1->gruppe_fk."' : ".$error_log;
}
}
else
/*else
{
$anzahl_fehler++;
$error_log_fas.="### Student mit UID/Name/Perskz ".$student_uid.", ".$row->familienname.", (".$row->perskz.") gruppe_pk='".$row1->gruppe_fk."' : ".$error_log;
}
}*/
}
}
else