| 
									
										
										
										
											2008-05-21 10:33:51 -04:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Laconica, the distributed open-source microblogging tool | 
					
						
							| 
									
										
										
										
											2008-05-21 10:33:51 -04:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |  * Base class for RSS 1.0 feed actions | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * PHP version 5 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * LICENCE: This program is free software: you can redistribute it and/or modify | 
					
						
							| 
									
										
										
										
											2008-05-21 10:33:51 -04:00
										 |  |  |  * it under the terms of the GNU Affero 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 Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * @category  Mail | 
					
						
							|  |  |  |  * @package   Laconica | 
					
						
							|  |  |  |  * @author    Evan Prodromou <evan@controlyourself.ca> | 
					
						
							|  |  |  |  * @author    Earle Martin <earle@downlode.org> | 
					
						
							|  |  |  |  * @copyright 2008-9 Control Yourself, Inc. | 
					
						
							|  |  |  |  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | 
					
						
							|  |  |  |  * @link      http://laconi.ca/ | 
					
						
							| 
									
										
										
										
											2008-05-21 10:33:51 -04:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (!defined('LACONICA')) { exit(1); } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-26 17:30:18 -04:00
										 |  |  | define('DEFAULT_RSS_LIMIT', 48); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:49:23 -05:00
										 |  |  | class Rss10Action extends Action | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     # This will contain the details of each feed item's author and be used to generate SIOC data.
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     var $creators = array(); | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     var $limit = DEFAULT_RSS_LIMIT; | 
					
						
							| 
									
										
										
										
											2009-02-20 14:58:38 +00:00
										 |  |  |     var $notices = null; | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Constructor | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * Just wraps the Action constructor. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string  $output URI to output to, default = stdout | 
					
						
							|  |  |  |      * @param boolean $indent Whether to indent output, default true | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @see Action::__construct | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function __construct($output='php://output', $indent=true) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         parent::__construct($output, $indent); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Do we need to write to the database? | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |      * @return boolean true | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     function isReadonly() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Read arguments and initialize members | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |      * @param array $args Arguments from $_REQUEST | 
					
						
							|  |  |  |      * @return boolean success | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     function prepare($args) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         parent::prepare($args); | 
					
						
							|  |  |  |         $this->limit = (int) $this->trimmed('limit'); | 
					
						
							|  |  |  |         if ($this->limit == 0) { | 
					
						
							|  |  |  |             $this->limit = DEFAULT_RSS_LIMIT; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return true; | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Handle a request | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |      * @param array $args Arguments from $_REQUEST | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     function handle($args) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-02-20 14:58:38 +00:00
										 |  |  |         // Parent handling, including cache check
 | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         parent::handle($args); | 
					
						
							| 
									
										
										
										
											2009-03-21 14:18:38 +00:00
										 |  |  |         // Get the list of notices
 | 
					
						
							| 
									
										
										
										
											2009-05-18 18:18:08 -04:00
										 |  |  |         if (empty($this->tag)) { | 
					
						
							|  |  |  |             $this->notices = $this->getNotices($this->limit); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $this->notices = $this->getTaggedNotices($this->tag, $this->limit); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-03-21 14:18:38 +00:00
										 |  |  |         $this->showRss(); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get the notices to output in this stream | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |      * @return array an array of Notice objects sorted in reverse chron | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     function getNotices() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         return array(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-17 22:30:44 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get a description of the channel | 
					
						
							| 
									
										
										
										
											2009-01-23 03:10:26 +01:00
										 |  |  |      * | 
					
						
							|  |  |  |      * Returns an array with the following | 
					
						
							|  |  |  |      * @return array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |     function getChannel() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         return array('url' => '', | 
					
						
							|  |  |  |                      'title' => '', | 
					
						
							|  |  |  |                      'link' => '', | 
					
						
							|  |  |  |                      'description' => ''); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |     function getImage() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2008-12-23 14:21:29 -05:00
										 |  |  |         return null; | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 14:18:38 +00:00
										 |  |  |     function showRss() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->initRss(); | 
					
						
							| 
									
										
										
										
											2009-03-21 14:18:38 +00:00
										 |  |  |         $this->showChannel(); | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->showImage(); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 14:18:38 +00:00
										 |  |  |         foreach ($this->notices as $n) { | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |             $this->showItem($n); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->showCreators(); | 
					
						
							|  |  |  |         $this->endRss(); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 14:18:38 +00:00
										 |  |  |     function showChannel() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $channel = $this->getChannel(); | 
					
						
							|  |  |  |         $image = $this->getImage(); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->elementStart('channel', array('rdf:about' => $channel['url'])); | 
					
						
							|  |  |  |         $this->element('title', null, $channel['title']); | 
					
						
							|  |  |  |         $this->element('link', null, $channel['link']); | 
					
						
							|  |  |  |         $this->element('description', null, $channel['description']); | 
					
						
							|  |  |  |         $this->element('cc:licence', array('rdf:resource' => common_config('license','url'))); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if ($image) { | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |             $this->element('image', array('rdf:resource' => $image)); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->elementStart('items'); | 
					
						
							|  |  |  |         $this->elementStart('rdf:Seq'); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 14:18:38 +00:00
										 |  |  |         foreach ($this->notices as $notice) { | 
					
						
							| 
									
										
										
										
											2009-06-12 16:15:30 +00:00
										 |  |  |             $this->element('rdf:li', array('rdf:resource' => $notice->uri)); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->elementEnd('rdf:Seq'); | 
					
						
							|  |  |  |         $this->elementEnd('items'); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->elementEnd('channel'); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |     function showImage() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $image = $this->getImage(); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         if ($image) { | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |             $channel = $this->getChannel(); | 
					
						
							| 
									
										
										
										
											2009-01-24 22:08:27 -08:00
										 |  |  |             $this->elementStart('image', array('rdf:about' => $image)); | 
					
						
							|  |  |  |             $this->element('title', null, $channel['title']); | 
					
						
							|  |  |  |             $this->element('link', null, $channel['link']); | 
					
						
							|  |  |  |             $this->element('url', null, $image); | 
					
						
							|  |  |  |             $this->elementEnd('image'); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |     function showItem($notice) | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         $profile = Profile::staticGet($notice->profile_id); | 
					
						
							|  |  |  |         $nurl = common_local_url('shownotice', array('notice' => $notice->id)); | 
					
						
							|  |  |  |         $creator_uri = common_profile_uri($profile); | 
					
						
							| 
									
										
										
										
											2009-06-12 16:15:30 +00:00
										 |  |  |         $this->elementStart('item', array('rdf:about' => $notice->uri, | 
					
						
							|  |  |  |                             'rdf:type' => 'http://rdfs.org/sioc/types#MicroblogPost')); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         $title = $profile->nickname . ': ' . common_xml_safe_str(trim($notice->content)); | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->element('title', null, $title); | 
					
						
							|  |  |  |         $this->element('link', null, $nurl); | 
					
						
							|  |  |  |         $this->element('description', null, $profile->nickname."'s status on ".common_exact_date($notice->created)); | 
					
						
							| 
									
										
										
										
											2009-06-12 16:13:45 +00:00
										 |  |  |         if ($notice->rendered) { | 
					
						
							|  |  |  |             $this->element('content:encoded', null, common_xml_safe_str($notice->rendered)); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->element('dc:date', null, common_date_w3dtf($notice->created)); | 
					
						
							|  |  |  |         $this->element('dc:creator', null, ($profile->fullname) ? $profile->fullname : $profile->nickname); | 
					
						
							| 
									
										
										
										
											2009-06-12 16:18:58 +00:00
										 |  |  |         $this->element('foaf:maker', array('rdf:resource' => $creator_uri)); | 
					
						
							|  |  |  |         $this->element('sioc:has_creator', array('rdf:resource' => $creator_uri.'#acct')); | 
					
						
							| 
									
										
										
										
											2009-02-06 03:13:08 -05:00
										 |  |  |         $this->element('laconica:postIcon', array('rdf:resource' => $profile->avatarUrl())); | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->element('cc:licence', array('rdf:resource' => common_config('license', 'url'))); | 
					
						
							| 
									
										
										
										
											2009-06-19 15:54:24 +00:00
										 |  |  |         if ($notice->reply_to) { | 
					
						
							| 
									
										
										
										
											2009-06-19 16:04:14 +00:00
										 |  |  |             $replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to)); | 
					
						
							| 
									
										
										
										
											2009-07-02 15:38:25 +00:00
										 |  |  |             $this->element('sioc:reply_of', array('rdf:resource' => $replyurl)); | 
					
						
							| 
									
										
										
										
											2009-06-19 15:54:24 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2009-07-09 13:18:57 -04:00
										 |  |  |         $attachments = $notice->attachments(); | 
					
						
							|  |  |  |         if($attachments){ | 
					
						
							|  |  |  |             foreach($attachments as $attachment){ | 
					
						
							|  |  |  |                 $this->element('enc:enclosure', array('rdf:resource'=>$attachment->url,'enc:type'=>$attachment->mimetype,'enc:length'=>$attachment->size), null); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->elementEnd('item'); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         $this->creators[$creator_uri] = $profile; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |     function showCreators() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         foreach ($this->creators as $uri => $profile) { | 
					
						
							|  |  |  |             $id = $profile->id; | 
					
						
							|  |  |  |             $nickname = $profile->nickname; | 
					
						
							| 
									
										
										
										
											2009-06-12 16:18:58 +00:00
										 |  |  |             $this->elementStart('foaf:Agent', array('rdf:about' => $uri)); | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |             $this->element('foaf:nick', null, $nickname); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |             if ($profile->fullname) { | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |                 $this->element('foaf:name', null, $profile->fullname); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2009-06-12 16:18:58 +00:00
										 |  |  |             $this->element('foaf:holdsAccount', array('rdf:resource' => $uri.'#acct')); | 
					
						
							| 
									
										
										
										
											2009-02-06 03:13:08 -05:00
										 |  |  |             $avatar = $profile->avatarUrl(); | 
					
						
							| 
									
										
										
										
											2009-06-12 16:18:58 +00:00
										 |  |  |             $this->element('foaf:depiction', array('rdf:resource' => $avatar)); | 
					
						
							|  |  |  |             $this->elementEnd('foaf:Agent'); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |     function initRss() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $channel = $this->getChannel(); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |         header('Content-Type: application/rdf+xml'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->startXml(); | 
					
						
							|  |  |  |         $this->elementStart('rdf:RDF', array('xmlns:rdf' => | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |                                               'http://www.w3.org/1999/02/22-rdf-syntax-ns#', | 
					
						
							|  |  |  |                                               'xmlns:dc' => | 
					
						
							|  |  |  |                                               'http://purl.org/dc/elements/1.1/', | 
					
						
							|  |  |  |                                               'xmlns:cc' => | 
					
						
							| 
									
										
										
										
											2009-06-12 15:41:45 +00:00
										 |  |  |                                               'http://creativecommons.org/ns#', | 
					
						
							| 
									
										
										
										
											2008-12-05 10:24:45 -05:00
										 |  |  |                                               'xmlns:content' => | 
					
						
							|  |  |  |                                               'http://purl.org/rss/1.0/modules/content/', | 
					
						
							| 
									
										
										
										
											2009-07-09 13:18:57 -04:00
										 |  |  |                                               'xmlns:enc' => | 
					
						
							|  |  |  |                                               'http://purl.oclc.org/net/rss_2.0/enc#', | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |                                               'xmlns:foaf' => | 
					
						
							|  |  |  |                                               'http://xmlns.com/foaf/0.1/', | 
					
						
							|  |  |  |                                               'xmlns:sioc' => | 
					
						
							|  |  |  |                                               'http://rdfs.org/sioc/ns#', | 
					
						
							|  |  |  |                                               'xmlns:sioct' => | 
					
						
							|  |  |  |                                               'http://rdfs.org/sioc/types#', | 
					
						
							|  |  |  |                                               'xmlns:laconica' => | 
					
						
							|  |  |  |                                               'http://laconi.ca/ont/', | 
					
						
							|  |  |  |                                               'xmlns' => 'http://purl.org/rss/1.0/')); | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->elementStart('sioc:Site', array('rdf:about' => common_root_url())); | 
					
						
							|  |  |  |         $this->element('sioc:name', null, common_config('site', 'name')); | 
					
						
							| 
									
										
										
										
											2009-06-12 15:42:53 +00:00
										 |  |  |         $this->elementStart('sioc:space_of'); | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->element('sioc:Container', array('rdf:about' => | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |                                                $channel['url'])); | 
					
						
							| 
									
										
										
										
											2009-06-12 15:42:53 +00:00
										 |  |  |         $this->elementEnd('sioc:space_of'); | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->elementEnd('sioc:Site'); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |     function endRss() | 
					
						
							| 
									
										
										
										
											2008-12-23 14:33:23 -05:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  |         $this->elementEnd('rdf:RDF'); | 
					
						
							| 
									
										
										
										
											2008-12-23 14:19:07 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-02-20 14:58:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * When was this page last modified? | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function lastModified() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (empty($this->notices)) { | 
					
						
							|  |  |  |             return null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (count($this->notices) == 0) { | 
					
						
							|  |  |  |             return null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // FIXME: doesn't handle modified profiles, avatars, deleted notices
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return strtotime($this->notices[0]->created); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-06-20 03:21:25 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-01-23 03:31:38 +00:00
										 |  |  | 
 |