Veranstaltungen RSS

Das Studienzentrum Krefeld bietet thematische Sonderveranstaltungen an.

Da bei einigen Kursen die freien Plätze begrenzt sind, bitten wir dort um verbindliche Anmeldung per mail an das Studienzentrum. Bitte beachten Sie die Hinweise zu den jeweiligen Kursen.

Bei Präsenzphasen an Wochenenden (Fr-So) ist eine organisatorische Betreuung durch die Geschäftsstelle nicht regelmäßig gesichert. Bitte melden Sie sich deshalb rechtzeitig vor Beginn einer Veranstaltung im Studienzentrum an. Sofern Ihre E-Mail-Adresse bekannt ist, erhalten Sie nach Möglichkeit kurzfristige Nachrichten von den Mentoren.

use Time::Local; use Time::localtime; use Imperia; # Konstanten $filemaske = ".*\.shtml"; $root_dir = $imperia->common->{system_conf}->{'SITE-DIR'}; $root_dir =~ s/site/htdocs/; $readdir = $metainfo->getValues("directory"); $ssi_dir = $metainfo->getValues("ssiverzeichnis"); $stzname = $metainfo->getValues("stzname"); $zaehler = 0; $zaehler_max = 4; #Anzahl der Eintraege am rechten Rand $filenameprefix = 'veranstaltungen'; $ueberschrift_rechts = 'Veranstaltungen in Kürze'; $art = ''; $t = ''; $maxRSS = 5; # Anzahl der Nachrichten im RSS-Feed $xmlRSS = ''."\n".''."\n".''."\n".'Veranstaltungen im Regional-/Studienzentrum '.$stzname.''."\n".'http://www.fernuni-hagen.de'.$readdir.''."\n".''."\n"; $rdfSeq = ''; $items = ''; $rss_inhalt = ''; $protocol = 'https://www.fernuni-hagen.de'; sub german2normdate { my $gDate = shift; my $dateNorm = ""; if ($gDate =~ /\s*([0-9]{1,2})\s*\.\s*([0-9]{1,2})\s*\.\s*([0-9]{2,4})(.*)/) { $dateNorm = ""; $dateNorm .= "20" if (length($3)==2); $dateNorm .= $3; $dateNorm .= "0" if (length($2)<2); $dateNorm .= $2; $dateNorm .= "0" if (length($1)<2); $dateNorm .= $1; my $uhrzeit = $4; $uhrzeit .= ':00' if (not($uhrzeit =~ /\:/)); $uhrzeit =~ s/[^0-9]//g; $uhrzeit = substr($uhrzeit, 0, 4) if (length($uhrzeit)>4); $dateNorm .= sprintf("%04d", $uhrzeit); } return($dateNorm); } sub zeit { my $gZeit = shift; $gZeit =~ s/[a-zA-Z]//g; $gZeit =~ s/[\.]/\:/g; my $zeitNorm = ""; if ($gZeit =~ /\s*([0-9]{1,2})\s*\:\s*([0-9]{1,2})(.*)/) { $zeitNorm = ""; $zeitNorm .= "0" if (length($1)<2); $zeitNorm .= $1; $zeitNorm .= ":"; $zeitNorm .= $2; }else{ $zeitNorm = "00:00"; } return($zeitNorm); } sub normdate2time { my $nDate = shift; if ($nDate =~ /\s*([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2}).*/) { return timelocal(0,$5,$4,$3,$2-1,$1); } return 0; } sub cmp_germandate { my $aDate = $FILE_META{$a}->{'terminvon'} . " " . $FILE_META{$a}->{'veranstaltungsbeginn'}; my $bDate = $FILE_META{$b}->{'terminvon'} . " " . $FILE_META{$b}->{'veranstaltungsbeginn'}; my $aDateNorm = german2normdate($aDate); my $bDateNorm = german2normdate($bDate); return ($aDateNorm cmp $bDateNorm); } sub nowNormdate { my $tm = localtime(time); my $Sekunden = $tm->sec; my $Minuten = $tm->min; my $Stunden = $tm->hour; my $Monatstag = $tm->mday; my $Monat = $tm->mon + 1; my $Jahr = $tm->year + 1900; $Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat; $Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag; $Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden; $Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten; $Sekunden = $Sekunden < 10 ? $Sekunden = "0".$Sekunden : $Sekunden; return $Jahr.$Monat.$Monatstag.$Stunden.$Minuten; } sub schreibeSSI { my $inhalt = shift; my $datei_name = shift; open(DATEI, ">$datei_name") || die "Kann nicht oeffnen: $datei_name"; print DATEI $inhalt; close(DATEI); } sub teaser_min { my $text = shift; my $len = shift; if (length($text)<=$len){ $text = "$text"; return $text; } my $t=''; $text=~m/^(.{$len}\S*)/; $t .= "$1 ...\n"; return $t; } sub filtern { my $file = shift; my $kategory = $FILE_META{$file}->{art}; if (not($kategory)){ $kategory = ""; }elsif (($kategory eq "asta") or ($kategory eq "vhs") or ($kategory eq "koow")){ $kategory = "koo"; }elsif(($kategory eq "info") or ($kategory eq "start")){ $kategory = "ab"; }elsif(($kategory eq "messe") or ($kategory eq "hybrid") or ($kategory eq "cbu") or ($kategory eq "sonoe")){ $kategory = "so"; } return not($kategory cmp $art); } clearlist(); filemask($filemaske); ireaddir($readdir); @FILELIST = sort(cmp_germandate @FILELIST); ZeigeListe("pr","Präsenzveranstaltungen"); ZeigeListe("mt","Medientechnische Veranstaltungen"); ZeigeListe("so","Sonderveranstaltungen"); ZeigeListe("ab","Allgemeine Studienberatung"); ZeigeListe("sonst","Sonstige Veranstaltungen"); ZeigeListe("koo","Veranstaltungen in Kooperation"); ZeigeAlle(); VeranstaltungenInKuerze(); ZeigeListeArchiv(); sub ZeigeListe{ #Setzen Kategorie, die wir anzeigen wollen $art = shift; $ueberschrift = shift; @LIST = grep (filtern($_), @FILELIST); RendenListe(@LIST); } sub RendenListe{ my @Liste = @_; my $t = ''; my %MapTerminInVeranstaltung;#Hash-Objekt für Paaren Termin => Veranstaltung foreach my $file (@Liste) { my $filename = $FILE_META{$file}->{filename}; my $schlagzeile = $FILE_META{$file}->{titel}; my $untertitel = $FILE_META{$file}->{untertitel}; my $art = $FILE_META{$file}->{art}; my $teaser = $FILE_META{$file}->{teaser}; my $directory = $FILE_META{$file}->{directory}; my $jetzt = nowNormdate(); my $notIndex = not($filename =~ /(index|index_land|index_region|archiv|pr_veranstaltungen|mt_veranstaltungen|so_veranstaltungen|ab_veranstaltungen|koo_veranstaltungen|sonst_veranstaltungen)\.shtml$/ ); my $count = $FILE_META{$file}->{imperiablock_count_30}; my $erster_termin = $FILE_META{$file}->{terminvon_30_0}; my $erster_begin = zeit($FILE_META{$file}->{beginn_30_0}); my $block = $count-1; my $letzter_termin = ""; my $letzter_beginn = ""; my $letzter_termin_option = ""; if ($count>1){ $letzter_termin = $FILE_META{$file}->{"terminvon_30_$block"}; $letzter_beginn = zeit($FILE_META{$file}->{"beginn_30_$block"}); $letzter_termin_option = $FILE_META{$file}->{"terminoption_30_$block"}; } if ($count eq 1) { $letzter_termin = $FILE_META{$file}->{terminbis_30_0}; $letzter_termin = $erster_termin if ($letzter_termin eq ""); $letzter_beginn = zeit($FILE_META{$file}->{ende_30_0}); $letzter_beginn = "22:30" if ($letzter_beginn eq ""); $letzter_termin_option = $FILE_META{$file}->{terminoption_30_0}; } my $letzter_terminNorm = german2normdate($letzter_termin.' '.$letzter_beginn); my $erster_terminNorm = german2normdate($erster_termin.' '.$erster_beginn); my $differenz = (normdate2time($letzter_terminNorm)-normdate2time($erster_terminNorm))/(24*60*60); #$terminbis = $letzter_termin; if ($notIndex){ for(my $i=0; $i<$count; $i++){ my $nr = ($i + 1); my $terminoption = $FILE_META{$file}->{"terminoption_30_$i"}; my $terminvon = $FILE_META{$file}->{"terminvon_30_$i"}; my $beginn = zeit($FILE_META{$file}->{"beginn_30_$i"}); my $terminvonNorm = german2normdate($terminvon.' '.$beginn); if (($count>1) & ($terminoption ne "weiter")){ if ($letzter_termin_option eq "weiter"){ $terminbis = $letzter_termin; $terminbisNorm = $letzter_terminNorm; }else{ $terminbis = $FILE_META{$file}->{"terminvon_30_$i"}; $terminbisNorm = $terminvonNorm; } } if (($count eq 1) || (($count>1) & ($terminoption eq "weiter"))){ $terminbis = $letzter_termin; $terminbisNorm = $letzter_terminNorm; } my $termin_sort = $terminvonNorm.'_'.int(rand(100)); my @TerminKurzInfo = ($terminvon,$terminbis,$terminoption,$file,$schlagzeile,$teaser,$directory,$filename,$erster_termin,$nr,$count,$differenz,$letzter_termin_option,$untertitel); my $zukuenftig = (($jetzt<$terminvonNorm) || ($jetzt<$terminbisNorm)) & (not($terminoption =~ /^(weiter)$/)) ; if ($zukuenftig and $schlagzeile){ $MapTerminInVeranstaltung{$termin_sort} = [@TerminKurzInfo]; } }# for }# ($notIndex) }# foreach #Zeigen die Liste an foreach $termin (sort keys %MapTerminInVeranstaltung) { my @TerminKurzInfo = @{$MapTerminInVeranstaltung{$termin}}; my $terminvon = $TerminKurzInfo[0]; my $terminbis = $TerminKurzInfo[1]; my $terminoption = $TerminKurzInfo[2]; my $filename = $TerminKurzInfo[7]; my $schlagzeile = $TerminKurzInfo[4]; my $teaser = $TerminKurzInfo[5]; my $directory = $TerminKurzInfo[6]; my $erster_termin = $TerminKurzInfo[8]; my $nr = $TerminKurzInfo[9]; my $count = $TerminKurzInfo[10]; my $differenz = $TerminKurzInfo[11]; my $letzter_termin_option = $TerminKurzInfo[12]; my $untertitel = $TerminKurzInfo[13]; $t .= ''."\n"; $t .= ''; $t .= '' if ($terminoption =~ /^(aus|verschoben)$/); $t .= $terminvon; $t .= '' if ($terminoption =~ /^(aus|verschoben)$/); if ( ($terminbis ne $terminvon) and (($count eq 1) or (($count>1) and ($letzter_termin_option eq "weiter"))) ){ $t .= ' –
'; $t .= '' if ($terminoption =~ /^(aus|verschoben)$/); $t .= $terminbis; $t .= '' if ($terminoption =~ /^(aus|verschoben)$/); } $t .= '
(ENTFÄLLT)' if ($terminoption eq "aus"); $t .= '
(VERSCHOBEN)' if ($terminoption eq "verschoben"); $t .= ''."\n"; $t .= ''; $t .= ''; $t .= $schlagzeile.''; $t .= '
'.$untertitel.'' if ($untertitel); $t .= '
'.$teaser.'' if ($teaser ne ""); if ($count>1){ $t .= '
[Veranstaltungsreihe besteht aus '.$count.' Terminen]' if (($differenz>4) & ($letzter_termin_option eq "weiter")); } $t .= ''."\n"; $t .= ''."\n"; if ($art eq ""){ $art = "xy"; } #if } #foreach $termin $t =''."\n".$t.'
' if ($t); schreibeSSI($t, $root_dir.$ssi_dir."/".$art."_".$filenameprefix.".ssi"); } #RendenListe sub ZeigeAlle{ my %MapTerminInVeranstaltung;#Hash-Objekt für Paaren Termin => Veranstaltung foreach my $file (@FILELIST) { my $filename = $FILE_META{$file}->{filename}; my $schlagzeile = $FILE_META{$file}->{titel}; my $untertitel = $FILE_META{$file}->{untertitel}; my $art = $FILE_META{$file}->{art}; my $teaser = $FILE_META{$file}->{teaser}; my $directory = $FILE_META{$file}->{directory}; my $jetzt = nowNormdate(); my $notIndex = not($filename =~ /(index|index_land|index_region|archiv|pr_veranstaltungen|mt_veranstaltungen|so_veranstaltungen|ab_veranstaltungen|koo_veranstaltungen|sonst_veranstaltungen)\.shtml$/ ); my $count = $FILE_META{$file}->{imperiablock_count_30}; my $erster_termin = $FILE_META{$file}->{terminvon_30_0}; my $erster_begin = zeit($FILE_META{$file}->{beginn_30_0}); my $block = $count-1; my $letzter_termin_option = ""; my $letzter_termin = ""; my $letzter_beginn = ""; if ($count>1){ $letzter_termin = $FILE_META{$file}->{"terminvon_30_$block"}; $letzter_beginn = zeit($FILE_META{$file}->{"beginn_30_$block"}); $letzter_termin_option = $FILE_META{$file}->{"terminoption_30_$block"}; } if ($count eq 1) { $letzter_termin = $FILE_META{$file}->{terminbis_30_0}; $letzter_termin = $erster_termin if not($letzter_termin); $letzter_beginn = zeit($FILE_META{$file}->{ende_30_0}); $letzter_beginn = "22:30" if not($letzter_beginn); $letzter_termin_option = $FILE_META{$file}->{terminoption_30_0}; } my $letzter_terminNorm = german2normdate($letzter_termin.' '.$letzter_beginn); my $erster_terminNorm = german2normdate($erster_termin.' '.$erster_beginn); my $differenz = (normdate2time($letzter_terminNorm)-normdate2time($erster_terminNorm))/(24*60*60); #$terminbis = $letzter_termin; if ($notIndex){ for(my $i=0; $i<$count; $i++){ my $nr = ($i + 1); my $terminbis = ""; my $terminbisNorm = ""; my $terminoption = $FILE_META{$file}->{"terminoption_30_$i"}; my $terminvon = $FILE_META{$file}->{"terminvon_30_$i"}; my $beginn = zeit($FILE_META{$file}->{"beginn_30_$i"}); my $terminvonNorm = german2normdate($terminvon.' '.$beginn); if (($count>1) & ($terminoption ne "weiter")){ if ($letzter_termin_option eq "weiter"){ $terminbis = $letzter_termin; $terminbisNorm = $letzter_terminNorm; }else{ $terminbis = $FILE_META{$file}->{"terminvon_30_$i"}; $terminbisNorm = $terminvonNorm; } } if (($count eq 1) || (($count>1) & ($terminoption eq "weiter"))){ $terminbis = $letzter_termin; $terminbisNorm = $letzter_terminNorm; } my $termin_sort = $terminvonNorm.'_'.int(rand(100)); my @TerminKurzInfo = ($terminvon,$terminbis,$terminoption,$file,$schlagzeile,$teaser,$directory,$filename,$erster_termin,$nr,$count,$differenz,$letzter_termin_option,$untertitel); #my $zukuenftig = ((($jetzt<$terminvonNorm) || ($jetzt<$terminbisNorm)) & ($count eq 1)) || (($count>1) & ( (($jetzt<$terminvonNorm) || (($terminvonNorm<$jetzt) & ($jetzt<$terminbisNorm))) & not($terminoption eq "weiter") ) ); my $zukuenftig = (($jetzt<$terminvonNorm) || ($jetzt<$terminbisNorm)) & ($terminoption ne "weiter"); if ($zukuenftig and $schlagzeile){ $MapTerminInVeranstaltung{$termin_sort} = [@TerminKurzInfo]; } }# for }# ($notIndex) }# foreach #Zeigen die Liste an print ''."\n"; foreach $termin (sort keys %MapTerminInVeranstaltung) { my @TerminKurzInfo = @{$MapTerminInVeranstaltung{$termin}}; my $terminvon = $TerminKurzInfo[0]; my $terminbis = $TerminKurzInfo[1]; my $terminoption = $TerminKurzInfo[2]; my $filename = $TerminKurzInfo[7]; my $schlagzeile = $TerminKurzInfo[4]; my $teaser = $TerminKurzInfo[5]; my $directory = $TerminKurzInfo[6]; my $erster_termin = $TerminKurzInfo[8]; my $nr = $TerminKurzInfo[9]; my $count = $TerminKurzInfo[10]; my $differenz = $TerminKurzInfo[11]; my $letzter_termin_option = $TerminKurzInfo[12]; my $untertitel = $TerminKurzInfo[13]; print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; if (not($terminoption =~ /^(aus|verschoben)$/)){ $rdfSeq .= ''."\n"; $items .= ''."\n"; $items .= ''.$rssUrl.''."\n"; $items .= '<![CDATA['.$terminvon; if ( ($terminbis ne $terminvon) and (($count eq 1) or (($count>1) and ($letzter_termin_option eq "weiter"))) ){ $items .= ' - '.$terminbis; } $items .= ': '.$schlagzeile.'. ]]>'."\n"; $items .= ''."\n"; } } #foreach $termin print '
'; print '' if ($terminoption =~ /^(aus|verschoben)$/); print $terminvon; print '' if ($terminoption =~ /^(aus|verschoben)$/); if ( ($terminbis ne $terminvon) and (($count eq 1) or (($count>1) and ($letzter_termin_option eq "weiter"))) ){ print ' –
'; print '' if ($terminoption =~ /^(aus|verschoben)$/); print $terminbis; print '' if ($terminoption =~ /^(aus|verschoben)$/); } print '
(ENTFÄLLT)' if ($terminoption eq "aus"); print '
(VERSCHOBEN)' if ($terminoption eq "verschoben"); print '
'; print ''; print $schlagzeile.''; print '
'.$untertitel.'' if($untertitel); print '
'.$teaser.'' if ($teaser ne ""); if ($count>1){ print '
[Veranstaltungsreihe besteht aus '.$count.' Terminen]' if (($differenz>4) & ($letzter_termin_option eq "weiter")); } print '
' if (@termine_sort ne ""); $rdfSeqe = ''.$rdfSeq.'' if ($rdfSeq); $rss_inhalt = $xmlRSS.$rdfSeq.'
'."\n".$items."\n".''; schreibeSSI($rss_inhalt, $root_dir.$ssi_dir."/veranstaltungen.xml") if ($rdfSeq); } #ZeigeAlle sub ZeigeListeArchiv{ my %MapTerminInVeranstaltung;#Hash-Objekt für Paaren Termin => Veranstaltung my $t = ''; foreach my $file (@FILELIST) { my $filename = $FILE_META{$file}->{filename}; my $schlagzeile = $FILE_META{$file}->{titel}; my $untertitel = $FILE_META{$file}->{untertitel}; my $art = $FILE_META{$file}->{art}; my $teaser = $FILE_META{$file}->{teaser}; my $directory = $FILE_META{$file}->{directory}; my $jetzt = nowNormdate(); my $notIndex = not($filename =~ /(index|index_land|index_region|archiv|pr_veranstaltungen|mt_veranstaltungen|so_veranstaltungen|ab_veranstaltungen|koo_veranstaltungen|sonst_veranstaltungen)\.shtml$/ ); my $count = $FILE_META{$file}->{imperiablock_count_30}; my $erster_termin = $FILE_META{$file}->{terminvon_30_0}; my $erster_begin = zeit($FILE_META{$file}->{beginn_30_0}); my $block = $count-1; my $letzter_termin = ""; my $letzter_beginn = ""; my $letzter_termin_option = ""; if ($count>1){ $letzter_termin = $FILE_META{$file}->{"terminvon_30_$block"}; $letzter_beginn = zeit($FILE_META{$file}->{"beginn_30_$block"}); $letzter_termin_option = $FILE_META{$file}->{"terminoption_30_$block"}; } if ($count eq 1) { $letzter_termin = $FILE_META{$file}->{terminbis_30_0}; $letzter_termin = $erster_termin if ($letzter_termin eq ""); $letzter_beginn = zeit($FILE_META{$file}->{ende_30_0}); $letzter_beginn = "22:30" if ($letzter_beginn eq ""); $letzter_termin_option = $FILE_META{$file}->{terminoption_30_0}; } my $letzter_terminNorm = german2normdate($letzter_termin.' '.$letzter_beginn); my $erster_terminNorm = german2normdate($erster_termin.' '.$erster_beginn); my $differenz = (normdate2time($letzter_terminNorm)-normdate2time($erster_terminNorm))/(24*60*60); if ($notIndex){ for(my $i=0; $i<$count; $i++){ my $nr = ($i + 1); my $terminoption = $FILE_META{$file}->{"terminoption_30_$i"}; my $terminvon = $FILE_META{$file}->{"terminvon_30_$i"}; my $beginn = zeit($FILE_META{$file}->{"beginn_30_$i"}); my $terminvonNorm = german2normdate($terminvon.' '.$beginn); if (($count>1) & ($terminoption ne "weiter")){ if ($letzter_termin_option eq "weiter"){ $terminbis = $letzter_termin; $terminbisNorm = $letzter_terminNorm; }else{ $terminbis = $FILE_META{$file}->{"terminvon_30_$i"}; $terminbisNorm = $terminvonNorm; } } if (($count eq 1) || (($count>1) & ($terminoption eq "weiter"))){ $terminbis = $letzter_termin; $terminbisNorm = $letzter_terminNorm; } my $termin_sort = $terminvonNorm.'_'.int(rand(100)); my @TerminKurzInfo = ($terminvon,$terminbis,$terminoption,$file,$schlagzeile,$teaser,$directory,$filename,$erster_termin,$nr,$count,$differenz,$letzter_termin_option,$untertitel); my $archiv = ($terminvonNorm<$jetzt) & ($terminoption ne "weiter"); if ($archiv and $schlagzeile){ $MapTerminInVeranstaltung{$termin_sort} = [@TerminKurzInfo]; } }# for }# ($notIndex) }# foreach #Zeigen die Liste an my @termine_sort = sort keys %MapTerminInVeranstaltung; my @termine_reverse = reverse(@termine_sort); foreach $termin (@termine_reverse) { my @TerminKurzInfo = @{$MapTerminInVeranstaltung{$termin}}; my $terminvon = $TerminKurzInfo[0]; my $terminbis = $TerminKurzInfo[1]; my $terminoption = $TerminKurzInfo[2]; my $filename = $TerminKurzInfo[7]; my $schlagzeile = $TerminKurzInfo[4]; my $teaser = $TerminKurzInfo[5]; my $directory = $TerminKurzInfo[6]; my $erster_termin = $TerminKurzInfo[8]; my $nr = $TerminKurzInfo[9]; my $count = $TerminKurzInfo[10]; my $differenz = $TerminKurzInfo[11]; my $letzter_termin_option = $TerminKurzInfo[12]; my $untertitel = $TerminKurzInfo[13]; $t .= ''."\n"; $t .= ''; $t .= '' if ($terminoption =~ /^(aus|verschoben)$/); $t .= $terminvon; $t .= '' if ($terminoption =~ /^(aus|verschoben)$/); if (($terminbis ne $terminvon) and (($count eq 1) or (($count>1) and ($letzter_termin_option eq "weiter"))) ){ $t .= ' –
'; $t .= '' if ($terminoption =~ /^(aus|verschoben)$/); $t .= $terminbis; $t .= '' if ($terminoption =~ /^(aus|verschoben)$/); } $t .= '
(ENTFÄLLT)' if ($terminoption eq "aus"); $t .= '
(VERSCHOBEN)' if ($terminoption eq "verschoben"); #$t .= '
Fortsetzung' if ($terminoption eq "weiter"); $t .= ''."\n"; $t .= ''; $t .= ''; $t .= $schlagzeile.''; $t .= '
'.$untertitel.'' if ($untertitel); $t .= '
'.$teaser.'' if ($teaser ne ""); if ($count>1){ $t .= '
[Veranstaltungsreihe besteht aus '.$count.' Terminen]' if (($differenz>4) & ($letzter_termin_option eq "weiter")); } $t .= ''."\n"; $t .= ''."\n"; } #foreach $termin $t =''."\n".$t.'
' if ($t); schreibeSSI($t, $root_dir.$ssi_dir."/archiv_".$filenameprefix.".ssi"); } #ZeigeListeArchiv #Ausgabe für veranstaltungen.ssi sub VeranstaltungenInKuerze{ #Hash-Objekt für Paaren Termin => Veranstaltung my %MapTerminInVeranstaltung; my $terminvonNorm; my $t = ''; foreach my $file (@FILELIST) { my $filename = $FILE_META{$file}->{filename}; my $schlagzeile = $FILE_META{$file}->{titel}; my $untertitel = $FILE_META{$file}->{untertitel}; my $art = $FILE_META{$file}->{art}; my $teaser = $FILE_META{$file}->{teaser}; my $directory = $FILE_META{$file}->{directory}; my $jetzt = nowNormdate(); my $notIndex = not($filename =~ /(index|index_land|index_region|archiv|pr_veranstaltungen|mt_veranstaltungen|so_veranstaltungen|ab_veranstaltungen|koo_veranstaltungen|sonst_veranstaltungen)\.shtml$/ ); my $count = $FILE_META{$file}->{imperiablock_count_30}; my $erster_termin = $FILE_META{$file}->{terminvon_30_0}; my $erster_begin = zeit($FILE_META{$file}->{beginn_30_0}); my $block = $count-1; my $letzter_termin = ""; my $letzter_beginn = ""; $letzter_termin = $FILE_META{$file}->{"terminvon_30_$block"} if ($count>1); $letzter_beginn = zeit($FILE_META{$file}->{"beginn_30_$block"}) if ($count>1); if ($count eq 1) { $letzter_termin = $FILE_META{$file}->{terminbis_30_0}; $letzter_termin = $erster_termin if ($letzter_termin eq ""); $letzter_beginn = zeit($FILE_META{$file}->{ende_30_0}); $letzter_beginn = "22:30" if ($letzter_beginn eq ""); } my $letzter_terminNorm = german2normdate($letzter_termin.' '.$letzter_beginn); my $erster_terminNorm = german2normdate($erster_termin.' '.$erster_beginn); my $differenz = (normdate2time($letzter_terminNorm)-normdate2time($erster_terminNorm))/(24*60*60); my $terminbis = $letzter_termin; if ($notIndex){ for(my $i=0; $i<$count; $i++){ my $nr = ($i + 1); my $terminoption = $FILE_META{$file}->{"terminoption_30_$i"}; my $terminvon = $FILE_META{$file}->{"terminvon_30_$i"}; my $terminvon_beginn = zeit($FILE_META{$file}->{"beginn_30_$i"}); my $terminvonNorm = german2normdate($terminvon.' '.$terminvon_beginn); my $ok = not($terminoption =~ /^(aus|verschoben)$/); my $ok_count1 = ((($differenz<5) and ($terminoption ne "weiter")) or ($differenz>4)) and ($count>1); my $ok_count0 =($count eq 1) and ($differenz<5); my $termin_sort = $terminvonNorm.'_'.int(rand(100)); my @TerminKurzInfo = ($terminvon,$terminbis,$terminoption,$file,$schlagzeile,$teaser,$directory,$filename,$erster_termin,$nr,$differenz,$count,$untertitel); $zukuenftig = ($jetzt<$terminvonNorm) or ($jetzt<$letzter_terminNorm); if ($zukuenftig and $ok and $schlagzeile and ($ok_count1 or $ok_count0)){ $MapTerminInVeranstaltung{$termin_sort} = [@TerminKurzInfo]; } }# for }# ($notIndex) }# foreach #Zeigen die Liste an foreach $termin (sort keys %MapTerminInVeranstaltung) { my @TerminKurzInfo = @{$MapTerminInVeranstaltung{$termin}}; my $terminvon = $TerminKurzInfo[0]; my $terminbis = $TerminKurzInfo[1]; my $terminoption = $TerminKurzInfo[2]; my $filename = $TerminKurzInfo[7]; my $schlagzeile = $TerminKurzInfo[4]; my $teaser = $TerminKurzInfo[5]; my $teaserlen = length($teaser); my $directory = $TerminKurzInfo[6]; my $erster_termin = $TerminKurzInfo[8]; my $nr = $TerminKurzInfo[9]; my $differenz = $TerminKurzInfo[10]; my $count = $TerminKurzInfo[11]; my $untertitel = $TerminKurzInfo[12]; if ($schlagzeile and $zaehler<$zaehler_max){ $t .= '
  • '."\n"; $t .= '['.$terminvon;#.' differenz='.$differenz.' count:'.$count.' erster:'.$erster_termin.' letzter:'.$terminbis; $t .= ' – '.$terminbis if ((not(($terminbis eq $terminvon) or ($terminbis eq ''))) and ($differenz<5)); $t .= ']
    '.$schlagzeile.''; if ($untertitel) { $t .= ' – '.teaser_min($untertitel,100); } else { $t .= ' – '.teaser_min($teaser,100) if($teaser); } $t .='
    (Veranstaltungs­reihe, '.$nr.'.Termin, Beginn: '.$erster_termin.')'."\n" if ((not($terminvon eq $erster_termin)) and ($differenz>4) and ($terminoption eq "weiter")); #$t .=' (Forsetzung, Beginn: '.$erster_termin.')'."\n" if (($terminoption eq "weiter") & ($differenz<5)); $t .='
  • '."\n"; $zaehler++; }#if zaeler } #foreach $termin if ($t) { $t = '
  • '.$ueberschrift_rechts.':'."\n".'
      '."\n".$t."\n".'
    '."\n".'
  • '."\n"; }else{ $t = ''; } schreibeSSI($t, $root_dir.$ssi_dir."/".$filenameprefix.".ssi"); } #VeranstaltungenInKuerze
    Studienzentrum Krefeld | 15.02.2018