summaryrefslogtreecommitdiff
path: root/includes/Feed.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/Feed.php')
-rw-r--r--includes/Feed.php111
1 files changed, 59 insertions, 52 deletions
diff --git a/includes/Feed.php b/includes/Feed.php
index 635b04e4..2fdfa424 100644
--- a/includes/Feed.php
+++ b/includes/Feed.php
@@ -6,7 +6,7 @@
* Available feeds are defined in Defines.php
*
* Copyright © 2004 Brion Vibber <brion@pobox.com>
- * http://www.mediawiki.org/
+ * https://www.mediawiki.org/
*
* 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
@@ -36,28 +36,32 @@
* @ingroup Feed
*/
class FeedItem {
- /**
- * @var Title
- */
- var $title;
+ /** @var Title */
+ public $title;
+
+ public $description;
+
+ public $url;
+
+ public $date;
+
+ public $author;
- var $description;
- var $url;
- var $date;
- var $author;
- var $uniqueId;
- var $comments;
- var $rssIsPermalink = false;
+ public $uniqueId;
+
+ public $comments;
+
+ public $rssIsPermalink = false;
/**
* Constructor
*
* @param string|Title $title Item's title
- * @param $description String
+ * @param string $description
* @param string $url URL uniquely designating the item.
* @param string $date Item's date
* @param string $author Author's user name
- * @param $comments String
+ * @param string $comments
*/
function __construct( $title, $description, $url, $date = '', $author = '', $comments = '' ) {
$this->title = $title;
@@ -72,8 +76,8 @@ class FeedItem {
/**
* Encode $string so that it can be safely embedded in a XML document
*
- * @param string $string string to encode
- * @return String
+ * @param string $string String to encode
+ * @return string
*/
public function xmlEncode( $string ) {
$string = str_replace( "\r\n", "\n", $string );
@@ -84,7 +88,7 @@ class FeedItem {
/**
* Get the unique id of this item
*
- * @return String
+ * @return string
*/
public function getUniqueId() {
if ( $this->uniqueId ) {
@@ -93,10 +97,10 @@ class FeedItem {
}
/**
- * set the unique id of an item
+ * Set the unique id of an item
*
- * @param string $uniqueId unique id for the item
- * @param $rssIsPermalink Boolean: set to true if the guid (unique id) is a permalink (RSS feeds only)
+ * @param string $uniqueId Unique id for the item
+ * @param bool $rssIsPermalink Set to true if the guid (unique id) is a permalink (RSS feeds only)
*/
public function setUniqueId( $uniqueId, $rssIsPermalink = false ) {
$this->uniqueId = $uniqueId;
@@ -106,7 +110,7 @@ class FeedItem {
/**
* Get the title of this item; already xml-encoded
*
- * @return String
+ * @return string
*/
public function getTitle() {
return $this->xmlEncode( $this->title );
@@ -115,7 +119,7 @@ class FeedItem {
/**
* Get the URL of this item; already xml-encoded
*
- * @return String
+ * @return string
*/
public function getUrl() {
return $this->xmlEncode( $this->url );
@@ -124,7 +128,7 @@ class FeedItem {
/**
* Get the description of this item; already xml-encoded
*
- * @return String
+ * @return string
*/
public function getDescription() {
return $this->xmlEncode( $this->description );
@@ -133,7 +137,7 @@ class FeedItem {
/**
* Get the language of this item
*
- * @return String
+ * @return string
*/
public function getLanguage() {
global $wgLanguageCode;
@@ -141,9 +145,9 @@ class FeedItem {
}
/**
- * Get the title of this item
+ * Get the date of this item
*
- * @return String
+ * @return string
*/
public function getDate() {
return $this->date;
@@ -152,7 +156,7 @@ class FeedItem {
/**
* Get the author of this item; already xml-encoded
*
- * @return String
+ * @return string
*/
public function getAuthor() {
return $this->xmlEncode( $this->author );
@@ -161,7 +165,7 @@ class FeedItem {
/**
* Get the comment of this item; already xml-encoded
*
- * @return String
+ * @return string
*/
public function getComments() {
return $this->xmlEncode( $this->comments );
@@ -170,8 +174,8 @@ class FeedItem {
/**
* Quickie hack... strip out wikilinks to more legible form from the comment.
*
- * @param string $text wikitext
- * @return String
+ * @param string $text Wikitext
+ * @return string
*/
public static function stripComment( $text ) {
return preg_replace( '/\[\[([^]]*\|)?([^]]+)\]\]/', '\2', $text );
@@ -190,7 +194,6 @@ abstract class ChannelFeed extends FeedItem {
* @code
* print "<feed>";
* @endcode
- * @param $item
*/
abstract public function outHeader();
@@ -200,7 +203,7 @@ abstract class ChannelFeed extends FeedItem {
* @code
* print "<item>...</item>";
* @endcode
- * @param $item
+ * @param FeedItem $item
*/
abstract public function outItem( $item );
@@ -239,28 +242,27 @@ abstract class ChannelFeed extends FeedItem {
* Return an internet media type to be sent in the headers.
*
* @return string
- * @private
*/
- function contentType() {
+ private function contentType() {
global $wgRequest;
+
$ctype = $wgRequest->getVal( 'ctype', 'application/xml' );
- $allowedctypes = array( 'application/xml', 'text/xml', 'application/rss+xml', 'application/atom+xml' );
+ $allowedctypes = array(
+ 'application/xml',
+ 'text/xml',
+ 'application/rss+xml',
+ 'application/atom+xml'
+ );
+
return ( in_array( $ctype, $allowedctypes ) ? $ctype : 'application/xml' );
}
/**
- * Output the initial XML headers with a stylesheet for legibility
- * if someone finds it in a browser.
- * @private
+ * Output the initial XML headers.
*/
- function outXmlHeader() {
- global $wgStylePath, $wgStyleVersion;
-
+ protected function outXmlHeader() {
$this->httpHeaders();
echo '<?xml version="1.0"?>' . "\n";
- echo '<?xml-stylesheet type="text/css" href="' .
- htmlspecialchars( wfExpandUrl( "$wgStylePath/common/feed.css?$wgStyleVersion", PROTO_CURRENT ) ) .
- '"?' . ">\n";
}
}
@@ -274,8 +276,8 @@ class RSSFeed extends ChannelFeed {
/**
* Format a date given a timestamp
*
- * @param $ts Integer: timestamp
- * @return String: date string
+ * @param int $ts Timestamp
+ * @return string Date string
*/
function formatTime( $ts ) {
return gmdate( 'D, d M Y H:i:s \G\M\T', wfTimestamp( TS_UNIX, $ts ) );
@@ -301,9 +303,10 @@ class RSSFeed extends ChannelFeed {
/**
* Output an RSS 2.0 item
- * @param $item FeedItem: item to be output
+ * @param FeedItem $item Item to be output
*/
function outItem( $item ) {
+ // @codingStandardsIgnoreStart Ignore long lines and formatting issues.
?>
<item>
<title><?php print $item->getTitle(); ?></title>
@@ -315,6 +318,7 @@ class RSSFeed extends ChannelFeed {
<?php if ( $item->getComments() ) { ?><comments><?php print wfExpandUrl( $item->getComments(), PROTO_CURRENT ); ?></comments><?php }?>
</item>
<?php
+ // @codingStandardsIgnoreEnd
}
/**
@@ -335,6 +339,7 @@ class RSSFeed extends ChannelFeed {
class AtomFeed extends ChannelFeed {
/**
* @todo document
+ * @param string|int $ts
* @return string
*/
function formatTime( $ts ) {
@@ -349,6 +354,7 @@ class AtomFeed extends ChannelFeed {
global $wgVersion;
$this->outXmlHeader();
+ // @codingStandardsIgnoreStart Ignore long lines and formatting issues.
?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="<?php print $this->getLanguage() ?>">
<id><?php print $this->getFeedId() ?></id>
<title><?php print $this->getTitle() ?></title>
@@ -359,6 +365,7 @@ class AtomFeed extends ChannelFeed {
<generator>MediaWiki <?php print $wgVersion ?></generator>
<?php
+ // @codingStandardsIgnoreEnd
}
/**
@@ -368,28 +375,27 @@ class AtomFeed extends ChannelFeed {
* have to change the id? Maybe? Maybe not.
*
* @return string
- * @private
*/
- function getFeedId() {
+ private function getFeedId() {
return $this->getSelfUrl();
}
/**
* Atom 1.0 requests a self-reference to the feed.
* @return string
- * @private
*/
- function getSelfUrl() {
+ private function getSelfUrl() {
global $wgRequest;
return htmlspecialchars( $wgRequest->getFullRequestURL() );
}
/**
* Output a given item.
- * @param $item
+ * @param FeedItem $item
*/
function outItem( $item ) {
global $wgMimeType;
+ // @codingStandardsIgnoreStart Ignore long lines and formatting issues.
?>
<entry>
<id><?php print $item->getUniqueId(); ?></id>
@@ -413,5 +419,6 @@ class AtomFeed extends ChannelFeed {
*/
function outFooter() {?>
</feed><?php
+ // @codingStandardsIgnoreEnd
}
}