This commit is contained in:
Andreas Österreicher
2007-11-27 16:40:46 +00:00
parent cd9de2b5da
commit f5d4c0783f
7 changed files with 501 additions and 7 deletions
+20
View File
@@ -54,3 +54,23 @@ INSERT INTO bis.tbl_ausbildung VALUES (10, 'Lehrabschluss', 'Lehrabschlusspr
INSERT INTO bis.tbl_ausbildung VALUES (11, 'Pflichtschule', 'Pflichtschule');
INSERT INTO bis.tbl_ausbildung VALUES (7, 'tertiär', 'Anderer tertiärer Bildungsabschluss (Kolleg; Meisterprüfung; Universitätslehrgang oder Lehrgang gemäß §14a Abs.3 FHStG, mit dem kein akademischer Grad verbunden war)');
INSERT INTO bis.tbl_ausbildung VALUES (2, 'Univ.-Master', 'Universitäts- oder Hochschulabschluss auf Diplom- oder Masterebene, Doktorat der Medizin bzw. der Human- oder Zahnmedizin oder Doktorat auf Grund von Studienvorschriften aus der Zeit vor dem Inkrafttretendes AHStG BGBl. Nr. 177/1966 oder Abschluss eines Universitätslehrganges oder Lehrganges universitären Charakters (§51 Abs. 2 Z 23 UG 2002 oder §§26 Abs.1 und 28 Abs.1 UniStG) oder eines Lehrganges zur Weiterbildung (§14a Abs.2 FHStG) mit Mastergrad');
-- Studiensemester
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('WS2001', '2001-09-03', '2002-01-31', NULL, 'Wintersemester 2001/2002');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('SS2006', '2006-02-13', '2006-07-01', 9, 'Sommersemester 2006');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('SS2005', '2005-02-14', '2005-07-02', 7, 'Sommersemester 2005');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('SS2004', '2004-02-03', '2004-07-03', 5, 'Sommersemester 2004');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('SS2003', '2003-02-02', '2003-07-02', 3, 'Sommersemester 2003');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('SS2002', '2002-02-01', '2002-07-01', 1, 'Sommersemester 2002');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('SS2009', '2009-02-05', '2009-07-05', 15, 'Sommersemester 2009');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('SS2007', '2007-02-12', '2007-07-01', 11, 'Sommersemester 2007');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('SS2008', '2008-02-04', '2008-07-04', 13, 'Sommersemester 2008');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('WS2009', '2009-09-04', '2010-02-04', 16, 'Wintersemester 2009/2010');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('WS2008', '2008-09-03', '2009-02-03', 14, 'Wintersemester 2008/2009');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('WS2006', '2006-09-04', '2007-02-03', 10, 'Wintersemester 2006/2007');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('WS2005', '2005-09-05', '2006-02-04', 8, 'Wintersemester 2005/2006');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('WS2004', '2004-09-06', '2005-02-05', 6, 'Wintersemester 2004/2005');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('WS2003', '2003-09-02', '2004-02-02', 4, 'Wintersemester 2003/2004');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('WS2002', '2002-09-01', '2003-02-01', 2, 'Wintersemester 2002/2003');
INSERT INTO public.tbl_studiensemester(studiensemester_kurzbz, start, ende, ext_id, bezeichnung) VALUES ('WS2007', '2007-09-01', '2008-02-01', 12, 'Wintersemester 2007/2008');
@@ -0,0 +1,84 @@
<?php
/* Copyright (C) 2007 Technikum-Wien
*
*
* Authors: Christian Paminger <[email protected]>,
* Andreas Oesterreicher <[email protected]> and
* Rudolf Hangl <[email protected]>.
*/
//*
//* Kopiert personen TAbelle von FH-DB StPoelten
//*
//*
require_once('sync_config.inc.php');
$starttime=time();
$conn=pg_connect(CONN_STRING)
or die("Connection zur FH-Complete Datenbank fehlgeschlagen");
if (!$conn_ext=mssql_connect (STPDB_SERVER, STPDB_USER, STPDB_PASSWD))
die('Fehler beim Verbindungsaufbau!');
mssql_select_db(STPDB_DB, $conn_ext);
// Sync-Tabelle fuer Personen checken
if (!@pg_query($conn,'SELECT * FROM sync.stp_stgvertiefung LIMIT 1;'))
{
$sql='CREATE TABLE sync.stp_stgvertiefung (
__stgvertiefung integer,
_studiengang integer,
chbezeichnung varchar(256),
chkurzbez varchar(12),
constraint "pk_tbl_sync_stp_stgvertiefung" primary key ("__stgvertiefung"));
Grant select on sync.stp_stgvertiefung to group "admin";
Grant update on sync.stp_stgvertiefung to group "admin";
Grant delete on sync.stp_stgvertiefung to group "admin";
Grant insert on sync.stp_stgvertiefung to group "admin";';
if (!@pg_query($conn,$sql))
echo '<strong>sync.stp_stgvertiefung: '.pg_last_error($conn).' </strong><BR>';
else
echo 'sync.stp_stgvertiefung wurde angelegt!<BR>';
}
/*************************
* FAS-PORTAL - Synchronisation
*/
?>
<html>
<head>
<title>Synchro - FHDB -> FH-Complete - PreSyncStgVertiefung</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$i=0;
$qry="SELECT __stgvertiefung, _studiengang, chbezeichnung, chkurzbez FROM stgvertiefung;";
if($result_ext = mssql_query($qry,$conn_ext))
{
while($row=mssql_fetch_object($result_ext))
{
$qry="INSERT INTO sync.stp_stgvertiefung (__stgvertiefung, _studiengang, chbezeichnung, chkurzbez)
VALUES ('$row->__stgvertiefung','$row->_studiengang',".($row->chbezeichnung==''?'NULL':"'".$row->chbezeichnung."'").",".($row->chkurzbez==''?'NULL':"'".$row->chkurzbez."'").");";
if(!$result = pg_query($conn, $qry))
{
echo $qry.'<BR>'.pg_last_error($conn).' </strong><BR>';
}
echo '.';
flush();
$i++;
}
}
else
echo 'Fehler';//mssql_lasterror($conn_ext);
echo '<BR>Time elapsed: '.(time()-$starttime).' seconds!';
?>
</body>
</html>
@@ -0,0 +1,248 @@
<?php
// **************************************
// Syncronisiert alle Studenten
// legt zusaetzlich Lehrverband und
// Studentlehrverbandeintrag an
// StPoelten -> VILESCI
// setzt vorraus: - tbl_benutzer
// - sync.stp_person
// - sync.stp_stgvertiefung
// - public.tbl_studiensemester
// **************************************
require_once('sync_config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/person.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/student.class.php');
require_once('../../../include/lehrverband.class.php');
//$adress='[email protected]';
$adress='[email protected]';
//$adress='[email protected]';
if(!$conn = pg_pconnect(CONN_STRING))
die('Fehler beim Verbindungsaufbau!');
echo '
<html>
<head>
<title>STP - VILESCI (Student)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>';
echo 'Starte Studenten Syncronisation '.date('H:i:s').'<br>';
flush();
$head_text="Dies ist eine automatische Mail!\n\nFolgende Fehler sind bei der Synchronisation der Studenten aufgetreten:\n\n";
$text='';
$user_gesamt=0;
$anzahl_fehler=0;
$anzahl_update=0;
$anzahl_insert=0;
$anzahl_fehlender_benutzer=0;
$anzahl_doppelte_uid=0;
$statistik='';
// ******** SYNC START ********** //
$qry = "SELECT __person, studiengang_kz, instudiensemester, chusername, chmatrikelnr FROM sync.stp_person JOIN sync.stp_stgvertiefung ON(_stgvertiefung=__stgvertiefung) JOIN public.tbl_studiengang ON(_studiengang=ext_id) WHERE chusername<>'' AND chusername is not null AND _cxPersonTyp in(1, 2) AND chmatrikelnr!='' AND chmatrikelnr is not null";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
$user_gesamt++;
$qry_ext = "SELECT student_uid FROM public.tbl_student WHERE ext_id='$row->__person'";
if($result_ext = pg_query($conn, $qry_ext))
{
if($row_ext = pg_fetch_object($result_ext))
{
$student_uid = $row_ext->student_uid;
}
else
{
$student_uid='';
}
}
else
{
$text.="Fehler beim Ermitteln der ext_id: ".pg_last_error($conn)."\n";
$anzahl_fehler++;
continue;
}
$student = new student($conn);
if($student_uid!='')
{
if($student->load($student_uid))
{
$student->new = false;
}
else
{
$text.="Fehler beim Laden eines Studenten $student_uid: ".$student->errormsg."\n";
$anzahl_fehler++;
continue;
}
}
else
{
$student->new = true;
}
//Pruefen ob der Lehrverband existiert und ggf anlegen
$lehrverband = new lehrverband($conn);
if(!$lehrverband->exists($row->studiengang_kz, $row->instudiensemester, '', ''))
{
$lehrverband->studiengang_kz = $row->studiengang_kz;
$lehrverband->semester = $row->instudiensemester;
$lehrverband->verband = '';
$lehrverband->gruppe = '';
$lehrverband->aktiv = true;
if(!$lehrverband->save(true))
{
$text.="Fehler beim Anlegen des Lehrverbandes $row->studiengang_kz/$row->instudiensemester\n";
$anzahl_fehler++;
continue;
}
}
//Pruefen ob Benutzer vorhanden ist
$qry_ext = "SELECT * FROM public.tbl_benutzer WHERE uid='".addslashes($row->chusername)."'";
if($result_ext = pg_query($conn, $qry_ext))
{
if(pg_num_rows($result_ext)==0)
{
$text.="Benutzer wurde nicht gefunden: $row->chusername\n";
$anzahl_fehlender_benutzer++;
$anzahl_fehler++;
continue;
}
}
else
{
$text.="Fehler beim ermitteln des Benutzers\n";
continue;
}
if($student_uid=='')
{
//Pruefen ob bereits ein Student mit dieser UID vorhanden ist
$qry_ext = "SELECT * FROM public.tbl_student WHERE student_uid='".addslashes($row->chusername)."'";
if($result_ext = pg_query($conn, $qry_ext))
{
if(pg_num_rows($result_ext)>0)
{
$text.="Student mit dieser uid bereits vorhanden: $row->chusername\n";
$anzahl_doppelte_uid++;
$anzahl_fehler++;
continue;
}
}
else
{
$text.="Fehler beim Suchen nach doppelten Eintraegen\n";
continue;
}
}
$updtext='';
if($student_uid!='')
{
if(trim($student->matrikelnr)!=$row->chmatrikelnr)
$updtext.=" Matrikelnr wurde von $student->matrikelnr auf $row->chmatrikelnr geaendert\n";
if($student->studiengang_kz!=$row->studiengang_kz)
$updtext.=" Studiengang wurde von $student->studiengang_kz auf $row->studiengang_kz geaendert\n";
if($student->semester != $row->instudiensemester)
$updtext.=" Semester wurde von $student->semester auf $row->instudiensemester geaendert\n";
if(trim($student->verband)!='')
$updtext.=" Verband wurde von $student->verband auf '' geaendert\n";
if(trim($student->gruppe)!='')
$updtext.=" Gruppe wurde von $student->gruppe auf '' geaendert\n";
}
$student->uid = $row->chusername;
$student->matrikelnr = $row->chmatrikelnr;
$student->prestudent_id = '';
$student->studiengang_kz = $row->studiengang_kz;
$student->semester = $row->instudiensemester;
$student->verband = '';
$student->gruppe = '';
$student->updateamum = date('Y-m-d H:i:s');
$student->updatevon = 'sync';
$student->insertamum = date('Y-m-d H:i:s');
$student->insertvon = 'sync';
$student->ext_id_student = $row->__person;
if($updtext!='' || $student_uid=='')
{
if($student->save(null, false))
{
if($student->new)
{
$text.="Student $student->uid wurde neu angelegt\n";
$anzahl_insert++;
}
else
{
$text.="Student $student->uid wurde aktualisiert\n".$updtext;
$anzahl_update++;
}
}
else
{
$text.="Fehler beim Speichern: ".$student->errormsg."\n";
$anzahl_fehler++;
continue;
}
}
$student->studiensemester_kurzbz = 'WS2007';
if(!$student->save_studentlehrverband())
{
$text.="Fehler beim Speichern des Studentlehrverbandeintrages:".$student->errormsg."\n";
$anzahl_fehler++;
}
}
}
else
{
$text.= "Fehler beim Laden der Studenten\n\n";
$anzahl_fehler++;
}
$statistik .="Anzahl Studenten: ".($user_gesamt)."\n";
$statistik .="Anzahl der Fehler: ".($anzahl_fehler)."\n";
$statistik .="Anzahl Insert: $anzahl_insert\n";
$statistik .="Anzahl Update: $anzahl_update\n";
$statistik .="Fehlender Benutzereintrag: $anzahl_fehlender_benutzer\n";
$statistik .="Mehrfach vorhandene UIDs: $anzahl_doppelte_uid\n";
$statistik .="\n";
$qry = "SELECT count(*) as anzahl FROM sync.stp_person WHERE chmatrikelnr='' AND _cxpersontyp in(1,2) AND chusername<>''";
if($result = pg_query($conn, $qry))
if($row = pg_fetch_object($result))
$statistik .="Studenten mit Username ohne Matrikelnummer: $row->anzahl\n";
$qry = "SELECT count(*) as anzahl FROM sync.stp_person WHERE chmatrikelnr<>'' AND _cxpersontyp in(1,2) AND chusername=''";
if($result = pg_query($conn, $qry))
if($row = pg_fetch_object($result))
$statistik .="Studenten mit Matrikelnummer ohne Username: $row->anzahl\n";
$text = $statistik."\n\n".$text;
if(mail($adress, 'SYNC Studenten',$head_text.$text, "From: [email protected]"))
echo "Mail wurde an $adress versandt<br><br>";
else
echo "Fehler beim Senden an $adress<br><br>";
echo nl2br($text);
?>
</body>
</html>