Location: PHPKode > projects > Mocovie web framework > webs/common/controls/feedreader.php
<?php
/**
 *  Copyright (C) 2010  Kai Dorschner
 *
 *  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 3 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, see <http://www.gnu.org/licenses/>.
 *
 * @author Kai Dorschner <the-hide@address.com>
 * @copyright Copyright 2010, Kai Dorschner
 * @license http://www.gnu.org/licenses/gpl.html GPLv3
 * @package mocovi
 * @subpackage controls
 */

/**
 * Reads feeds from an external location
 *
 *
 * @package mocovi
 * @subpackage controls
 */
class feedreader_control extends Control
{
	protected $defaultOptions = array
		( 'url'			=> ''
		, 'maxelements'	=> '5'
		);

	/**
	 * @override
	 */
	protected function program()
	{
		Framework::required('Zend');
		Framework::load('Feed.php');
		$feed = Zend_Feed::import($this->getOption('url'));
		$feed->setEncoding('UTF-8');
		$count = 0;
		foreach($feed as $item)
		{
			$this->node->appendChild($this->createItem($item));
			if($count++ >= $this->getOption('maxelements'))
				break;
		}
	}

	protected function createItem(Zend_Feed_Element $element)
	{
		$item = $this->dom->createElement('item');
		$this->appendTextToNode($item, 'date', !empty($element->pubDate) ? $element->pubDate : $element->date);
		$this->appendTextToNode($item, 'source', $element->source);
		$this->appendTextToNode($item, 'title', $element->title);
		$this->appendTextToNode($item, 'creator', $element->creator);
		$this->appendTextToNode($item, 'link', $element->link);
		$this->appendTextToNode($item, 'description', $element->description);
		$this->appendTextToNode($item, 'tags', $element->tags);
		return $item;
	}

	protected function appendTextToNode(DomElement $element, $stringName, $string)
	{
		$element->appendChild($this->dom->createElement($stringName, htmlspecialchars($string, ENT_COMPAT, $this->dom->encoding)));
	}
}
Return current item: Mocovie web framework