Files
4G/plugins/us_plugin_rss.php

162 lines
4.8 KiB
PHP
Executable File

<?php
/*
Nutzung dieses Scripts nur gestattet, wenn Kommentare (PHP und HTML) nicht gelöscht werden, oder ein Link zu folgender Adresse gesetzt wird:
URL: http://www.web-spirit.de/webdesign-tutorial/7/RSS-Feed-auslesen-mit-PHP
Beschreibung: RSS Feed auslesen mit PHP
Autor: Sebastian Gollus
Internet: http://www.web-spirit.de
Version: 1.0.200905
*/
// Funktionsaufruf z.B.: getRssfeed("http://www.web-spirit.de/web-spirit.xml","web-spirit","auto",3,3);
function getRssfeed($rssfeed, $cssclass="", $encode="auto", $anzahl=10, $mode=0)
{
// $encode e[".*"; "no"; "auto"]
// $mode e[0; 1; 2; 3]:
// 0 = nur Titel und Link der Items weden ausgegeben
// 1 = Titel und Link zum Channel werden ausgegeben
// 2 = Titel, Link und Beschreibung der Items werden ausgegeben
// 3 = 1 & 2
// Zugriff auf den RSS Feed
$data = @file($rssfeed);
$data = implode ("", $data);
if(strpos($data,"</item>") > 0)
{
preg_match_all("/<item.*>(.+)<\/item>/Uism", $data, $items);
$atom = 0;
}
elseif(strpos($data,"</entry>") > 0)
{
preg_match_all("/<entry.*>(.+)<\/entry>/Uism", $data, $items);
$atom = 1;
}
// Encodierung
if($encode == "auto")
{
preg_match("/<?xml.*encoding=\"(.+)\".*?>/Uism", $data, $encodingarray);
$encoding = $encodingarray[1];
}
else
{$encoding = $encode;}
echo "<!-- RSS Feed Script von Sebastian Gollus: http://www.web-spirit.de/webdesign-tutorial/7/RSS-Feed-auslesen-mit-PHP -->\n";
echo "<div class=\"rssfeed_".$cssclass."\">\n";
// Titel und Link zum Channel
if($mode == 1 || $mode == 3)
{
if(strpos($data,"</item>") > 0)
{
$data = preg_replace("/<item.*>(.+)<\/item>/Uism", '', $data);
}
else
{
$data = preg_replace("/<entry.*>(.+)<\/entry>/Uism", '', $data);
}
preg_match("/<title.*>(.+)<\/title>/Uism", $data, $channeltitle);
if($atom == 0)
{
preg_match("/<link>(.+)<\/link>/Uism", $data, $channellink);
}
elseif($atom == 1)
{
preg_match("/<link.*alternate.*text\/html.*href=[\"\'](.+)[\"\'].*\/>/Uism", $data, $channellink);
}
$channeltitle = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $channeltitle);
$channellink = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $channellink);
echo "<h1><a href=\"".$channellink[1]."\" title=\"";
if($encode != "no")
{echo htmlentities($channeltitle[1],ENT_QUOTES,$encoding);}
else
{echo $channeltitle[1];}
echo "\">";
if($encode != "no")
{echo htmlentities($channeltitle[1],ENT_QUOTES,$encoding);}
else
{echo $channeltitle[1];}
echo "</a></h1>\n";
}
// Titel, Link und Beschreibung der Items
foreach ($items[1] as $item) {
preg_match("/<title.*>(.+)<\/title>/Uism", $item, $title);
if($atom == 0)
{
preg_match("/<link>(.+)<\/link>/Uism", $item, $link);
}
elseif($atom == 1)
{
preg_match("/<link.*alternate.*text\/html.*href=[\"\'](.+)[\"\'].*\/>/Uism", $item, $link);
}
if($atom == 0)
{
preg_match("/<description>(.*)<\/description>/Uism", $item, $description);
}
elseif($atom == 1)
{
preg_match("/<summary.*>(.*)<\/summary>/Uism", $item, $description);
}
$title = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $title);
$description = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $description);
$link = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $link);
echo "<p class=\"link\">\n";
echo "<a href=\"".$link[1]."\" class=\"menu\" title=\"";
if($encode != "no")
{echo htmlentities($title[1],ENT_QUOTES,$encoding);}
else
{echo $title[1];}
echo "\">";
if($encode != "no")
{echo htmlentities($title[1],ENT_QUOTES,$encoding)."</a>\n";}
else
{echo $title[1]."</a>\n";}
echo "</p>\n";
if($mode == 2 || $mode == 3 && ($description[1]!="" && $description[1]!=" "))
{
echo "<p class=\"description\">\n";
if($encode != "no")
{echo htmlentities($description[1],ENT_QUOTES,$encoding)."\n";}
else
{echo $description[1];}
echo "</p>\n";
}
if ($anzahl-- <= 1) break;
}
echo "</div>\n\n";
}
$feed = liefere_benutzerspezifische_einstellung( $_SESSION[ "mandant_name" ], $_SESSION[ "benutzer_anmeldename" ], "us_plugin_rss_feed" );
$anzahl_meldungen = liefere_benutzerspezifische_einstellung( $_SESSION[ "mandant_name" ], $_SESSION[ "benutzer_anmeldename" ], "us_plugin_rss_anzahl_meldungen" );
$wertemenge = liefere_wertemenge_elemente( $_SESSION[ "mandant_name" ], "rss_feeds" );
if ( $wertemenge[ 0 ] > 0 )
{
foreach( $wertemenge[ 2 ] as $element )
{
if ( $element[ "alpha_01" ] == $feed )
{
$feed_url = $element[ "alpha_02" ];
break;
}
}
}
echo "<center><h2>".$feed."</h2>";
echo "<div style='max-width:900px;'>";
getRssfeed( $feed_url, "web-spirit", "auto", $anzahl_meldungen, 2 );
echo "</div></center>";
?>