Aktuelles zum Studium

use Time::Local; use Time::localtime; use Imperia; use utf8; # Konstanten $filemaske = ".*\.shtml"; $root_dir = $imperia->common->{system_conf}->{'SITE-DIR'}; $root_dir =~ s/site/htdocs/; $ssi_dir = $metainfo->getValues("ssiverzeichnis"); $readdir = $metainfo->getValues("directory"); $listenformat = $metainfo->getValues("listenformat"); $ueberschrift_rechts = $metainfo->getValues("ueberschrift_rechts"); $zaehler_max = 5; $filenameprefix = "aktuelles"; if ($ueberschrift_rechts){ $ueberschrift = $ueberschrift_rechts; }else{ $ueberschrift = "Aktuelles"; } $rubrik = $metainfo->getValues("rubriken_descr"); $rubrik_name = $metainfo->getValues("rubriken_name"); $meldungen_max = $metainfo->getValues("zahl"); $home_max = $metainfo->getValues("home_max"); $rechts_max = $metainfo->getValues("rechts_max"); $rechts_datum = $metainfo->getValues("rechts_datum"); $einrichtung = $metainfo->getValues("einrichtung"); $rss = $metainfo->getValues("rss"); $rss2 = $metainfo->getValues("rss2"); $maxRSS = $metainfo->getValues("maxRSS"); # Anzahl der Nachrichten im RSS-Feed $xmlRSS = "\n\n\nAktuelles - konvertor($einrichtung)\n$readdir\n\n"; $rss2_kopf = "\n\n\n\nAktuelles - $einrichtung\nhttp://www.fernuni-hagen.de$readdir\nRSS 2.0 Feeds\nde\n"; $rss2_fuss = "\n"; $rss_inhalt = ''; $rss2_inhalt = ''; # Funktion zum Vergleichen Daten in deutschem Format: TT.MM.YYYY HH:MM sub german2normdate { my $gDate = shift; # @_[0]; 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 normdate2time { my $nDate = shift; # @_[0]; 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 $aDate = $FILE_META{$a}->{'terminvon'}; my $bDate = $FILE_META{$b}->{'terminvon'}; 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 kuerzeTeaser { 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 schreibeSSI { my $inhalt = shift; my $datei_name = shift; &log("Schreibe:" . $datei_name); open(DATEI, ">$datei_name") || die "Kann nicht oeffnen: $datei_name"; print DATEI $inhalt; close(DATEI); } sub log(){ $s = @_[0]; $openString = (($s eq "<--->") ? ">" : ">>" ) .$root_dir.$ssi_dir."/".$filenameprefix."_log.txt"; open(DATEI, $openString) || die "Problem beim Öffnen der Log-Datei!"; print DATEI $s."\n"; close(DATEI); } sub konvertor { my $new = $_[0]; #utf8::decode($new); $new =~ s/Ä/Ae/g; $new =~ s/Ö/Oe/g; $new =~ s/Ãœ/Ue/g; $new =~ s/ä/ae/g; $new =~ s/ö/oe/g; $new =~ s/ü/ue/g; $new =~ s/ß/ss/g; # $new =~ s/„/"/g; # $new =~ s/“/"/g; $new =~ s/–/-/g; return $new; } clearlist(); filemask($filemaske); ireaddir($readdir); @FILELIST = sort(cmp_germandate @FILELIST); reverse_list(); &log("<--->"); my $laenge = @FILELIST; my $ssi_aktuelles = ""; my $ssi_home = ""; my $ssi_archiv = ""; my $ssi_box = ""; my $zaehler = 0; my $zaehler_index = 0; my $zaehler_home = 0; my $zaehler_rechts = 0; my $zaehler_rss = 0; my $zaehler_rss2 = 0; my $jetzt = nowNormdate(); my $keineIndexseite = ""; my $differenzTage = ""; my $weiteretexte = ""; my $liste = ""; my $ssi_items = ""; my $ssi_rdfSeq = ""; my $ssi_rss2 = ""; my $ssi_bes_meld = ""; print "
    "; foreach my $file (@FILELIST) { my $directory = $FILE_META{$file}->{directory}; my $filename = $FILE_META{$file}->{filename}; my $schlagzeile = $FILE_META{$file}->{titel}; my $rss_schlagzeile = konvertor($schlagzeile); my $teaser = $FILE_META{$file}->{teaser}; my $direkt_verlinken = $FILE_META{$file}->{direkt_verlinken}; my $linktyp = $FILE_META{$file}->{linktyp}; my $teaserlen = length($teaser); my $terminvon = $FILE_META{$file}->{terminvon}; my $en_datum = $terminvon; $en_datum =~ s/\./\-/g; my $box = $FILE_META{$file}->{box}; my $rssUrl = "https://www.fernuni-hagen.de$directory/$filename"; my $rssUrl_direkt = ""; if ($direkt_verlinken =~ /^http/){ $rssUrl_direkt = $direkt_verlinken; }else{ $rssUrl_direkt = "https://www.fernuni-hagen.de$direkt_verlinken"; } my $terminvonNorm = german2normdate($terminvon.' 00:00'); # LG EVIS my $bes_meld_anzeigen = $FILE_META{$file}->{bes_meld_anzeigen}; my $keine_bes_meld = not($bes_meld_anzeigen) || ($bes_meld_anzeigen eq "none") || ($home_meld); my $bes_meld_bild = $FILE_META{$file}->{bes_meld_bild}; my $bes_meld_bild_url = $FILE_META{$file}->{bes_meld_bild_url}; my $bes_meld_bild_url_tl = $FILE_META{$file}->{bes_meld_bild_url_tl}; my $bes_meld_url_tl = $FILE_META{$file}->{bes_meld_url_tl}; my $bes_meld_inhalt = $FILE_META{$file}->{bes_meld_inhalt}; my $bes_meld_block_format = $FILE_META{$file}->{bes_meld_block_format}; my $ak_bild = ""; my $ak_illu = ""; $ak_bild = $FILE_META{$file}->{ak_bild}; $ak_illu = $FILE_META{$file}->{ak_illu}; $ak_illu = "illu9" if($ak_illu eq ""); my $li = ""; my $arc = ""; my $h = ""; my $rdfSeq = ""; my $items = ""; $weiteretexte = $FILE_META{$file}->{freiertext} . $FILE_META{$file}->{freiertext2} . $FILE_META{$file}->{'FLEXHISTORY_0'}; $keineIndexseite = not( $filename =~ /^(index|sa_index|archiv)\.shtml$/ ); $differenzTage = (normdate2time($jetzt) - normdate2time($terminvonNorm)) / (24*60*60); # &log("$terminvonNorm ".$differenzTage." zukunft=$zukuenftig $filename"); # Ausgabe fuer index.shtml if ($keineIndexseite and $schlagzeile and $keine_bes_meld and ($zaehler_index<$meldungen_max)) { print "
  • "; print "

    "; if ($weiteretexte or $direkt_verlinken){ print ""; } print $schlagzeile; print "" if ($weiteretexte or $direkt_verlinken); print " ($linktyp)" if ($direkt_verlinken and $linktyp); print "

    "; print "$teaser " if ($teaser); print "[$terminvon]" if ($terminvon); print "
  • "; $zaehler_index++; } # if schlagzeile and ... # Ausgabe fuer aktuelles-ssi erzeugen $li .= "
  • "; $li .= ""; if ($weiteretexte or $direkt_verlinken or $titel_rechte_spalte_verlinken){ $li .= ""; } $li .= $schlagzeile; $li .= "" if ($weiteretexte or $direkt_verlinken or $titel_rechte_spalte_verlinken); $li .= ""; $li .= " ($linktyp)" if ($direkt_verlinken and $linktyp); $li .= kuerzeTeaser($teaser,100) if ($teaser); $li .= "
    [$terminvon]\n" if ($terminvon and $rechts_datum); $li .= "
  • \n"; if ($keineIndexseite and $schlagzeile and $keine_bes_meld and ($zaehler_rechts<$rechts_max)) { $ssi_aktuelles .= $li; $zaehler_rechts++; } # Ausgabe fuer archiv_ssi erzeugen $arc .= "
  • "; if ($weiteretexte or $direkt_verlinken){ $arc .= ""; } $arc .= $schlagzeile; $arc .= "" if ($weiteretexte or $direkt_verlinken); $arc .= " ($linktyp)" if ($direkt_verlinken and $linktyp); $arc .= "

    "; $arc .= "$teaser
    " if ($teaser); $arc .= "[$terminvon]" if ($terminvon); $arc .= "
  • \n"; if ($keineIndexseite and $schlagzeile and $keine_bes_meld) { $ssi_archiv .= $arc; $zaehler++; } # Ausgabe fuer aktuelles_home_ssi erzeugen $h .= "\n
  • "; if ($weiteretexte or $direkt_verlinken){ $h .= ""; } $h .= "$schlagzeile"; $h .= "" if ($weiteretexte or $direkt_verlinken); $h .= " ($linktyp)" if ($direkt_verlinken and $linktyp); $h .= "
    $teaser" if ($teaser); $h .= " [$terminvon]" if ($terminvon); $h .= "
  • \n"; if ($keineIndexseite and $schlagzeile and $keine_bes_meld and ($zaehler_home<$home_max)) { $ssi_home .= $h; $zaehler_home++; } #Ausgabe fuer besondere Meldungen im Block zur rechten Spalte (nur LG EVIS) if ($bes_meld_anzeigen eq "block"){ my $bes_meld = "\n
    "; if ($bes_meld_bild){ $bes_meld .= ""; $bes_meld .= "\n" if($bes_meld_bild_url); } $bes_meld .= "
    "; if ($schlagzeile){ $bes_meld .= "

    "; $bes_meld .= "" if($bes_meld_url_tl); $bes_meld .= $schlagzeile; $bes_meld .= "" if($bes_meld_url_tl); $bes_meld .= "

    \n"; } $bes_meld .= "$bes_meld_inhalt
    \n
    \n"; $ssi_bes_meld .= $bes_meld; $zaehler++; } # Ausgabe fuer BOX-SSI erzeugen if ($box eq "ja") { my $bx .= "
  • "; $bx .= "$schlagzeile
    "; $bx .= kuerzeTeaser($teaser,150) if ($teaser); $bx .= "
  • "; $ssi_box .= $bx; $zaehler++; }#if ($box #Ausgabe fuer RSS $rdfSeq .= "\n"; $items .= "\n"; if ($direkt_verlinken){ $items .= $rssUrl_direkt; }else{ $items .= $rssUrl; } $items .= "\n<![CDATA[$rss_schlagzeile"; $items .= " ($linktyp) " if ($direkt_verlinken and $linktyp); $items .= " [$terminvon]]]>\n\n"; if ($keineIndexseite and ($zaehler_rss<$maxRSS) and not($bes_meld_anzeigen)) { $ssi_rdfSeq .= $rdfSeq; $ssi_items .= $items; $zaehler_rss++; } #Ausgabe fuer RSS 2.0 my $item = "\n$schlagzeile\n"; $item .= $rssUrl_direkt if ($direkt_verlinken ne ""); $item .= $rssUrl if ($direkt_verlinken eq ""); $item .= "\n\n\n"; if ($keineIndexseite and $zaehler<=$maxRSS and not($bes_meld_anzeigen)) { $ssi_rss2 .=$item; $zaehler_rss2++; } } # foreach file if (not ($ssi_aktuelles)) { print " "; } else { print "
\n"; } if (not ($ssi_archiv)){ $ssi_archiv .=""; } if ($ssi_aktuelles) { if ($zaehler_rechts<$zaehler_index){ $ssi_aktuelles = "
  • $ueberschrift:\n
      $ssi_aktuelles
    \n\n"; if ($rss and $maxRSS){ $ssi_aktuelles .= "\n"; } $ssi_aktuelles .= "
  • \n"; }else{ $ssi_aktuelles = "
  • $ueberschrift:\n
      \n$ssi_aktuelles
    \n
  • \n" if ($ssi_aktuelles); } }#if ($ssi_aktuelles $ssi_box = ($ssi_box) ? "
      $ssi_box
    \n" : "

    Zur Zeit keine aktuellen Termine

    " if ($box eq "ja"); if (($rubrik eq "Aktuelles") || ($rubrik eq "Nachrichten") || ($rubrik eq "Veranstaltungen") || ($rubrik eq "News") || ($rubrik eq "news") || ($rubrik_name eq "Fakultaet") || ($rubrik eq "Studierende")){ schreibeSSI($ssi_aktuelles, $root_dir.$ssi_dir."/".$filenameprefix.".ssi") ; schreibeSSI("
      $ssi_archiv
    \n", $root_dir.$ssi_dir."/".$filenameprefix."_archiv.ssi"); schreibeSSI("
      \n$ssi_home
    \n", $root_dir.$ssi_dir."/".$filenameprefix."_home.ssi"); } if ($rss and $maxRSS){ $ssi_rdfSeq = "$ssi_rdfSeq" if ($ssi_rdfSeq); $rss_inhalt = "$xmlRSS$ssi_rdfSeq
    \n$ssi_items\n"; schreibeSSI($rss_inhalt, $root_dir.$ssi_dir."/aktuelles.xml") if ($rss_inhalt); } if ($rss2 and $maxRSS){ $ssi_rss2 = $rss2_kopf.$ssi_rss2.$rss2_fuss if ($ssi_rss2); schreibeSSI($ssi_rss2, $root_dir.$ssi_dir."/rss2.xml") if ($ssi_rss2); } schreibeSSI($ssi_box, $root_dir.$ssi_dir."/"."box.ssi") if ($ssi_box && ($rubrik eq "Aktuelles")); schreibeSSI($ssi_bes_meld, $root_dir.$ssi_dir."/bes_meldungen.ssi") if ($ssi_bes_meld);
    Redaktion | 07.05.2018