<?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)));
}
}