Location: PHPKode > projects > OpenRat CMS > openrat/dynamicClasses/Atom.class.php
<?php
// ---------------------------------------------------------------------------
// $Id$
// ---------------------------------------------------------------------------
// OpenRat Content Management System
// Copyright (C) 2002 Jan Dankert, hide@address.com
//
// 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.
// ---------------------------------------------------------------------------



/**
 * Erstellen eines ATOM-Feeds
 * @author Jan Dankert
 */
class Atom extends Dynamic
{
	/**
	 * Bitte immer alle Parameter in dieses Array schreiben, dies ist fuer den Web-Developer hilfreich.
	 * @type String
	 */
	var $parameters  = Array(
		'folderid'        =>'Id of the folder whose pages should go into the Atom-Feed, default: the root folder',
		'feed_url'        =>'Url of the feed, default: blank',
		'feed_title'      =>'Title of the feed, default: Name of folder',
		'feed_description'=>'Description of the feed, default: Description of folder'
		);

	var $folderid     = 0;

	/**
	 * Bitte immer eine Beschreibung benutzen, dies ist fuer den Web-Developer hilfreich.
	 * @type String
	 */
	var $description      = 'Creates an Atom-Feed of pages in a folder';
	var $api;

	var $feed_url         = '';
	var $feed_title       = '';
	var $feed_description = '';

	// Erstellen des Hauptmenues
	function execute()
	{
		$feed = array();

		// Lesen des Root-Ordners
		if	( intval($this->folderid) == 0 )
			$folder = new Folder( $this->getRootObjectId() );
		else
			$folder = new Folder( intval($this->folderid) );

		$folder->load();

		if	( $this->feed_title == '' )
			$this->feed_title = $folder->name;

		if	( $this->feed_description == '' )
			$this->feed_description = $folder->desc;

		$feed['title'      ] = $this->feed_title;			
		$feed['description'] = $this->feed_description;			
		$feed['url'        ] = $this->feed_url;			
		$feed['items'      ] = array();			
		// Schleife ueber alle Inhalte des Root-Ordners
		foreach( $folder->getObjectIds() as $id )
		{
			if	( $id == $this->getObjectId() )
				continue;
			$o = new Object( $id );
			$o->languageid = $this->page->languageid;
			$o->load();
			if ( $o->isPage ) // Nur wenn Seite
			{
				$p = new Page( $id );
				$p->load();

				$item = array();
				$item['title'      ] = $p->name;
				$item['description'] = $p->desc;
				$item['date'       ] = $p->lastchangeDate;
				if	( empty($this->feed_url) )
					$item['link'       ] = $this->pathToObject($id);
				else
					$item['link'       ] = $this->feed_url;
				
				$feed['items'][] = $item;
			}
		}
		
		$feed = $this->atomFeed($feed);

		$this->output( $feed );
	}
	
	
	function atomFeed($input, $stylesheet='')
	{
		$input["encoding"]  = (empty($input["encoding"] ))?"UTF-8":$input["encoding"];
		$input["language"]  = (empty($input["language"] ))?"en-us":$input["language"];
		
		if	( empty($input['title'      ])) $input['title'      ] = ''; 
		if	( empty($input['description'])) $input['description'] = ''; 
		if	( empty($input['link'       ])) $input['link'       ] = ''; 
		$feed = '<?xml version="1.0" encoding="'.$input["encoding"].'"?>';
		$feed .= (!empty($stylesheet))?"\n".'<?xml-stylesheet type="text/xsl" href="'.$stylesheet.'"?>':"";
		$feed .= <<<__RSS__
		
		<feed xmlns="http://www.w3.org/2005/Atom">
  		<title>{$input["title"]}</title>
		
__RSS__;
		    foreach($input["items"] as $item)
		    {
				if	( empty($item['title'      ])) $item['title'      ] = ''; 
				if	( empty($item['description'])) $item['description'] = ''; 
		        $feed .= "\n<entry>\n<title>".$item["title"]."</title>";
		        $feed .= "\n<summary><![CDATA[".$item["description"]."]]></summary>";
	            $feed .= "\n<updated>".date('Y-m-d\TH:i:s\Z', $item["date"])."</updated>";
	            $feed .= "\n<link href=\"".$item["link"]."\" />";
		        $feed .= "\n</entry>\n";
		    }
			$feed .= "\n</feed>";
		return $feed;
	}
}
Return current item: OpenRat CMS