Veranstaltungen RSS

  • Alle Veranstaltungen in der Region Südwest
    RZ Karlsruhe, Campus Saarbrücken und RZ Stuttgart
  • Seminare zum Studieneinstieg
    RZ Karlsruhe, RZ Stuttgart und VHS Freiburg
  • Service Schweiz
    Veranstaltungen in Zürich
  • Betreuung im Saarland
    Für Studierende im Saarland und angrenzendem Raum (Pfalz, Frankreich, Luxemburg) bietet die Studienberatung des RZ Karlsruhe ein begrenztes Betreuungsangebot auch vor Ort in Saarbrücken an. Bitte informieren Sie sich auf unserer Website über die im laufenden Semester angebotenen Veranstaltungen und Beratungstermine. Mit administrativen Anliegen rund um Ihr Studium wenden Sie sich bitte direkt an die Karlsruher Geschäftsstelle.
  • Gespräche am Tor
    Karlsruher Begegnungen zu Wissenschaft, Politik und Kultur
  • Newsletter
    Abonnieren Sie unseren Newsletter, der monatlich über das Veranstaltungsangebot des RZ Karlsruhe (Mentoriate, studienbegleitende Veranstaltungen, Präsenzseminare, Außenauftritte) informiert.
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