mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
This commit is contained in:
@@ -0,0 +1,450 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- saved from url=(0040)http://www.fh-wedel.de/~herbert/html/vi/ -->
|
||||
<HTML><HEAD><TITLE>Herbert's Homepage: VI-Kurzreferenz</TITLE>
|
||||
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
|
||||
<META content=HTML-Files name=keywords>
|
||||
<META
|
||||
content="vi, Elvis, Kurzeinführung, Kurzreferenz, Einführung, Referenz"
|
||||
name=keywords>
|
||||
<META content=Herbert name=Author><!--
|
||||
Copyright (c): Herbert, FH Wedel
|
||||
Note that this document is provided "as is",
|
||||
WITHOUT WARRANTY of any kind either expressed or implied.
|
||||
-->
|
||||
<META content="MSHTML 5.50.4807.2300" name=GENERATOR></HEAD>
|
||||
<BODY>
|
||||
<h1>VI Einführung und Kurzreferenz</h1>
|
||||
|
||||
<DIV align=right><A href="http://www.fh-wedel.de/~herbert/html/index.html"
|
||||
POSITION="">[eine Ebene höher]</A> <A
|
||||
href="http://www.fh-wedel.de/~herbert/htdig/index.html" POSITION="">[Suchen]</A>
|
||||
</DIV>
|
||||
<P>
|
||||
<TABLE width="100%">
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top>
|
||||
<H2>Inhalt</H2></TD>
|
||||
<TD vAlign=top width="30%">
|
||||
<DIV align=right><A name=at000
|
||||
href="http://www.fh-wedel.de/~herbert/html/vi/#at001">[weiter]</A>
|
||||
</DIV></TD></TR></TBODY></TABLE>
|
||||
<UL>
|
||||
<LI><A
|
||||
href="http://www.fh-wedel.de/~herbert/html/vi/#einfuehrung">Einführung</A>
|
||||
<UL>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#betriebsarten">VI
|
||||
Betriebsarten</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#visualmode">Der Visual
|
||||
Mode</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#exmode">Der Ex
|
||||
Mode</A> </LI></UL>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#kommandos">Wichtige VI
|
||||
Kommandos</A>
|
||||
<UL>
|
||||
<LI><A
|
||||
href="http://www.fh-wedel.de/~herbert/html/vi/#konvention">Konvention</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#starten">Starten des
|
||||
VI</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#beenden">Beenden des
|
||||
VI</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#laden">Dateien
|
||||
laden</A>
|
||||
<LI><A
|
||||
href="http://www.fh-wedel.de/~herbert/html/vi/#cursorbewegungen">Cursorbewegungen</A>
|
||||
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#eingeben">Text
|
||||
eingeben</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#aendern">Text
|
||||
ändern</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#loeschen">Text
|
||||
löschen</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#zwischenablagen">Die
|
||||
Zwischenablagen im VI</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#suchenersetzen">Suchen
|
||||
und Ersetzen</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#bookmarks">Bookmarks
|
||||
im VI</A>
|
||||
<LI><A href="http://www.fh-wedel.de/~herbert/html/vi/#goodies">Sonstige
|
||||
Goodies</A> </LI></UL></LI></UL><A name=einfuehrung>
|
||||
<P>
|
||||
<HR width="100%" noShade SIZE=1>
|
||||
|
||||
<TABLE width="100%">
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top>
|
||||
<H2>Einführung</H2></TD>
|
||||
<TD vAlign=top width="30%">
|
||||
<DIV align=right><A href="http://www.fh-wedel.de/~herbert/html/vi/#attop"
|
||||
POSITION="">[Seitenanfang]</A> <A name=at001
|
||||
href="http://www.fh-wedel.de/~herbert/html/vi/#at002">[weiter]</A>
|
||||
</DIV></TD></TR></TBODY></TABLE></A><A name=betriebsarten>
|
||||
<P>
|
||||
<H3>VI Betriebsarten</H3></A>Der vi kennt drei Betriebsarten:
|
||||
<OL>
|
||||
<LI>Der <EM>visual mode</EM>, in dem jeder Tastendruck als Kommando
|
||||
interpretiert wird. Dies ist die Standardbetriebsart des vi!
|
||||
<LI>Der <EM>ex mode</EM>, in dem über die Kommandozeile komplexe Befehle, wie
|
||||
z.B. Suchen und Ersetzen eingegeben werdne können.
|
||||
<LI>Der <EM>input mode</EM>, in dem Text eingegeben werden kann. </LI></OL><A
|
||||
name=visualmode>
|
||||
<P>
|
||||
<H3>Der Visual Mode</H3></A>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
|
||||
<EM>Escape</EM> Taste zurück.
|
||||
<P>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.
|
||||
<P><A name=exmode>
|
||||
<P>
|
||||
<H3>Der Ex Mode</H3></A>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.
|
||||
<P>Man erreicht den Ex Mode aus dem Visual Mode heraus und zwar durch Drücken
|
||||
von ":". Ein Kommando im Ex Mode wird abgebrochen durch <EM>Escape</EM> oder
|
||||
beendet durch <EM>Enter</EM>. <A name=inputmode>
|
||||
<P>
|
||||
<H3>Der Input Mode</H3></A>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. <EM>Ctrl-F</EM> und <EM>Ctrl-B</EM> (<EM>PageDown</EM>und
|
||||
<EM>PageUp</EM>), stehen weiterhin zur Verfügung.
|
||||
<P>Der Input Mode kann durch verschiedene Visual Kommandos eingeleitet werden.
|
||||
Mehr dazu unter <A href="http://www.fh-wedel.de/~herbert/html/vi/#eingeben">Text
|
||||
eingeben</A>.
|
||||
<P>Der Input Mode wird verlassen durch <EM>Escape</EM>, man landet somit wieder
|
||||
im Visual Mode.
|
||||
<P><A name=kommandos>
|
||||
<P>
|
||||
<HR width="100%" noShade SIZE=1>
|
||||
|
||||
<TABLE width="100%">
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top>
|
||||
<H2>Wichtige VI Kommandos</H2></TD>
|
||||
<TD vAlign=top width="30%">
|
||||
<DIV align=right><A href="http://www.fh-wedel.de/~herbert/html/vi/#attop"
|
||||
POSITION="">[Seitenanfang]</A> <A name=at002
|
||||
href="http://www.fh-wedel.de/~herbert/html/vi/#at003">[weiter]</A>
|
||||
</DIV></TD></TR></TBODY></TABLE></A><A name=konvention>
|
||||
<P>
|
||||
<H3>Konvention</H3></A>Im Folgenden werden einige oft benutzte VI-Kommandos
|
||||
aufgelistet. Fast alle dieser Kommandos sind <EM>Visual</EM> Kommandos.
|
||||
<EM>Ex</EM> Kommandos werden durch das <EM>":"</EM> am Anfang gekennzeichnet.
|
||||
<P>Manche (meist <EM>Visual</EM>) Kommandos haben noch ein <EM>[Count]</EM>
|
||||
vorangestellt. Das heißt, daß das Kommando normalerweise einmal, bei einer
|
||||
vorher gedrückten Zahl <EM>n</EM> aber <EM>n</EM>-mal ausgeführt wird. <A
|
||||
name=starten>
|
||||
<P>
|
||||
<H3>Starten des VI</H3></A>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:
|
||||
<P>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>vi </CODE></TD>
|
||||
<TD>Aufruf von vi mit leerem Text-Puffer. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>vi <EM>Dateiname</EM> </CODE></TD>
|
||||
<TD>Datei wird geladen und der Cursor bei der ersten Zeile plaziert.
|
||||
</TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>vi <EM>+ Dateiname</EM> </CODE></TD>
|
||||
<TD>Datei wird geladen und der Cursor bei der letzten Zeile plaziert.
|
||||
</TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>vi <EM>+n Dateiname</EM> </CODE></TD>
|
||||
<TD>Datei wird geladen und der Cursor bei der <EM>n</EM>-ten Zeile
|
||||
plaziert. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>vi <EM>+/Zeichenkette Dateiname</EM> </CODE></TD>
|
||||
<TD>Datei wird geladen und der Cursor bei der Zeile mit
|
||||
<EM>Zeichenkette</EM> plaziert. </TD></TR></TBODY></TABLE>
|
||||
<P>Hinweis: Die meisten vi-Versionen beherrschen auch das Bearbeiten mehrerer
|
||||
Dateien, allerdings unterscheiden sich die Implementierungen meistens.
|
||||
<P>Moderne Implementierungen wie z.B. <EM>Elvis</EM> können auch den Bildschirm
|
||||
in Fenster unterteilen. Hierzu verweise ich aber auf die Dokumentation des
|
||||
jeweiligen vi-Clones! <A name=beenden>
|
||||
<P>
|
||||
<H3>Beenden des VI</H3></A>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>:wq </CODE></TD>
|
||||
<TD>Speichern und vi verlassen. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>:q </CODE></TD>
|
||||
<TD>vi verlassen, falls Datei unverändert </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>:q! </CODE></TD>
|
||||
<TD>vi verlassen, egal ob Datei verändert oder nicht. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>:w </CODE></TD>
|
||||
<TD>Datei speichern </TD></TR></TBODY></TABLE><A name=laden>
|
||||
<P>
|
||||
<H3>Dateien laden</H3></A>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>e <EM>Datei</EM> </CODE></TD>
|
||||
<TD><EM>Datei</EM> wird geladen, wenn sie existiert, ansonsten erzeugt.
|
||||
</TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>:next </CODE></TD>
|
||||
<TD>Die nächste Datei wird geladen, falls vi mit mehreren Dateien
|
||||
aufgerufen wurde. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>:prev </CODE></TD>
|
||||
<TD>Die vorherige Datei wird geladen, falls vi mit mehreren Dateien
|
||||
aufgerufen wurde. </TD></TR></TBODY></TABLE><A name=cursorbewegungen>
|
||||
<P>
|
||||
<H3>Cursorbewegungen</H3></A>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>j </CODE></TD>
|
||||
<TD>Den Cursor um eine (bzw. <EM>Count</EM>) Zeile runter. usw.). </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>k </CODE></TD>
|
||||
<TD>Den Cursor um eine (bzw. <EM>Count</EM>) Zeile rauf. usw.). </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>l </CODE></TD>
|
||||
<TD>Den Cursor um ein (bzw. <EM>Count</EM>) Zeichen rechts. usw.). </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>h </CODE></TD>
|
||||
<TD>Den Cursor um ein (bzw. <EM>Count</EM>) Zeichen links. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>w </CODE></TD>
|
||||
<TD>Den Cursor um ein (bzw. <EM>Count</EM>) Wort rechts. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>b </CODE></TD>
|
||||
<TD>Den Cursor um ein (bzw. <EM>Count</EM>) Wort links. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>h </CODE></TD>
|
||||
<TD>Den Cursor um ein (bzw. <EM>Count</EM>) Zeichen links. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>h </CODE></TD>
|
||||
<TD>Den Cursor um ein (bzw. <EM>Count</EM>) Zeichen links. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>G </CODE></TD>
|
||||
<TD>Springe zum Ende der Datei oder, falls <EM>Count</EM> gegeben, zu
|
||||
Zeile <EM>Count</EM>. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><EM>Ctrl-f </EM></TD>
|
||||
<TD>Page-Down. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><EM>Ctrl-b </EM></TD>
|
||||
<TD>Page-Up. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>^ </CODE></TD>
|
||||
<TD>Springe zum Anfang der aktuellen Zeile. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>$ </CODE></TD>
|
||||
<TD>Springe zum Ende der aktuellen Zeile. </TD></TR></TBODY></TABLE><A
|
||||
name=eingeben>
|
||||
<P>
|
||||
<H3>Text eingeben</H3></A>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>i </CODE></TD>
|
||||
<TD>(insert), Eingabe vor dem aktuellen Zeichen. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>a </CODE></TD>
|
||||
<TD>(append), Eingabe nach dem aktuellen Zeichen. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>I </CODE></TD>
|
||||
<TD>(Insert), Eingabe am Anfang der aktuellen Zeile. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>A </CODE></TD>
|
||||
<TD>(Append), Eingabe am Ende der aktuellen Zeile. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>o </CODE></TD>
|
||||
<TD>neue Zeile und Eingabe nach der aktuellen Zeile. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>O </CODE></TD>
|
||||
<TD>neue Zeile und Eingabe vor der aktuellen Zeile. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><EM>Ctrl-v </EM></TD>
|
||||
<TD>Eingabe eines Steuerzeichens. </TD></TR></TBODY></TABLE><A name=aendern>
|
||||
<P>
|
||||
<H3>Text ändern</H3></A>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>r<EM>Zeichen</EM> </CODE></TD>
|
||||
<TD>(replace), Änderung des aktuellen Buchstaben in <EM>Zeichen</EM>.
|
||||
</TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>R </CODE></TD>
|
||||
<TD>(Replace), Überschreibemodus vom aktuellen Buchstaben aus. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>cw<EM>Wort</EM> </CODE></TD>
|
||||
<TD>ersetzt das Wort vor dem Cursor durch <EM>Wort</EM>. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>cc<EM>Zeichenkette</EM> </CODE></TD>
|
||||
<TD>ersetzt die aktuelle oder nächste Zeile durch <EM>Zeichenkette</EM>
|
||||
</TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>J </CODE></TD>
|
||||
<TD>hängt die der aktuellen folgende Zeile an die aktuelle an und
|
||||
positioniert den Cursor "dazwischen". </TD></TR></TBODY></TABLE><A
|
||||
name=loeschen>
|
||||
<P>
|
||||
<H3>Text löschen</H3></A>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]<EM>x </em></em></CODE></TD>
|
||||
<TD>1 (bzw. <EM>Count</EM>) Zeichen unter dem Cursor (nach rechts) wird
|
||||
gelöscht. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]<EM>X </em></em></CODE></TD>
|
||||
<TD>1 (bzw. <EM>Count</EM>) Zeichen links vom dem Cursor wird gelöscht.
|
||||
</TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>D </CODE></TD>
|
||||
<TD>löscht von der Cursorposition bis zum Zeilenende. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>dd </CODE></TD>
|
||||
<TD>1 (bzw. <EM>Count</EM>) Zeilen werden gelöscht. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>d<EM>[Richtung]</EM> </CODE></TD>
|
||||
<TD>1 (bzw. <EM>Count</EM>) mal wird in <EM>Richtung</EM> (rechts, links,
|
||||
oben, unten, wortweise, was es eben so gibt!) gelöscht.
|
||||
</TD></TR></TBODY></TABLE><A name=zwischenablagen>
|
||||
<P>
|
||||
<H3>Die Zwischenablagen im VI</H3></A>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.
|
||||
<P>Die sogenannten <EM>Delete Buffer</EM>, also die Zwischenablagen, die durch
|
||||
das Löschen (z.B. durch <CODE>dd</CODE>) 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.
|
||||
<P>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.
|
||||
<P>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>"<EM>1..0, a..z</EM> </CODE></TD>
|
||||
<TD>Die Ablage <EM>1..0</EM> bzw. <EM>a..z</EM> für die nächste Aktion
|
||||
auswälen. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>y<EM>[Richtung]</EM> </CODE></TD>
|
||||
<TD>1 (bzw. <EM>Count</EM>) mal wird in <EM>Richtung</EM> (rechts, links,
|
||||
oben, unten, wortweise, was es eben so gibt!) in die aktuelle
|
||||
Zwischenablage kopiert. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE><EM>[Count]</EM>yy </CODE></TD>
|
||||
<TD>1 (bzw. <EM>Count</EM>) Zeilen werden in die aktuelle Zwischenablage
|
||||
kopiert. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><EM>Beliebige <A
|
||||
href="http://www.fh-wedel.de/~herbert/html/vi/#loeschen">Löschaktion</A>
|
||||
</EM></TD>
|
||||
<TD>Gelöschter Text wird in die aktuelle Zwischenablage kopiert. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>p </CODE></TD>
|
||||
<TD>Der Inhalt der aktuellen Zwischenablage wird hinter dem Cursor
|
||||
eingefügt. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>P </CODE></TD>
|
||||
<TD>Der Inhalt der aktuellen Zwischenablage wird vor dem Cursor eingefügt.
|
||||
</TD></TR></TBODY></TABLE><A name=suchenersetzen>
|
||||
<P>
|
||||
<H3>Suchen und Ersetzen</H3></A>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>/<EM>Regex</EM> </CODE></TD>
|
||||
<TD>Suche vorwärts nach dem regulären Ausdruck <EM>Regex</EM>. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>?<EM>Regex</EM> </CODE></TD>
|
||||
<TD>Suche rückwärts nach dem regulären Ausdruck <EM>Regex</EM>. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>n </CODE></TD>
|
||||
<TD>Wiederholt das letzte Suchkommando. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>N </CODE></TD>
|
||||
<TD>Wiederholt das letzte Suchkommando in die jeweils andere Richtung.
|
||||
</TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>f<EM>Zeichen</EM> </CODE></TD>
|
||||
<TD>Sucht nach <EM>Zeichen</EM> in der aktuellen Zeile vorwärts. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>F<EM>Zeichen</EM> </CODE></TD>
|
||||
<TD>Sucht nach <EM>Zeichen</EM> in der aktuellen Zeile rückwärts. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>:%s/<EM>Quelle</EM>/<EM>Ziel</EM>/ </CODE></TD>
|
||||
<TD>Ersetzt <EM>Quelle</EM> im Text <EM>einmal</EM> durch <EM>Ziel</EM>.
|
||||
</TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>:%s/<EM>Quelle</EM>/<EM>Ziel</EM>/g </CODE></TD>
|
||||
<TD>Ersetzt <EM>Quelle</EM> im Text <EM>überall</EM> durch <EM>Ziel</EM>.
|
||||
</TD></TR></TBODY></TABLE><A name=bookmarks>
|
||||
<P>
|
||||
<H3>Bookmarks im VI</H3></A>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>m<EM>Key</EM> </CODE></TD>
|
||||
<TD>Setzt eine Marke an der aktuellen Stelle unter dem Namen der Taste
|
||||
<EM>Key</EM>. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>'<EM>Key</EM> </CODE></TD>
|
||||
<TD>Springt zu der <EM>Zeile</EM> mit der Marke <EM>Key</EM>. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>`<EM>Key</EM> </CODE></TD>
|
||||
<TD>Springt zu der <EM>Stelle</EM> mit der Marke <EM>Key</EM>.
|
||||
</TD></TR></TBODY></TABLE><A name=goodies>
|
||||
<P>
|
||||
<H3>Sonstige Goodies</H3></A>
|
||||
<TABLE width="95%" border=1>
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>. </CODE></TD>
|
||||
<TD>Wiederholt die letzte Editieraktion, z.B. die Texteingabe seit das
|
||||
letzte Mal der <EM>Visual Mode</EM> verlassen wurde, Suchen und Ersetzen
|
||||
oder was auch immer. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>%</CODE> über einer Klammer </TD>
|
||||
<TD>Springt mit dem Cursor auf die korrespondierende öffnende bzw.
|
||||
schließende Klammer. </TD></TR>
|
||||
<TR>
|
||||
<TD vAlign=top><CODE>:tag </CODE><EM>C-Identifier</EM>
|
||||
<BR><CODE>Ctrl-]</CODE> (auf <EM>C-Identifier</EM>) </TD>
|
||||
<TD>Sucht in der aktuellen C-Tags-Datei nach <EM>C-Identifier</EM> und
|
||||
öffnet bei Erfolg einen Buffer mit der entsprechenden Quelltextdatei an
|
||||
der entsprechenden Stelle. Siehe hierzu das Utility <EM>ctags</EM>, das
|
||||
mit jedem VI installiert wird. </TD></TR></TBODY></TABLE>
|
||||
<P><A name=at003></A>
|
||||
<DIV align=right><A href="http://www.fh-wedel.de/~herbert/html/vi/#attop"
|
||||
POSITION="">[Seitenanfang]</A> <A
|
||||
href="http://www.fh-wedel.de/~herbert/html/index.html" POSITION="">[eine Ebene
|
||||
höher]</A> <A
|
||||
href="http://www.fh-wedel.de/cgi-bin/xml2html/~herbert/html/vi/index.html?DEFSTYLE=multilingual.style&LANGUAGE=schwob"
|
||||
POSITION="">[nach Schwäbisch übersetzen]</A></DIV>
|
||||
<HR width="100%" noShade SIZE=1>
|
||||
|
||||
<TABLE width="100%">
|
||||
<TBODY>
|
||||
<TR>
|
||||
<TD vAlign=top>
|
||||
<DIV align=left>Letzte Änderung: 30.04.2001 </DIV></TD>
|
||||
<TD vAlign=top>
|
||||
<DIV align=right>
|
||||
<ADDRESS>© <A href="mailto:herbert@fh-wedel.de">Herbert</A> <A
|
||||
href="http://www.fh-wedel.de/~herbert">[seine Homepage]</A> <A
|
||||
href="http://www.fh-wedel.de/~herbert/htdig/index.html">[durchsuchen]</A>
|
||||
</ADDRESS></DIV></TD></TR></TBODY></TABLE></BODY></HTML>
|
||||
@@ -33,6 +33,20 @@
|
||||
<UL>
|
||||
<LI><A href="sync/sync_ects_lvinfo.php" class="linkblue">LV INFO - ECTS</A></LI>
|
||||
</UL>
|
||||
<H3>VileSci-Syncs</H3>
|
||||
<UL>
|
||||
<LI><!-- <A href="sync/sync_fas_lva.php" class="linkblue">Lehrveranstaltungen vom FAS</A>--></LI>
|
||||
</UL>
|
||||
<UL>
|
||||
<LI><A href="sync/sync_vilesci_stg.php" class="linkblue">Studiengaenge</A><BR>
|
||||
<!-- <A href="sync/sync_stpldev_stpl.php?sendmail=false" class="linkblue">Ohne Mails</A> -->
|
||||
</LI>
|
||||
</UL>
|
||||
<UL>
|
||||
<LI>
|
||||
<!-- <A href="sync/sync_ects_lvinfo.php" class="linkblue">LV INFO - ECTS</A> -->
|
||||
</LI>
|
||||
</UL>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
/**
|
||||
* Liste der in FAS geloeschten Lehrveranstaltungen
|
||||
*/
|
||||
include('../vilesci/config.inc.php');
|
||||
include('../include/functions.inc.php');
|
||||
|
||||
if (!$conn = @pg_pconnect(CONN_STRING))
|
||||
die("Es konnte keine Verbindung zum Server aufgebaut werden.");
|
||||
|
||||
//Variablen laden
|
||||
$error_msg.=loadVariables($conn,$REMOTE_USER);
|
||||
|
||||
if ($type=='new')
|
||||
{
|
||||
$sql_query="INSERT INTO tbl_personmailgrp (uid, mailgrp_kurzbz) VALUES ('".$_POST['personid']."','".$_POST['mailgrpid']."')";
|
||||
//echo $sql_query;
|
||||
if(!$result=pg_exec($conn, $sql_query))
|
||||
$error=pg_errormessage($conn);
|
||||
}
|
||||
elseif ($type=='del')
|
||||
{
|
||||
$sql_query='DELETE FROM tbl_lehrveranstaltung WHERE lehrveranstaltung_id='.$_GET['lva_id'];
|
||||
if(!$result=pg_exec($conn, $sql_query))
|
||||
$error=pg_errormessage($conn);
|
||||
}
|
||||
elseif ($type=='delall')
|
||||
{
|
||||
$sql_query='DELETE FROM tbl_stundenplan WHERE lehrveranstaltung_id='.$_GET['lva_id'];
|
||||
$sql_query.=';DELETE FROM tbl_stundenplandev WHERE lehrveranstaltung_id='.$_GET['lva_id'];
|
||||
$sql_query.=';DELETE FROM tbl_lehrveranstaltung WHERE lehrveranstaltung_id='.$_GET['lva_id'];
|
||||
if(!$result=pg_exec($conn, $sql_query))
|
||||
$error=pg_errormessage($conn);
|
||||
}
|
||||
|
||||
$sql_query="SELECT * FROM tbl_lehrveranstaltung WHERE fas_id NOT IN
|
||||
(SELECT fas_id FROM vw_fas_lehrveranstaltung WHERE (studiensemester_kurzbz='$semester_aktuell' ) ) AND (fas_id!=0 OR fas_id IS NOT NULL) AND ( (studiensemester_kurzbz='$semester_aktuell' ) )";
|
||||
|
||||
if(!$result=pg_exec($conn, $sql_query))
|
||||
die (pg_errormessage($conn));
|
||||
$num_rows=pg_numrows($result);
|
||||
?>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Detail Studenten</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<LINK rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
|
||||
</head>
|
||||
|
||||
<body class="background_main">
|
||||
<?php
|
||||
if (isset($error))
|
||||
echo $error;
|
||||
elseif ($type=='del')
|
||||
echo 'Lehrveranstaltung wurde gelöscht!';
|
||||
?>
|
||||
<h2><a href="index.html">Admin</a> Lehrveranstaltungen (im FAS geloescht)</h2>
|
||||
Anzahl:<?php echo $num_rows; ?>
|
||||
<br>
|
||||
<br>
|
||||
<table border="0">
|
||||
<tr bgcolor="<?php echo $cfgThBgcolor; ?>">
|
||||
<th></th><th></th><th>ID</th><th>lvnr</th><th>unr</th><th>lektor</th><th>Lehrfach</th>
|
||||
<th>KZ</th><th>FB</th><th>S</th><th>V</th><th>G</th><th>Einheit</th>
|
||||
<th>Raumtyp</th><th>RaumtypA</th><th>SS</th><th>SB</th>
|
||||
<th>WR</th><th>KW</th><th>Semester</th><th>Anmerkung</th>
|
||||
<th>fas_id</th></tr>
|
||||
<?php
|
||||
for ($i=0; $i<$num_rows; $i++)
|
||||
{
|
||||
$row=pg_fetch_object($result,$i);
|
||||
?>
|
||||
<tr class="liste<?php echo ($i%2); ?>">
|
||||
<td><a href="stdplan_lva_del.php?type=del&lva_id=<?php echo $row->lehrveranstaltung_id; ?>" class="linkblue">Delete</a></td>
|
||||
<td><a href="stdplan_lva_del.php?type=delall&lva_id=<?php echo $row->lehrveranstaltung_id; ?>" class="linkblue">DeleteAll</a></td>
|
||||
<td><?php echo $row->lehrveranstaltung_id; ?></td>
|
||||
<td><?php echo $row->lvnr; ?></td>
|
||||
<td><?php echo $row->unr; ?></td>
|
||||
<td><?php echo $row->lektor; ?></td>
|
||||
<td><?php echo $row->lehrfach_nr; ?></td>
|
||||
<td><?php echo $row->studiengang_kz; ?></td>
|
||||
<td><?php echo $row->fachbereich_id; ?></td>
|
||||
<td><?php echo $row->semester; ?></td>
|
||||
<td><?php echo $row->verband; ?></td>
|
||||
<td><?php echo $row->gruppe; ?></td>
|
||||
<td><?php echo $row->einheit_kurzbz; ?></td>
|
||||
<td><?php echo $row->raumtyp; ?></td>
|
||||
<td><?php echo $row->raumtypalternativ; ?></td>
|
||||
<td><?php echo $row->semesterstunden; ?></td>
|
||||
<td><?php echo $row->stundenblockung; ?></td>
|
||||
<td><?php echo $row->wochenrythmus; ?></td>
|
||||
<td><?php echo $row->start_kw; ?></td>
|
||||
<td><?php echo $row->studiensemester_kurzbz; ?></td>
|
||||
<td><?php echo $row->anmerkung; ?></td>
|
||||
<td><?php echo $row->fas_id; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
+21
-565
@@ -1,579 +1,39 @@
|
||||
<?php
|
||||
include('../../vilesci/config.inc.php');
|
||||
include('../../include/functions.inc.php');
|
||||
include('../../include/lehrstunde.class.php');
|
||||
include('../../include/studiengang.class.php');
|
||||
|
||||
$conn=pg_connect(CONN_STRING);
|
||||
$conn_fas=pg_connect(CONN_STRING_FAS);
|
||||
$adress='fas_sync@technikum-wien.at';
|
||||
//$adress='pam@technikum-wien.at';
|
||||
$adress_stpl='stpl@technikum-wien.at';
|
||||
$adress_fas='pam@technikum-wien.at';
|
||||
$conn_vilesci=pg_connect(CONN_STRING_VILESCI);
|
||||
$adress='pam@technikum-wien.at';
|
||||
|
||||
|
||||
// error log für jeden Studiengang
|
||||
$error_log=array();
|
||||
$missing_lehrfaecher=array();
|
||||
$missing_einheit=array();
|
||||
$missing_raumtyp=array();
|
||||
$missing_lehrform=array();
|
||||
|
||||
function printLVA($row)
|
||||
// Encoding fuer VileSci
|
||||
$qry = "SET CLIENT_ENCODING TO 'UNICODE';";
|
||||
if(!pg_query($conn_vilesci,$qry))
|
||||
{
|
||||
return 'lvnr='.$row->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.'<BR>';
|
||||
|
||||
// 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!<BR>';
|
||||
else
|
||||
{
|
||||
echo 'Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['lehrfach_bezeichnung'].' auf '.$lehrfach_bezeichnung.' geaendert!<BR>';
|
||||
$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.'<BR>';
|
||||
if (!$result=pg_query($conn, $qry))
|
||||
echo $qry.' fehlgeschlagen!<BR>';
|
||||
else
|
||||
{
|
||||
echo ' Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurden die ECTS-Punkte von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['ects'].' auf '.$ects.' geaendert!<BR>';
|
||||
$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!<BR>';
|
||||
$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!<BR>';
|
||||
else
|
||||
{
|
||||
echo 'Bei Lehrfach '.$kurzbz.'/'.$studiengang_kz.'/'.$semester.' wurde die FachbereichID von '.$lehrfach[$kurzbz.'/'.$studiengang_kz.'/'.$semester]['fachbereich_id'].' auf '.$fachbereich_id.' geaendert!<BR>';
|
||||
$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.'<br>';
|
||||
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.'<br>';
|
||||
$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."<br>";
|
||||
$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!<BR><i>';
|
||||
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."</i><br>";
|
||||
$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<BR>';
|
||||
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.'<BR>';
|
||||
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.'-<BR>';
|
||||
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.'<BR>';
|
||||
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.'<BR>';
|
||||
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 '<BR>STPL-ID:'.$row_upd_stpl->stundenplandev_id.'<BR>';
|
||||
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."<BR>";
|
||||
}
|
||||
}
|
||||
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.'<BR>';
|
||||
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 "<br>Mail an Studiengang $k ".$stg_mail[$k].":<br>";
|
||||
$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.'<br>';
|
||||
// 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!<br>";
|
||||
// Stundenplanstelle
|
||||
echo "<br>Mail an Studiengang $k ($adress_stpl)<br>";
|
||||
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!<br>';
|
||||
$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).'<br>--'.$sql_query.'<br>';
|
||||
|
||||
}
|
||||
|
||||
// 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."</i><br>";
|
||||
$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!<br>";
|
||||
else
|
||||
echo 'Mail wurde verschickt an '.$adress_fas.'!<br>';
|
||||
?>
|
||||
|
||||
<html>
|
||||
@@ -582,12 +42,8 @@ if ($mail_text_false!='')
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
<body>
|
||||
<h3>Studiengaenge werden synchronisiert!</h3>
|
||||
<?php
|
||||
if ($sendmail)
|
||||
echo 'Mail wurde verschickt an '.$adress.'!<br>';
|
||||
else
|
||||
echo "Mail konnte nicht verschickt werden!<br>";
|
||||
echo nl2br($text);
|
||||
|
||||
?>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user