<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Giraldeau</id>
	<title>Lea Linux - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Giraldeau"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/documentations/Sp%C3%A9cial:Contributions/Giraldeau"/>
	<updated>2026-04-28T11:12:57Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Lea_Linux:Listsubpages&amp;diff=14298</id>
		<title>Lea Linux:Listsubpages</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Lea_Linux:Listsubpages&amp;diff=14298"/>
		<updated>2007-02-14T18:18:22Z</updated>

		<summary type="html">&lt;p&gt;Giraldeau : Uniformisation du tag pour encadrer le code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
[[Catégorie:Extension mediawiki]]&lt;br /&gt;
[[Catégorie:Script PHP]]&lt;br /&gt;
Cette extension &#039;&#039;&#039;ListSubPages&#039;&#039;&#039;, permet d&#039;afficher pour la page sur laquelle elle est utilisée, la liste de toutes les sous pages de celle-ci.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
C&#039;est simple, il suffit &lt;br /&gt;
# de copier le code ci-dessous dans &amp;lt;code&amp;gt;$MEDIAWIKIROOT/extensions/listsubpages.php&amp;lt;/code&amp;gt;&lt;br /&gt;
# d&#039;ajouter dans le fichier &amp;lt;code&amp;gt;$MEDIAWIKIROOT/LocalSettings.php&amp;lt;/code&amp;gt; la ligne : &amp;lt;code&amp;gt;include_once &amp;quot;extensions/listsubpages.php&amp;quot; ;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
= Syntaxe mediawiki = &lt;br /&gt;
Syntaxe : &amp;lt;code&amp;gt;&amp;lt;listsubpages [paramètres]&amp;gt;[entête]&amp;lt;/listsubpages&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Où :&lt;br /&gt;
* [paramètres] est une combinaison de :&lt;br /&gt;
** &amp;lt;code&amp;gt;showns&amp;lt;/code&amp;gt; : affiche les espaces de nom avec le nom des pages,&lt;br /&gt;
** &amp;lt;code&amp;gt;error=&#039;...&#039;&amp;lt;/code&amp;gt; : si aucune sous page n&#039;est trouvée, affiche le message d&#039;erreur spécifié au lieu de celui par défaut, préciser : &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt; comme message d&#039;erreur pour le désactiver,&lt;br /&gt;
** &amp;lt;code&amp;gt;orderby=name|date&amp;lt;/code&amp;gt; : affiche les sous pages triées par nom (&#039;&#039;name&#039;&#039;) ou par date d&#039;édition (&#039;&#039;date&#039;&#039;),&lt;br /&gt;
** &amp;lt;code&amp;gt;ordermode=asc|desc&amp;lt;/code&amp;gt; : si &amp;lt;code&amp;gt;orderby&amp;lt;/code&amp;gt; est spécifié et valide, &amp;lt;code&amp;gt;ordermode&amp;lt;/code&amp;gt; précise s&#039;il faut utiliser l&#039;ordre croissant (&#039;&#039;asc&#039;&#039;) ou décroissant (&#039;&#039;desc&#039;&#039;),&lt;br /&gt;
** &amp;lt;code&amp;gt;max=...&amp;lt;/code&amp;gt; : indique le nombre maximum d&#039;entrées à afficher,&lt;br /&gt;
** &amp;lt;code&amp;gt;nocache&amp;lt;/code&amp;gt; : force mediawiki à regénérer cette page à chaque chargement.&lt;br /&gt;
* [entête] est un message annonçant les différentes sous pages. Dans cette chaine, l&#039;utilisation de &#039;&#039;%1&#039;&#039; affiche le nombre d&#039;entrées.&lt;br /&gt;
&lt;br /&gt;
=== Exemple ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;listsubpages showns orderby=name error=&#039;&#039;&amp;gt;Cette page contient %1 sous pages&amp;lt;/listsubpages&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Affichera la liste des sous page avec leur espace de nom classée par &amp;quot;nom&amp;quot;, aucun message d&#039;erreur si cette page n&#039;a pas de sous page.&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
&amp;lt;code multi&amp;gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
# This code is copyright (C) by Juho Ville Heikkurinen (2005) and is licensed under the&lt;br /&gt;
# terms of the GNU General Public License, version 2 &lt;br /&gt;
# (see http://www.fsf.org/licenses/gpl.html). Derivative works and later versions of&lt;br /&gt;
# the code will also be considered free software licensed under the same terms.&lt;br /&gt;
&lt;br /&gt;
# version 0.1.3 Fixed an problem for mediawiki installation using db-prefix&lt;br /&gt;
#               Fix bug with upper and lower case ordering&lt;br /&gt;
#               This version uses the $input parameter to I18N the &amp;quot;This page has xxxx subpages&amp;quot;&lt;br /&gt;
#               This version uses &amp;quot;error&amp;quot; parameter to I18N/customize the error message&lt;br /&gt;
#               Setting &amp;quot;real&amp;quot; path of mediawiki isn&#039;t needed any more&lt;br /&gt;
#               This version uses &amp;quot;orderby&amp;quot; parameter to order by &#039;date&#039; or &#039;name&#039;&lt;br /&gt;
#               This version uses &amp;quot;ordermode&amp;quot; parameter to order &#039;asc&#039; or &#039;desc&#039; &lt;br /&gt;
#               This version uses &amp;quot;max&amp;quot; parameter to limit the shown entries&lt;br /&gt;
#               This version uses &amp;quot;showns&amp;quot; parameter to enable showing the namespace of shown pages&lt;br /&gt;
#               (code from fred@lea-linux.org)&lt;br /&gt;
# version 0.1.2 Fixed a bug that caused the program to always say that there are no subpages&lt;br /&gt;
# version 0.1.1 outputs &amp;quot;This page doesn&#039;t have any sub-pages&amp;quot; if there are none&lt;br /&gt;
# version 0.1 Lists all sub-pages if there are any. If there are none it outputs nothing.&lt;br /&gt;
&lt;br /&gt;
# TODO (or actually just ideas):&lt;br /&gt;
# 1) Enable the use of regular expressions to limit subpages to be viewed&lt;br /&gt;
&lt;br /&gt;
$wgExtensionFunctions[] = &amp;quot;wfListSubPages&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
function wfListSubPages ()&lt;br /&gt;
        {&lt;br /&gt;
                global $wgParser ;&lt;br /&gt;
                global $wgTitle;&lt;br /&gt;
                $wgParser-&amp;gt;setHook ( &amp;quot;ListSubPages&amp;quot; , parse_subs );&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
#First extension written from scratch&lt;br /&gt;
function parse_subs ($input, $argv)&lt;br /&gt;
        {&lt;br /&gt;
                global $wgTitle;&lt;br /&gt;
                global $wgContLang;&lt;br /&gt;
                $dbr =&amp;amp; wfGetDB( DB_SLAVE ); &lt;br /&gt;
                $output =&amp;quot;&amp;quot;; #initialise output variable&lt;br /&gt;
                $title = $wgTitle-&amp;gt;getDBkey(); #get the pagename (without namespace)&lt;br /&gt;
                $ns = $wgTitle-&amp;gt;getNamespace(); # get the namespace as a number&lt;br /&gt;
&lt;br /&gt;
		if (($argv[&#039;ordermode&#039;] == &#039;asc&#039;) || ($argv[&#039;ordermode&#039;] == &#039;desc&#039;)) {&lt;br /&gt;
			$ordertype = $argv[&#039;ordermode&#039;] ;&lt;br /&gt;
		} else {&lt;br /&gt;
			$ordertype = &#039;&#039; ;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ($argv[&#039;orderby&#039;] == &#039;name&#039;) {&lt;br /&gt;
			$order = &#039;ORDER BY LOWER(page_title) &#039;.$ordertype ;&lt;br /&gt;
		} elseif ($argv[&#039;orderby&#039;] == &#039;date&#039;) {&lt;br /&gt;
			$order = &#039;ORDER BY page_touched &#039;.$ordertype ;&lt;br /&gt;
		} else {&lt;br /&gt;
			$order = &#039;&#039; ;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ($argv[&#039;max&#039;]) {&lt;br /&gt;
			$limit = &#039; LIMIT &#039;.(int)$argv[&#039;max&#039;] ;&lt;br /&gt;
		} else {&lt;br /&gt;
			$limit = &#039;&#039; ;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
                $sql = &amp;quot;SELECT page_title FROM &amp;quot;.$dbr-&amp;gt;tableName( &#039;page&#039; ).&amp;quot; where page_namespace=&#039;&amp;quot;. $ns .&amp;quot;&#039; and page_title LIKE &#039;&amp;quot;. $title.&amp;quot;/%&#039; &amp;quot;.$order.$limit;&lt;br /&gt;
        $res = $dbr-&amp;gt;query( $sql);&lt;br /&gt;
        $rowCount = $dbr-&amp;gt;numRows($res);&lt;br /&gt;
        if ($rowCount == 0) {&lt;br /&gt;
			if ($argv[&amp;quot;error&amp;quot;])&lt;br /&gt;
				return $argv[&amp;quot;error&amp;quot;] ;&lt;br /&gt;
			else &lt;br /&gt;
	                        return &amp;quot;This page doesn&#039;t have any sub-pages&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
&lt;br /&gt;
                $output = str_replace(&amp;quot;%1&amp;quot;, $rowCount, $input);&lt;br /&gt;
                $output .= &amp;quot;&amp;lt;ul&amp;gt;&amp;quot;;&lt;br /&gt;
                # Make sure $ns is definitely a number and $title is encoded with wfStrencode() &lt;br /&gt;
                # (above comment by TimStarling) I suppose that $wgTitle-&amp;gt;getDBkey(); gives the title encoded.&lt;br /&gt;
		$namespace = ($argv[&#039;showns&#039;]?$wgContLang-&amp;gt;getNsText($ns).&#039;:&#039;:&#039;&#039;) ;&lt;br /&gt;
                while ( $myrow = $dbr-&amp;gt;fetchRow( $res ) ) {&lt;br /&gt;
			$title = Title::newFromText($myrow[0], $ns ) ;&lt;br /&gt;
			if (is_object($title)) // may be useless but, just in case ...&lt;br /&gt;
	                        $output .= &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; .$title-&amp;gt;escapeLocalURL() . &#039;&amp;quot;&amp;gt;&#039;. &lt;br /&gt;
					$namespace.$myrow[0] . &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
                $output .= &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;;     &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
         if ($argv[&#039;nocache&#039;]) {&lt;br /&gt;
          # Do not cache this wiki page.&lt;br /&gt;
          # for details see http://public.kitware.com/Wiki/User:Barre/MediaWiki/Extensions&lt;br /&gt;
          global $wgTitle, $wgDBprefix;&lt;br /&gt;
          global $wgVersion;&lt;br /&gt;
          $ts = mktime();&lt;br /&gt;
          $now = gmdate(&amp;quot;YmdHis&amp;quot;, $ts + 120);&lt;br /&gt;
          $ns = $wgTitle-&amp;gt;getNamespace();&lt;br /&gt;
          $ti = wfStrencode($wgTitle-&amp;gt;getDBkey());&lt;br /&gt;
&lt;br /&gt;
          $version = preg_replace(&amp;quot;/^([1-9]).([1-9]).*/&amp;quot;, &amp;quot;\\1\\2&amp;quot;, $wgVersion);&lt;br /&gt;
          if ($version&amp;gt;14) $sql = &amp;quot;UPDATE $wgDBprefix&amp;quot;.&amp;quot;page SET page_touched=&#039;$now&#039; WHERE page_namespace=$ns AND page_title=&#039;$ti&#039;&amp;quot;;&lt;br /&gt;
          else             $sql = &amp;quot;UPDATE $wgDBprefix&amp;quot;.&amp;quot;cur SET cur_touched=&#039;$now&#039; WHERE cur_namespace=$ns AND cur_title=&#039;$ti&#039;&amp;quot;;&lt;br /&gt;
          wfQuery($sql, DB_WRITE, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return $output;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Code original =&lt;br /&gt;
Cette extension est directement dérivée de celle écrite par : [http://meta.wikimedia.org/wiki/User:Juxo Juxo]&lt;br /&gt;
disponible [http://meta.wikimedia.org/wiki/User:Juxo/Extensions/ListSubPages ici]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Améliorations =&lt;br /&gt;
&lt;br /&gt;
J&#039;ai apporté quelques améliorations à l&#039;extension : &lt;br /&gt;
* Ne liste pas les pages d&#039;origine d&#039;une page renommée&lt;br /&gt;
* Affiche uniquement le nom de la sous-page sans la partie redondante de la page mère&lt;br /&gt;
* Protège le guillemet simple, sinon un titre comportant un tel caractère provoque une erreur SQL&lt;br /&gt;
&lt;br /&gt;
Voici la patch : &lt;br /&gt;
&amp;lt;code multi&amp;gt;&lt;br /&gt;
--- listsubpages.php.orig       2007-02-14 13:09:26.000000000 -0500&lt;br /&gt;
+++ listsubpages.php    2007-02-14 13:01:05.000000000 -0500&lt;br /&gt;
@@ -59,8 +59,9 @@&lt;br /&gt;
                } else {&lt;br /&gt;
                        $limit = &#039;&#039; ;&lt;br /&gt;
                }&lt;br /&gt;
-&lt;br /&gt;
-                $sql = &amp;quot;SELECT page_title FROM &amp;quot;.$dbr-&amp;gt;tableName( &#039;page&#039; ).&amp;quot; where page_namespace=&#039;&amp;quot;. $ns .&amp;quot;&#039; and page_title LIKE &#039;&amp;quot;. $title.&amp;quot;/%&#039; &amp;quot;.$order.$limit;&lt;br /&gt;
+               # Escape &#039; with \&#039; to prevent SQL error when there are &amp;quot;&#039;&amp;quot; caracter in the title&lt;br /&gt;
+               $title = str_replace(&amp;quot;&#039;&amp;quot;,&amp;quot;\&#039;&amp;quot;,$title);&lt;br /&gt;
+                $sql = &amp;quot;SELECT page_title FROM &amp;quot;.$dbr-&amp;gt;tableName( &#039;page&#039; ).&amp;quot; where page_namespace=&#039;&amp;quot;. $ns .&amp;quot;&#039; and page_is_redirect=&#039;0&#039; and page_title LIKE &#039;&amp;quot;. $title.&amp;quot;/%&#039; &amp;quot;.$order.$limit;&lt;br /&gt;
         $res = $dbr-&amp;gt;query( $sql);&lt;br /&gt;
         $rowCount = $dbr-&amp;gt;numRows($res);&lt;br /&gt;
         if ($rowCount == 0) {&lt;br /&gt;
@@ -77,10 +78,15 @@&lt;br /&gt;
                 # (above comment by TimStarling) I suppose that $wgTitle-&amp;gt;getDBkey(); gives the title encoded.&lt;br /&gt;
                $namespace = ($argv[&#039;showns&#039;]?$wgContLang-&amp;gt;getNsText($ns).&#039;:&#039;:&#039;&#039;) ;&lt;br /&gt;
                 while ( $myrow = $dbr-&amp;gt;fetchRow( $res ) ) {&lt;br /&gt;
+                       // Remove common prefix of sub-pages, before de first &amp;quot;/&amp;quot;&lt;br /&gt;
+                       $link_text_array = explode(&amp;quot;/&amp;quot;, $myrow[0]);&lt;br /&gt;
+                       $link_text_array[0] = &#039;&#039;;&lt;br /&gt;
+                       $link_text = implode(&amp;quot;/&amp;quot;, $link_text_array);&lt;br /&gt;
+&lt;br /&gt;
                        $title = Title::newFromText($myrow[0], $ns ) ;&lt;br /&gt;
                        if (is_object($title)) // may be useless but, just in case ...&lt;br /&gt;
                                $output .= &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; .$title-&amp;gt;escapeLocalURL() . &#039;&amp;quot;&amp;gt;&#039;. &lt;br /&gt;
-                                       $namespace.$myrow[0] . &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
+                                       $link_text . &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
                 }&lt;br /&gt;
                 $output .= &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;;     &lt;br /&gt;
         }&lt;br /&gt;
&amp;lt;/code multi&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Giraldeau</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Lea_Linux:Listsubpages&amp;diff=14297</id>
		<title>Lea Linux:Listsubpages</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Lea_Linux:Listsubpages&amp;diff=14297"/>
		<updated>2007-02-14T18:16:22Z</updated>

		<summary type="html">&lt;p&gt;Giraldeau : ajout patch pour améliorations au module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
[[Catégorie:Extension mediawiki]]&lt;br /&gt;
[[Catégorie:Script PHP]]&lt;br /&gt;
Cette extension &#039;&#039;&#039;ListSubPages&#039;&#039;&#039;, permet d&#039;afficher pour la page sur laquelle elle est utilisée, la liste de toutes les sous pages de celle-ci.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
C&#039;est simple, il suffit &lt;br /&gt;
# de copier le code ci-dessous dans &amp;lt;code&amp;gt;$MEDIAWIKIROOT/extensions/listsubpages.php&amp;lt;/code&amp;gt;&lt;br /&gt;
# d&#039;ajouter dans le fichier &amp;lt;code&amp;gt;$MEDIAWIKIROOT/LocalSettings.php&amp;lt;/code&amp;gt; la ligne : &amp;lt;code&amp;gt;include_once &amp;quot;extensions/listsubpages.php&amp;quot; ;&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
= Syntaxe mediawiki = &lt;br /&gt;
Syntaxe : &amp;lt;code&amp;gt;&amp;lt;listsubpages [paramètres]&amp;gt;[entête]&amp;lt;/listsubpages&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Où :&lt;br /&gt;
* [paramètres] est une combinaison de :&lt;br /&gt;
** &amp;lt;code&amp;gt;showns&amp;lt;/code&amp;gt; : affiche les espaces de nom avec le nom des pages,&lt;br /&gt;
** &amp;lt;code&amp;gt;error=&#039;...&#039;&amp;lt;/code&amp;gt; : si aucune sous page n&#039;est trouvée, affiche le message d&#039;erreur spécifié au lieu de celui par défaut, préciser : &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt; comme message d&#039;erreur pour le désactiver,&lt;br /&gt;
** &amp;lt;code&amp;gt;orderby=name|date&amp;lt;/code&amp;gt; : affiche les sous pages triées par nom (&#039;&#039;name&#039;&#039;) ou par date d&#039;édition (&#039;&#039;date&#039;&#039;),&lt;br /&gt;
** &amp;lt;code&amp;gt;ordermode=asc|desc&amp;lt;/code&amp;gt; : si &amp;lt;code&amp;gt;orderby&amp;lt;/code&amp;gt; est spécifié et valide, &amp;lt;code&amp;gt;ordermode&amp;lt;/code&amp;gt; précise s&#039;il faut utiliser l&#039;ordre croissant (&#039;&#039;asc&#039;&#039;) ou décroissant (&#039;&#039;desc&#039;&#039;),&lt;br /&gt;
** &amp;lt;code&amp;gt;max=...&amp;lt;/code&amp;gt; : indique le nombre maximum d&#039;entrées à afficher,&lt;br /&gt;
** &amp;lt;code&amp;gt;nocache&amp;lt;/code&amp;gt; : force mediawiki à regénérer cette page à chaque chargement.&lt;br /&gt;
* [entête] est un message annonçant les différentes sous pages. Dans cette chaine, l&#039;utilisation de &#039;&#039;%1&#039;&#039; affiche le nombre d&#039;entrées.&lt;br /&gt;
&lt;br /&gt;
=== Exemple ===&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;listsubpages showns orderby=name error=&#039;&#039;&amp;gt;Cette page contient %1 sous pages&amp;lt;/listsubpages&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Affichera la liste des sous page avec leur espace de nom classée par &amp;quot;nom&amp;quot;, aucun message d&#039;erreur si cette page n&#039;a pas de sous page.&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;br /&gt;
&amp;lt;code multi&amp;gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
# This code is copyright (C) by Juho Ville Heikkurinen (2005) and is licensed under the&lt;br /&gt;
# terms of the GNU General Public License, version 2 &lt;br /&gt;
# (see http://www.fsf.org/licenses/gpl.html). Derivative works and later versions of&lt;br /&gt;
# the code will also be considered free software licensed under the same terms.&lt;br /&gt;
&lt;br /&gt;
# version 0.1.3 Fixed an problem for mediawiki installation using db-prefix&lt;br /&gt;
#               Fix bug with upper and lower case ordering&lt;br /&gt;
#               This version uses the $input parameter to I18N the &amp;quot;This page has xxxx subpages&amp;quot;&lt;br /&gt;
#               This version uses &amp;quot;error&amp;quot; parameter to I18N/customize the error message&lt;br /&gt;
#               Setting &amp;quot;real&amp;quot; path of mediawiki isn&#039;t needed any more&lt;br /&gt;
#               This version uses &amp;quot;orderby&amp;quot; parameter to order by &#039;date&#039; or &#039;name&#039;&lt;br /&gt;
#               This version uses &amp;quot;ordermode&amp;quot; parameter to order &#039;asc&#039; or &#039;desc&#039; &lt;br /&gt;
#               This version uses &amp;quot;max&amp;quot; parameter to limit the shown entries&lt;br /&gt;
#               This version uses &amp;quot;showns&amp;quot; parameter to enable showing the namespace of shown pages&lt;br /&gt;
#               (code from fred@lea-linux.org)&lt;br /&gt;
# version 0.1.2 Fixed a bug that caused the program to always say that there are no subpages&lt;br /&gt;
# version 0.1.1 outputs &amp;quot;This page doesn&#039;t have any sub-pages&amp;quot; if there are none&lt;br /&gt;
# version 0.1 Lists all sub-pages if there are any. If there are none it outputs nothing.&lt;br /&gt;
&lt;br /&gt;
# TODO (or actually just ideas):&lt;br /&gt;
# 1) Enable the use of regular expressions to limit subpages to be viewed&lt;br /&gt;
&lt;br /&gt;
$wgExtensionFunctions[] = &amp;quot;wfListSubPages&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
function wfListSubPages ()&lt;br /&gt;
        {&lt;br /&gt;
                global $wgParser ;&lt;br /&gt;
                global $wgTitle;&lt;br /&gt;
                $wgParser-&amp;gt;setHook ( &amp;quot;ListSubPages&amp;quot; , parse_subs );&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
#First extension written from scratch&lt;br /&gt;
function parse_subs ($input, $argv)&lt;br /&gt;
        {&lt;br /&gt;
                global $wgTitle;&lt;br /&gt;
                global $wgContLang;&lt;br /&gt;
                $dbr =&amp;amp; wfGetDB( DB_SLAVE ); &lt;br /&gt;
                $output =&amp;quot;&amp;quot;; #initialise output variable&lt;br /&gt;
                $title = $wgTitle-&amp;gt;getDBkey(); #get the pagename (without namespace)&lt;br /&gt;
                $ns = $wgTitle-&amp;gt;getNamespace(); # get the namespace as a number&lt;br /&gt;
&lt;br /&gt;
		if (($argv[&#039;ordermode&#039;] == &#039;asc&#039;) || ($argv[&#039;ordermode&#039;] == &#039;desc&#039;)) {&lt;br /&gt;
			$ordertype = $argv[&#039;ordermode&#039;] ;&lt;br /&gt;
		} else {&lt;br /&gt;
			$ordertype = &#039;&#039; ;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ($argv[&#039;orderby&#039;] == &#039;name&#039;) {&lt;br /&gt;
			$order = &#039;ORDER BY LOWER(page_title) &#039;.$ordertype ;&lt;br /&gt;
		} elseif ($argv[&#039;orderby&#039;] == &#039;date&#039;) {&lt;br /&gt;
			$order = &#039;ORDER BY page_touched &#039;.$ordertype ;&lt;br /&gt;
		} else {&lt;br /&gt;
			$order = &#039;&#039; ;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ($argv[&#039;max&#039;]) {&lt;br /&gt;
			$limit = &#039; LIMIT &#039;.(int)$argv[&#039;max&#039;] ;&lt;br /&gt;
		} else {&lt;br /&gt;
			$limit = &#039;&#039; ;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
                $sql = &amp;quot;SELECT page_title FROM &amp;quot;.$dbr-&amp;gt;tableName( &#039;page&#039; ).&amp;quot; where page_namespace=&#039;&amp;quot;. $ns .&amp;quot;&#039; and page_title LIKE &#039;&amp;quot;. $title.&amp;quot;/%&#039; &amp;quot;.$order.$limit;&lt;br /&gt;
        $res = $dbr-&amp;gt;query( $sql);&lt;br /&gt;
        $rowCount = $dbr-&amp;gt;numRows($res);&lt;br /&gt;
        if ($rowCount == 0) {&lt;br /&gt;
			if ($argv[&amp;quot;error&amp;quot;])&lt;br /&gt;
				return $argv[&amp;quot;error&amp;quot;] ;&lt;br /&gt;
			else &lt;br /&gt;
	                        return &amp;quot;This page doesn&#039;t have any sub-pages&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
&lt;br /&gt;
                $output = str_replace(&amp;quot;%1&amp;quot;, $rowCount, $input);&lt;br /&gt;
                $output .= &amp;quot;&amp;lt;ul&amp;gt;&amp;quot;;&lt;br /&gt;
                # Make sure $ns is definitely a number and $title is encoded with wfStrencode() &lt;br /&gt;
                # (above comment by TimStarling) I suppose that $wgTitle-&amp;gt;getDBkey(); gives the title encoded.&lt;br /&gt;
		$namespace = ($argv[&#039;showns&#039;]?$wgContLang-&amp;gt;getNsText($ns).&#039;:&#039;:&#039;&#039;) ;&lt;br /&gt;
                while ( $myrow = $dbr-&amp;gt;fetchRow( $res ) ) {&lt;br /&gt;
			$title = Title::newFromText($myrow[0], $ns ) ;&lt;br /&gt;
			if (is_object($title)) // may be useless but, just in case ...&lt;br /&gt;
	                        $output .= &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; .$title-&amp;gt;escapeLocalURL() . &#039;&amp;quot;&amp;gt;&#039;. &lt;br /&gt;
					$namespace.$myrow[0] . &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
                $output .= &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;;     &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
         if ($argv[&#039;nocache&#039;]) {&lt;br /&gt;
          # Do not cache this wiki page.&lt;br /&gt;
          # for details see http://public.kitware.com/Wiki/User:Barre/MediaWiki/Extensions&lt;br /&gt;
          global $wgTitle, $wgDBprefix;&lt;br /&gt;
          global $wgVersion;&lt;br /&gt;
          $ts = mktime();&lt;br /&gt;
          $now = gmdate(&amp;quot;YmdHis&amp;quot;, $ts + 120);&lt;br /&gt;
          $ns = $wgTitle-&amp;gt;getNamespace();&lt;br /&gt;
          $ti = wfStrencode($wgTitle-&amp;gt;getDBkey());&lt;br /&gt;
&lt;br /&gt;
          $version = preg_replace(&amp;quot;/^([1-9]).([1-9]).*/&amp;quot;, &amp;quot;\\1\\2&amp;quot;, $wgVersion);&lt;br /&gt;
          if ($version&amp;gt;14) $sql = &amp;quot;UPDATE $wgDBprefix&amp;quot;.&amp;quot;page SET page_touched=&#039;$now&#039; WHERE page_namespace=$ns AND page_title=&#039;$ti&#039;&amp;quot;;&lt;br /&gt;
          else             $sql = &amp;quot;UPDATE $wgDBprefix&amp;quot;.&amp;quot;cur SET cur_touched=&#039;$now&#039; WHERE cur_namespace=$ns AND cur_title=&#039;$ti&#039;&amp;quot;;&lt;br /&gt;
          wfQuery($sql, DB_WRITE, &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return $output;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Code original =&lt;br /&gt;
Cette extension est directement dérivée de celle écrite par : [http://meta.wikimedia.org/wiki/User:Juxo Juxo]&lt;br /&gt;
disponible [http://meta.wikimedia.org/wiki/User:Juxo/Extensions/ListSubPages ici]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Améliorations =&lt;br /&gt;
&lt;br /&gt;
J&#039;ai apporté quelques améliorations à l&#039;extension : &lt;br /&gt;
* Ne liste pas les pages d&#039;origine d&#039;une page renommée&lt;br /&gt;
* Affiche uniquement le nom de la sous-page sans la partie redondante de la page mère&lt;br /&gt;
* Protège le guillemet simple, sinon un titre comportant un tel caractère provoque une erreur SQL&lt;br /&gt;
&lt;br /&gt;
Voici la patch : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- listsubpages.php.orig       2007-02-14 13:09:26.000000000 -0500&lt;br /&gt;
+++ listsubpages.php    2007-02-14 13:01:05.000000000 -0500&lt;br /&gt;
@@ -59,8 +59,9 @@&lt;br /&gt;
                } else {&lt;br /&gt;
                        $limit = &#039;&#039; ;&lt;br /&gt;
                }&lt;br /&gt;
-&lt;br /&gt;
-                $sql = &amp;quot;SELECT page_title FROM &amp;quot;.$dbr-&amp;gt;tableName( &#039;page&#039; ).&amp;quot; where page_namespace=&#039;&amp;quot;. $ns .&amp;quot;&#039; and page_title LIKE &#039;&amp;quot;. $title.&amp;quot;/%&#039; &amp;quot;.$order.$limit;&lt;br /&gt;
+               # Escape &#039; with \&#039; to prevent SQL error when there are &amp;quot;&#039;&amp;quot; caracter in the title&lt;br /&gt;
+               $title = str_replace(&amp;quot;&#039;&amp;quot;,&amp;quot;\&#039;&amp;quot;,$title);&lt;br /&gt;
+                $sql = &amp;quot;SELECT page_title FROM &amp;quot;.$dbr-&amp;gt;tableName( &#039;page&#039; ).&amp;quot; where page_namespace=&#039;&amp;quot;. $ns .&amp;quot;&#039; and page_is_redirect=&#039;0&#039; and page_title LIKE &#039;&amp;quot;. $title.&amp;quot;/%&#039; &amp;quot;.$order.$limit;&lt;br /&gt;
         $res = $dbr-&amp;gt;query( $sql);&lt;br /&gt;
         $rowCount = $dbr-&amp;gt;numRows($res);&lt;br /&gt;
         if ($rowCount == 0) {&lt;br /&gt;
@@ -77,10 +78,15 @@&lt;br /&gt;
                 # (above comment by TimStarling) I suppose that $wgTitle-&amp;gt;getDBkey(); gives the title encoded.&lt;br /&gt;
                $namespace = ($argv[&#039;showns&#039;]?$wgContLang-&amp;gt;getNsText($ns).&#039;:&#039;:&#039;&#039;) ;&lt;br /&gt;
                 while ( $myrow = $dbr-&amp;gt;fetchRow( $res ) ) {&lt;br /&gt;
+                       // Remove common prefix of sub-pages, before de first &amp;quot;/&amp;quot;&lt;br /&gt;
+                       $link_text_array = explode(&amp;quot;/&amp;quot;, $myrow[0]);&lt;br /&gt;
+                       $link_text_array[0] = &#039;&#039;;&lt;br /&gt;
+                       $link_text = implode(&amp;quot;/&amp;quot;, $link_text_array);&lt;br /&gt;
+&lt;br /&gt;
                        $title = Title::newFromText($myrow[0], $ns ) ;&lt;br /&gt;
                        if (is_object($title)) // may be useless but, just in case ...&lt;br /&gt;
                                $output .= &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; .$title-&amp;gt;escapeLocalURL() . &#039;&amp;quot;&amp;gt;&#039;. &lt;br /&gt;
-                                       $namespace.$myrow[0] . &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
+                                       $link_text . &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
                 }&lt;br /&gt;
                 $output .= &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;;     &lt;br /&gt;
         }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Giraldeau</name></author>
	</entry>
</feed>