Extension:DynamicPageListEngine
Cette extension est incompatible avec les versions MediaWiki 1.45 et suivantes !
|
État de la version : stable |
|
|---|---|
| Implémentation | Extraction de données |
| Description | fournit des listes de pages dynamiques avec des fonctionnalités configurables et extensibles pour les modules et les autres extensions. |
| Auteur(s) | RV1971 (RV1971discussion) |
| Dernière version | 1.1.0 (2018-03-24) |
| MediaWiki | 1.30+ |
| PHP | 7.0+ |
| Modifie la base de données |
Non |
|
|
| License | Licence publique générale GNU v3.0 ou supérieur |
| Téléchargement | Notes de version |
| Traduire l’extension DynamicPageListEngine sur translatewiki.net si elle y est disponible | |
L'extension DynamicPageListEngine est un serveur qui fournit des listes de pages dynamiques pouvant être utilisées au niveau php pour les autres extensions, ou au niveau Lua avec l'extension Scribunto. Les critères de sélection de page et de tri sont compatibles avec DynamicPageList (Wikimedia).
Etant donné que DynamicPageList (Wikimedia) et DynamicPageList (partie tierce) existent déjà et qu'ils ne sont pas complètement compatibles, vous pouvez vous demander pourquoi une nouvelle exension. En résumé :
- J'ai besoin de listes de pages dynamiques au niveau Lua et aucune des deux extensions existantes ne fournit cela.
- Ajouter une telle fonctionnalité par dessus DynamicPageList (Wikimedia) n'était pas possible à cause de son implémentation monolithique.
- On aurait pu ajouter une telle fonctionnalité par dessus DynamicPageList (partie tierce) mais elle aurait été partiellement incompatible avec l'extension Wikimedia. Plus important encore, comme le dit le Manuel de la DPL, « la DPL est actuellement plutôt monolithique ».
- De là la seule solution était de créer une nouvelle extension en repartant de zéro.
- Le nombre très important de fonctionnalités dans l'extension tierce suggère le besoin d'avoir un serveur configurable modulaire et extensible.
Installation
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
DynamicPageListEnginedans votre dossierextensions/.
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/DynamicPageListEngine
- Ajoutez le code suivant à la fin de votre fichier LocalSettings.php :
wfLoadExtension( 'DynamicPageListEngine' );
Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.
Bien que cette extension ait été testée uniquement avec MediaWiki 1.30, elle doit fonctionner aussi avec les quelques versions qui précédent.
Mise à jour
Pour mettre à jour, il suffit d'installer la version la plus récente.
Mise à jour à partir de la version 0.3 ou antérieure
Avec la version 1.0.0, presque tous les paramètres de configuration et le nom des messages ont été modifiés. Si vous avez personnalisé l'un d'entre eux, vous devez adapter votre configuration.
Depuis la version 1.0.0, les pages qui utilisent DynamicPageListEngine sont assignées à une catégorie de suivi.
Si vous avez déjà de telles pages, vous pouvez corriger les catégories soit en réalisant une édition nulle sur chaque page ou en exécutant le script maintenance/refreshLinks.php.
Noter que ce dernier peut prendre un temps considérable.
Configuration
LocalSettings.php
Un certain nombre de paramètres peut être personnalisé dans LocalSettings.php. La configuration par défaut vise à avoir un maximum de compatibilité avec DynamicPageList (Wikimedia) et répondre à vos besoins si vous utilisez cette extension pour la première fois.
- $wgDpleMaxCost
- Le coût maximal d'une liste dynamique de pages en termes de charge de base de données. La valeur par défaut NULL signifie qu'elle est automatiquement définie à la valeur correspondante de DynamicPageList (Wikimedia).
- $wgDpleMaxResultCount
- Nombre maximum d'enregistrements à récupérer par liste. La valeur par défaut NULL signifie qu'elle est automatiquement définie à la valeur correspondante de DynamicPageList (Wikimedia).
- $wgDpleFeatures
- Fonctionnalités à activer. Tableau associatif entre le nom (la classe) de la fonctionnalité et le booléen pour indiquer (
true) ou non (false). Voir Utilisation pour les détails. Vous devez toujours activer au moinsDpleFeatureCount(sinon il n'y a plus de limite au nombre d'enregistrements récupérés), etDpleFeatureCheck(sinon il n'y a plus de limite à la complexité de la requête). Pour utiliser Lua il vous faut égalementDpleFeatureResults. Chacun d'eux peut être remplacé par une classe dérivée ou une classe avec une sémantique similaire.:: La liste des fonctionnalités par défaut peut être vue dans l'extension extension.json.
- $wgDpleCondCostMap
- Coût des conditions de sélection en termes de charge de la base de données. Une unité de 1 doit correspondre à une jointure efficace de table. Vous pouvez ajuster cette correspondance pour refléter le coût réel de votre installation particulière et (ou) empêcher les utilisateurs d'utiliser excessivement certaines fonctionnalités.
- $wgDpleOrderCostMap
- Coût des méthodes de commande en termes de charge de base de données, en unités qui doivent être sensiblement comparables à celles de
$wgDpleCondCostMap.
A moins que vous ne soyez très concerné par les problèmes de performance, vous pouvez simplement activer toutes les fonctionnalités dans $wgDpleFeatures en les copiant du fichier DynamicPageListEngine.php et décommentant l'ensemble.
Dans ce cas pour limiter l'impact sur les performances, vous pouvez décider d'initialiser $wgDpleMaxCost à une valeur basse permettant ainsi d'utiliser chaque fonctionnalité, par exemple 3.
Messages
Depuis que l'extension définit beaucoup de messages en constante évolution en fonction du développement, ils ne sont pas documentés ici. Voir i18n/qqq.json.
Utilisation
Pour l'utilisation avec PHP veuillez vous référer à la documentation doxygen intégrée. Pour l'utilisation avec Lua, voir la bibliothèque Lua.
Les paramètres acceptés et les autres aspects du comportement sont implémentés en tant que caractéristiques correspondant aux classes PHP.
Avec la variable $wgDynamicPageListEngineFeatures de LocalSettings.php vous pouvez configurer les fonctionnalités que vous souhaitez activer.
Les fonctionnalités embarquées sont décrites dans les sections suivantes, où les titres correspondent aux noms de classes sans le préfixe DynamicPageListEngineFeature.
Sauf indication contraire, l'utilisation de tableaux pour la valeur des paramètres renvoie l'intersection de chaque ensemble individuel de résultats.
Si les paramètres sont contradictoires entre eux (par exemple, le même espace de noms est nommé dans namespace et dans not namespace), les résultats ne sont pas définis.
Namespace
Sélectionner par espace de noms.
Reconnaît les paramètres namespace et notnamespace qui peuvent être un nom d'espace de noms, un index d'espace de noms, ou un tableau de ceux-ci.
Toute valeur non valide (y compris la chaîne vide) est interprétée comme espace de nom principal pour être compatible avec DynamicPageList (Wikimedia).
Si namespace est un tableau, l'ensemble des résultats est formé (évidemment) des pages de n'importe quel espace de noms, c'est à dire qu'il résulte de l'union des ensembles individuels de résultats, à la différence des autres paramètres (y compris notnamespace) où l'ensemble des résultats est l'intersection.
Category
Sélectionner par catégorie.
Reconnait les paramètres category et notcategory.
Chacun d'eux peut être une chaîne ou un tableau.
Si category est un tableau, l'ensemble des résultats est formé des pages contenues dans toutes les catégories listées.
Si notcategory est un tableau, l'ensemble des résultats est formé des pages contenues dans les catégories listées avec none.
Redirects
Inclure ou exclure les redirections.
Reconnaît le paramètre redirects qui peut être un de exclude|include|only|resolve.
La valeur par défaut est exclude, par compatibilité avec DynamicPageList (Wikimedia).
Cela implique que l'activation de cette fonctionnalité dans $wgDynamicPageListEngineFeatures modifiera le jeu des résultats d'une liste de pages dynamiques même pour les ensembles de paramètres qui ne contiennent pas le paramètre redirects, si ce jeu de résultats contient des redirections.
La valeur resolve sélectionne uniquement les redirections tout comme only mais en plus elle récupère la cible de chaque redirection.
Cela signifie que l'objet de résultat pour chaque page a une propriété target qui est un tableau associatif de propriétés de la cible de redirection.
Titlematch
Sélectionner le préfixe du titre, le suffixe ou un fragment.
Reconnaît les paramètres titleprefix, nottitleprefix, titlesuffix, nottitlesuffix, titlecontains et nottitlecontains, chacun d'eux pouvant être une sous-chaîne du titre ou un tableau de ceux-ci.
Comme d'habitude, les espaces et les caractères de soulignement dans les titres sont équivalents.
Si titleprefix, titlesuffix, titlecontains est un tableau, l'ensemble des résultats est formé (évidemment) des pages qui vérifient n'importe quelle des conditions, c'est à dire que le résultat est l'union des ensembles individuels de résultats, à la différence des autres paramètres (y compris nottitleprefix) où le résultat est l'intersection.
Cette classe implémente une condition [not]title{prefix suffix contains} pour les sous-chaînes mais non pas un [not]titlematch général pour les modèles LIKE, car l'échappement des caractères % et _ dépend du serveur de la base de données et par conséquent on ne peut peut pas garantir qu'une condition contenant ces métacaractères fournit le même résultat avec tous les serveurs de bases de données.
Subpages
Inclure ou exclure les sous-pages.
Reconnaît le paramètre subpages qui peut être un de exclude|include|only.
Par défaut exclude, pour la cohérence avec la fonctionnalité Redirects.
Cela implique que l'activation de cette fonctionnalité dans $wgDynamicPageListEngineFeatures modifiera l'ensemble des résultats d'une liste de pages dynamiques même pour les ensembles de paramètres qui ne contiennent pas le paramètre subpages, si l'ensemble des résultats contient des sous-pages.
La sélection de sous-pages fonctionne avec une simple expression LIKE %/%, indépendamment du fait que l'espace de noms d'une page ait les sous-pages activées. Pour distinguer si les sous-pages sont activées, une expression CASE ou un équivalent devrait être évalué pour chaque ligne séparément, et il serait difficile d'implémenter cela de manière efficace et portable.
Linksto
Sélectionner les pages qui pointent vers les pages spécifiées.
Reconnait les paramètres linksto et notlinksto.
Chacun d'eux peut être une chaîne ou un tableau.
L'ensemble des résultats diffère du résultat de Pages liées car il ne contient pas les redirections, pour être compatible avec DynamicPageList (partie tierce).
Linksfrom
Sélectionner les pages liées aux pages spécifiées.
Reconnait les paramètres linksfrom et notlinksfrom.
Chacun d'eux peut être une chaîne ou un tableau.
Les résultats sont choisis pour être compatibles avec DynamicPageList (partie tierce).
Redirectsto
Sélectionner les pages qui redirigent vers les pages spécifiées.
Reconnait les paramètres redirectsto et notredirectsto.
Chacun d'eux peut être une chaîne ou un tableau.
Uses
Sélectionner les pages en utilisant les pages spécifiées comme modèles.
Reconnait les paramètres uses et notuses.
Chacun d'eux peut être une chaîne ou un tableau.
Les résultats sont les mêmes qu'avec DynamicPageList (partie tierce).
Usedby
Sélectionner les pages utilisées comme modèles par la page spécifiée.
Reconnait les paramètres usedby et notusedby.
Chacun d'eux peut être une chaîne ou un tableau.
Les résultats sont les mêmes que pour DynamicPageList (partie tierce).
Imageused
Sélectionner les pages qui contiennent les images spécifiées.
Reconnait les paramètres imageused et notimageused.
Chacun d'eux peut être une chaîne ou un tableau.
Les noms sont choisis pour être compatibles avec DynamicPageList (partie tierce).
Imagecontainer
Sélectionner les images contenues dans les pages spécifiées.
Reconnait les paramètres imagecontainer et notimagecontainer.
Chacun d'eux peut être une chaîne ou un tableau.
Les noms sont choisis pour être compatibles avec DynamicPageList (partie tierce).
Contains
Sélectionner les catégories contenant les pages spécifiées.
Reconnait les paramètres contains et notcontains.
Chacun d'eux peut être une chaîne ou un tableau.
Extra
Sélectionnez les pages sur l'informations supplémentaires dans les balises de catégorie.
Vous pouvez ajouter des informations supplémentaires dans la clé de tri des catégories sous la forme [[Category:...|user:{{PAGENAME}}|head of team]].
Pour MediaWiki, la chaîne entière user:{{PAGENAME}}|head of team est la clé de tri.
L'extension considère la partie après la deuxième barre verticale (head of team dans l'exemple) comme des informations supplémentaires.
La fonctionnalité reconnaît les paramètres extra et notextra.
extra sélectionne les correspondances exactes des informations supplémentaires ajoutées à la clé de tri pour la première catégorie spécifiée avec le paramètre category.
notextra sélectionner le complément de ce qui est spécifié.
Si aucune catégorie n'est sélectionnée, ces paramètres sont discrètement ignorés.
Si extra est un tableau, l'ensemble des résultats est formé (évidemment) des pages qui vérifient n'importe quelle des conditions, c'est à dire que le résultat est l'union des ensembles individuels de résultats, à la différence des autres paramètres (y compris notextra) où le résultat est l'intersection.
Extrax
Sélectionnez les catégories selon l'information supplémentaire dans les balises de catégorie.
La fonctionnalité reconnaît les paramètres extrax et notextrax.
extrax sélectionne les catégories avec les correspondances exactes pour les informations supplémentaires ajoutées à la clé de tri pour la première page spécifiée par le paramètre contains.
notextrax sélectionne le complément de ce qui est spécifié.
Si aucun paramètre contains n'a été utilisé, ces paramètres sont discrètement ignorés.
Si extrax est un tableau, l'ensemble des résultats est formé (évidemment) des pages qui vérifient n'importe quelle des conditions, c'est à dire que le résultat est l'union des ensembles individuels de résultats, à la différence des autres paramètres (y compris notextrax) où le résultat est l'intersection.
User
Sélection en modifiant user.
Reconnaît les paramètres createdby, notcreatedby, modifiedby, notmodifiedby, lastmodifiedby et notlastmodifiedby, chacun pouvant être une sous-chaîne du titre ou un tableau de ceux-ci.
Si createdby, modifiedby, lastmodifiedby est un tableau, l'ensemble des résultats est formé des pages qui vérifient n'importe quelle des conditions, c'est à dire que le résultat est l'union des ensembles individuels de résultats, à la différence des autres paramètres (y compris notcreatedby) où le résultat est l'intersection.
L'utilisation de [not]modifiedby crée probablement beaucoup plus de charge sur la base de données que les autres paramètres car les ensembles d'enregistrements à joindre peuvent être très grands.
Ceci se retrouve dans $wgDynamicPageListEngineCondCostMap, mais il peut être nécessaire d'ajuster cette valeur.
Vous pouvez effectivement désactiver ces paramètres en déclarant leur coût supérieur à la valeur de $wgDynamicPageListEngineMaxCost.
Count
Limiter le nombre d'enregistrements à récupérer dans la base de données.
Reconnaît le paramètre count qui donne la limite.
Les valeurs invalides (y compris 0) sont interprétées comme 1, pour la compatibilité avec DynamicPageList (Wikimedia).
En tout état de cause, le nombre est limité à $wgDynamicPageListEngineMaxResultCount.
Order
Trier les enregistrements du résultat.
Reconnait les paramètres order (descending par défaut) et ordermethod (categoryadd par défaut).
Certaines valeurs sont remplacées par des valeurs de repli si aucune catégorie n'a été indiquée.
Les valeurs par défaut et de repli sont choisies pour la compatibilité avec DynamicPageList (Wikimedia).
En plus des valeurs ordermethod reconnues par DynamicPageList (Wikimedia), la valeur title est aussi acceptée.
Le tri est fait par titre sans le préfixe de l'espace de noms.
Check
Vérifier si la spécification complète est acceptable en termes de charge de la base de données.
Results
Convertir les résultats des requêtes en d'autres représentations. Voir la bibliothèque Lua pour les détails.
Lua library
All functions explained below take a single argument which is an associative array of parameters. The recognized parameters are explained in Usage.
mw.ext.dpl.getFullpagenames
mw.ext.dpl.getFullpagenames{ parameters }
Select and sort pages according to the parameters and return an array of full page names.
mw.ext.dpl.getPagenames
mw.ext.dpl.getPagenames{ parameters }
Select and sort pages according to the parameters and return an array of page names without namespace. This is useful if you know the namespace in advance because you have specified it in the arguments.
mw.ext.dpl.getPages
mw.ext.dpl.getPages{ parameters }
Select and sort pages according to the parameters and return an array of associative arrays, each of which represents a page. The latter contain the following items which have the same meaning as the corresponding properties of mw.title objects: namespace, nsText, text, prefixedText, baseText, subpageText, canTalk, isContentPage, isSubpage, isTalkPage, isRedirect. In addition, the following items are provided:
- length
- Uncompressed length in bytes of the page's current source text.
- categoryadd
- Timestamp of addition to the first category specified with the
categoryparameter, if any. - categoryaddx
- Timestamp of addition of the first page specified with the
containsparameter, if any, to the selected category. - counter
- Page view counter, unless counters are disabled.
- sortkey
- Sort key in the first category, if any, provided that DynamicPageListEngineFeatureExtra is enabled.
- extra
- Extra information given with sort key, if any, provided that DynamicPageListEngineFeatureExtra is enabled.
- sortkeyx
- Sort key in the category of the first page specified with the
containsparameter, if any, provided that DynamicPageListEngineFeatureExtrax is enabled. - extra
- Extra information given with the sortkeyx sort key, if any, provided that DynamicPageListEngineFeatureExtrax is enabled.
Release notes
These are the release notes for version 1.1. See Extension:DynamicPageListEngine/History for older releases.
New features
- Added the withoutsuffix item to the result records of Extension:DynamicPageListEngine#mw.ext.dpl.getPages.
- Added the resolve option to the Extension:DynamicPageListEngine#Redirects module.
- Added the Extension:DynamicPageListEngine#Redirectsto module.
Bugfixes
- Page titles containing
&characters are now handled correctly.
Rapports de bogues et demandes de fonctionnalités
Veuillez rapporter sur la page de discussion les bogues logiciels et les demandes de fonctionnalités.
See also
- Extensions incompatible with 1.45/fr
- Stable extensions/fr
- Data extraction extensions/fr
- ScribuntoExternalLibraries extensions/fr
- GPL licensed extensions/fr
- Extensions in Wikimedia version control/fr
- All extensions/fr
- Category extensions/fr
- List extensions/fr
- Page content extensions/fr
- Category intersection extensions/fr
