Übersicht aller Veranstaltungen RSS

Veranstaltungen in der Region Südwest
Regionalzentren Stuttgart und Karlsruhe, Fernstudienzentrum Saarbrücken

Seminare zum Studieneinstieg
Regionalzentren Stuttgart und Karlsruhe, VHS Freiburg

Service Schweiz
Veranstaltungen in Zürich

Alle Veranstaltungen im Regionalzentrum Stuttgart

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
    24.02.2017