W4G Rating Bar
Sommaire
Votre avis
Current user rating: 75/100 (15 votes)
|
|
Installation
Ce plugin permet d'afficher une barre de vote sur les pages MediaWiki. Le package, fichier Fichier:W4G Rating Bar 2.1.2.tar.bz2 est téléchargé, depuis http://www.mediawiki.org/wiki/Extension:W4G_Rating_Bar, dans le répertoire des extensions, soit <code>/var/datas/mediawiki/extensions
dans le cadre de ce Wiki. Il sera décompresser dans un sous répertoire W4GRatingBar-2.1.2
#sudo bunzip2 W4G\ Rating\ Bar\ 2.1.2.tar.bz2 #sudo mkdir W4GRatingBar-2.1.2 #sudo tar -C /var/datas/mediawiki/extensions/W4GRatingBar-2.1.2 -xvf W4G\ Rating\ Bar\ 2.1.2.tar #sudo rm W4G\ Rating\ Bar\ 2.1.2.tar
Le propriétaire du répertoire est ensuite modifié pour être celui qui exécute le serveur Web:
#sudo chown -R www-data:www-data /var/datas/mediawiki/extensions/W4GRatingBar-2.1.2
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/W4GRatingBar-2.1.2 /var/lib/mediawiki/extensions/W4GRatingBar-2.1.2 #sudo chown -h www-data:www-data /var/lib/mediawiki/extensions/W4GRatingBar-2.1.2
Par défaut, les permissions sur le répertoire ne permettent pas d'y accéder avec un compte autre que le propriétaire. Ses permissions sont donc modifiées:
#sudo chmod 600 /var/datas/mediawiki/extensions/W4GRatingBar-2.1.2/* #sudo chmod 700 /var/datas/mediawiki/extensions/W4GRatingBar-2.1.2
Le contenu du répertoire /var/lib/mediawiki/extensions/W4GRatingBar-2.1.2
doit être le suivant:
-rw------- 1 www-data www-data 1293 2011-05-30 09:50 changelog.txt -rw------- 1 www-data www-data 2476 2011-05-21 17:26 credits.txt -rw------- 1 www-data www-data 665 2011-03-05 14:23 db_creation.sql -rw------- 1 www-data www-data 10179 2011-03-20 17:10 SpecialW4GRB_body.php -rw------- 1 www-data www-data 5383 2011-03-06 16:50 SpecialW4GRBMigrate.php -rw------- 1 www-data www-data 111 2010-07-17 16:53 w4g_rb.alias.php -rw------- 1 www-data www-data 2810 2011-05-19 15:50 w4g_rb.css -rw------- 1 www-data www-data 3084 2011-05-19 15:44 w4g_rb.i18n.php -rw------- 1 www-data www-data 1321 2011-04-01 14:50 w4g_rb.js -rw------- 1 www-data www-data 7724 2011-03-20 17:19 w4g_rb-page.class.php -rw------- 1 www-data www-data 28817 2011-05-21 17:49 w4g_rb.php
Les fichiers suivants ne sont pas nécessaires et peuvent être supprimés:
- changelog.txt
- credits.txt
- db_creation.sql
Attention, cette description entraîne une anomalie qui sera décrite dans le paragraphe Bug installation.
Activation
Modification base de données
Les différents votes sont stockés dans de nouvelles tables de la base de données. La documentation indique les requêtes suivantes:
CREATE TABLE IF NOT EXISTS `wik_w4grb_votes` (
`uid` int(11) unsigned NOT NULL,
`pid` int(11) unsigned NOT NULL,
`vote` tinyint(4) unsigned NOT NULL,
`ip` varbinary(39) NOT NULL,
`time` int(11) unsigned NOT NULL,
PRIMARY KEY (`uid`,`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=binary;
CREATE TABLE IF NOT EXISTS `wik_w4grb_avg` (
`pid` int(10) unsigned NOT NULL,
`avg` float unsigned NOT NULL,
`n` int(10) unsigned NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=binary;
# update to database to support anonymous voting:
ALTER TABLE `wik_w4grb_votes` DROP PRIMARY KEY ,
ADD PRIMARY KEY ( `uid` , `pid` , `ip` );
Attention, ces requêtes doivent être légèrement modifiées pour prendre en compte le préfixe des tables spécifié dans le fichier LocalSettings.php
.
# MySQL specific settings
$wgDBprefix = "ejnwiki_";
Si les requêtes ne sont pas modifiées, le message suivant s'affichera:
Une erreur de syntaxe de la requête dans la base de données est survenue. Ceci peut indiquer un bogue dans le logiciel. La dernière requête traitée par la base de données était :
(Requête SQL cachée)
depuis la fonction « W4GRBPage::loadAVG ». La base de données a renvoyé l’erreur « 1146 : Table 'wikidb.ejnwiki_w4grb_avg' doesn't exist (localhost) ».
Pour la configuration présentée ci dessus, les requêtes sont réécrites ainsi:
CREATE TABLE IF NOT EXISTS `ejnwiki_w4grb_votes` (
`uid` int(11) unsigned NOT NULL,
`pid` int(11) unsigned NOT NULL,
`vote` tinyint(4) unsigned NOT NULL,
`ip` varbinary(39) NOT NULL,
`time` int(11) unsigned NOT NULL,
PRIMARY KEY (`uid`,`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=binary;
CREATE TABLE IF NOT EXISTS `ejnwiki_w4grb_avg` (
`pid` int(10) unsigned NOT NULL,
`avg` float unsigned NOT NULL,
`n` int(10) unsigned NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=binary;
# update to database to support anonymous voting:
ALTER TABLE `ejnwiki_w4grb_votes` DROP PRIMARY KEY ,
ADD PRIMARY KEY ( `uid` , `pid` , `ip` );
L'exécution sur une base MySql donne le résultat suivant:
mysql> CREATE TABLE IF NOT EXISTS `ejnwiki_w4grb_votes` ( -> `uid` int(11) unsigned NOT NULL, -> `pid` int(11) unsigned NOT NULL, -> `vote` tinyint(4) unsigned NOT NULL, -> `ip` varbinary(39) NOT NULL, -> `time` int(11) unsigned NOT NULL, -> PRIMARY KEY (`uid`,`pid`) -> ) ENGINE=InnoDB DEFAULT CHARSET=binary; Query OK, 0 rows affected (0.10 sec) mysql> CREATE TABLE IF NOT EXISTS `ejnwiki_w4grb_avg` ( -> `pid` int(10) unsigned NOT NULL, -> `avg` float unsigned NOT NULL, -> `n` int(10) unsigned NOT NULL, -> PRIMARY KEY (`pid`) -> ) ENGINE=InnoDB DEFAULT CHARSET=binary; Query OK, 0 rows affected (0.08 sec) mysql> ALTER TABLE `ejnwiki_w4grb_votes` DROP PRIMARY KEY , -> ADD PRIMARY KEY ( `uid` , `pid` , `ip` ); Query OK, 0 rows affected (0.21 sec) Records: 0 Duplicates: 0 Warnings: 0
Mise à disposition
Le fichier /etc/mediawiki/LocalSettings.php
est ensuite modifié afin d'ajouter:
# Extension W4G Rating Bar
require_once("$IP/extensions/W4GRatingBar-2.1.2/w4g_rb.php");
# Enable anonymous vote
$wgW4GRB_Settings['anonymous-voting-enabled'] = true;
Dans cette configuration, le vote anonyme est autorisé et une ligne de commentaire est placée juste avant, afin de bien identifier son utilité.
Bug installation
Malheureusement, le plugin n'est pas utilisable en suivant cette procédure. Le message d'erreur You need to enable Javascript to vote
est affiché.
La page suivante de la documentation de Mediawiki mentionne la possibilité de modifier le paramètre $wgAllowUserJs
. Cependant cela n'a aucun effet. En fait, l'analyse des requêtes HTTP permet d'avoir une indication bien plus précise sur le dysfonctionnement, avec l'outil Firebug
par exemple.
Il se trouve que les URLs extensions/W4G%20Rating%20Bar/w4g_rb.js
et extensions/W4G%20Rating%20Bar/w4g_rb.css
sont chargées. Or le lien est mis en place avec le nom W4GRatingBar-2.1.2
.
Il fallait donc déployer le plugin dans un répertoire W4G Rating Bar
, et mettre en place le lien dans l'instance avec le même nom.
#sudo bunzip2 W4G\ Rating\ Bar\ 2.1.2.tar.bz2 #sudo mkdir W4G\ Rating\ Bar #sudo tar -C /var/datas/mediawiki/extensions/W4G\ Rating\ Bar -xvf W4G\ Rating\ Bar\ 2.1.2.tar #sudo rm W4G\ Rating\ Bar\ 2.1.2.tar #sudo chown -R www-data:www-data /var/datas/mediawiki/extensions/W4G\ Rating\ Bar #sudo chmod 600 /var/datas/mediawiki/extensions/W4G\ Rating\ Bar/* #sudo chmod 700 /var/datas/mediawiki/extensions/W4G\ Rating\ Bar #sudo ln -s /var/datas/mediawiki/extensions/W4G\ Rating\ Bar /var/lib/mediawiki/extensions/W4G\ Rating\ Bar #sudo chown chown -h www-data:www-data /var/lib/mediawiki/extensions/W4G\ Rating\ Bar
Et la modification du fichier LocalSettings.php
devient:
# Extension W4G Rating Bar
require_once("$IP/extensions/W4G Rating Bar/w4g_rb.php");
# Enable anonymous vote
$wgW4GRB_Settings['anonymous-voting-enabled'] = true;
Le plugin s'affiche alors, après modification de la page pour injecter le code nécessaire.
Bugs
Dans le cadre d'une montée de version de php en 5.5, suite installation de Ubuntu 14.04 Développement, le message d'erreur suivant est apparu dans les logs Apache:
[Sun Jan 05 21:23:30.361606 2014] [:error] [pid 24979] [client 82.230.154.123:52478] PHP Strict Standards: Only variables should be assigned by reference in /var/datas/mediawiki/extensions/W4G Rating Bar/SpecialW4GRB_body.php on line 45, referer: http://www.jouvinio.net/wiki/index.php/W4G_Rating_Bar
Il se trouve qu'il y a eu une modification dans l'affectation des variables à partir de la version 5.3, comme expliqué [1]. Afin d'éviter les messages de warning, le fichier SpecialW4GRB_body.php
est modifié en ligne 45 dans la fonction execute
.
$this->skin = $wgUser->getSkin(); # that's useful for creating links more easily
// $this->skin =& $wgUser->getSkin(); # that's useful for creating links more easily
Le patch du fichier: Plugin installé: SpecialW4GRB_patch_php_5.5.tar.gz
Bug version 2.1.2 sur Mediawiki 1.23.0
Suite à la mise à jour de mediawiki en 1.23, la page Pages spéciales
est devenue inaccessible avec le message suivant dans les logs Apache :
PHP Fatal error: Call to undefined method W4GRB::includable() in /var/datas/mediawiki/extensions/W4G Rating Bar/SpecialW4GRB_body.php on line 31, referer: http://www.jouvinio.net/wiki/index.php/Accueil
Le fichier SpecialW4GRB_body.php
présente la définition suivante du constructeur.
function __construct()
{
parent::__construct( 'W4GRB');
$this->includable( false );
}
La classe W4GRB
étend la classe UnlistedSpecialPage
, elle même une extension de SpecialPage
. Or la fonction includable
n'est plus définie. De plus, le constructeur de la classe SpecialPage
présente le code suivant.
public function __construct(
$name = '', $restriction = '', $listed = true,
$function = false, $file = '', $includable = false
) {
$this->mName = $name;
$this->mRestriction = $restriction;
$this->mListed = $listed;
$this->mIncludable = $includable;
}
Il apparaît clairement que la variable mIncludable
est initialisée avec la valeur false
par défaut. Il suffit donc de reprendre le constructeur de W4GRB
pour ne plus faire appel à la fonction supprimée.
function __construct()
{
parent::__construct( 'W4GRB');
# $this->includable( false );
}
Voir aussi
Documentation officielle: http://www.mediawiki.org/wiki/Extension:W4G_Rating_Bar
Ou: http://www.wiki4games.com/Wiki4Games:W4G_Rating_Bar
Description utilisation: http://www.wiki4games.com/Wiki4Games:W4G_Rating_Bar/syntax
Package installé
Plugin installé: W4G Rating Bar 2.1.2.tar.bz2