Footer einer MediaWiki bearbeiten

Bei einer Wiki, welche mittels der freien Software MediaWiki aufgesetzt wurde gibt es unten, am Ende jeder Seite, einen Footer mit einer Reihe von Links. Wenn man diesen Links ändern möchte muss die Konfiguration in der Datei LocalSettings.php angepasst werden. Die erste Möglichkeit wäre es den Footer komplett verschwinden zu lassen. Dazu muss am Ende der LocalSettings.php-Datei folgendes eingetragen werden:

$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function( $sk, &$tpl ) {

        # Remove existing entries
        $tpl->data['footerlinks']['places'] = array();

        return true;
};

Technisch betrachtet wird der der Hook SkinTemplateOutputPageBeforeExec genutzt um die Logik für den Footer etwas abzuwandeln. Möchte man nach dem Löschen der alten Einträge neue Einträge hinzufügen, so ist dies ebenfalls möglich:

$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function( $sk, &$tpl ) {

        # Remove existing entries
        $tpl->data['footerlinks']['places'] = array();

	# Add new entries
        $tpl->set( 'disclaimerpage', $sk->footerLink( 'disclaimerpage', 'disclaimerpage' ) );
        $tpl->data['footerlinks']['places'][] = 'disclaimerpage';

        $tpl->set( 'privacypage', $sk->footerLink( 'privacypage', 'privacypage' ) );
        $tpl->data['footerlinks']['places'][] = 'privacypage';

        return true;
};

Probleme beim MediaWiki Update auf Version 1.28.1

Beim Update einer MediaWiki-Installation auf die Version 1.28.1 über das update.php-Skript erhielt ich folgende Fehlermeldung:

Error: your composer.lock file is not up to date. Run "composer update" to install newer dependencies

Hintergrund sind unerfüllte Abhängigkeiten, welche wohl nur für die Entwicklung benötigt werden. Um das Update trotzdem durchzuführen sollte folgendes Kommando im Terminal genutzt werden:

php ./update.php --skip-external-dependencies

Damit wird die Prüfung der externen Abhängigkeiten deaktiviert und die Aktualisierung kann erfolgreich durchgeführt werden.

Quelltext einer Mediawiki-Seite anzeigen

Vor einiger Zeit hatte ich einen Twitter-Bot entwickelt welcher als Datenquelle unter anderem die Wikipedia nutzt. Dazu nutzt der Bot unter anderem eine Bibliothek um auf die MediaWiki-API zuzugreifen. Nun stellte ich fest das die Nutzung der API in diesem Fall allerdings überdimensioniert war. Stattdessen ist es möglich sich für eine beliebige MediaWiki-Seite denn Quelltext anzeigen zu lassen. Die URL sieht dabei wie folgt aus:

https://de.wikipedia.org/wiki/Machinima?action=raw

Durch den Parameter action=raw wird der Quelltext anstatt des HTML-Renderings ausgegeben und kann somit ausgewertet werden.

MediaWiki Historie bereinigen

Wenn man Artikel in einer MediaWiki löscht, so werden diese Artikel und deren Historie weiterhin vorgehalten. Problematisch wird dies wenn man z.B. eine größere Menge an Artikeln entfernt hat. So etwas kann unter anderem im Rahmen der Spam-Bekämpfung vorkommen. Im maintenance-Ordner der MediaWiki-Installation gibt es für solche Zwecke das Skript deleteArchivedRevisions.php. Wird dieses auf der Konsole ausgeführt:

php deleteArchivedRevisions.php --delete

wird die Datenbank um historische Einträge bereinigt. Die Historie von nicht gelöschten Artikeln wird dabei beibehalten, so das wirklich nur der unnötige Ballast entfernt wird.

MediaWiki Spam effektiv entfernen

Eine meiner MediaWikis welche ich betreibe wurde in den letzten Tagen zugespamt. So wurden mehrere zehntausend Seiten und Nutzer angelegt. Diese von Hand zu entfernen wäre ein sehr zeit- und nervenraubendes Unterfangen. Mit der Erweiterung BlockAndNuke, kann man diesen Vorgang beschleunigen.

BlockAndNuke listet die Spammer auf

BlockAndNuke listet die Spammer auf

Nach der Installation stellt die Erweiterung eine Spezialseite zur Verfügung. Dort sind die Nutzer aufgelistet, welche entfernt werden sollen. Bei der Entfernung werden auch die jeweiligen Beiträge des Nutzers entfernt. Problematisch wird das ganze bei mehreren tausend oder zehntausend Nutzern und Beiträgen. Dafür gibt es im Ordner BlockAndNuke die Kommandozeilenvariante mit dem Namen ban.php. Mittels:

php ban.php --hammer

kann der Vorgang auf der Kommandozeile ausgeführt werden. Dabei wird whitelist.txt Datei berücksichtigt in welcher sich die Nutzer befinden sollten welche nicht zu den Spammern zählen. Je nach Anzahl der löschenden Nutzer und Beiträge kann der Vorgang einige Zeit in Anspruch nehmen.