/usr/share/mediawiki-extensions/base/News/News.php is in mediawiki-extensions-base 2.5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | <?php
/**
* News extension - shows recent changes on a wiki page.
*
* @package MediaWiki
* @subpackage Extensions
* @author Daniel Kinzler, brightbyte.de
* @copyright © 2007 Daniel Kinzler
* @licence GNU General Public Licence 2.0 or later
*/
if( !defined( 'MEDIAWIKI' ) ) {
echo( "This file is an extension to the MediaWiki software and cannot be used standalone.\n" );
die( 1 );
}
$wgExtensionCredits['other'][] = array(
'name' => 'News',
'author' => 'Daniel Kinzler, brightbyte.de',
'url' => 'http://mediawiki.org/wiki/Extension:News',
'svn-date' => '$LastChangedDate: 2008-11-30 04:15:22 +0100 (Sun, 30 Nov 2008) $',
'svn-revision' => '$LastChangedRevision: 44056 $',
'description' => 'shows customized recent changes on a wiki pages or as RSS or Atom feed',
'descriptionmsg' => 'newsextension-desc',
);
$dir = dirname(__FILE__) . '/';
$wgExtensionMessagesFiles['NewsExtension'] = $dir . 'News.i18n.php';
$wgNewsFeedURLPattern = false; // pattern for feed-URLs; useful when using rewrites for canonical feed URLs
$wgNewsFeedUserPattern = false; // pattern to use for the author-field in feed items.
$wgExtensionFunctions[] = "wfNewsExtension";
$wgAutoloadClasses['NewsRenderer'] = dirname( __FILE__ ) . '/NewsRenderer.php';
$wgAutoloadClasses['NewsFeedPage'] = dirname( __FILE__ ) . '/NewsRenderer.php';
$wgHooks['ArticleFromTitle'][] = 'wfNewsArticleFromTitle';
/*-
* disabled to not break page feeds from other sources
* cf. https://evolvis.org/tracker/t_follow.php/2557
*/
//$wgHooks['SkinTemplateOutputPageBeforeExec'][] = 'wfNewsSkinTemplateOutputPageBeforeExec';
//FIXME: find a way to override the feed URLs generated by OutputPage::getHeadLinks
function wfNewsExtension() {
global $wgParser;
$wgParser->setHook( "news", "wfNewsTag" );
$wgParser->setHook( "newsfeed", "wfNewsFeedTag" );
$wgParser->setHook( "newsfeedlink", "wfNewsFeedLinkTag" );
wfLoadExtensionMessages( 'NewsExtension' );
}
function wfNewsTag( $templatetext, $argv, &$parser ) {
global $wgTitle;
$parser->disableCache(); //TODO: use smart cache & purge...?
$renderer = new NewsRenderer($wgTitle, $templatetext, $argv, $parser);
return $renderer->renderNews();
}
function wfNewsFeedTag( $templatetext, $argv, &$parser ) {
global $wgTitle, $wgOut;
$parser->disableCache(); //TODO: use smart cache & purge...?
$wgOut->setSyndicated( true );
$silent = @$argv['silent'];
if ( $silent === 'false' || $silent === 'no' || $silent === '0' )
$silent = false;
if ( $silent ) return "";
$renderer = new NewsRenderer($wgTitle, $templatetext, $argv, $parser);
$html = $renderer->renderFeedPreview();
return $html;
}
function wfNewsFeedLinkTag( $linktext, $argv, &$parser ) {
return NewsRenderer::renderFeedLink($linktext, $argv, $parser);
}
function wfNewsArticleFromTitle( &$title, &$article ) {
global $wgRequest, $wgFeedClasses, $wgUser, $wgOut;
$fname = 'extension/News: wfNewsArticleFromTitle';
$ns = $title->getNamespace();
if ($ns < 0 || $ns == NS_SPECIAL || $ns == NS_MEDIAWIKI) return true;
$format = $wgRequest->getVal( 'feed' );
if (!$format) return true;
$format = strtolower( trim($format) );
$action = strtolower( trim( $wgRequest->getVal( 'action', 'view' ) ) );
if ($action != 'view' && $action != 'purge') return true;
if ( !isset($wgFeedClasses[$format] ) ) {
wfDebug( "$fname: unknown feed format: $format \n" );
wfHttpError(400, "Bad Request", "unknown feed format: " . $format); //TODO: better code & text
return false;
}
if (!$title->exists()) {
wfDebug( "$fname: feed page not found: " . $title->getPrefixedDBKey() . "\n" );
wfHttpError(404, "Not Found", "feed page not found: " . $title->getPrefixedText()); //TODO: better text
return false;
}
wfDebug( "$fname: handling feed request for " . $title->getPrefixedDBKey() . "\n" );
$article = new NewsFeedPage( $title, $format );
return false;
}
function wfNewsSkinTemplateOutputPageBeforeExec( &$skin, &$tpl ) {
$feeds = $tpl->data['feeds'];
if (!$feeds) return true;
$title = $skin->mTitle; //hack...
foreach ($feeds as $format => $e) {
$e['href'] = NewsRenderer::getFeedURL( $title, $format );
$feeds[$format] = $e;
}
$tpl->setRef( 'feeds', $feeds );
return true;
}
|