+class PublicAction extends Action
+{
+ /**
+ * page of the stream we're on; default = 1
+ */
+
+ var $page = null;
+
+ /**
+ * Read and validate arguments
+ *
+ * @param array $args URL parameters
+ *
+ * @return boolean success value
+ */
+
+ function prepare($args)
+ {
+ parent::prepare($args);
+ $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
+ return true;
+ }
+
+ /**
+ * handle request
+ *
+ * Show the public stream, using recipe method showPage()
+ *
+ * @param array $args arguments, mostly unused
+ *
+ * @return void
+ */
+
+ function handle($args)
+ {
+ parent::handle($args);
+
+ header('X-XRDS-Location: '. common_local_url('publicxrds'));
+
+ $this->showPage();
+ }
+
+ /**
+ * Title of the page
+ *
+ * @return page title, including page number if over 1
+ */
+
+ function title()
+ {
+ if ($this->page > 1) {
+ return sprintf(_('Public timeline, page %d'), $this->page);
+ } else {
+ return _('Public timeline');
+ }
+ }