commit 56ba415d6d3e66e16663dd92eba2da0439ce09cb
parent ac0eb47a0ab6c9cd88998a47d2986f6e86dca09c
Author: dankert <devnull@localhost>
Date: Thu, 14 Oct 2004 23:15:13 +0200
Lesen eines RSS-Feeds und erzeugen eines HTML-Abschnittes dafuer
Diffstat:
1 file changed, 156 insertions(+), 0 deletions(-)
diff --git a/dynamicClasses/RSSReader.class.php b/dynamicClasses/RSSReader.class.php
@@ -0,0 +1,155 @@
+<?php
+// ---------------------------------------------------------------------------
+// $Id$
+// ---------------------------------------------------------------------------
+// OpenRat Content Management System
+// Copyright (C) 2002 Jan Dankert, jandankert@jandankert.de
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+// ---------------------------------------------------------------------------
+// $Log$
+// Revision 1.1 2004-10-14 21:15:13 dankert
+// Lesen eines RSS-Feeds und erzeugen eines HTML-Abschnittes dafuer
+//
+// ---------------------------------------------------------------------------
+
+
+
+/**
+ * @author Jan Dankert
+ */
+class RSSReader /*extends DynamicElement*/
+{
+ /**
+ * Bitte immer alle Parameter in dieses Array schreiben, dies ist fuer den Web-Developer hilfreich.
+ * @type String
+ */
+ var $parameters = Array(
+ 'url'=>'The Url of the RSS-Feed to read. Default: <em>http://www.heise.de/newsticker/heise.rdf</em>'
+ );
+
+
+ var $url = 'http://www.heise.de/newsticker/heise.rdf';
+
+ /**
+ * Bitte immer eine Beschreibung benutzen, dies ist fuer den Web-Developer hilfreich.
+ * @type String
+ */
+ var $description = 'Reads a RSS-Feed and displays its content as a html list';
+ var $api;
+
+ // Erstellen des Hauptmenues
+ function execute()
+ {
+ // Lesen des Root-Ordners
+ $rss = $this->parse( implode('',file($this->url)) );
+
+ $this->api->output('<ul>');
+
+ // Schleife ueber alle Inhalte des Root-Ordners
+ foreach( $rss['items'] as $item )
+ {
+ $this->api->output('<li>');
+ $this->api->output('<a href="'.$item['link'].'">'.$item['title'].'</a><br/>'.$item['description']);
+ $this->api->output('</li>');
+ }
+
+ $this->api->output('</ul>');
+ }
+
+
+ function parse( $feed )
+ {
+ // Parses the RSS feed into the array
+ $arr = array();
+ // Determine encoding
+ preg_match('/<\?xml version="1\.0" encoding="(.*)"\?>/i', $feed, $sarr);
+ if ( !empty($sarr[1]))
+ $arr["encoding"] = $sarr[1];
+ // Determine title
+ preg_match('/<title>(.*)<\/title>/i', $feed, $sarr);
+ if ( !empty($sarr[1]))
+ $arr["title"] = $sarr[1];
+ // Determine title
+ preg_match('/<title>(.*)<\/title>/i', $feed, $sarr);
+ if ( !empty($sarr[1]))
+ $arr["title"] = $sarr[1];
+ // Determine description
+ preg_match('/<description>(.*)<\/description>/i', $feed, $sarr);
+ if ( !empty($sarr[1]))
+ $arr["description"] = $sarr[1];
+ // Determine link
+ preg_match('/<link>(.*)<\/link>/i', $feed, $sarr);
+ if ( !empty($sarr[1]))
+ $arr["link"] = $sarr[1];
+ // Determine language
+ preg_match('/<language>(.*)<\/language>/i', $feed, $sarr);
+ if ( !empty($sarr[1]))
+ $arr["language"] = $sarr[1];
+ // Determine generator
+ preg_match('/<generator>(.*)<\/generator>/i', $feed, $sarr);
+ if ( !empty($sarr[1]))
+ $arr["generator"] = $sarr[1];
+ // Strip items
+ $parts = explode("<item>", $feed);
+ foreach($parts as $part)
+ {
+ $item = substr($part, 0, strpos($part, "</item>"));
+ if ( !empty($item) )
+ $items[] = $item;
+ }
+ // Fill the channel array
+ $arr["items"] = array();
+ foreach($items as $item)
+ {
+ $i = array();
+
+ // Determine title
+ preg_match('/<title>(.*)<\/title>/i', $item, $title);
+ if ( !empty($title[1]))
+ $i['title'] = $title[1];
+ else
+ $i['title'] = '';
+
+ // Determine pubdate
+ preg_match('/<pubDate>(.*)<\/pubDate>/i', $item, $pubdate);
+ if ( !empty($pubdate[1]))
+ $i['pubDate'] = strtotime($pubdate[1]);
+ else
+ $i['pubDate'] = '';
+
+ // Determine link
+ preg_match('/<link>(.*)<\/link>/i', $item, $link);
+ if ( !empty($link[1]))
+ $i['link'] = $link[1];
+ else
+ $i['link'] = '';
+
+ // Determine description
+ if(stristr($item, '<![CDATA['))
+ preg_match('/<description><!\[CDATA\[(.*)\]\]><\/description>/is', $item, $description);
+ else
+ preg_match('/<description>(.*)<\/description>/is', $item, $description);
+
+ if ( !empty($description[1]))
+ $i['description'] = $description[1];
+ else
+ $i['description'] = '';
+
+ $arr["items"][] = $i;
+ }
+ return $arr;
+ }
+}+
\ No newline at end of file