/usr/share/mediawiki-extensions/base/News/News.php is in mediawiki-extensions-base 3.7.
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 | <?php
/**
* News extension - shows recent changes on a wiki page.
*
* @file
* @ingroup 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(
'path' => __FILE__,
'name' => 'News',
'author' => 'Daniel Kinzler, brightbyte.de',
'url' => 'http://mediawiki.org/wiki/Extension:News',
'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.
$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';
$wgHooks['ParserFirstCallInit'][] = 'wfNewsSetHooks';
//FIXME: find a way to override the feed URLs generated by OutputPage::getHeadLinks
function wfNewsSetHooks( $parser ) {
$parser->setHook( 'news', 'wfNewsTag' );
$parser->setHook( 'newsfeed', 'wfNewsFeedTag' );
$parser->setHook( 'newsfeedlink', 'wfNewsFeedLinkTag' );
return true;
}
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->getTitle(); //hack...
foreach ($feeds as $format => $e) {
$e['href'] = NewsRenderer::getFeedURL( $title, $format );
$feeds[$format] = $e;
}
$tpl->setRef( 'feeds', $feeds );
return true;
}
|