Piwik intégration MédiaWiki
L'application Piwik dispose d'une intégration dans MediaWiki sous la forme d'un plugin de cette application. Ainsi, il est possible d'auditer les pages accéder, sans avoir à modifier manuellement l'ensemble des pages. Le code Javascript étant injecté automatiquement dans les pages.
Sommaire
Votre avis
Current user rating: 81/100 (2 votes)
|
|
Installation
L'installation du plugin doit s'effectuer dans le répertoire extensions
de MediaWiki. Du fait de l'installation réalisée depuis la version 1.8.1, le répertoire cible est donc /var/datas/mediawiki/extensions
.
Le paquet Fichier:Piwik-MW1.18-r91107.tar.gz est téléchargé depuis le site officiel des extensions.
#sudo wget -P /var/datas/mediawiki/extensions http://upload.wikimedia.org/ext-dist/Piwik-MW1.18-r91107.tar.gz --2012-03-16 00:53:20-- http://upload.wikimedia.org/ext-dist/Piwik-MW1.18-r91107.tar.gz Résolution de upload.wikimedia.org... 91.198.174.234 Connexion vers upload.wikimedia.org|91.198.174.234|:80... connecté. requête HTTP transmise, en attente de la réponse... 200 OK Longueur: 11514 (11K) [application/x-tar] Sauvegarde en : «/var/datas/mediawiki/extensions/Piwik-MW1.18-r91107.tar.gz» 100%[==============================================================================================>] 11 514 --.-K/s ds 0,07s 2012-03-16 00:53:21 (152 KB/s) - «/var/datas/mediawiki/extensions/Piwik-MW1.18-r91107.tar.gz» sauvegardé [11514/11514]
Une fois téléchargé, il faut décompresser le paquet. Les droits sont également modifiés afin de n'autoriser que l'utilisateur, exécutant le serveur Apache, a accéder aux fichiers.
#sudo tar -xzf /var/datas/mediawiki/extensions/Piwik-MW1.18-r91107.tar.gz -C /var/datas/mediawiki/extensions #sudo rm /var/datas/mediawiki/extensions/Piwik-MW1.18-r91107.tar.gz #sudo rm /var/datas/mediawiki/extensions/Piwik/README #sudo chown -R www-data:www-data /var/datas/mediawiki/extensions/Piwik #sudo chmod 700 /var/datas/mediawiki/extensions/Piwik #sudo chmod 600 /var/datas/mediawiki/extensions/Piwik/*
A noter le fichier README
est supprimé car inutile pour le fonctionnement de l'extension.
Les droits d'exécution, affecté au répertoire, permet à l'utilisateur de parcourir le contenu du répertoire, sans quoi l'extension ne serait pas accessible.
Puis, il faut le rendre disponible, comme indiqué en introduction de la page des plugins, en créant le lien sous /var/lib/mediawiki/extensions
.
#sudo ln -s /var/datas/mediawiki/extensions/Piwik /var/lib/mediawiki/extensions/Piwik #sudo chown -h www-data:www-data /var/lib/mediawiki/extensions/extensions/Piwik
Le contenu du répertoire /var/datas/mediawiki/extensions/Piwik
doit être le suivant:
-rw------- 1 www-data www-data 1244 2011-11-14 17:16 Piwik.alias.php -rw------- 1 www-data www-data 25704 2011-11-14 17:16 Piwik.i18n.php -rw------- 1 www-data www-data 3326 2011-11-14 17:16 Piwik.php -rw------- 1 www-data www-data 1873 2012-03-16 01:58 Piwik_specialpage.php
Activation
Le fichier /etc/mediawiki/LocalSettings.php
est ensuite modifié afin d'ajouter:
# Extension for Piwik
require_once("$IP/extensions/Piwik/Piwik.php");
$wgPiwikURL = "www.stats.jouvinio.net/piwik/";
$wgPiwikIDSite = "1";
Une ligne de commentaire est placée juste avant, afin de bien identifier son utilité.
Deux variables sont nécessaires pour l'utilisation du plugin.
Paramètre | Valeur |
---|---|
$wgPiwikURL | Contient l'URL d'accès à l'instance de Piwik. |
$wgPiwikIDSite | Identifiant du site audité. |
L'identifiant du site se retrouve à partir de la page de configuration du site dans Piwik, en visualisation le code Javacript.
Dans le cadre de cette installation, l'identifiant du site est 1
, récupéré depuis le code Javascript fourni pour injection dans les pages.
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://www.stats.jouvinio.net/piwik/" : "http://www.stats.jouvinio.net/piwik/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 1);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
</script><noscript><p><img src="http://www.stats.jouvinio.net/piwik/piwik.php?idsite=1" style="border:0" alt="" /></p></noscript>
<!-- End Piwik Tracking Code -->
Configuration
Plusieurs options de configuration sont disponibles pour ce plugin. La majorité ont une valeur par défaut mise en place dans le script Piwik.php
<?php
/**
* Inserts Piwik script into MediaWiki pages for tracking and adds some stats
*
* @file
* @ingroup Extensions
* @author Isb1009 <isb1009 at gmail dot com>
* @copyright © 2008-2010 Isb1009
* @licence GNU General Public Licence 2.0
*/
if ( !defined( 'MEDIAWIKI' ) ) {
die( 'This file is a MediaWiki extension, it is not a valid entry point' );
}
$wgExtensionCredits['specialpage'][] = array(
'path' => __FILE__,
'name' => 'Piwik Integration',
'version' => '1.5.2-piwik0.5.5',
'author' => 'Isb1009',
'descriptionmsg' => 'piwik-desc',
'url' => 'http://www.mediawiki.org/wiki/Extension:Piwik_Integration',
);
$wgHooks['SkinAfterBottomScripts'][] = 'efPiwikHookText';
$wgPiwikIDSite = "";
$wgPiwikURL = "";
$wgPiwikIgnoreSysops = true;
$wgPiwikIgnoreBots = true;
$wgPiwikCustomJS = "";
$wgPiwikUsePageTitle = false;
$wgPiwikActionName = "";
$wgPiwikSpecialPageDate = 'yesterday';
function efPiwikHookText( $skin, &$text = '' ) {
$text .= efAddPiwik( $skin->getTitle() );
return true;
}
function efAddPiwik( $title ) {
global $wgPiwikIDSite, $wgPiwikURL, $wgPiwikIgnoreSysops, $wgPiwikIgnoreBots, $wgUser, $wgScriptPath, $wgPiwikCustomJS, $wgPiwikActionName, $wgPiwikUsePageTitle;
if ( !$wgUser->isAllowed( 'bot' ) || !$wgPiwikIgnoreBots ) {
if ( !$wgUser->isAllowed( 'protect' ) || !$wgPiwikIgnoreSysops ) {
if ( !empty( $wgPiwikIDSite ) AND !empty( $wgPiwikURL ) ) {
if ( $wgPiwikUsePageTitle ) {
$wgPiwikPageTitle = $title->getPrefixedText();
$wgPiwikFinalActionName = $wgPiwikActionName;
$wgPiwikFinalActionName .= $wgPiwikPageTitle;
} else {
$wgPiwikFinalActionName = $wgPiwikActionName;
}
$funcOutput = <<<PIWIK
<!-- Piwik -->
<script type="text/javascript">
/* <![CDATA[ */
var pkBaseURL = (("https:" == document.location.protocol) ? "https://{$wgPiwikURL}" : "http://{$wgPiwikURL}");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
/* ]]> */
</script>
<script type="text/javascript">
/* <![CDATA[ */
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {$wgPiwikIDSite});
piwikTracker.setDocumentTitle("{$wgPiwikFinalActionName}");
piwikTracker.setIgnoreClasses("image");
{$wgPiwikCustomJS}
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
/* ]]> */
</script><noscript><p><img src="http://{$wgPiwikURL}piwik.php?idsite={$wgPiwikIDSite}" style="border:0" alt=""/></p></noscript>
<!-- /Piwik -->
PIWIK;
} else {
$funcOutput = "\n<!-- You need to set the settings for Piwik -->";
}
} else {
$funcOutput = "\n<!-- Piwik tracking is disabled for users with 'protect' rights (i.e., sysops) -->";
}
} else {
$funcOutput = "\n<!-- Piwik tracking is disabled for bots -->";
}
return $funcOutput;
}
$wgGroupPermissions['sysop']['viewpiwik'] = true; # Which users can see the special page?
$wgAvailableRights[] = 'viewpiwik';
$dir = dirname( __FILE__ ) . '/';
$wgAutoloadClasses['Piwik'] = $dir . 'Piwik_specialpage.php'; # Tell MediaWiki to load the extension body.
$wgExtensionMessagesFiles['Piwik'] = $dir . 'Piwik.i18n.php';
$wgExtensionAliasesFiles['Piwik'] = $dir . 'Piwik.alias.php';
$wgSpecialPages['Piwik'] = 'Piwik'; # Let MediaWiki know about your new special page.
Il est donc possible de configurer:
Paramètre | Valeur |
---|---|
$wgPiwikIDSite | Identifiant du site dans Piwik |
$wgPiwikURL | URL du site. Doit se terminer par /. |
$wgPiwikIgnoreSysops | Permet de ne pas auditer les accès pour les utilisateur "système". |
$wgPiwikIgnoreBots | Permet d'ignorer l'audit des accès par les robots d'indexation. |
$wgPiwikCustomJS | Permet d'ajouter un code Javascript spécifique.
En général, cela sera vide. |
$wgPiwikUsePageTitle | Permet d'activer l'extraction du titre de la page, utilisé au niveau des rapports. |
$wgPiwikActionName | Permet d'indiquer "l'URL" racine du site. Dans le cadre de ce wiki. |
$wgPiwikSpecialPageDate | Permet d'indiquer la date à utiliser pour les rapports, présenté dans la page spéciale disponible. |
$wgGroupPermissions | Permet d'activer des sécurités d'accès à la page spéciale. |
$wgAvailableRights | Permet de référencer le nouveau droit sous MediaWiki. |
La surcharge de ces configurations s'effectue dans le fichier LocalSettings.php
, dans le répertoire /etc/mediawiki
pour cette installation.
Dans le cadre de ce wiki, disponible sous http://www.jouvinio.net/wiki, les paramétrages mis en place sont:
Paramètre | Valeur | Description |
---|---|---|
$wgPiwikURL | www.stats.jouvinio.net/piwik/ | URL d'accès de Piwik sur la machine. |
$wgPiwikIDSite | 1 | Le site possède l'identifiant 1 au niveau de Piwik |
$wgPiwikSpecialPageDate | today | Par défaut, les valeurs présentées sont celle du jour. |
$wgPiwikUsePageTitle | true | Utilisation du regroupement par page activé. |
$wgPiwikActionName | wiki/ | Racine d'accès au wiki. |
Les lignes injectées dans le fichier sont:
# Extension for Piwik
require_once("$IP/extensions/Piwik/Piwik.php");
$wgPiwikURL = "www.stats.jouvinio.net/piwik/";
$wgPiwikIDSite = "1";
$wgPiwikSpecialPageDate = "today";
#$wgGroupPermissions['Administrators']['viewpiwik'] = true;
$wgPiwikUsePageTitle = true;
$wgPiwikActionName = "wiki/";
Bug
Le code original du plugin comporte une anomalie entraînant un problème d'affichage au niveau de la page spéciale sous MediaWiki.
Le message d'erreur Le format de date doit être: YYYY-MM-DD, or 'today' or 'yesterday' ou n'importe quel mot clef supporté par la fonction strtotime (visitez http://php.net/strtotime pour plus d'informations) indique un problème de format d'une date.
Il se trouve que c'est la date envoyée dans la requête du widget.
Le code fautif se trouve dans le fichier Piwik_specialpage.php
, dans le répertoire /var/datas/mediawiki/extensions/Piwik
.
<iframe src="http://{$wgPiwikURL}index.php?module=Widgetize&action=iframe&columns[]=nb_visits&moduleToWidgetize=VisitsSummary&
actionToWidgetize=getEvolutionGraph&idSite={$wgPiwikIDSite}&period=day&
date=last30
&disableLink=1" marginheight="0" marginwidth="0" frameborder="0" height="250" scrolling="no" width="100%"></iframe>
La valeur last30
n'est pas valide. En regardant le code d'affichage des deux autres widgets, le paramètre devrait être pris depuis la variable $wgPiwikSpecialPageDate
.
Le code devient alors
<iframe src="http://{$wgPiwikURL}index.php?module=Widgetize&action=iframe&columns[]=nb_visits&moduleToWidgetize=VisitsSummary&
actionToWidgetize=getEvolutionGraph&idSite={$wgPiwikIDSite}&period=day&
date={$wgPiwikSpecialPageDate}
&disableLink=1" marginheight="0" marginwidth="0" frameborder="0" height="250" scrolling="no" width="100%"></iframe>
Utilisation
Au sein du wiki, une page spéciale est disponible en fonction des droits de l'utilisateur connecté. Cette page expose quelques Widget de l'application, permettant d'avoir accès à quelques indicateurs directement depuis le wiki. Cependant, il faut s'être authentifié à Piwik au préalable. Attention, cette page n'est plus disponible à partir de la version 2.4.0.
Si aucune connexion n'est réalisée préalablement, les différents zones sont vides.
Update
2.4.0 | 2.4.2 |
Voir aussi
Documentation officielle: http://www.mediawiki.org/wiki/Extension:Piwik_Integration
Package installé
Plugin installé: Piwik-MW1.18-r91107.tar.gz
Patch de la page spéciale: Piwik SpecialPage Patch.tar.gz