- sync_fas_lkt

- Kreuzerltool bugfixes
- lehreinheit syncro bugfix
This commit is contained in:
Andreas Österreicher
2007-01-23 16:52:49 +00:00
parent 4364a4ed20
commit b37eb2481e
12 changed files with 349 additions and 124 deletions
+150 -70
View File
@@ -1,5 +1,25 @@
<?php
include ('../../vilesci/config.inc.php');
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
require_once('../../vilesci/config.inc.php');
function clean_string($string)
{
@@ -27,131 +47,191 @@
return $string;
}
$adress='fas_sync@technikum-wien.at';
//$adress='fas_sync@technikum-wien.at';
$adress='tw_tester@technikum-wien.at';
//mail($adress,"FAS Synchro mit VILESCI (Lektoren)","BEGIN OF SYNCHRONISATION","From: vilesci@technikum-wien.at");
$conn=pg_connect(CONN_STRING);
$conn_fas=pg_connect(CONN_STRING_FAS);
// Anzahl der Mitarbeiter in VILESCI
$sql_query="SELECT count(*) AS anz FROM tbl_mitarbeiter WHERE uid NOT LIKE '\\\\_%'";
// Anzahl der Mitarbeiter in PORTAL
$sql_query="SELECT count(*) AS anz FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid NOT LIKE '\\\\_%'";
//echo $sql_query."<br>";
$result=pg_exec($conn, $sql_query);
$result=pg_query($conn, $sql_query);
$vil_anz_mta=pg_fetch_result($result,0,'anz');
// Start Studenten Synchro
$sql_query="SELECT * FROM vw_vilesci_mitarbeiter_aktiv WHERE uid IS NOT NULL AND uid NOT LIKE ''"; // LIMIT 5";
//echo $sql_query."<br>";
$result=pg_exec($conn_fas, $sql_query);
$num_rows=pg_numrows($result);
$result=pg_query($conn_fas, $sql_query);
$num_rows=pg_num_rows($result);
$text="Dies ist eine automatische eMail!\r\r";
$text.="Es wurde eine Synchronisation mit FAS durchgeführt.\r";
$text.="Anzahl der Mitarbeiter vom FAS-Import: $num_rows \r";
$text.="Anzahl der Mitarbeiter in der VILESCI: $vil_anz_mta \r\r";
$text.="Anzahl der Mitarbeiter in PORTAL: $vil_anz_mta \r\r";
$plausi_error=0;
$update_error=0;
$insert_error=0;
$double_error=0;
$anz_update=0;
$anz_insert=0;
for ($i=0;$i<$num_rows;$i++)
while($row=pg_fetch_object($result))
{
$row=pg_fetch_object($result,$i);
$row->gebort=substr($row->gebort,0,30);
//$row->titel=substr($row->titel,0,15);
$uid=str_replace(' ','',$row->uid);
// Plausibilitaetscheck
if (strlen($row->titel)>64)
if (strlen($row->titel)>32)
$text.="Der Mitarbeiter $row->titel $row->vornamen $row->nachname ($row->uid) hat einen zu langen Titel.\r";
if (strlen($row->titel)<=64)
if (strlen($row->titel)<=32)
{
// SQL vorbereiten (jeden Mitarbeiter vom FAS in VILESCI suchen
$sql_query="SELECT uid,titel,vornamen,nachname,gebdatum,gebort,";
$sql_query="SELECT uid,titelpre,vorname,nachname,gebdatum,gebort,";
$sql_query.="personalnummer";
$sql_query.=" FROM tbl_person NATURAL JOIN tbl_mitarbeiter WHERE uid LIKE '$uid'";
$sql_query.=" FROM campus.vw_mitarbeiter WHERE uid = '$uid'";
//echo $sql_query;
$res_std=pg_exec($conn, $sql_query);
$num_rows_std=pg_numrows($res_std);
$res_lkt=pg_query($conn, $sql_query);
$num_rows_lkt=pg_num_rows($res_lkt);
// neue Lektoren
if ($num_rows_std==0)
if ($num_rows_lkt==0)
{
$text.="Der Lektor $row->vornamen $row->nachname ($row->uid) wird neu angelegt.\r";
pg_query($conn, "BEGIN");
// person
$qry="INSERT INTO tbl_person(uid,titel,vornamen, nachname, gebdatum, gebort) ".
"VALUES('$uid','$row->titel','$row->vornamen','$row->nachname','$row->gebdatum','$row->gebort')";
echo $qry.'<BR>';
if(!$res_insert=pg_exec($conn, $qry))
if(!$len=strpos($row->vornamen,' '))
{
$text.=$qry;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$insert_error++;
}
//Alias erstellen
$vn = split('[- .,]',strtolower($row->vornamen));
$vn = clean_string($vn[0]);
$nn = split('[- .,]',strtolower($row->nachname));
$nn = clean_string($nn[0]);
$alias = $vn.".".$nn;
$qry = "UPDATE tbl_person set alias='$alias' where uid='$uid'";
if(!$res_insert=pg_exec($conn, $qry))
{
$text.=$qry;
$text.="\rFehler: Alias existiert bereits: $alias";
$insert_error++;
}
// lektor
$sql_query="INSERT INTO tbl_mitarbeiter (uid,personalnummer,kurzbz,lektor,telefonklappe,fixangestellt) ".
"VALUES('$row->uid','$row->persnr','$row->kurzbez',true,'$row->teltw',".($row->fixangestellt?'true':'false').")";
echo $sql_query.'<BR>';
if(!$res_insert=pg_exec($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$insert_error++;
$vorname=$row->vornamen;
$vornamen='';
}
else
$anz_insert++;
{
$vorname=substr($row->vornamen,0,$len);
$vornamen=substr($row->vornamen,$len+1,strlen($row->vornamen));
}
$qry = "INSERT INTO public.tbl_person(titelpre, nachname, vorname, vornamen, gebdatum, gebort, aktiv)
VALUES('$row->titel','$row->nachname','$vorname','$vornamen','$row->gebdatum','$row->gebort',true);";
echo $qry.'<BR>';
if(!$res_insert=pg_query($conn, $qry))
{
$text.=$qry;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$insert_error++;
pg_query($conn, 'ROLLBACK');
}
else
{
$qry = "SELECT currval('tbl_person_person_id_seq') AS id;";
if(!$row_seq=pg_fetch_object(pg_query($this->conn,$qry)))
{
pg_query($conn, 'ROLLBACK');
$text = 'Sequence konnte nicht ausgelesen werden\n';
$insert_error++;
}
else
{
$person_id = $row_seq->id;
//Benutzer Datensatzt anlegen
$qry = "INSERT INTO public.tbl_benutzer(uid, person_id, aktiv, insertamum, insertvon, updateamum, updatevon)
VALUES('$row->uid','$person_id','true',now(),'auto',now(),'auto');";
if(!pg_query($conn, $qry))
{
pg_query($conn, 'ROLLBACK');
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$insert_error++;
}
else
{
//Alias erstellen
$vn = split('[- .,]',strtolower($row->vornamen));
$vn = clean_string($vn[0]);
$nn = split('[- .,]',strtolower($row->nachname));
$nn = clean_string($nn[0]);
$alias = $vn.".".$nn;
$qry = "UPDATE public.tbl_benutzer set alias='$alias' WHERE uid='$uid'";
if(!$res_insert=pg_exec($conn, $qry))
{
$text.=$qry;
$text.="\rFehler: Alias existiert bereits: $alias";
$insert_error++;
}
// Mitarbeiterdatensatz
$sql_query="INSERT INTO tbl_mitarbeiter (mitarbeiter_uid,personalnummer,telefonklappe,kurzbz,lektor,fixangestellt, insertamum, insertvon, updateamum, updatevon) ".
"VALUES('$row->uid','$row->persnr','$row->teltw','$row->kurzbez',true,".($row->fixangestellt?'true':'false').",now(),'auto',now(),'auto')";
echo $sql_query.'<BR>';
if(!$res_insert=pg_query($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
pg_query($conn, 'ROLLBACK');
$insert_error++;
}
else
{
$anz_insert++;
pg_query($conn, 'COMMIT');
}
}
}
}
}
// bestehende Lektoren
elseif ($num_rows_std==1)
{
elseif ($num_rows_lkt==1)
{
$update=0;
$row_std=pg_fetch_object($res_std,0);
if ($row->gruppe==NULL)
$row->gruppe=1;
if ($row->titel!=$row_std->titel)
$row_lkt=pg_fetch_object($res_lkt,0);
if(!$len=strpos($row->vornamen,' '))
{
$vorname=$row->vornamen;
$vornamen='';
}
else
{
$vorname=substr($row->vornamen,0,$len);
$vornamen=substr($row->vornamen,$len+1,strlen($row->vornamen));
}
//if ($row->gruppe==NULL)
// $row->gruppe=1;
if ($row->titel!=$row_lkt->titelpre)
$update=1;
elseif ($row->vornamen!=$row_std->vornamen)
elseif ($vorname!=$row_lkt->vorname)
$update=2;
elseif ($row->nachname!=$row_std->nachname)
elseif ($row->nachname!=$row_lkt->nachname)
$update=3;
elseif ($row->gebdatum!=$row_std->gebdatum)
elseif ($row->gebdatum!=$row_lkt->gebdatum)
$update=4;
elseif ($row->gebort!=$row_std->gebort)
elseif ($row->gebort!=$row_lkt->gebort)
$update=5;
elseif ($row->persnr!=$row_std->personalnummer)
elseif ($row->persnr!=$row_lkt->personalnummer)
$update=6;
if ($update)
{
$text.="Der Lektor $row->vornamen $row->nachname ($row->uid) [$update] wird upgedatet.\r";
// person
$sql_query="UPDATE tbl_person SET titel='$row->titel', vornamen='$row->vornamen', ".
$sql_query="UPDATE public.tbl_person SET titelpre='$row->titel', vorname='$vorname', vornamen='$vornamen', ".
" nachname='$row->nachname', gebdatum='$row->gebdatum', gebort='$row->gebort'".
" WHERE uid LIKE '$uid'";
" WHERE person_id=(SELECT person_id FROM public.tbl_benutzer WHERE uid='$uid')";
echo $sql_query.'<BR>';
if(!$res_update=pg_exec($conn, $sql_query))
if(!$res_update=pg_query($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
$update_error++;
}
$sql_query="UPDATE tbl_mitarbeiter SET personalnummer='$row->persnr',fixangestellt=".($row->fixangestellt?'TRUE':'FALSE');
$sql_query.=" WHERE uid LIKE '$uid'";
$sql_query="UPDATE public.tbl_mitarbeiter SET personalnummer='$row->persnr',fixangestellt=".($row->fixangestellt?'TRUE':'FALSE');
$sql_query.=" WHERE mitarbeiter_uid LIKE '$uid'";
echo $sql_query.'<BR>'; // kurzbz='$row->kurzbez',
if(!$res_update=pg_exec($conn, $sql_query))
if(!$res_update=pg_query($conn, $sql_query))
{
$text.=$sql_query;
$text.="\rFehler: ".pg_errormessage($conn)."\r";
@@ -162,7 +242,7 @@
}
}
// Lektor kommt mehrmals vor ->Warnung
elseif ($num_rows_std>1)
elseif ($num_rows_lkt>1)
{
$text.="\r!!! Der Lektor $row->vornamen $row->nachname ($row->uid) kommt mehrfach vor!\r";
$double_error++;
@@ -178,7 +258,7 @@
$text.="$anz_update Lektoren wurden upgedatet.\r";
$text.="$anz_insert Lektoren wurden neu angelegt.\r\r";
$text.="\rEND OF SYNCHRONISATION\r";
if (mail($adress,"FAS Synchro mit VileSci (Lektoren)",$text,"From: vilesci@technikum-wien.at"))
if (mail($adress,"FAS Synchro mit PORTAL (Lektoren)",$text,"From: vilesci@technikum-wien.at"))
$sendmail=true;
else
$sendmail=false;
@@ -195,7 +275,7 @@ if ($sendmail)
echo 'Mail wurde verschickt an '.$adress.'!<br>';
else
echo "Mail konnte nicht verschickt werden!<br>";
echo $text;
echo nl2br($text);
?>
</body>