We use the extension with MW 1.27 and found out that the SQL query no longer works.
Add a patch that should work alll MW versions > 1.21:
--- extensions/PerPageLicense/PerPageLicense.php.orig 2016-09-22 12:21:22.686653279 +0200
+++ extensions/PerPageLicense/PerPageLicense.php 2016-09-22 12:23:00.478308387 +0200
@@ -25,6 +25,8 @@
* @file
* @ingroup Extensions
*/
+use MediaWiki\Logger\LoggerFactory;
+
if( !defined( 'MEDIAWIKI' ) ) {
echo( "This file is an extension to the MediaWiki software and cannot be used "
@@ -102,6 +104,9 @@
global $wgRightsIcon, $wgRightsUrl, $wgRightsText, $wgFooterIcons,
$wgPerPageLicenseLicenses, $wgPerPageLicenseTemplatePage,
$wgPerPageLicenseNamespaces, $wgVersion;
+
+ $logger = LoggerFactory::getInstance( 'per-page-license' );
+
// Sometimes this hook runs twice
static $hasRun = false;
if ( $hasRun ) {
@@ -128,7 +133,8 @@
if ( version_compare( $wgVersion, '1.21', '<' ) ) {
$contents = $licenseWikiPage->getText( Revision::RAW );
} else {
- $contents = $licenseWikiPage->getContent( Revision::RAW );
+ $textObject = $licenseWikiPage->getContent( Revision::RAW );
+ $contents = $textObject->getNativeData( );
}
if ( !$contents ) {
return true;
@@ -136,16 +142,16 @@
$lines = explode ( "\n", $contents );
$templates = array();
foreach ( $lines as $line ) {
- if ( substr ( $line, 0, 1 ) == '|' && trim ( $line ) != '|'
+ if ( substr ( $line, 0, 1 ) == '|' && trim ( $line ) != '|'
&& trim ( $line ) != '|-' && trim ( $line ) != '|}' ) {
// Get rid of that |
$line = substr ( $line, 1, strlen( $line ) - 1);
$lineArr = explode ( '||', $line );
if ( isset ( $lineArr[1] ) && trim ( $lineArr[0] ) ) {
- // Is it one of the acceptable licenses?
- if ( isset ( $wgPerPageLicenseLicenses[trim (
+ // Is it one of the acceptable licenses?
+ if ( isset ( $wgPerPageLicenseLicenses[trim (
$lineArr[1] )] ) ) {
- $templates[ucfirst ( str_replace
+ $templates[ucfirst ( str_replace
( ' ', '_', trim ( $lineArr[0] ) ) ) ] =
trim ( $lineArr[1] );
}
@@ -155,26 +161,26 @@
if ( !$templates ) {
return true;
}
- $id = $parser->getTitle()->getArticleID();
- $sql = "tl_from=$id AND (";
- $first = true;
- foreach ( $templates as $key => $template ) {
- if ( !$first ) {
- $sql .= ' OR ';
- }
- $first = false;
- $sql .= "(tl_namespace=10 AND tl_title='$key')";
- }
- $sql .= ')';
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->selectRow( 'templatelinks', 'tl_title', array( $sql ) );
- if ( $res ) {
- $license = $templates[$res->tl_title];
- $wgRightsText = $wgPerPageLicenseLicenses[$license]['alt'];
- $wgRightsIcon = $wgPerPageLicenseLicenses[$license]['src'];
- $wgRightsUrl = $wgPerPageLicenseLicenses[$license]['url'];
- $wgFooterIcons['copyright']['copyright'] =
- $wgPerPageLicenseLicenses[$license];
+ // get the templates for the page
+ $templateTitles = $parser->getTitle()->getTemplateLinksFrom();
+ if(count($templateTitles) > 0) {
+ // get through the templates and check whether one is a license
+ foreach ( $templateTitles as $license ) {
+ $license = substr($license, strpos($license, ":"));
+ $license = substr($license, 1);
+ $license = str_replace( ' ', '_', trim ( $license ) );
+ $logger->info("License Template to check: " . $license );
+ // check whether one this template is a license template
+ if ( isset ( $templates[$license] ) ) {
+ $license = $templates[$license];
+ $logger->info("License Template: " . $license );
+ $wgRightsText = $wgPerPageLicenseLicenses[$license]['alt'];
+ $wgRightsIcon = $wgPerPageLicenseLicenses[$license]['src'];
+ $wgRightsUrl = $wgPerPageLicenseLicenses[$license]['url'];
+ $wgFooterIcons['copyright']['copyright'] =
+ $wgPerPageLicenseLicenses[$license];
+ }
+ }
}
return true;
}
Regards
Thomas