diff --git a/admin/sync/fas/sync_fas_vilesci_lehrveranstaltungen.php b/admin/sync/fas/sync_fas_vilesci_lehrveranstaltungen.php index d8bb05c96..b1f4225f0 100644 --- a/admin/sync/fas/sync_fas_vilesci_lehrveranstaltungen.php +++ b/admin/sync/fas/sync_fas_vilesci_lehrveranstaltungen.php @@ -9,10 +9,10 @@ require_once('../../../include/lehrveranstaltung.class.php'); //$adress='fas_sync@technikum-wien.at'; $adress='oesi@technikum-wien.at'; - + $conn=pg_connect(CONN_STRING); $conn_fas=pg_connect(CONN_STRING_FAS); - + $plausi_error=0; $update_error=0; $insert_error=0; @@ -27,21 +27,21 @@ $double_lva = array(); $stg_data = array(); $studiensemester = array(); - + //**** FUNCTIONS **** - + //Plausi checks function validate($row) { global $text, $plausi_error, $stg_data, $studiensemester; - + if($row->studiensemester_fk==0) { $stg_data[$row->kennzahl]['text'] .= ' '.$stg_data[$row->kennzahl]['kuerzel'].' Semester '.$row->semester.' '.$row->name." hat Studiensemester 0\n"; $plausi_error++; return false; } - + if($row->kurzbezeichnung == '') { //$text.= 'LVA '.$stg_data[$row->kennzahl]['kuerzel'].' Semester '.$row->semester.' LVA '.$row->name." hat keine Kurzbezeichnung\n"; @@ -75,14 +75,14 @@ } return true; } - + //Liefert Bezeichnung der Lehrveranstaltung function getlvabez($row) { global $studiensemester, $stg_data; return $stg_data[$row->kennzahl]['kuerzel']." Semester $row->semester $row->kurzbezeichnung ".$studiensemester[$row->studiensemester_fk]." ($row->lehrveranstaltung_pk)"; } - + // Fuegt einen Eintrag in die Synctabelle hinzu function synctabentry($lehrveranstaltung_id_vilesci, $lehrveranstaltung_id_fas) { @@ -90,7 +90,7 @@ $qry = "INSERT INTO sync.tbl_synclehrveranstaltung(lva_fas,lva_vilesci) VALUES($lehrveranstaltung_id_fas, $lehrveranstaltung_id_vilesci);"; pg_query($conn, $qry); } - + //Schaut welche Felder aktualisiert gehoeren und liefert den Update Befehl function getupdateqry($row_found, $row_fas_alle) { @@ -135,15 +135,15 @@ $qry.=" anmerkung='".addslashes($row_fas_alle->beschreibung)."'"; $update=true; } - + $qry.=" WHERE lehrveranstaltung_id='$row_found->lehrveranstaltung_id'"; - + if($update) return $qry; - else + else return ''; } - + //**** BEGIN OF SYNCRONISATION **** // Assistenz-Email holen $sql_query="SELECT studiengang_kz, email, UPPER(typ::varchar(1) || kurzbz) as kuerzel FROM public.tbl_studiengang"; @@ -156,7 +156,7 @@ } //Fehler fuer die Freifaecher an Augustin schicken $stg_data[0]['mail']='caugust@technikum-wien.at'; - + //Studiensemester holen $sql_query="SELECT studiensemester_pk, CASE WHEN art=1 THEN 'WS' @@ -167,7 +167,7 @@ { $studiensemester[$row->studiensemester_pk]=$row->stsem; } - + // Lehreinheiten ohne Lehrveranstaltung suchen $qry = "SELECT bezeichnung, semester, kennzahl, studiensemester_fk FROM lehreinheit, studiengang, ausbildungssemester WHERE ausbildungssemester_fk=ausbildungssemester_pk AND lehreinheit.studiengang_fk=studiengang_pk AND lehrveranstaltung_fk NOT IN(SELECT lehrveranstaltung_pk FROM lehrveranstaltung)"; $result = pg_query($conn_fas, $qry); @@ -176,27 +176,27 @@ $stg_data[$row->kennzahl]['text'] .= ' Lehreinheit '.$stg_data[$row->kennzahl]['kuerzel'].' '.$row->semester.' ('.$studiensemester[$row->studiensemester_fk].') '.$row->bezeichnung." hat keine zugehoerige Lehrveranstaltung\n"; $missing_lva++; } - + // Anzahl der Lehrveranstaltungen in VileSci $sql_query="SELECT count(*) AS anz FROM lehre.tbl_lehrveranstaltung"; $result=pg_query($conn, $sql_query); $row=pg_fetch_object($result); $vilesci_anz_lva = $row->anz; - + // Start LVA Synchro - $sql_query="SELECT lehrveranstaltung.*, ausbildungssemester.semester, studiengang.kennzahl - FROM lehrveranstaltung, ausbildungssemester, studiengang - WHERE ausbildungssemester_fk=ausbildungssemester_pk AND - lehrveranstaltung.studiengang_fk=studiengang_pk AND + $sql_query="SELECT lehrveranstaltung.*, ausbildungssemester.semester, studiengang.kennzahl + FROM lehrveranstaltung, ausbildungssemester, studiengang + WHERE ausbildungssemester_fk=ausbildungssemester_pk AND + lehrveranstaltung.studiengang_fk=studiengang_pk AND studiensemester_fk<>0 AND lehrveranstaltung.lehrveranstaltung_pk NOT IN( - SELECT lv1.lehrveranstaltung_pk - FROM lehrveranstaltung lv1, lehrveranstaltung lv2 - WHERE lv1.lehrveranstaltung_pk<>lv2.lehrveranstaltung_pk AND - lv1.ausbildungssemester_fk=lv2.ausbildungssemester_fk AND - lv1.kurzbezeichnung=lv2.kurzbezeichnung AND - lv1.name<>lv2.name AND lv1.kurzbezeichnung is not null AND - lv1.kurzbezeichnung<>'' AND lv2.kurzbezeichnung is not null AND lv2.kurzbezeichnung<>'') + SELECT lv1.lehrveranstaltung_pk + FROM lehrveranstaltung lv1, lehrveranstaltung lv2 + WHERE lv1.lehrveranstaltung_pk<>lv2.lehrveranstaltung_pk AND + lv1.ausbildungssemester_fk=lv2.ausbildungssemester_fk AND + lv1.kurzbezeichnung=lv2.kurzbezeichnung AND + lv1.name<>lv2.name AND lv1.kurzbezeichnung is not null AND + lv1.kurzbezeichnung<>'' AND lv2.kurzbezeichnung is not null AND lv2.kurzbezeichnung<>'') ORDER BY kennzahl, semester, studiensemester_fk"; flush(); $result_fas_alle=pg_query($conn_fas, $sql_query); @@ -205,13 +205,13 @@ $headtext.="Es wurde eine Synchronisation mit FAS durchgeführt.\n"; $headtext.="Anzahl der Lehrveranstaltungen vom FAS: $num_rows \n"; $headtext.="Anzahl der Lehrveranstaltungen in Vilesci: $vilesci_anz_lva \n\n"; - + for ($i=0;$row_fas_alle=pg_fetch_object($result_fas_alle);$i++) { //btec auf 0 umlenken (Freifaecher) if($row_fas_alle->kennzahl==203 && $row_fas_alle->studiensemester_fk>5) $row_fas_alle->kennzahl='0'; - + // Plausibilitaetscheck if(validate($row_fas_alle)) { @@ -222,21 +222,21 @@ { //WEITERSUCHEN //Gleicher /Stg/Sem/Kurzbz - $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE - studiengang_kz='$row_fas_alle->kennzahl' AND - semester='$row_fas_alle->semester' AND + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE + studiengang_kz='$row_fas_alle->kennzahl' AND + semester='$row_fas_alle->semester' AND kurzbz='$row_fas_alle->kurzbezeichnung'"; $result = pg_query($conn, $qry); - + if(pg_num_rows($result)==1) { //$text.='FOUND on Kurzbz LVA '.getlvabez($row_fas_alle)." -> UPDATE & SYNCTAB-Insert\n"; - + if($row_found = pg_fetch_object($result)) { //Datensatz aktualisieren $qry = getupdateqry($row_found, $row_fas_alle); - + if($qry!='') { if(pg_query($conn, $qry)) @@ -246,14 +246,14 @@ $text.="LVA wurde aktualisiert: $qry\n"; $anz_update++; } - else + else { $text.="Fehler beim Update einer LVA: $qry\n"; $update_error++; } } } - else + else { $text.='Fehler beim Lesen des Datensatzes:'.getlvabez($row_fas_alle)."\n"; $update_error++; @@ -263,12 +263,12 @@ { //WEITERSUCHEN //Gleicher /Stg/Sem/Bezeichnung - $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE - studiengang_kz='$row_fas_alle->kennzahl' AND - semester='$row_fas_alle->semester' AND + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE + studiengang_kz='$row_fas_alle->kennzahl' AND + semester='$row_fas_alle->semester' AND bezeichnung='$row_fas_alle->name'"; $result = pg_query($conn, $qry); - + if(pg_num_rows($result)==1) { if($row_found = pg_fetch_object($result)) @@ -276,7 +276,7 @@ //Gefunden->Update und Synctab-Eintrag //$text.='FOUND on Name LVA '.getlvabez($row_fas_alle)." -> UPDATE & SYNCTAB-Insert\n"; $qry = getupdateqry($row_found, $row_fas_alle); - + if($qry!='') { if(pg_query($conn, $qry)) @@ -286,18 +286,18 @@ $text.="LVA wurde aktualisiert: $qry\n"; $anz_update++; } - else + else { $text.="Fehler beim Update einer LVA: $qry\n"; $update_error++; } - } + } } - else + else { $text.='Fehler beim Lesen des Datensatzes:'.getlvabez($row_fas_alle)."\n"; $update_error++; - } + } } elseif(pg_num_rows($result)==0) { @@ -323,25 +323,25 @@ $lv->updatevon = 'Sync'; $lv->insertamum = date('Y-m-d H:i:s'); $lv->insertvon = 'Sync'; - + if($lv->save(true)) { synctabentry($lv->lehrveranstaltung_id, $row_fas_alle->lehrveranstaltung_pk); $text.="Eine neue Lehrveranstaltung wurde angelegt: ".getlvabez($row_fas_alle)."\n"; $anz_insert++; } - else + else { $text.="Fehler beim Anlegen der LVA ".getlvabez($row_fas_alle).": $lv->errormsg\n"; $insert_error++; - } + } } - else + else { - $text.="MULTIFOUND Bezeichnung".getlvabez($row_fas_alle)."-> BREAK\n"; + $text.="MULTIFOUND Bezeichnung".getlvabez($row_fas_alle)."-> BREAK\n"; } } - else + else { $text.="MULTIFOUND kurzbz ".getlvabez($row_fas_alle)."-> BREAK\n"; if(!isset($double_lva[$row_fas_alle->lehrveranstaltung_pk])) @@ -351,48 +351,48 @@ } elseif(pg_num_rows($result)==1) { - $row_id = pg_fetch_object($result); + $row_id = pg_fetch_object($result); $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id='$row_id->lva_vilesci'"; $result = pg_query($conn, $qry); - + //UPDATE if($row_found = pg_fetch_object($result)) { //Datensatz aktualisieren $qry = getupdateqry($row_found, $row_fas_alle); - + if($qry!='') { if(pg_query($conn, $qry)) - { + { $text.="LVA wurde aktualisiert: $qry\n"; $anz_update++; } - else + else { $text.="Fehler beim Update einer LVA: $qry\n"; $update_error++; } } } - else + else { $text.='Fehler beim Lesen des Datensatzes:'.getlvabez($row_fas_alle); $update_error++; } } - else + else { $text.="\nLVA ".getlvabez($row_fas_alle)." hat mehrere Eintraege in tbl_synclehrveranstaltung\n"; $double_error++; } } - else + else { //$text.="\nLVA ".getlvabez($row_fas_alle)." hat nicht plausible Daten\n"; } - } - + } + $headtext.="\n$plausi_error Fehler beim Plausibilitaetscheck!\n"; $headtext.="$update_error Fehler bei LVA-Update!\n"; $headtext.="$insert_error Fehler bei LVA-Insert!\n"; @@ -401,30 +401,30 @@ $headtext.="$anz_update LVAs wurden aktualisiert.\n"; $headtext.="$anz_insert LVAs wurden neu angelegt.\n"; $headtext.="$missing_lva Lehreinheiten haben keine LV.\n"; - - $qry = "Select count(*) as anzahl FROM (SELECT distinct lv1.lehrveranstaltung_pk - FROM lehrveranstaltung lv1, lehrveranstaltung lv2 - WHERE lv1.lehrveranstaltung_pk<>lv2.lehrveranstaltung_pk AND - lv1.ausbildungssemester_fk=lv2.ausbildungssemester_fk AND - lv1.kurzbezeichnung=lv2.kurzbezeichnung AND - lv1.name<>lv2.name AND lv1.kurzbezeichnung is not null AND + + $qry = "Select count(*) as anzahl FROM (SELECT distinct lv1.lehrveranstaltung_pk + FROM lehrveranstaltung lv1, lehrveranstaltung lv2 + WHERE lv1.lehrveranstaltung_pklv2.name AND lv1.kurzbezeichnung is not null AND lv1.kurzbezeichnung<>'' AND lv2.kurzbezeichnung is not null AND lv2.kurzbezeichnung<>'') as a"; $result = pg_query($conn_fas, $qry); $row = pg_fetch_object($result); if($row->anzahl>0) - { + { $headtext.="$row->anzahl LVAs haben verschiedene Bezeichnungen"; $text.="Gleiche LVAs mit unterschiedlicher Bezeichnung vorhanden: \n\nSELECT distinct lv1.lehrveranstaltung_pk FROM lehrveranstaltung lv1, lehrveranstaltung lv2 WHERE lv1.lehrveranstaltung_pk<>lv2.lehrveranstaltung_pk AND lv1.ausbildungssemester_fk=lv2.ausbildungssemester_fk AND lv1.kurzbezeichnung=lv2.kurzbezeichnung AND lv1.name<>lv2.name AND lv1.kurzbezeichnung is not null AND lv1.kurzbezeichnung<>'' AND lv2.kurzbezeichnung is not null AND lv2.kurzbezeichnung<>''\n"; } - + if(count($double_lva)>0) { $headtext.="\nDoppelte Lehrveranstaltungen:\n\n"; foreach ($double_lva as $bez) $headtext.=$bez."\n"; } - - + + foreach ($stg_data as $stg=>$trash) { $msg = $stg_data[$stg]['text']; @@ -433,13 +433,13 @@ $text.="\nMails an Studiengang ".$stg_data[$stg]['kuerzel'].'('.$stg_data[$stg]['mail'].") ... "; if(mail('oesi@technikum-wien.at',"FAS - Vilesci (Lehrveranstaltungen) ".$stg_data[$stg]['kuerzel'],$head_stg_text.$msg,"From: vilesci@technikum-wien.at")) $text.="gesendet\n\n$msg"; - else + else $text.="FEHLER beim senden\n\n$msg"; } } - + $text.="\nEND OF SYNCHRONISATION\n"; - + if (mail($adress,"FAS - Vilesci (Lehrveranstaltungen)",$headtext."\n\n".$text,"From: vilesci@technikum-wien.at")) $sendmail=true; else