Übersicht aller Veranstaltungen RSS

Anmeldung:
Bitte melden Sie sich online zu den jeweiligen Veranstaltungen an! Wenn Sie verhindert sein sollten, melden Sie sich bitte online wieder ab, damit Teilnehmer von der Warteliste nachrücken können.

Veranstaltungsort:
Technopark Zürich, Technoparkstr. 1, 8005 Zürich
Bitte achten Sie auf die Raumangaben am Infoboard und in den Aufzügen.
Veranstaltungen die im Büro des Service Schweiz stattfinden, werden nicht gesondert ausgeschildert.

Büro Service Schweiz, Büro-Nr. 1007, 1. Stock, Lift 2, über dem Restaurant

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
    Service Schweiz | 10.07.2018