Jump to content

Extension:GlobalUsage

From mediawiki.org
This page is a translated version of the page Extension:GlobalUsage and the translation is 72% complete.
Manuel des extensions MediaWiki
GlobalUsage
État de la version : stable
Implémentation Page spéciale , API
Description Permet de voir l'utilisation globale des images dans une ferme de wikis avec un dépôt d'images partagé
Auteur(s) Bryan Tong Minh (Bryandiscussion)
Dernière version 2.2.0
Politique de compatibilité Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière.
MediaWiki 1.28+
Modifie la base
de données
Oui
Domaine virtuel virtual-globalusage
  • $wgGlobalUsageSharedRepoWiki
  • $wgGlobalUsagePurgeBacklinks
Licence Licence MIT
Téléchargement
README
Traduire l’extension GlobalUsage sur translatewiki.net si elle y est disponible
Problèmes Tâches ouvertes · Signaler un bogue

L'extension GlobalUsage permet de voir l'utilisation globale des images sur une ferme de wikis disposant d'un dépôt partagé d'images. Elle ajoute Special:GlobalUsage ainsi qu'une liste de pages qui incluent l'image sur les pages de description des images.

Installer

  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé GlobalUsage dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/GlobalUsage
    
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'GlobalUsage' );
    
  • Exécutez le script de mise à jour qui va créer automatiquement les tables de base de données dont cette extension a besoin.
  • Dans LocalSettings, initialiser $wgGlobalUsageDatabase avec l'identifiant du wiki où se trouvent les données GlobalUsage (généralement le nom de la base de données). Doit être l'ID du wiki utilisé par le partage de charge. (c'est-à-dire être le nom de la base de données. Et dbname-prefix si vous utilisez un préfixe de table). Exemple : $wgGlobalUsageDatabase = 'commonswiki';
    Ce nom doit également être déclaré pour le partage de charge de MediaWiki : Manuel:$wgLBFactoryConf . Cette structure de configuration fait correspondre le nom des bases de données au serveur correspondant. Remarque : vous devez enregistrer toutes les bases de données utilisées sur votre ferme de wikis dans cette structure, même si elles sont toutes sur le même serveur de base de données, pour que cette extension fonctionne.
  • Vous devez utiliser soit le système de configuration de site $wgConf ou la base de données Manuel:Table des sites pour GlobalUsage afin de pouvoir lier vos autres wikis. Vous n'avez pas nécessairement besoin de l'utiliser pour toutes vos configurations de wiki, mais il est important de l'appliquer pour $wgServer et $wgArticlePath.
  • Exécuter refreshGlobalimagelinks.php sur tous les wikis de la ferme de wikis. Cela prendra du temps, mais ne doit être fait qu'une seule fois à l'installation de l'extension : php extensions/GlobalUsage/maintenance/refreshGlobalimagelinks.php --pages=existing,nonexisting
  • Yes Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

Guide spécifique pour lier l'utilisation des fichiers par les tables des sites

  1. Assurez-vous que $wgGlobalUsageDatabase et $wgLBFactoryConf sont correctement initialisés.
  2. Utilisez le script de maintenance importSites.php pour créer un fichier de liste de sites au format XML. (Les instructions se trouvent ici : sitelist.txt, le fichier d'exemples se trouve ici: sitelist-1.0.xsd).
  3. Utiliser $wgSharedDB = 'commonswiki'; et $wgSharedTables[] = 'sites'; pour partager la table des sites sur tous les wikis.
  4. Purger tout le cache et forcer la mise à jour comme par refreshGlobalimagelinks.php.

Configuration for GlobalUsage (MediaWiki 1.43+)

Version de MediaWiki :
1.43

In newer versions of GlobalUsage (REL1_45 and newer), $wgGlobalUsageDatabase is no longer used. The extension now uses MediaWiki's virtual domain system. The correct configuration variable is $wgVirtualDomainsMapping.

On each content wiki (wikis that use files from the shared repo)

// Must be set BEFORE wfLoadExtension
$wgVirtualDomainsMapping['virtual-globalusage'] = [ 'db' => 'my_media_wiki_db' ];
$wgGlobalUsageSharedRepoWiki = 'my_media_wiki_db';

wfLoadExtension( 'GlobalUsage' );

Replace my_media_wiki_db with the $wgDBname of your shared media/file repository wiki.

On the shared media wiki (the wiki that hosts the files)

// Must be set BEFORE wfLoadExtension
$wgVirtualDomainsMapping['virtual-globalusage'] = [ 'db' => 'my_media_wiki_db' ];
$wgGlobalUsageSharedRepoWiki = 'my_media_wiki_db';

wfLoadExtension( 'GlobalUsage' );

// Required for WikiMap to resolve wiki IDs to display names and URLs.
// Without this, file pages will show raw database names instead of wiki names, and links to pages on other wikis will not work.
$wgLocalDatabases = [ 'my_wiki_1_db', 'my_wiki_2_db', 'my_media_wiki_db' ];

$wgConf->wikis    = [ 'my_wiki_1_db', 'my_wiki_2_db', 'my_media_wiki_db' ];
$wgConf->suffixes = [ 'mysuffix' ]; // A common suffix shared by your DB names, or any string

$wgConf->siteParamsCallback = static function ( $conf, $wiki ) {
    return [
        'suffix' => 'mysuffix',
        'lang'   => 'en',
        'params' => [],
        'tags'   => [],
    ];
};

$wgConf->settings = [
    'wgServer' => [
        'my_wiki_1_db'    => 'https://wiki1.example.org',
        'my_wiki_2_db'    => 'https://wiki2.example.org',
        'my_media_wiki_db' => 'https://media.example.org',
    ],
    'wgArticlePath' => [
        'default' => '/wiki/$1',
    ],
    'wgSitename' => [
        'my_wiki_1_db'    => 'My Wiki',
        'my_wiki_2_db'    => 'My Wiki (DE)',
        'my_media_wiki_db' => 'My Media Wiki',
    ],
];

Cross-database access

The DB user for each content wiki must have SELECT, INSERT, UPDATE, and DELETE privileges on the media wiki's database. If your wikis use separate database users, grant access as a MySQL/MariaDB root user:

GRANT SELECT, INSERT, UPDATE, DELETE ON my_media_wiki_db.* TO 'wiki1_user'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON my_media_wiki_db.* TO 'wiki2_user'@'localhost';
FLUSH PRIVILEGES;

Running update.php

After configuring $wgVirtualDomainsMapping, run update.php on each wiki. GlobalUsage uses addExtensionUpdateOnVirtualDomain, which creates the globalimagelinks table in the correct database (the media wiki's DB).

If globalimagelinks was accidentally created in the wrong database (e.g. before $wgVirtualDomainsMapping was set), drop it and re-run update.php:

DROP TABLE globalimagelinks;

Backfilling with refreshGlobalimagelinks.php

Run the refresh script from each content wiki only — not from the media wiki. The script uses the executing wiki's $wgDBname to stamp the gil_wiki field, and writes to the media wiki's database via the virtual domain mapping.

php extensions/GlobalUsage/maintenance/refreshGlobalimagelinks.php

Do NOT run on the repository/commons wiki. Running this script from the media wiki itself will result in all rows being stamped with the media wiki's own DB name, and no cross-wiki usage will appear.

Notes

  • $wgGlobalUsageDatabase is silently ignored in REL1_45 and newer versions. If you are upgrading from an older version, replace it with $wgVirtualDomainsMapping as shown above.
  • $wgVirtualDomainsMapping must be set before wfLoadExtension( 'GlobalUsage' ).
  • $wgConf settings on the media wiki are required for links to work. Without them, file pages display raw database names (e.g. mywiki_db) with no hyperlink.
  • The virtual domain name used by this extension is virtual-globalusage (hardcoded in extension.json).

API

Extension:GlobalUsage comprend une extension d'API qui permet aux robots et autres programmes d'interroger l'utilisation globale d'un fichier. Par exemple, cette requête sur Wikimedia Commons renvoie les utilisations globales de File:Example.jpg:

Résultat
<?xml version="1.0"?>
<api>
  <query>
    <pages>
      <page pageid="6428847" ns="6" title="File:Example.jpg">
        <globalusage>
          <gu title="Ашаблон:Ацқьа" wiki="ab.wikipedia.org" url="http://ab.wikipedia.org/wiki/%D0%90%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%90%D1%86%D2%9B%D1%8C%D0%B0" />
          <gu title="Wikipedia_ውይይት:Can&#039;t_see_the_font?" wiki="am.wikipedia.org" url="http://am.wikipedia.org/wiki/Wikipedia_%E1%8B%8D%E1%8B%AD%E1%8B%AD%E1%89%B5:Can%27t_see_the_font%3F" />
          <gu title="አባል:Blockinblox" wiki="am.wikipedia.org" url="http://am.wikipedia.org/wiki/%E1%8A%A0%E1%89%A3%E1%88%8D:Blockinblox" />
          <gu title="አባል_ውይይት:Hana.oww" wiki="am.wikipedia.org" url="http://am.wikipedia.org/wiki/%E1%8A%A0%E1%89%A3%E1%88%8D_%E1%8B%8D%E1%8B%AD%E1%8B%AD%E1%89%B5:Hana.oww" />
          <gu title="አባል:Beza" wiki="am.wikipedia.org" url="http://am.wikipedia.org/wiki/%E1%8A%A0%E1%89%A3%E1%88%8D:Beza" />
          <gu title="መደብ:ኪነት" wiki="am.wikipedia.org" url="http://am.wikipedia.org/wiki/%E1%88%98%E1%8B%B0%E1%89%A5:%E1%8A%AA%E1%8A%90%E1%89%B5" />
          <gu title="መደብ_ውይይት:ተረትና_ምሳሌ" wiki="am.wikipedia.org" url="http://am.wikipedia.org/wiki/%E1%88%98%E1%8B%B0%E1%89%A5_%E1%8B%8D%E1%8B%AD%E1%8B%AD%E1%89%B5:%E1%89%B0%E1%88%A8%E1%89%B5%E1%8A%93_%E1%88%9D%E1%88%B3%E1%88%8C" />
          <gu title="ስዕል:መርጡለ_ማርያም_ገዳም_.jpg" wiki="am.wikipedia.org" url="http://am.wikipedia.org/wiki/%E1%88%B5%E1%8B%95%E1%88%8D:%E1%88%98%E1%88%AD%E1%8C%A1%E1%88%88_%E1%88%9B%E1%88%AD%E1%8B%AB%E1%88%9D_%E1%8C%88%E1%8B%B3%E1%88%9D_.jpg" />
          <gu title="User_talk:Rasheduzzaman_Raj" wiki="ang.wikipedia.org" url="http://ang.wikipedia.org/wiki/User_talk:Rasheduzzaman_Raj" />
          <gu title="User:Danceteamcherleaders" wiki="ang.wikipedia.org" url="http://ang.wikipedia.org/wiki/User:Danceteamcherleaders" />
        </globalusage>
      </page>
    </pages>
  </query>
  <query-continue>
    <globalusage gucontinue="Example.jpg|arwiki|77967" />
  </query-continue>
</api>

Par défaut, cela ne renvoie que 10 résultats. Les résultats 10 suivants peuvent être récupérés en utilisant le paramètre gucontinue= inclus dans le résultat ci-dessus :

Le nombre de résultats retournés est défini par le paramètre gulimit. Le paramètre guprop indique la propriété à récupérer. Le paramètre gufilterlocal, lorsqu'il vaut 1, exclura les utilisations sur le même wiki que celui du fichier (par exemple, sur Commons). La requête suivante récupère toutes les propriétés et jusqu'à 100 résultats, à l'exclusion des utilisations locales :