From 64f61faa472b6733999168edd96cd8725b8c31d7 Mon Sep 17 00:00:00 2001 From: Christian Paminger Date: Mon, 27 Nov 2006 16:54:42 +0000 Subject: [PATCH] --- admin/VI-Kurzreferenz.html | 450 ++++++++++++++++++++++++ admin/index.html | 14 + admin/stdplan_lva_del.php | 104 ++++++ admin/sync/sync_vilesci_stg.php | 586 ++------------------------------ 4 files changed, 589 insertions(+), 565 deletions(-) create mode 100644 admin/VI-Kurzreferenz.html create mode 100644 admin/stdplan_lva_del.php diff --git a/admin/VI-Kurzreferenz.html b/admin/VI-Kurzreferenz.html new file mode 100644 index 000000000..d732bb4e4 --- /dev/null +++ b/admin/VI-Kurzreferenz.html @@ -0,0 +1,450 @@ + + +Herbert's Homepage: VI-Kurzreferenz + + + + + + +

VI Einführung und Kurzreferenz

+ +
[eine Ebene höher] [Suchen] +
+

+ + + + +
+

Inhalt

+
+

+

+


+ + + + + +
+

Einführung

+
+

+

VI Betriebsarten

Der vi kennt drei Betriebsarten: +
    +
  1. Der visual mode, in dem jeder Tastendruck als Kommando + interpretiert wird. Dies ist die Standardbetriebsart des vi! +
  2. Der ex mode, in dem über die Kommandozeile komplexe Befehle, wie + z.B. Suchen und Ersetzen eingegeben werdne können. +
  3. Der input mode, in dem Text eingegeben werden kann.
+

+

Der Visual Mode

Der Visual Mode ist wie gesagt die +Standardbetriebsart des vi, d.h., man befindet sich direkt nach dem Start des vi +darin. Aus allen anderen Betriebsarten kommt man jederzeit durch Drücken der +Escape Taste zurück. +

Die Idee dahinter ist, daß man, solange kein Text eingegeben wird, ohne Hilfe +von Maus oder erweiterter Tastatur (Pfeiltasten usw.) in der editierten Datei +durch Bewegen des Cursors, Springen und mit Hilfe von Bookmarks navigieren kann. +Das ermöglicht Arbeit mit einem sehr hohen Tempo und auch auf Terminals ohne +erweiterte Tastatur. +

+

+

Der Ex Mode

Der Ex Mode dient dazu, auch komplexere Kommandos oder +Makros eingeben zu können, die durch jeweils einfache Tastendrücke im Visual +Mode so nicht möglich wären. +

Man erreicht den Ex Mode aus dem Visual Mode heraus und zwar durch Drücken +von ":". Ein Kommando im Ex Mode wird abgebrochen durch Escape oder +beendet durch Enter. +

+

Der Input Mode

Der Input Mode dient zum Eingeben von Text. Hier +werden die normalen Tasten als einzugebende Buchstaben interpretiert. Andere +Befehle aus dem Visual Mode, die auf Tasten liegen, die so nicht druckbar sind, +wie z.B. Ctrl-F und Ctrl-B (PageDownund +PageUp), stehen weiterhin zur Verfügung. +

Der Input Mode kann durch verschiedene Visual Kommandos eingeleitet werden. +Mehr dazu unter Text +eingeben. +

Der Input Mode wird verlassen durch Escape, man landet somit wieder +im Visual Mode. +

+

+


+ + + + + +
+

Wichtige VI Kommandos

+
+

+

Konvention

Im Folgenden werden einige oft benutzte VI-Kommandos +aufgelistet. Fast alle dieser Kommandos sind Visual Kommandos. +Ex Kommandos werden durch das ":" am Anfang gekennzeichnet. +

Manche (meist Visual) Kommandos haben noch ein [Count] +vorangestellt. Das heißt, daß das Kommando normalerweise einmal, bei einer +vorher gedrückten Zahl n aber n-mal ausgeführt wird. +

+

Starten des VI

Der VI kann mit oder ohne Angabe eines Dateinamen +gestartet werden. Wird ein Dateiname angegeben, wird die Datei geladen oder, +falls sie noch nicht existiert, neu erzeugt. Aufrufe können sein: +

+ + + + + + + + + + + + + + + + +
vi Aufruf von vi mit leerem Text-Puffer.
vi Dateiname Datei wird geladen und der Cursor bei der ersten Zeile plaziert. +
vi + Dateiname Datei wird geladen und der Cursor bei der letzten Zeile plaziert. +
vi +n Dateiname Datei wird geladen und der Cursor bei der n-ten Zeile + plaziert.
vi +/Zeichenkette Dateiname Datei wird geladen und der Cursor bei der Zeile mit + Zeichenkette plaziert.
+

Hinweis: Die meisten vi-Versionen beherrschen auch das Bearbeiten mehrerer +Dateien, allerdings unterscheiden sich die Implementierungen meistens. +

Moderne Implementierungen wie z.B. Elvis können auch den Bildschirm +in Fenster unterteilen. Hierzu verweise ich aber auf die Dokumentation des +jeweiligen vi-Clones! +

+

Beenden des VI

+ + + + + + + + + + + + + +
:wq Speichern und vi verlassen.
:q vi verlassen, falls Datei unverändert
:q! vi verlassen, egal ob Datei verändert oder nicht.
:w Datei speichern
+

+

Dateien laden

+ + + + + + + + + + +
e Datei Datei wird geladen, wenn sie existiert, ansonsten erzeugt. +
:next Die nächste Datei wird geladen, falls vi mit mehreren Dateien + aufgerufen wurde.
:prev Die vorherige Datei wird geladen, falls vi mit mehreren Dateien + aufgerufen wurde.
+

+

Cursorbewegungen

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[Count]j Den Cursor um eine (bzw. Count) Zeile runter. usw.).
[Count]k Den Cursor um eine (bzw. Count) Zeile rauf. usw.).
[Count]l Den Cursor um ein (bzw. Count) Zeichen rechts. usw.).
[Count]h Den Cursor um ein (bzw. Count) Zeichen links.
[Count]w Den Cursor um ein (bzw. Count) Wort rechts.
[Count]b Den Cursor um ein (bzw. Count) Wort links.
[Count]h Den Cursor um ein (bzw. Count) Zeichen links.
[Count]h Den Cursor um ein (bzw. Count) Zeichen links.
[Count]G Springe zum Ende der Datei oder, falls Count gegeben, zu + Zeile Count.
Ctrl-f Page-Down.
Ctrl-b Page-Up.
^ Springe zum Anfang der aktuellen Zeile.
$ Springe zum Ende der aktuellen Zeile.
+

+

Text eingeben

+ + + + + + + + + + + + + + + + + + + + + + +
i (insert), Eingabe vor dem aktuellen Zeichen.
a (append), Eingabe nach dem aktuellen Zeichen.
I (Insert), Eingabe am Anfang der aktuellen Zeile.
A (Append), Eingabe am Ende der aktuellen Zeile.
o neue Zeile und Eingabe nach der aktuellen Zeile.
O neue Zeile und Eingabe vor der aktuellen Zeile.
Ctrl-v Eingabe eines Steuerzeichens.
+

+

Text ändern

+ + + + + + + + + + + + + + + + +
[Count]rZeichen (replace), Änderung des aktuellen Buchstaben in Zeichen. +
R (Replace), Überschreibemodus vom aktuellen Buchstaben aus.
cwWort ersetzt das Wort vor dem Cursor durch Wort.
ccZeichenkette ersetzt die aktuelle oder nächste Zeile durch Zeichenkette +
J hängt die der aktuellen folgende Zeile an die aktuelle an und + positioniert den Cursor "dazwischen".
+

+

Text löschen

+ + + + + + + + + + + + + + + + +
[Count]x 1 (bzw. Count) Zeichen unter dem Cursor (nach rechts) wird + gelöscht.
[Count]X 1 (bzw. Count) Zeichen links vom dem Cursor wird gelöscht. +
D löscht von der Cursorposition bis zum Zeilenende.
[Count]dd 1 (bzw. Count) Zeilen werden gelöscht.
[Count]d[Richtung] 1 (bzw. Count) mal wird in Richtung (rechts, links, + oben, unten, wortweise, was es eben so gibt!) gelöscht. +
+

+

Die Zwischenablagen im VI

Der VI hat ziemlich viele Zwischenablagen. +Zum Einen sind das die, die beim Löschen automatisch gefüllt werden (man kann +auch ohne zu löschen Text in diese Ablagen schieben), zum Anderen gibt es noch +26 weitere, die man selbst belegen kann. +

Die sogenannten Delete Buffer, also die Zwischenablagen, die durch +das Löschen (z.B. durch dd) gefüllt werden, sind wie ein Stack +organisiert, d.h., nach jedem Löschen verschiebt sich der Inhalt der Ablagen um +Einen nach hinten. Diese Ablagen werden adressiert über die Zifferntasten 1 bis +0, es gibt also 10 Stück. +

Außerdem kann noch beliebig Text in die anderen 26 Ablagen schmeißen, die +durch die Tasten a-z adressiert sind. Die Vorgehensweise bei beiden Arten ist +identisch: Zwischenablage auswählen und dann kopieren, einfügen oder was auch +immer. +

+ + + + + + + + + + + + + + + + + + + +
"1..0, a..z Die Ablage 1..0 bzw. a..z für die nächste Aktion + auswälen.
[Count]y[Richtung] 1 (bzw. Count) mal wird in Richtung (rechts, links, + oben, unten, wortweise, was es eben so gibt!) in die aktuelle + Zwischenablage kopiert.
[Count]yy 1 (bzw. Count) Zeilen werden in die aktuelle Zwischenablage + kopiert.
Beliebige Löschaktion + Gelöschter Text wird in die aktuelle Zwischenablage kopiert.
p Der Inhalt der aktuellen Zwischenablage wird hinter dem Cursor + eingefügt.
P Der Inhalt der aktuellen Zwischenablage wird vor dem Cursor eingefügt. +
+

+

Suchen und Ersetzen

+ + + + + + + + + + + + + + + + + + + + + + + + + +
/Regex Suche vorwärts nach dem regulären Ausdruck Regex.
?Regex Suche rückwärts nach dem regulären Ausdruck Regex.
n Wiederholt das letzte Suchkommando.
N Wiederholt das letzte Suchkommando in die jeweils andere Richtung. +
fZeichen Sucht nach Zeichen in der aktuellen Zeile vorwärts.
FZeichen Sucht nach Zeichen in der aktuellen Zeile rückwärts.
:%s/Quelle/Ziel/ Ersetzt Quelle im Text einmal durch Ziel. +
:%s/Quelle/Ziel/g Ersetzt Quelle im Text überall durch Ziel. +
+

+

Bookmarks im VI

+ + + + + + + + + + +
mKey Setzt eine Marke an der aktuellen Stelle unter dem Namen der Taste + Key.
'Key Springt zu der Zeile mit der Marke Key.
`Key Springt zu der Stelle mit der Marke Key. +
+

+

Sonstige Goodies

+ + + + + + + + + + +
. Wiederholt die letzte Editieraktion, z.B. die Texteingabe seit das + letzte Mal der Visual Mode verlassen wurde, Suchen und Ersetzen + oder was auch immer.
% über einer Klammer Springt mit dem Cursor auf die korrespondierende öffnende bzw. + schließende Klammer.
:tag C-Identifier +
Ctrl-] (auf C-Identifier)
Sucht in der aktuellen C-Tags-Datei nach C-Identifier und + öffnet bei Erfolg einen Buffer mit der entsprechenden Quelltextdatei an + der entsprechenden Stelle. Siehe hierzu das Utility ctags, das + mit jedem VI installiert wird.
+

+

[Seitenanfang] [eine Ebene +höher] [nach Schwäbisch übersetzen]
+
+ + + + + +
+
Letzte Änderung: 30.04.2001
+
diff --git a/admin/index.html b/admin/index.html index d0cb7652b..05bbede53 100644 --- a/admin/index.html +++ b/admin/index.html @@ -33,6 +33,20 @@ +

VileSci-Syncs

+ + + diff --git a/admin/stdplan_lva_del.php b/admin/stdplan_lva_del.php new file mode 100644 index 000000000..7dfb0bb6f --- /dev/null +++ b/admin/stdplan_lva_del.php @@ -0,0 +1,104 @@ + + + + +Detail Studenten + + + + + + +

Admin Lehrveranstaltungen (im FAS geloescht)

+Anzahl: +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDlvnrunrlektorLehrfachKZFBSVGEinheitRaumtypRaumtypASSSBWRKWSemesterAnmerkungfas_id
DeleteDeleteAlllehrveranstaltung_id; ?>lvnr; ?>unr; ?>lektor; ?>lehrfach_nr; ?>studiengang_kz; ?>fachbereich_id; ?>semester; ?>verband; ?>gruppe; ?>einheit_kurzbz; ?>raumtyp; ?>raumtypalternativ; ?>semesterstunden; ?>stundenblockung; ?>wochenrythmus; ?>start_kw; ?>studiensemester_kurzbz; ?>anmerkung; ?>fas_id; ?>
+ + + diff --git a/admin/sync/sync_vilesci_stg.php b/admin/sync/sync_vilesci_stg.php index ed1ef081b..df42f232e 100644 --- a/admin/sync/sync_vilesci_stg.php +++ b/admin/sync/sync_vilesci_stg.php @@ -1,579 +1,39 @@ lvnr.' '.$row->bezeichnung; -} - -function getSemesterWhereClause() -{ - global $conn; - $qry="select * from tbl_studiensemester where ende>now()"; - $result=pg_exec($conn, $qry); - $where=''; - while ($row=pg_fetch_object($result)) - { - $where.= ((strlen($where)>0)?' or ':'')."studiensemester_kurzbz='".$row->studiensemester_kurzbz."' "; - } - if (strlen($where)>0) $where=" ($where) "; - return $where; -} - -function validate($row) -{ - global $error_log,$einheit,$missing_einheit,$missing_raumtyp,$missing_lehrform,$raumtyp,$lehrform; - $valid=true; - if ($row->raumtyp==null) - { - $error_log[$row->studiengang_kz][]=printLVA($row).': Raumtyp fehlt'; - $valid=false; - } - if ($row->semester>8 || $row->semester<1) - { - $error_log[$row->studiengang_kz][]=printLVA($row).': Semester bei '.$row->semester.$row->verband.$row->gruppe.' größer als 8'; - $valid=false; - } - if (!($row->verband==null || $row->verband=='' || $row->verband=='A' || $row->verband=='B' || $row->verband=='C' || $row->verband=='D')) - { - $error_log[$row->studiengang_kz][]=printLVA($row).': Verband bei '.$row->semester.$row->verband.$row->gruppe.' außerhalb des gültigen Bereichs (A bis D)'; - //print_r($row); - $valid=false; - } - if (!($row->gruppe==null || $row->gruppe=='' || $row->gruppe=='1' || $row->gruppe=='2' || $row->gruppe=='3' || $row->gruppe=='4')) - { - $error_log[$row->studiengang_kz][]=printLVA($row).': Gruppe bei '.$row->semester.$row->verband.$row->gruppe.' außerhalb des gültigen Bereichs (1 bis 4)'; - $valid=false; - } - if (!$row->stundenblockung>0) { - $error_log[$row->studiengang_kz][]=printLVA($row).': Stundenblockung ist nicht größer 0'; - $valid=false; - } - if (!$row->semesterstunden>0) { - $error_log[$row->studiengang_kz][]=printLVA($row).': Semesterstunden sind nicht größer 0'; - $valid=false; - } - if (!$row->wochenrythmus>0) - { - $error_log[$row->studiengang_kz][]=printLVA($row).': Wochenrythmus ist nicht größer 0'; - $valid=false; - } - if ($row->start_kw<=0 || $row->start_kw>53) - { - $error_log[$row->studiengang_kz][]=printLVA($row).': Start-KW außerhalb des gültigen Bereichs (1 bis 53)'; - $valid=false; - } - if (strlen($row->einheit_kurzbz)>0 && !isset($einheit[$row->einheit_kurzbz]) && !isset($missing_einheit[$row->einheit_kurzbz])) - { - $missing_einheit[$row->einheit_kurzbz]=1; - } - if (strlen($row->raumtyp)>0 && !isset($raumtyp[$row->raumtyp]) && !isset($missing_raumtyp[$row->raumtyp])) - { - $missing_raumtyp[$row->raumtyp]=1; - $valid=false; - } - if (strlen($row->raumtypalternativ)>0 && !isset($raumtyp[$row->raumtypalternativ]) && !isset($missing_raumtyp[$row->raumtypalternativ])) { - $missing_raumtyp[$row->raumtypalternativ]=1; - } - if (!ereg("^[A-Za-z]{1,5}[0-9]{0,1}$",$row->raumtyp)) - { - $error_log[$row->studiengang_kz][]=$row->raumtyp.': Raumtyp bei LVNR:'.$row->lvnr.' ist nicht plausibel.'; - $valid=false; - } - if (!ereg("^[A-Za-z]{1,5}[0-9]{0,1}$",$row->raumtypalternativ)) - { - $error_log[$row->studiengang_kz][]=$row->raumtypalternativ.': Raumtypalternative bei LVNR:'.$row->lvnr.' ist nicht plausibel.'; - $valid=false; - } - if (strlen($row->lehrform)>0 && !isset($lehrform[$row->lehrform]) && !isset($missing_lehrform[$row->lehrform])) { - $missing_lehrform[$row->lehrform]=1; - } - if (!ereg("^[A-Z]{1,5}[0-9]{0,1}$",$row->lehrfach_kurzbz)) - { - $error_log[$row->studiengang_kz][]=$row->lehrfach_kurzbz.'-'.$row->lehrform.'/'.$row->studiengang_kz.'-'.$row->semester.': Lehrfach-Kuerzel bei LVNR:'.$row->lvnr.' ist nicht plausibel.'; - $valid=false; - } - if (!ereg("^[A-Z]{1,3}$",$row->lehrform)) - { - $error_log[$row->studiengang_kz][]=$row->lehrfach_kurzbz.'-'.$row->lehrform.'/'.$row->studiengang_kz.'-'.$row->semester.': Lehrform bei LVNR:'.$row->lvnr.' ist nicht plausibel.'; - $valid=false; - } - return $valid; -} - -/** - * FAS-Lehrfach auf interne Lehrfach-Nr übersetzen - */ -function getLehrfachNr($kurzbz,$studiengang_kz,$semester,$lehrfach_bezeichnung, $fachbereich_id, $ects, $conn) -{ - global $lehrfach; - global $text; - - if (isset($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'])) - { - //echo 'Nummer:'.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr'].'Bez: '.$lehrfach_bezeichnung.'
'; - - // Nebenbei die Lehrfachbezeichnung kontrollieren - if ($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung']!=$lehrfach_bezeichnung) - { - // Update - $qry="UPDATE tbl_lehrfach SET bezeichnung='$lehrfach_bezeichnung' WHERE lehrfach_nr=".$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr']; - if (!$result=pg_query($conn, $qry)) - echo $qry.' fehlgeschlagen!
'; - else - { - echo 'Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung'].' auf '.$lehrfach_bezeichnung.' geaendert!
'; - $text.='Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung'].' auf '.$lehrfach_bezeichnung.' geaendert!\n'; - $lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung']=$lehrfach_bezeichnung; - } - } - - // Nebenbei die ECTS Punkte kontrollieren - if ($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects']!=$ects) - { - if ($ects!='') //ereg("[0-9]{1,4}[\.|,][0-9]{0,2}$",$ects) - { - // Update - $qry="UPDATE tbl_lehrfach SET ects='$ects' WHERE lehrfach_nr=".$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr']; - //echo $qry.'
'; - if (!$result=pg_query($conn, $qry)) - echo $qry.' fehlgeschlagen!
'; - else - { - echo ' Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurden die ECTS-Punkte von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects'].' auf '.$ects.' geaendert!
'; - $text.='Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurden die ECTS-Punkte von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects'].' auf '.$ects.' geaendert!\n'; - $lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects']=$ects; - } - } - else - { - echo 'Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' sind die ECTS-Punkte von '.$ects.' nicht Plausibel!
'; - $text.='Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' sind die ECTS-Punkte von '.$ects.' nicht Plausibel!\n'; - } - - } - - // Nebenbei die FachbereichID kontrollieren - if ($lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id']!=$fachbereich_id) - { - // Update - $qry="UPDATE tbl_lehrfach SET fachbereich_id=$fachbereich_id WHERE lehrfach_nr=".$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr']; - if (!$result=@pg_query($conn, $qry)) - echo $qry.' fehlgeschlagen!
'; - else - { - echo 'Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde die FachbereichID von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id'].' auf '.$fachbereich_id.' geaendert!
'; - $text.='Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde die FachbereichID von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id'].' auf '.$fachbereich_id.' geaendert!\n'; - $lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id']=$fachbereich_id; - } - } - return $lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_nr']; - } - //echo 'missing getLehrfachNr: '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.'
'; - return -1; + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; } +// Erhalter anlegen +$result=pg_exec($conn, "INSERT INTO tbl_erhalter VALUES(5,'TW','Technikum Wien')"); /************************* - * FAS-Synchronisation + * VileSci-Synchronisation */ +//Studiengaenge vom VileSci holen +$sql_query='SELECT * FROM tbl_studiengang'; +//echo $sql_query.'
'; +$stg_vilesci=pg_exec($conn_vilesci, $sql_query); -// E-Mails der Studiengänge -$stg_mail=array(); -$qry="select studiengang_kz,email,kurzbz from tbl_studiengang"; -$result=pg_exec($conn, $qry); -while ($row=pg_fetch_object($result)) +while ($stg=pg_fetch_object($stg_vilesci)) { - $stg_mail[$row->studiengang_kz] = $row->email; - $stg_kurzbz[$row->studiengang_kz]=$row->kurzbz; -} - -// Anzahl der LVA in VileSci -$sql_query="SELECT count(*) AS anz FROM tbl_lehrveranstaltung"; -//echo $sql_query."
"; -$result=pg_exec($conn, $sql_query); -$vil_anz_lva=pg_fetch_result($result,0,'anz'); - -// Lehrfächer holen und in Array speichern (Key ist kurzbz + '/' + lehform_kurzbz) -$sql_query="SELECT lehrfach_nr,kurzbz,studiengang_kz,semester, bezeichnung, fachbereich_id, ects FROM tbl_lehrfach"; -$result=pg_exec($conn, $sql_query); -while ($row=pg_fetch_object($result)) -{ - $lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['lehrfach_nr'] = $row->lehrfach_nr; - $lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['fachbereich_id'] = $row->fachbereich_id; - $lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['lehrfach_bezeichnung'] = $row->bezeichnung; - $lehrfach[$row->kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]['ects'] = $row->ects; -} -//print_r($lehrfach); -// Einheiten holen -$sql_query="SELECT einheit_kurzbz,bezeichnung FROM tbl_einheit"; -$result=pg_exec($conn, $sql_query); -while ($row=pg_fetch_object($result)) - $einheit[$row->einheit_kurzbz] = $row->bezeichnung; -// Raumtypen holen -$sql_query="SELECT raumtyp_kurzbz,beschreibung FROM tbl_raumtyp"; -$result=pg_exec($conn, $sql_query); -while ($row=pg_fetch_object($result)) - $raumtyp[$row->raumtyp_kurzbz] = $row->beschreibung; -// Lehformen holen -$sql_query="SELECT lehrform_kurzbz,bezeichnung FROM tbl_lehrform"; -$result=pg_exec($conn, $sql_query); -while ($row=pg_fetch_object($result)) - $lehrform[$row->lehrform_kurzbz] = $row->bezeichnung; -//print_r($lehrfach); -echo 'FAS-Datenbank wird abgefragt!
'; -flush(); - -// Start Lehrveranstaltungen Synchro -$sql_query="SELECT DISTINCT fas_id,trim(lvnr) AS lvnr,trim(unr)::int8 AS unr,einheit_kurzbz,lektor,trim(upper(lehrfach_kurzbz)) AS lehrfach_kurzbz, - trim(upper(lehrform)) AS lehrform, lehrfach_bezeichnung, - studiengang_kz,fachbereich_id,semester,verband,gruppe,raumtyp,raumtypalternativ, - round(semesterstunden) AS semesterstunden,stundenblockung,wochenrythmus,start_kw,anmerkung,studiensemester_kurzbz, ects - FROM fas_view_alle_lehreinheiten_vilesci ". - "where ".getSemesterWhereClause(); -//echo $sql_query."
"; -$result=pg_exec($conn_fas, $sql_query); -$num_rows=pg_numrows($result); -$text="Dies ist eine automatische eMail!\r\r"; -$text.="Es wurde eine Synchronisation mit FAS durchgeführt.\r"; -$text.="Anzahl der LVA vom FAS-Import: $num_rows \r"; -$text.="Anzahl der LVA in der VileSci: $vil_anz_lva \r\r"; -$plausi_error=0; -$update_error=0; -$insert_error=0; -$double_error=0; -$anz_update=0; -$anz_insert=0; -echo $num_rows.' Datensaetze
'; -for ($i=0;$i<$num_rows;$i++) -{ - if ($i%100==0) - { - echo '-'; - flush(); - } - $row=pg_fetch_object($result,$i); - // Kennzahl der Studiengangs bei ehemaligen bTec auf TW aendern. - if ($row->studiengang_kz==203) - $row->studiengang_kz=0; - // Lehrfach-Nr übersetzen (-1 wenn nicht vorhanden) - $row->lehrfach_nr=getLehrfachNr($row->lehrfach_kurzbz,$row->studiengang_kz,$row->semester, $row->lehrfach_bezeichnung, $row->fachbereich_id, $row->ects, $conn); - // Einheit vollstaendiger Name - if (count($row->einheit_kurzbz)>0) - $row->einheit_kurzbz=$stg_kurzbz[$row->studiengang_kz].'-'.$row->einheit_kurzbz; - - // Plausibilitaetscheck - //if ($row->gruppe==NULL) - // $row->gruppe='1'; - - // - if (!$row->stundenblockung>0) - $row->stundenblockung=1; - if (!$row->start_kw>0) - $row->start_kw=1; - if (!$row->wochenrythmus>0) - $row->wochenrythmus=1; - - if ($row->lehrfach_nr==-1) - { - //$error_log[$row->studiengang_kz][]=printLVA($row).': Lehrfach (Kurzbz='".$row->lehrfach_kurzbz."',Lehrform".$row->lehrform) existiert noch nicht. Stundenplanabteilung wurde benachrichtigt.'; - if (!isset($missing_lehrfaecher[$row->lehrfach_kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester])) $missing_lehrfaecher[$row->lehrfach_kurzbz.'/'.$row->studiengang_kz.'/'.$row->semester]=1; - $valid=false; - } - - if (validate($row) && $row->lehrfach_nr>-1) - { - // SQL vorbereiten (jede LVA vom FAS im VileSci suchen) - $sql_query="SELECT * from tbl_lehrveranstaltung where fas_id=".$row->fas_id; - //echo $sql_query; - $res_lva=pg_query($conn, $sql_query); - $num_rows_lva=pg_numrows($res_lva); - - // neue LVA - if ($num_rows_lva==0) - { - $text.="Die LVA fas-id=$row->fas_id lvnr=$row->lvnr unr=$row->unr wird neu angelegt.\r"; - $sql_query="INSERT INTO tbl_lehrveranstaltung (lvnr,unr,einheit_kurzbz,lektor,lehrfach_nr,lehrform_kurzbz,"; - $sql_query.="studiengang_kz,fachbereich_id,semester,verband,gruppe,raumtyp,". - "raumtypalternativ,semesterstunden,stundenblockung,". - "wochenrythmus,start_kw,studiensemester_kurzbz,fas_id,anmerkung) ". - "VALUES('$row->lvnr'". - ",$row->unr,". - (strlen($row->einheit_kurzbz)>0?"'".$row->einheit_kurzbz."'":'NULL').",". - "'$row->lektor',". - "'$row->lehrfach_nr',". - "'$row->lehrform',". - "'$row->studiengang_kz',". - "$row->fachbereich_id,". - "$row->semester,"; - if ($row->verband==null) - $sql_query.='NULL,'; - else - $sql_query.="'$row->verband',"; - if ($row->gruppe==null) - $sql_query.='NULL,'; - else - $sql_query.="'$row->gruppe',"; - $sql_query.="'$row->raumtyp',". - "'$row->raumtypalternativ',". - "$row->semesterstunden,". - "$row->stundenblockung,". - "$row->wochenrythmus,". - "$row->start_kw,". - "'$row->studiensemester_kurzbz'," . - "$row->fas_id,'$row->anmerkung')"; - //echo $sql_query.'
'; - if(!$res_insert=@pg_exec($conn, $sql_query)) - { - $text.=$sql_query; - $text.="\nFehler: ".pg_errormessage($conn)."\n"; - $insert_error++; - } - else - $anz_insert++; - } - // bestehende LVA - elseif ($num_rows_lva==1) - { - $update_sql=''; - $row_lva=pg_fetch_object($res_lva,0); - //var_dump($row_lva); - //if ($row->gruppe==NULL) - // $row->gruppe=1; - //echo '-'.$row->lvnr.'-'.$row_lva->lvnr.'-
'; - if ($row->lvnr!=$row_lva->lvnr) - $update_sql.="lvnr='".$row->lvnr."'"; - elseif ($row->unr!=$row_lva->unr) - $update_sql.="unr=".$row->unr; - elseif ($row->einheit_kurzbz!=$row_lva->einheit_kurzbz) - $update_sql.=(strlen($update_sql)>0?',':'').'einheit_kurzbz='.(strlen($row->einheit_kurzbz)>0?"'".$row->einheit_kurzbz."'":'NULL'); - elseif ($row->lektor!=$row_lva->lektor) - $update_sql.=(strlen($update_sql)>0?',':'')."lektor='".$row->lektor."'"; - elseif ($row->lehrfach_nr!=$row_lva->lehrfach_nr) - $update_sql.=(strlen($update_sql)>0?',':'')."lehrfach_nr=".$row->lehrfach_nr; - elseif ($row->lehrform!=$row_lva->lehrform_kurzbz) - $update_sql.=(strlen($update_sql)>0?',':'')."lehrform_kurzbz='".$row->lehrform."'"; - elseif ($row->studiengang_kz!=$row_lva->studiengang_kz) - $update_sql.=(strlen($update_sql)>0?',':'')."studiengang_kz=".$row->studiengang_kz; - elseif ($row->fachbereich_id!=$row_lva->fachbereich_id) - $update_sql.=(strlen($update_sql)>0?',':'')."fachbereich_id=".$row->fachbereich_id; - elseif ($row->semester!=$row_lva->semester) - $update_sql.=(strlen($update_sql)>0?',':'')."semester=".$row->semester; - elseif ($row->verband!=$row_lva->verband) - $update_sql.=(strlen($update_sql)>0?',':'')."verband=".(strlen($row->verband)>0?"'".$row->verband."'":'NULL'); - elseif ($row->gruppe!=$row_lva->gruppe) - $update_sql.=(strlen($update_sql)>0?',':'')."gruppe=".(strlen($row->gruppe)>0?"'".$row->gruppe."'":'NULL'); - elseif ($row->raumtyp!=$row_lva->raumtyp) - $update_sql.=(strlen($update_sql)>0?',':'')."raumtyp='".$row->raumtyp."'"; - elseif ($row->raumtypalternativ!=$row_lva->raumtypalternativ) - $update_sql.=(strlen($update_sql)>0?',':'')."raumtypalternativ='".$row->raumtypalternativ."'"; - elseif ($row->semesterstunden!=$row_lva->semesterstunden) - $update_sql.=(strlen($update_sql)>0?',':'')."semesterstunden=".$row->semesterstunden; - elseif ($row->stundenblockung!=$row_lva->stundenblockung) - $update_sql.=(strlen($update_sql)>0?',':'')."stundenblockung=".$row->stundenblockung; - elseif ($row->wochenrythmus!=$row_lva->wochenrythmus) - $update_sql.=(strlen($update_sql)>0?',':'')."wochenrythmus=".$row->wochenrythmus; - elseif ($row->start_kw!=$row_lva->start_kw) - $update_sql.=(strlen($update_sql)>0?',':'')."start_kw=".(strlen($row->start_kw)>0?$row->start_kw:'NULL'); - elseif ($row->studiensemester_kurzbz!=$row_lva->studiensemester_kurzbz) - $update_sql.=(strlen($update_sql)>0?',':'')."studiensemester_kurzbz='".$row->studiensemester_kurzbz."'"; - elseif ($row->anmerkung!=$row_lva->anmerkung) - $update_sql.=(strlen($update_sql)>0?',':'')."anmerkung='".$row->anmerkung."'"; - - if (strlen($update_sql)>0) - { - $text.="Die LVA fas-id=$row->fas_id lvnr=$row->lvnr unr=$row->unr wird upgedatet.\r"; - $sql_query="UPDATE tbl_lehrveranstaltung SET ". - $update_sql. - " where fas_id=".$row->fas_id; - - //echo $sql_query.'
'; - if(!$res_update=@pg_query($conn, $sql_query)) - { - $text.=$sql_query; - $text.="\rFehler: ".pg_errormessage($conn)."\r"; - $update_error++; - } - else - $anz_update++; - - // **************** - // Auch in tbl_stundenplandev updaten - $sql_query="SELECT * FROM tbl_stundenplandev WHERE - lehrveranstaltung_id=$row_lva->lehrveranstaltung_id AND datum>=now()"; - //echo $sql_query.'
'; - if(!$res_upd_stpl=@pg_query($conn, $sql_query)) - { - $text.=$sql_query; - $text.="\rFehler: ".pg_errormessage($conn)."\r"; - } - else - { - if (!pg_query($conn,"BEGIN;")) - $text.="\rFehler: ".pg_errormessage($conn)."\r"; - $kollision=false; - while ($row_upd_stpl=pg_fetch_object($res_upd_stpl)) - { - // Lehrstunde auf Kollisionen checken - $lehrstunde=new lehrstunde($conn); - //echo '
STPL-ID:'.$row_upd_stpl->stundenplandev_id.'
'; - if (!$lehrstunde->load($row_upd_stpl->stundenplandev_id)) - echo $lehrstunde->errormsg; - $lehrstunde->lektor_uid=$row->lektor; - if (!$lehrstunde->kollision()) - { - if (!$lehrstunde->save('sync_fas_lva')) - echo $lehrstunde->errormsg; - } - else - { - $error_log[$row->studiengang_kz][]=$lehrstunde->errormsg; - $text.="\rKollision: ".$lehrstunde->errormsg."\r"; - $kollision=true; - echo "Kollision: ".$lehrstunde->errormsg."
"; - } - } - if ($kollision) - { - if (!pg_query($conn,"ROLLBACK;")) - $text.="\rFehler: ".pg_errormessage($conn)."\r"; - } - else - if (!pg_query($conn,"COMMIT;")) - $text.="\rFehler: ".pg_errormessage($conn)."\r"; - } - } - } - // LVA kommt mehrmals vor ->Warnung - elseif ($num_rows_lva>1) - { - $text.="\r!!! Die LVA fas_id=$row->fas_id kommt mehrfach vor!\r"; - $double_error++; - } - } - else - $plausi_error++; -} - - -// **************** -// Ueberfluessige Datensaetze loeschen -$whereClause=getSemesterWhereClause(); -$sql_query="DELETE FROM tbl_lehrveranstaltung WHERE fas_id NOT IN - (SELECT fas_id FROM vw_fas_lehrveranstaltung WHERE $whereClause) AND (fas_id!=0 OR fas_id IS NOT NULL) AND ($whereClause)"; -echo $sql_query.'
'; -if(!$res_delete=@pg_query($conn, $sql_query)) -{ - $text.='\n'.$sql_query; - $text.="\rFehler: ".pg_errormessage($conn)."\r"; - $text.="\rSolution: DELETE FROM tbl_stundenplandev WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM tbl_lehrveranstaltung WHERE fas_id NOT IN (SELECT fas_id FROM vw_fas_lehrveranstaltung WHERE $whereClause) AND (fas_id!=0 OR fas_id IS NOT NULL) AND ($whereClause))\r"; -} -else -{ - $anz_delete=pg_numrows($res_delete); -} - -//Ausgabe Zusammenfassung -$text.="\n$anz_delete Lehrveranstaltungen wurden geloescht!\n"; -$text.="$plausi_error Fehler beim Plausibilitaetscheck!\n"; -$text.="$update_error Fehler bei LVA-Update!\n"; -$text.="$insert_error Fehler bei LVA-Insert!\n"; -$text.="$double_error LVA kommen in VileSci doppelt vor!\n\n"; -$text.="$anz_update LVA wurden upgedatet.\n"; -$text.="$anz_insert LVA wurden neu angelegt.\n\n"; -$text.="\nEND OF SYNCHRONISATION\n"; - -// Validation error hinzufügen -while(list($k,$v)=each($error_log)) -{ - $text.="\n\nStudiengang $k:\n"; - foreach($v as $txt) - $text.=" $txt\n"; -} -// fehlende lehrfächer -$text.="\n\nFehlende Lehrfächer: \n"; -while(list($k,$v)=each($missing_lehrfaecher)) -{ - $text.=" $k\n"; -} -// fehlende einheiten -$text.="\n\nFehlende Einheiten: \n"; -while(list($k,$v)=each($missing_einheit)) -{ - $text.=" $k\n"; -} -// fehlende raumtypen -$text.="\n\nFehlende Raumtypen: \n"; -while(list($k,$v)=each($missing_raumtyp)) -{ - $text.=" $k\n"; -} -// fehlende lehrformen -$text.="\n\nFehlende Lehrformen: \n"; -while(list($k,$v)=each($missing_lehrform)) -{ - $text.=" $k\n"; -} -if (mail($adress,"FAS Synchro mit VileSci (Lehrveranstaltungen)",$text,"From: vilesci@technikum-wien.at")) - $sendmail=true; -else - $sendmail=false; - -//print "debug: ";print_r($stg_mail); - -// Einzelnen Mails an Studiengänge verschicken -reset($error_log); -while(list($k,$v)=each($error_log)) -{ - echo "
Mail an Studiengang $k ".$stg_mail[$k].":
"; - $stg_text="Dies ist eine automatische Mail!\nFolgende Fehler sind bei der Synchronisation der Lehrveranstaltungen aufgetreten:\n\n"; - foreach($v as $txt) - $stg_text.="$txt\n"; - echo $stg_text.'
'; - // Studiengang - if (!mail($stg_mail[$k],"FAS Synchro mit VileSci (Lehrveranstaltungen) $k",$stg_text,"From: vilesci@technikum-wien.at")) - echo "Mail an '".$stg_mail[$k]."' konnte nicht verschickt werden!
"; - // Stundenplanstelle - echo "
Mail an Studiengang $k ($adress_stpl)
"; - if (!mail($adress_stpl,"FAS Synchro mit VileSci (Lehrveranstaltungen) $k",$stg_text,"From: vilesci@technikum-wien.at")) - echo 'Mail an "'.$adress_stpl.'" konnte nicht verschickt werden!
'; + $sql_query="INSERT INTO tbl_studiengang VALUES ($stg->studiengang_kz,'$stg->kurzbz','$stg->kurzbzlang','$stg->bezeichnung', + '$stg->typ','$stg->farbe','$stg->email',$stg->max_semester,'$stg->max_verband','$stg->max_gruppe',5)"; + if (!$result=@pg_exec($conn, $sql_query)) + echo pg_last_error($conn).'
--'.$sql_query.'
'; } -// Doppelte IDs im FAS prüfen -$sql_query="SELECT count(*) AS anzahl, fas_id FROM fas_view_alle_lehreinheiten_vilesci - GROUP BY fas_id HAVING count(*)>1"; -//echo $sql_query."
"; -$result=pg_query($conn_fas, $sql_query); -$num_rows=pg_numrows($result); -$mail_text="Folgende $num_rows IDs kommen in der View fas_view_alle_lehreinheiten_vilesci (fas_id) mehrfach vor:\n\n"; -$mail_text_false=''; -if ($num_rows>0) - while ($row=pg_fetch_object($result)) - $mail_text_false.=$row->fas_id.'->'.$row->anzahl."x\n"; -$mail_text.=$mail_text_false."\n\nBitte überprüfen die Daten im FAS!!!"; -if ($mail_text_false!='') - if (!mail($adress_fas,"FAS Synchro mit VileSci (Lehrveranstaltungen)",$mail_text,"From: vilesci@technikum-wien.at")) - echo "Mail an '".$adress_fas."' konnte nicht verschickt werden!
"; - else - echo 'Mail wurde verschickt an '.$adress_fas.'!
'; ?> @@ -582,12 +42,8 @@ if ($mail_text_false!='') +

Studiengaenge werden synchronisiert!

'; -else - echo "Mail konnte nicht verschickt werden!
"; -echo nl2br($text); ?>