r50074 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r50073‎ | r50074 | r50075 >
Date:14:32, 30 April 2009
Author:shinjiman
Status:deferred
Tags:
Comment:
* (bug 16576) Merge the localisations for the DPL2 from the old DPL, update the codebase to DPL-1.7.6.
Modified paths:
  • /trunk/extensions/DynamicPageList/DynamicPageList2.i18n.php (modified) (history)
  • /trunk/extensions/DynamicPageList/DynamicPageList2.php (modified) (history)
  • /trunk/extensions/DynamicPageList/DynamicPageList2Include.php (modified) (history)

Diff [purge]

Index: trunk/extensions/DynamicPageList/DynamicPageList2.i18n.php
@@ -155,24 +155,24 @@
156156 * $1: wrong parameter given by user
157157 * $3: list of possible titles of namespaces (except pseudo-namespaces: Media, Special)
158158 */
159 - 'dpl2_log_' . self::FATAL_WRONGNS => "?????: ????? '$0' ????: '$1'! ????: <code>$0= <i>?????? ????</i> (????)$3</code>. (???? ?????? ?? ????? ??? ??????? ????? ???.)",
 159+ 'dpl2_log_' . self::FATAL_WRONGNS => "שגיאה: פרמטר '$0' שגוי: '$1'! עזרה: <code>$0= <i>מחרוזת ריקה</i> (ראשי)$3</code>. (ניתן להשתמש גם בשווי ערך באמצעות מילות קסם.)",
160160 /**
161161 * $0: 'linksto' (left as $0 just in case the parameter is renamed in the future)
162162 * $1: wrong parameter given by user
163163 */
164 - 'dpl2_log_' . self::FATAL_WRONGLINKSTO => "?????: ????? '$0' ????: '$1'! ????: <code>$0= <i>?? ??? ????</i></code>. (???? ?????? ?????? ???.)",
 164+ 'dpl2_log_' . self::FATAL_WRONGLINKSTO => "שגיאה: פרמטר '$0' שגוי: '$1'! עזרה: <code>$0= <i>שם הדף המלא</i></code>. (ניתן להשתמש במילות קסם.)",
165165 /**
166166 * $0: max number of categories that can be included
167167 */
168 - 'dpl2_log_' . self::FATAL_TOOMANYCATS => '?????: ???????? ???? ???! ???????: $0. ????: ???? ?? <code>ExtDynamicPageList2::$maxCategoryCount</code> ??? ????? ??? ???????? ?? ?????? <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> ??? ???? ?? ??????. (?????? ?? ?????? ????? <code>LocalSettings.php</code>, ???? ????? <code>DynamicPageList2.php</code>.)',
 168+ 'dpl2_log_' . self::FATAL_TOOMANYCATS => 'שגיאה: קטגוריות רבות מדי! מקסימום: $0. עזרה: העלו את <code>ExtDynamicPageList2::$maxCategoryCount</code> כדי לציין עוד קטגוריות או הגדירו <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> כדי לבטל את ההגבלה. (הגידרו את המשתנה בקובץ <code>LocalSettings.php</code>, לאחר הכללת <code>DynamicPageList2.php</code>.)',
169169 /**
170170 * $0: min number of categories that have to be included
171171 */
172 - 'dpl2_log_' . self::FATAL_TOOFEWCATS => '?????: ???????? ????? ???! ???????: $0. ????: ?????? ?? <code>ExtDynamicPageList2::$minCategoryCount</code> ??? ????? ???? ????????. (?????? ?? ?????? ????? <code>LocalSettings.php</code>, ???? ????? <code>DynamicPageList2.php</code>.)',
 172+ 'dpl2_log_' . self::FATAL_TOOFEWCATS => 'שגיאה: קטגוריות מעטות מדי! מינימום: $0. עזרה: הורידו את <code>ExtDynamicPageList2::$minCategoryCount</code> כדי לציין פחות קטגוריות. (הגידרו את המשתנה בקובץ <code>LocalSettings.php</code>, לאחר הכללת <code>DynamicPageList2.php</code>.)',
173173 'dpl2_log_' . self::FATAL_NOSELECTION => "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants",
174 - 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "?????: ????? ?????? ????? ??????? ??? ?? ??????? ?????? ??'addfirstcategorydate=true' ?? ??'ordermethod=categoryadd'!",
175 - 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "?????: ?? ??? ??????? ???? ???????? ???, ????? ?????? ?????? ??'addfirstcategorydate=true' ?? ??'ordermethod=categoryadd'!",
176 - 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => '?????: ????? ?????? ?????? ???? ???? ??? ?? ????? ?? ?????!',
 174+ 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "שגיאה: עליכם להכליל לפחות קטגוריה אחת אם ברצונכם להשתמש ב־'addfirstcategorydate=true' או ב־'ordermethod=categoryadd'!",
 175+ 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "שגיאה: אם אתם מכלילים יותר מקטגוריה אחת, אינכם יכולים להשתמש ב־'addfirstcategorydate=true' או ב־'ordermethod=categoryadd'!",
 176+ 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => 'שגיאה: אינכם יכולים להוסיף יותר מסוג אחד של תאריך בו זמנית!',
177177 /**
178178 * $0: param=val that is possible only with $1 as last 'ordermethod' parameter
179179 * $1: last 'ordermethod' parameter required for $0
@@ -186,7 +186,7 @@
187187 * $0: prefix_dpl_clview where 'prefix' is the prefix of your mediawiki table names
188188 * $1: SQL query to create the prefix_dpl_clview on your mediawiki DB
189189 */
190 - 'dpl2_log_' . self::FATAL_NOCLVIEW => "?????: ?? ???? ???? ?????? ?????? ?? ???? ??? ???????? (????, ?? ?????? '???????') ????? ?????? $0 ???? ????? ???? ???????! ????: ???? ??? ??????? ???? ????? ?? ???????: <code>$1</code>.",
 190+ 'dpl2_log_' . self::FATAL_NOCLVIEW => "שגיאה: לא ניתן לבצע פעולות לוגיות על דפים ללא קטגוריות (למשל, עם הפרמטר 'קטגוריה') כיוון שתצוגת $0 אינה קיימת במסד הנתונים! עזרה: מנהל מסד הנתונים צריך להריץ את השאילתה: <code>$1</code>.",
191191 'dpl2_log_' . self::FATAL_OPENREFERENCES => 'ERROR: specifying "openreferences" is incompatible with some other option you specified. See the manual for details.',
192192
193193 // WARN
@@ -194,38 +194,38 @@
195195 * $0: unknown parameter given by user
196196 * $1: list of DPL2 available parameters separated by ', '
197197 */
198 - 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "?????: ????? ??????? ??????? ??? ???? '$0'. ????: ??????? ??????: <code>$1</code>.",
 198+ 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "אזהרה: בוצעה התעלמות מהפרמטר הלא ידוע '$0'. עזרה: פרמטרים זמינים: <code>$1</code>.",
199199 /**
200200 * $3: list of valid param values separated by ' | '
201201 */
202 - 'dpl2_log_' . self::WARN_WRONGPARAM => "?????: ????? '$0' ????: '$1'! ????? ?????? ?????: '$2'. ????: <code>$0= $3</code>.",
 202+ 'dpl2_log_' . self::WARN_WRONGPARAM => "אזהרה: פרמטר '$0' שגוי: '$1'! משתמש בברירת המחדל: '$2'. עזרה: <code>$0= $3</code>.",
203203 /**
204204 * $0: param name
205205 * $1: wrong param value given by user
206206 * $2: default param value used instead by program
207207 */
208 - 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "?????: ????? '$0' ????: '$1'! ????? ?????? ?????: '$2' (??? ?????). ????: <code>$0= <i>?????? ????</i> (??? ?????) | n</code>, ?? <code>n</code> ????? ??? ??????.",
 208+ 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "אזהרה: פרמטר '$0' שגוי: '$1'! משתמש בברירת המחדל: '$2' (ללא הגבלה). עזרה: <code>$0= <i>מחרוזת ריקה</i> (ללא הגבלה) | n</code>, עם <code>n</code> כמספר שלם וחיובי.",
209209 'dpl2_log_' . self::WARN_NORESULTS => '?????: ??? ??????!',
210 - 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "?????: ??????* ???????? ('adduser',? 'addeditdate' ??????) ??? ??'includepage' ??? ????? ?? 'mode=category'. ???? ????? ?? ????? ??? ?? ?????? ??? ???? ??.",
 210+ 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "אזהרה: להוספת* הפרמטרים ('adduser',‏ 'addeditdate' וכדומה) וכן ל־'includepage' אין השפעה עם 'mode=category'. ניתן לצפות רק במרחב השם או בכותרת הדף במצב זה.",
211211 /**
212212 * $0: 'headingmode' value given by user
213213 * $1: value used instead by program (which means no heading)
214214 */
215 - 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "?????: ??'headingmode=$0' ??? ????? ?? 'ordermethod' ?? ???? ????. ????? ?: '$1'. ????: ????????? ?????? ?????? ?? 'headingmode' ????? $1 ?? 'ordermethod' ?? ?????? ??????. ??????? ????? ?????? ??????. ????, 'ordermethod=category,<i>comp</i>' (<i>comp</i> ??? ???? ???) ??????? ????????.",
 215+ 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "אזהרה: ל־'headingmode=$0' אין השפעה עם 'ordermethod' על פריט יחיד. משתמש ב: '$1'. עזרה: באפשרותכם להשתמש בערכים של 'headingmode' שאינם $1 עם 'ordermethod' על פריטים מרובים. משתמשים בפריט הראשון לכותרת. למשל, 'ordermethod=category,<i>comp</i>' (<i>comp</i> הוא פריט אחר) לכותרות הקטגוריה.",
216216 /**
217217 * $0: 'debug' value
218218 */
219 - 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "?????: 'debug=$0w ??? ?? ????? ?????? ????? ??DPL. ?????? ????? ??????? ?????? ?? ????? ???? ??? ???????? ??????? ?????? ???????.",
 219+ 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "אזהרה: 'debug=$0w הוא לא במקום הראשון ברכיב ה־DPL. הגדרות ניפוי השגיאות החדשות לא יחולו לפני שכל הפרמטרים הקודמים ינותחו וייבדקו.",
220220 /**
221221 * $0: title of page that creates an infinite transclusion loop
222222 */
223 - 'dpl2_log_' . self::WARN_TRANSCLUSIONLOOP => "?????: ????? ????? ???????? ????? ??? '$0'.",
 223+ 'dpl2_log_' . self::WARN_TRANSCLUSIONLOOP => "אזהרה: לולאת הכללה אינסופית נוצרה בדף '$0'.",
224224
225225 // DEBUG
226226 /**
227227 * $0: SQL query executed to generate the dynamic page list
228228 */
229 - 'dpl2_log_' . self::DEBUG_QUERY => '??????: <code>$0</code>',
 229+ 'dpl2_log_' . self::DEBUG_QUERY => 'שאילתה: <code>$0</code>',
230230
231231 /*
232232 Output formatting
@@ -233,7 +233,7 @@
234234 /**
235235 * $1: number of articles
236236 */
237 - 'dpl2_articlecount' => '{{plural:$1|???? $1 ????|???? ?? ???}} ??? ????? ??.'
 237+ 'dpl2_articlecount' => '{{PLURAL:$1|ישנם $1 דפים|ישנו דף אחד}} תחת כותרת זו.'
238238 );
239239 self::$messages['it'] = array(
240240 /*
@@ -260,14 +260,14 @@
261261 */
262262 'dpl2_log_' . self::FATAL_TOOFEWCATS => 'ERRORE: Categorie insufficienti (minimo $0). Suggerimento: diminuire il valore di <code>ExtDynamicPageList2::$minCategoryCount</code> per indicare un numero minore di categorie. (Impostare la variabile nel file <code>LocalSettings.php</code>, dopo l\'inclusione di <code>DynamicPageList2.php</code>.)',
263263 'dpl2_log_' . self::FATAL_NOSELECTION => "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants",
264 - 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "ERRORE: L'uso dei parametri 'addfirstcategorydate=true' e 'ordermethod=categoryadd' richiede l'inserimento di una o pi� categorie.",
265 - 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "ERRORE: L'inserimento di pi� categorie impedisce l'uso dei parametri 'addfirstcategorydate=true' e 'ordermethod=categoryadd'.",
266 - 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => 'ERRORE: Non � consentito l\'uso contemporaneo di pi� tipi di data.',
 264+ 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "ERRORE: L'uso dei parametri 'addfirstcategorydate=true' e 'ordermethod=categoryadd' richiede l'inserimento di una o più categorie.",
 265+ 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "ERRORE: L'inserimento di più categorie impedisce l'uso dei parametri 'addfirstcategorydate=true' e 'ordermethod=categoryadd'.",
 266+ 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => 'ERRORE: Non è consentito l\'uso contemporaneo di più tipi di data.',
267267 /**
268268 * $0: param=val that is possible only with $1 as last 'ordermethod' parameter
269269 * $1: last 'ordermethod' parameter required for $0
270270 */
271 - 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "ERRORE: L'uso del parametro '$0' � consentito unicamente con 'ordermethod=[...,]$1'.",
 271+ 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "ERRORE: L'uso del parametro '$0' è consentito unicamente con 'ordermethod=[...,]$1'.",
272272 /**
273273 * $0: the number of arguments in includepage
274274 */
@@ -284,28 +284,28 @@
285285 * $0: unknown parameter given by user
286286 * $1: list of DPL2 available parameters separated by ', '
287287 */
288 - 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "ATTENZIONE: Il parametro non riconosciuto '$0' � stato ignorato. Suggerimento: i parametri disponibili sono: <code>$1</code>.",
 288+ 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "ATTENZIONE: Il parametro non riconosciuto '$0' è stato ignorato. Suggerimento: i parametri disponibili sono: <code>$1</code>.",
289289 /**
290290 * $3: list of valid param values separated by ' | '
291291 */
292 - 'dpl2_log_' . self::WARN_WRONGPARAM => "ATTENZIONE: Errore nel parametro '$0': '$1'. � stato usato il valore predefinito '$2'. Suggerimento: <code>$0= $3</code>.",
 292+ 'dpl2_log_' . self::WARN_WRONGPARAM => "ATTENZIONE: Errore nel parametro '$0': '$1'. È stato usato il valore predefinito '$2'. Suggerimento: <code>$0= $3</code>.",
293293 /**
294294 * $0: param name
295295 * $1: wrong param value given by user
296296 * $2: default param value used instead by program
297297 */
298 - 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "ATTENZIONE: errore nel parametro '$0': '$1'. � stato usato il valore predefinito '$2' (nessun limite). Suggerimento: <code>$0= <i>stringa vuota</i> (nessun limite) | n</code>, con <code>n</code> intero positivo.",
 298+ 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "ATTENZIONE: errore nel parametro '$0': '$1'. È stato usato il valore predefinito '$2' (nessun limite). Suggerimento: <code>$0= <i>stringa vuota</i> (nessun limite) | n</code>, con <code>n</code> intero positivo.",
299299 'dpl2_log_' . self::WARN_NORESULTS => 'ATTENZIONE: Nessun risultato.',
300 - 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "ATTENZIONE: I parametri add* ('adduser', 'addeditdate', ecc.)' non hanno alcun effetto quando � specificato 'mode=category'. In tale modalit� vengono visualizzati unicamente il namespace e il titolo della pagina.",
 300+ 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "ATTENZIONE: I parametri add* ('adduser', 'addeditdate', ecc.)' non hanno alcun effetto quando è specificato 'mode=category'. In tale modalità vengono visualizzati unicamente il namespace e il titolo della pagina.",
301301 /**
302302 * $0: 'headingmode' value given by user
303303 * $1: value used instead by program (which means no heading)
304304 */
305 - 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "ATTENZIONE: Il parametro 'headingmode=$0' non ha alcun effetto quando � specificato 'ordermethod' su un solo componente. Verr� utilizzato il valore '$1'. Suggerimento: � posibile utilizzare i valori diversi da $1 per il parametro 'headingmode' nel caso di 'ordermethod' su pi� componenti. Il primo componente viene usato per generare i titoli di sezione. Ad es. 'ordermethod=category,<i>comp</i>' (dove <i>comp</i> � un altro componente) per avere titoli di sezione basati sulla categoria.",
 305+ 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "ATTENZIONE: Il parametro 'headingmode=$0' non ha alcun effetto quando è specificato 'ordermethod' su un solo componente. Verrà utilizzato il valore '$1'. Suggerimento: è posibile utilizzare i valori diversi da $1 per il parametro 'headingmode' nel caso di 'ordermethod' su più componenti. Il primo componente viene usato per generare i titoli di sezione. Ad es. 'ordermethod=category,<i>comp</i>' (dove <i>comp</i> è un altro componente) per avere titoli di sezione basati sulla categoria.",
306306 /**
307307 * $0: 'debug' value
308308 */
309 - 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "ATTENZIONE: Il parametro 'debug=$0' non � il primo elemento della sezione DPL. Le nuove impostazioni di debug non verranno applicate prima di aver completato il parsing e la verifica di tutti i parametri che lo precedono.",
 309+ 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "ATTENZIONE: Il parametro 'debug=$0' non è il primo elemento della sezione DPL. Le nuove impostazioni di debug non verranno applicate prima di aver completato il parsing e la verifica di tutti i parametri che lo precedono.",
310310
311311 // DEBUG
312312 /**
@@ -335,15 +335,15 @@
336336 /**
337337 * $0: max number of categories that can be included
338338 */
339 - 'dpl2_log_' . self::FATAL_TOOMANYCATS => 'FOUT: Te veel categori�n! Maximum: $0. Hulp: verhoog <code>ExtDynamicPageList2::$maxCategoryCount</code> om meer categorie�n op te kunnen geven of stel geen limiet in met <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code>. (Neem deze variabele op in <code>LocalSettings.php</code>, na het toevoegen van <code>DynamicPageList2.php</code>.)',
 339+ 'dpl2_log_' . self::FATAL_TOOMANYCATS => 'FOUT: Te veel categoriën! Maximum: $0. Hulp: verhoog <code>ExtDynamicPageList2::$maxCategoryCount</code> om meer categorieën op te kunnen geven of stel geen limiet in met <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code>. (Neem deze variabele op in <code>LocalSettings.php</code>, na het toevoegen van <code>DynamicPageList2.php</code>.)',
340340 /**
341341 * $0: min number of categories that have to be included
342342 */
343 - 'dpl2_log_' . self::FATAL_TOOFEWCATS => 'FOUT: Te weinig categorie�n! Minimum: $0. Hulp: verlaag <code>ExtDynamicPageList2::$minCategoryCount</code> om minder categorie�n aan te hoeven geven. (Stel de variabele bij voorkeur in via <code>LocalSettings.php</code>, na het toevoegen van <code>DynamicPageList2.php</code>.)',
 343+ 'dpl2_log_' . self::FATAL_TOOFEWCATS => 'FOUT: Te weinig categorieën! Minimum: $0. Hulp: verlaag <code>ExtDynamicPageList2::$minCategoryCount</code> om minder categorieën aan te hoeven geven. (Stel de variabele bij voorkeur in via <code>LocalSettings.php</code>, na het toevoegen van <code>DynamicPageList2.php</code>.)',
344344 'dpl2_log_' . self::FATAL_NOSELECTION => "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants",
345 - 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "FOUT: U dient tenminste ��n categorie op te nemen als u 'addfirstcategorydate=true' of 'ordermethod=categoryadd' wilt gebruiken!",
346 - 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "FOUT: Als u meer dan ��n categorie opneemt, kunt u 'addfirstcategorydate=true' of 'ordermethod=categoryadd' niet gebruiken!",
347 - 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => 'FOUT: U kunt niet meer dan ��n type of datum tegelijk gebruiken!',
 345+ 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "FOUT: U dient tenminste één categorie op te nemen als u 'addfirstcategorydate=true' of 'ordermethod=categoryadd' wilt gebruiken!",
 346+ 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "FOUT: Als u meer dan één categorie opneemt, kunt u 'addfirstcategorydate=true' of 'ordermethod=categoryadd' niet gebruiken!",
 347+ 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => 'FOUT: U kunt niet meer dan één type of datum tegelijk gebruiken!',
348348 /**
349349 * $0: param=val that is possible only with $1 as last 'ordermethod' parameter
350350 * $1: last 'ordermethod' parameter required for $0
@@ -400,7 +400,7 @@
401401 /**
402402 * $1: number of articles
403403 */
404 - 'dpl2_articlecount' => 'Er {{PLURAL:$1|is ��n pagina|zijn $1 pagina\'s}} onder deze kop.'
 404+ 'dpl2_articlecount' => 'Er {{PLURAL:$1|is één pagina|zijn $1 pagina\'s}} onder deze kop.'
405405 );
406406 self::$messages['ru'] = array(
407407 /*
@@ -412,24 +412,24 @@
413413 * $1: wrong parameter given by user
414414 * $3: list of possible titles of namespaces (except pseudo-namespaces: Media, Special)
415415 */
416 - 'dpl2_log_' . self::FATAL_WRONGNS => "??????: ???????????? �$0�-????????: �$1�! ?????????: <code>$0= <i>?????? ??????</i> (????????)$3</code>.",
 416+ 'dpl2_log_' . self::FATAL_WRONGNS => "ОШИБКА: неправильный «$0»-параметр: «$1»! Подсказка: <code>$0= <i>пустая строка</i> (Основное)$3</code>.",
417417 /**
418418 * $0: max number of categories that can be included
419419 */
420 - 'dpl2_log_' . self::FATAL_TOOMANYCATS => '??????: ??????? ????? ?????????! ????????: $0. ?????????: ???????? <code>ExtDynamicPageList2::$maxCategoryCount</code> ????? ????????? ?????? ????????? ??? ?????????? <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> ??? ?????? ???????????. (?????????????? ?????????? ? <code>LocalSettings.php</code>, ????? ??????????? <code>DynamicPageList2.php</code>.)',
 420+ 'dpl2_log_' . self::FATAL_TOOMANYCATS => 'ОШИБКА: слишком много категорий! Максимум: $0. Подсказка: увеличте <code>ExtDynamicPageList2::$maxCategoryCount</code> чтобы разрешить больше категорий или установите <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> для снятия ограничения. (Устанавливайте переменные в <code>LocalSettings.php</code>, после подключения <code>DynamicPageList2.php</code>.)',
421421 /**
422422 * $0: min number of categories that have to be included
423423 */
424 - 'dpl2_log_' . self::FATAL_TOOFEWCATS => '??????: ??????? ???? ?????????! ???????: $0. ?????????: ????????? <code>ExtDynamicPageList2::$minCategoryCount</code> ????? ????????? ?????? ?????????. (?????????????? ?????????? ? <code>LocalSettings.php</code>, ????? ??????????? <code>DynamicPageList2.php</code>.)',
 424+ 'dpl2_log_' . self::FATAL_TOOFEWCATS => 'ОШИБКА: слишком мало категорий! Минимум: $0. Подсказка: уменьшите <code>ExtDynamicPageList2::$minCategoryCount</code> чтобы разрешить меньше категорий. (Устанавливайте переменную в <code>LocalSettings.php</code>, после подключения <code>DynamicPageList2.php</code>.)',
425425 'dpl2_log_' . self::FATAL_NOSELECTION => "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants",
426 - 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "??????: ?? ?????? ???????? ???? ?? ???? ?????????, ???? ?? ?????? ???????????? �addfirstcategorydate=true� ??? �ordermethod=categoryadd�!",
427 - 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "??????: ???? ?? ????????? ?????? ????? ?????????, ?? ?? ?? ?????? ???????????? �addfirstcategorydate=true� ??? �ordermethod=categoryadd�!",
428 - 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => '??????: ?? ?? ?????? ???????? ????? ?????? ???? ?????? ?? ???!',
 426+ 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "ОШИБКА: вы должны включить хотя бы одну категорию, если вы хотите использовать «addfirstcategorydate=true» или «ordermethod=categoryadd»!",
 427+ 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "ОШИБКА: если вы включаете больше одной категории, то вы не можете использовать «addfirstcategorydate=true» или «ordermethod=categoryadd»!",
 428+ 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => 'ОШИБКА: вы не можете добавить более одного типа данных за раз!',
429429 /**
430430 * $0: param=val that is possible only with $1 as last 'ordermethod' parameter
431431 * $1: last 'ordermethod' parameter required for $0
432432 */
433 - 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "??????: ?? ?????? ???????????? �$0� ?????? ? �ordermethod=[...,]$1�!",
 433+ 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "ОШИБКА: вы можете использовать «$0» только с «ordermethod=[...,]$1»!",
434434 /**
435435 * $0: the number of arguments in includepage
436436 */
@@ -446,34 +446,34 @@
447447 * $0: unknown parameter given by user
448448 * $1: list of DPL2 available parameters separated by ', '
449449 */
450 - 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "??????????????: ??????????? ???????? �$0� ??????????????. ?????????: ????????? ?????????: <code>$1</code>.",
 450+ 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "ПРЕДУПРЕЖДЕНИЕ: неизвестный параметр «$0» проигнорирован. Подсказка: доступные параметры: <code>$1</code>.",
451451 /**
452452 * $3: list of valid param values separated by ' | '
453453 */
454 - 'dpl2_log_' . self::WARN_WRONGPARAM => "??????????????: ???????????? ???????? �$0�: �$1�! ????????????? ????????? ?? ?????????: �$2�. ?????????: <code>$0= $3</code>.",
 454+ 'dpl2_log_' . self::WARN_WRONGPARAM => "ПРЕДУПРЕЖДЕНИЕ: неправильный параметр «$0»: «$1»! Использование параметра по умолчанию: «$2». Подсказка: <code>$0= $3</code>.",
455455 /**
456456 * $0: param name
457457 * $1: wrong param value given by user
458458 * $2: default param value used instead by program
459459 */
460 - 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "??????????????: ???????????? ???????? �$0�: �$1�! ????????????? ????????? ?? ?????????: �$2� (??? ???????????). ?????????: <code>$0= <i>?????? ??????</i> (??? ???????????) | n</code>, ? <code>n</code> ?????? ?????????????? ?????? ?????.",
461 - 'dpl2_log_' . self::WARN_NORESULTS => '??????????????: ?? ???????!',
462 - 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "??????????????: ??????????* ?????????? (�adduser�, �addeditdate�, ? ??.) ?? ????????????? ? �mode=category�. ?????? ???????????? ???? ??? ???????? ????? ??????????????? ? ???? ??????.",
 460+ 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "ПРЕДУПРЕЖДЕНИЕ: неправильный параметр «$0»: «$1»! Использование параметра по умолчанию: «$2» (без ограничений). Подсказка: <code>$0= <i>пустая строка</i> (без ограничений) | n</code>, с <code>n</code> равным положительному целому числу.",
 461+ 'dpl2_log_' . self::WARN_NORESULTS => 'ПРЕДУПРЕЖДЕНИЕ: не найдено!',
 462+ 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "ПРЕДУПРЕЖДЕНИЕ: Добавление* параметров («adduser», «addeditdate», и др.) не действительны с «mode=category». Только пространства имён или названия могут просматриваться в этом режиме.",
463463 /**
464464 * $0: 'headingmode' value given by user
465465 * $1: value used instead by program (which means no heading)
466466 */
467 - 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "??????????????: �headingmode=$0� ?? ???????????? ? �ordermethod� ? ????? ??????????. ?????????????: �$1�. ?????????: ?? ?????? ????????????e ??-$1 �headingmode� ???????? ? �ordermethod� ?? ????????? ???????????. ?????? ????????? ???????????? ??? ??????????. ????????, �ordermethod=category,<i>comp</i>� (<i>comp</i> ???????? ?????? ???????????) ??? ?????????? ?????????.",
 467+ 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "ПРЕДУПРЕЖДЕНИЕ: «headingmode=$0» не действителен с «ordermethod» в одном компоненте. Использование: «$1». Подсказка: вы можете использоватьe не-$1 «headingmode» значения с «ordermethod» во множестве компонентов. Первый компонент используется для заголовков. Например, «ordermethod=category,<i>comp</i>» (<i>comp</i> является другим компонентом) для заголовков категорий.",
468468 /**
469469 * $0: 'debug' value
470470 */
471 - 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "??????????????: �debug=$0� ?? ????????? ?? ?????? ????? ? DPL-????????. ????? ????????? ??????? ?? ????? ????????? ???? ??? ?????????? ????????? ?? ????? ????????? ? ?????????.",
 471+ 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "ПРЕДУПРЕЖДЕНИЕ: «debug=$0» не находится на первом месте в DPL-элементе. Новые настройки отладки не будут применены пока все предыдущие параметры не будут разобраны и проверены.",
472472
473473 // DEBUG
474474 /**
475475 * $0: SQL query executed to generate the dynamic page list
476476 */
477 - 'dpl2_log_' . self::DEBUG_QUERY => '??????: <code>$0</code>',
 477+ 'dpl2_log_' . self::DEBUG_QUERY => 'ЗАПРОС: <code>$0</code>',
478478
479479 /*
480480 Output formatting
@@ -481,7 +481,7 @@
482482 /**
483483 * $1: number of articles
484484 */
485 - 'dpl2_articlecount' => '? ???? ????????? $1 {{PLURAL:$1|??????|??????|??????}}.'
 485+ 'dpl2_articlecount' => 'В этом заголовке $1 {{PLURAL:$1|статья|статьи|статей}}.'
486486 );
487487 self::$messages['sk'] = array(
488488 /*
@@ -493,29 +493,29 @@
494494 * $1: wrong parameter given by user
495495 * $3: list of possible titles of namespaces (except pseudo-namespaces: Media, Special)
496496 */
497 - 'dpl2_log_' . self::FATAL_WRONGNS => "CHYBA: nespr�vny parameter '$0': '$1'! Pomocn�k <code>$0= <i>pr�zdny retazec</i> (Hlavn�)$3<code>.",
 497+ 'dpl2_log_' . self::FATAL_WRONGNS => "CHYBA: nesprávny parameter '$0': '$1'! Pomocník <code>$0= <i>prázdny retazec</i> (Hlavný)$3<code>.",
498498 /**
499499 * $0: 'linksto' (left as $0 just in case the parameter is renamed in the future)
500500 * $1: wrong parameter given by user
501501 */
502 - 'dpl2_log_' . self::FATAL_WRONGLINKSTO => "CHYBA: Zl� parameter '$0': '$1'! Pomocn�k <code>$0= <i>pln� n�zov str�nky</i></code>.",
 502+ 'dpl2_log_' . self::FATAL_WRONGLINKSTO => "CHYBA: Zlý parameter '$0': '$1'! Pomocník <code>$0= <i>plný názov stránky</i></code>.",
503503 /**
504504 * $0: max number of categories that can be included
505505 */
506 - 'dpl2_log_' . self::FATAL_TOOMANYCATS => 'CHYBA: Pr�li� vela kateg�ri�! Maximum: $0. Pomocn�k: zv�c�ite <code>ExtDynamicPageList2::$maxCategoryCount</code>, aby ste mohli �pecifikovat viac kateg�ri� alebo nastavte <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> pre vypnutie limitu. (Premenn� nastatavte v <code>LocalSettings.php</code>, potom ako bol includovan� <code>DynamicPageList2.php</code>.)',
 506+ 'dpl2_log_' . self::FATAL_TOOMANYCATS => 'CHYBA: Príliš vela kategórií! Maximum: $0. Pomocník: zväcšite <code>ExtDynamicPageList2::$maxCategoryCount</code>, aby ste mohli špecifikovat viac kategórií alebo nastavte <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> pre vypnutie limitu. (Premennú nastatavte v <code>LocalSettings.php</code>, potom ako bol includovaný <code>DynamicPageList2.php</code>.)',
507507 /**
508508 * $0: min number of categories that have to be included
509509 */
510 - 'dpl2_log_' . self::FATAL_TOOFEWCATS => 'CHYBA: Pr�li� m�lo kateg�ri�! Minimum: $0. Pomocn�k: zn�te <code>ExtDynamicPageList2::$minCategoryCount</code>, aby ste mohli �pecifikovat menej kateg�ri�. (Premenn� nastavte najlep�ie v <code>LocalSettings.php</code> potom, ako v nom bol includovan� <code>DynamicPageList2.php</code>.)',
 510+ 'dpl2_log_' . self::FATAL_TOOFEWCATS => 'CHYBA: Príliš málo kategórií! Minimum: $0. Pomocník: znížte <code>ExtDynamicPageList2::$minCategoryCount</code>, aby ste mohli špecifikovat menej kategórií. (Premennú nastavte najlepšie v <code>LocalSettings.php</code> potom, ako v nom bol includovaný <code>DynamicPageList2.php</code>.)',
511511 'dpl2_log_' . self::FATAL_NOSELECTION => "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants",
512 - 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "CHYBA: Mus�te uviest aspon jednu kateg�riu ak chcete pou�it 'addfirstcategorydate=true' alebo 'ordermethod=categoryadd'!",
513 - 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "CHYBA: Ak zahrniete viac ako jednu kateg�riu, nem��ete pou�it 'addfirstcategorydate=true' alebo 'ordermethod=categoryadd'!",
514 - 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => 'CHYBA: Nem��ete naraz pridat viac ako jeden typ d�tumu!',
 512+ 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "CHYBA: Musíte uviest aspon jednu kategóriu ak chcete použit 'addfirstcategorydate=true' alebo 'ordermethod=categoryadd'!",
 513+ 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "CHYBA: Ak zahrniete viac ako jednu kategóriu, nemôžete použit 'addfirstcategorydate=true' alebo 'ordermethod=categoryadd'!",
 514+ 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => 'CHYBA: Nemôžete naraz pridat viac ako jeden typ dátumu!',
515515 /**
516516 * $0: param=val that is possible only with $1 as last 'ordermethod' parameter
517517 * $1: last 'ordermethod' parameter required for $0
518518 */
519 - 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "CHYBA: '$0' m��ete pou�it iba s 'ordermethod=[...,]$1'!",
 519+ 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "CHYBA: '$0' môžete použit iba s 'ordermethod=[...,]$1'!",
520520 /**
521521 * $0: the number of arguments in includepage
522522 */
@@ -524,7 +524,7 @@
525525 * $0: prefix_dpl_clview where 'prefix' is the prefix of your mediawiki table names
526526 * $1: SQL query to create the prefix_dpl_clview on your mediawiki DB
527527 */
528 - 'dpl2_log_' . self::FATAL_NOCLVIEW => "CHYBA: Nie je momo�n� vykon�vat logick� oper�cie na nekategorizovan�ch kateg�ri�ch (napr. s parametrom 'Kateg�ria') lebo neexistuje na datab�zu pohlad $0! Pomocn�k: nech admin datab�zy vykon� tento dotaz: <code>$1</code>.",
 528+ 'dpl2_log_' . self::FATAL_NOCLVIEW => "CHYBA: Nie je momožné vykonávat logické operácie na nekategorizovaných kategóriách (napr. s parametrom 'Kategória') lebo neexistuje na databázu pohlad $0! Pomocník: nech admin databázy vykoná tento dotaz: <code>$1</code>.",
529529 'dpl2_log_' . self::FATAL_OPENREFERENCES => 'ERROR: specifying "openreferences" is incompatible with some other option you specified. See the manual for details.',
530530
531531 // WARN
@@ -532,28 +532,28 @@
533533 * $0: unknown parameter given by user
534534 * $1: list of DPL2 available parameters separated by ', '
535535 */
536 - 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "VAROVANIE: Nezn�my parameter '$0' ignorovan�. Pomocn�k: dostupn� parametre: <code>$1</code>.",
 536+ 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "VAROVANIE: Neznámy parameter '$0' ignorovaný. Pomocník: dostupné parametre: <code>$1</code>.",
537537 /**
538538 * $3: list of valid param values separated by ' | '
539539 */
540 - 'dpl2_log_' . self::WARN_WRONGPARAM => "VAROVANIE: Nespr�vny '$0' parameter: '$1'! Pou��vam �tandardn� '$2'. Pomocn�k: <code>$0= $3</code>.",
 540+ 'dpl2_log_' . self::WARN_WRONGPARAM => "VAROVANIE: Nesprávny '$0' parameter: '$1'! Používam štandardný '$2'. Pomocník: <code>$0= $3</code>.",
541541 /**
542542 * $0: param name
543543 * $1: wrong param value given by user
544544 * $2: default param value used instead by program
545545 */
546 - 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "VAROVANIE: Nespr�vny parameter '$0': '$1'! Pou��vam �tandardn�: '$2' (bez obmedzenia). Pomocn�k: <code>$0= <i>pr�zdny retazec</i> (bez obmedzenia) | n</code>, s kladn�m cel�m c�slom <code>n</code>.",
 546+ 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "VAROVANIE: Nesprávny parameter '$0': '$1'! Používam štandardný: '$2' (bez obmedzenia). Pomocník: <code>$0= <i>prázdny retazec</i> (bez obmedzenia) | n</code>, s kladným celým císlom <code>n</code>.",
547547 'dpl2_log_' . self::WARN_NORESULTS => 'VAROVANIE: No results!',
548 - 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "VAROVANIE: Parametre Add* ('adduser', 'addeditdate', atd' nepracuj� s mode=category'. V tomto re�ime je mo�n� prehliadat iba menn� priestor/titulok str�nky.",
 548+ 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "VAROVANIE: Parametre Add* ('adduser', 'addeditdate', atd' nepracujú s mode=category'. V tomto režime je možné prehliadat iba menná priestor/titulok stránky.",
549549 /**
550550 * $0: 'headingmode' value given by user
551551 * $1: value used instead by program (which means no heading)
552552 */
553 - 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "VAROVANIE: 'headingmode=$0' nepracuje s 'ordermethod' na jednom komponente. Pou�itie: '$1'. Pomocn�k: m��ete pou�it not-$1 hodnoty 'headingmode' s 'ordermethod' na viacer� komponenty. Prv� komponent sa pou��va na nadpisy. Napr. 'ordermethod=category,<i>comp</i>' (<i>comp</i> je in� komponent) pre nadpisy kateg�ri�.",
 553+ 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "VAROVANIE: 'headingmode=$0' nepracuje s 'ordermethod' na jednom komponente. Použitie: '$1'. Pomocník: môžete použit not-$1 hodnoty 'headingmode' s 'ordermethod' na viaceré komponenty. Prvý komponent sa používa na nadpisy. Napr. 'ordermethod=category,<i>comp</i>' (<i>comp</i> je iný komponent) pre nadpisy kategórií.",
554554 /**
555555 * $0: 'debug' value
556556 */
557 - 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "VAROVANIE: 'debug=$0' nie je na prvej poz�cii v prvku DPL. Nov� ladiacie nastavenia nebud� pou��t� sk�r ne� bud� parsovan� a skontrolovan� v�etky predch�dzaj�ce.",
 557+ 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "VAROVANIE: 'debug=$0' nie je na prvej pozícii v prvku DPL. Nové ladiacie nastavenia nebudú použíté skôr než budú parsované a skontrolované všetky predchádzajúce.",
558558
559559 // DEBUG
560560 /**
@@ -567,9 +567,9 @@
568568 /**
569569 * $1: number of articles
570570 */
571 - 'dpl2_articlecount' => 'V tomto nadpise {{PLURAL:$1|je jeden cl�nok|s� $1 cl�nky|je $1 cl�nkov}}.'
 571+ 'dpl2_articlecount' => 'V tomto nadpise {{PLURAL:$1|je jeden clánok|sú $1 clánky|je $1 clánkov}}.'
572572 );
573 - self::$messages['zh-cn'] = array(
 573+ self::$messages['yue'] = array(
574574 /*
575575 Log
576576 */
@@ -579,24 +579,24 @@
580580 * $1: wrong parameter given by user
581581 * $3: list of possible titles of namespaces (except pseudo-namespaces: Media, Special)
582582 */
583 - 'dpl2_log_' . self::FATAL_WRONGNS => "??: ??? '$0' ??: '$1'! ??: <code>$0= <i>?????</i> (?)$3</code>?",
 583+ 'dpl2_log_' . self::FATAL_WRONGNS => "錯誤: 錯嘅 '$0' 參數: '$1'! 幫助: <code>$0= <i>空字串</i> (主)$3</code>。",
584584 /**
585585 * $0: max number of categories that can be included
586586 */
587 - 'dpl2_log_' . self::FATAL_TOOMANYCATS => '??: ????! ???: $0? ??: ?? <code>ExtDynamicPageList2::$maxCategoryCount</code> ????????????? <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> ?????? (??? <code>DynamicPageList2.php</code>?,?<code>LocalSettings.php</code>??????)',
 587+ 'dpl2_log_' . self::FATAL_TOOMANYCATS => '錯誤: 太多分類! 最大值: $0。 幫助: 增加 <code>ExtDynamicPageList2::$maxCategoryCount</code> 嘅值去指定更多嘅分類或者設定 <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> 以解除限制。 (當加上 <code>DynamicPageList2.php</code>之後,響<code>LocalSettings.php</code>度設定變數。)',
588588 /**
589589 * $0: min number of categories that have to be included
590590 */
591 - 'dpl2_log_' . self::FATAL_TOOFEWCATS => '??: ????! ???: $0? ??: ?? <code>ExtDynamicPageList2::$minCategoryCount</code> ??????????? (??? <code>DynamicPageList2.php</code>?,?<code>LocalSettings.php</code>???????????)',
 591+ 'dpl2_log_' . self::FATAL_TOOFEWCATS => '錯誤: 太少分類! 最小值: $0. 幫助: 減少 <code>ExtDynamicPageList2::$minCategoryCount</code> 嘅值去指定更少嘅分類。 (當加上 <code>DynamicPageList2.php</code>之後,響<code>LocalSettings.php</code>度設定一個合適嘅變數。)',
592592 'dpl2_log_' . self::FATAL_NOSELECTION => "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants",
593 - 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "??: ????? 'addfirstcategorydate=true' ? 'ordermethod=categoryadd' ,???????????!",
594 - 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "??: ??????????,????? 'addfirstcategorydate=true' ? 'ordermethod=categoryadd'!",
595 - 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => '??: ???????????????????!',
 593+ 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "錯誤: 如果你想去用 'addfirstcategorydate=true' 或者 'ordermethod=categoryadd' ,你需要包含最少一個分類!",
 594+ 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "錯誤: 如果你包含多過一個分類,你唔可以用 'addfirstcategorydate=true' 或者 'ordermethod=categoryadd'!",
 595+ 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => '錯誤: 你唔可以響一個時間度加入多個一種嘅日期!',
596596 /**
597597 * $0: param=val that is possible only with $1 as last 'ordermethod' parameter
598598 * $1: last 'ordermethod' parameter required for $0
599599 */
600 - 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "??: ????? 'ordermethod=[...,]$1' ? '$0' ?!",
 600+ 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "錯誤: 你只可以用 'ordermethod=[...,]$1' 響 '$0' 上!",
601601 /**
602602 * $0: the number of arguments in includepage
603603 */
@@ -613,34 +613,34 @@
614614 * $0: unknown parameter given by user
615615 * $1: list of DPL2 available parameters separated by ', '
616616 */
617 - 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "??: ????? '$0' ???? ??: ?????: <code>$1</code>?",
 617+ 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "警告: 不明嘅參數 '$0' 被忽略。 幫助: 可用嘅參數: <code>$1</code>。",
618618 /**
619619 * $3: list of valid param values separated by ' | '
620620 */
621 - 'dpl2_log_' . self::WARN_WRONGPARAM => "??: ??? '$0' ??: '$1'! ???????: '$2'? ??: <code>$0= $3</code>?",
 621+ 'dpl2_log_' . self::WARN_WRONGPARAM => "警告: 錯誤嘅 '$0' 參數: '$1'! 用緊預設嘅: '$2'。 幫助: <code>$0= $3</code>。",
622622 /**
623623 * $0: param name
624624 * $1: wrong param value given by user
625625 * $2: default param value used instead by program
626626 */
627 - 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "??: ??? '$0' ??: '$1'! ???????: '$2' (????)? ??: <code>$0= <i>?????</i> (????) | n</code>, <code>n</code>???????",
628 - 'dpl2_log_' . self::WARN_NORESULTS => '??: ???!',
629 - 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "??: ??* ?? ('adduser', 'addeditdate', ?)' ?? 'mode=category' ????????????/??????????????",
 627+ 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "警告: 錯誤嘅 '$0' 參數: '$1'! 用緊預設嘅: '$2' (冇上限)。 幫助: <code>$0= <i>空字串</i> (冇上限) | n</code>, <code>n</code>係一個正整數。",
 628+ 'dpl2_log_' . self::WARN_NORESULTS => '警告: 無結果!',
 629+ 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "警告: 加入* 參數 ('adduser', 'addeditdate', 等)' 係對 'mode=category' 冇作用嘅。只有頁空間名/標題至可以響呢個模式度睇到。",
630630 /**
631631 * $0: 'headingmode' value given by user
632632 * $1: value used instead by program (which means no heading)
633633 */
634 - 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "??: ??????, 'ordermethod' ? 'headingmode=$0' ??????? ????: '$1'? ??: ?????$1 'headingmode' ??,??????? 'ordermethod' ????????????????????? 'ordermethod=category,<i>comp</i>' (<i>comp</i>???????) ?",
 634+ 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "警告: 響單一部件中, 'ordermethod' 度用 'headingmode=$0' 係冇作用嘅。 用緊: '$1'。 幫助: 你可以用非$1 'headingmode' 數值,響多個部件中用 'ordermethod' 。第一個部件係用嚟做標題。例如響分類標題度用 'ordermethod=category,<i>comp</i>' (<i>comp</i>係另外一個部件) 。",
635635 /**
636636 * $0: 'debug' value
637637 */
638 - 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "??: 'debug=$0' ??????DPL?????????????????????????????????",
 638+ 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "警告: 'debug=$0' 唔係第一個響DPL元素嘅第一位。新嘅除錯設定響所有參數都能夠處理同檢查之前都唔會應用。",
639639
640640 // DEBUG
641641 /**
642642 * $0: SQL query executed to generate the dynamic page list
643643 */
644 - 'dpl2_log_' . self::DEBUG_QUERY => '??: <code>$0</code>',
 644+ 'dpl2_log_' . self::DEBUG_QUERY => '查訽: <code>$0</code>',
645645
646646 /*
647647 Output formatting
@@ -648,9 +648,9 @@
649649 /**
650650 * $1: number of articles
651651 */
652 - 'dpl2_articlecount' => '???????$1????'
 652+ 'dpl2_articlecount' => '響呢個標題度有$1篇文。'
653653 );
654 - self::$messages['zh-tw'] = array(
 654+ self::$messages['zh-hans'] = array(
655655 /*
656656 Log
657657 */
@@ -660,24 +660,24 @@
661661 * $1: wrong parameter given by user
662662 * $3: list of possible titles of namespaces (except pseudo-namespaces: Media, Special)
663663 */
664 - 'dpl2_log_' . self::FATAL_WRONGNS => "??: ??? '$0' ??: '$1'! ??: <code>$0= <i>????</i> (?)$3</code>?",
 664+ 'dpl2_log_' . self::FATAL_WRONGNS => "错误: 错误的 '$0' 参数: '$1'! 帮助: <code>$0= <i>空白字符串</i> (主)$3</code>。",
665665 /**
666666 * $0: max number of categories that can be included
667667 */
668 - 'dpl2_log_' . self::FATAL_TOOMANYCATS => '??: ????! ???: $0? ??: ?? <code>ExtDynamicPageList2::$maxCategoryCount</code> ????????????? <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> ?????? (??? <code>DynamicPageList2.php</code>?,?<code>LocalSettings.php</code>??????)',
 668+ 'dpl2_log_' . self::FATAL_TOOMANYCATS => '错误: 过多分类! 最大值: $0。 帮助: 增加 <code>ExtDynamicPageList2::$maxCategoryCount</code> 的值去指定更多的分类或设定 <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> 以解除限制。 (当加上 <code>DynamicPageList2.php</code>后,在<code>LocalSettings.php</code>中设定变量。)',
669669 /**
670670 * $0: min number of categories that have to be included
671671 */
672 - 'dpl2_log_' . self::FATAL_TOOFEWCATS => '??: ????! ???: $0? ??: ?? <code>ExtDynamicPageList2::$minCategoryCount</code> ??????????? (??? <code>DynamicPageList2.php</code>?,?<code>LocalSettings.php</code>???????????)',
 672+ 'dpl2_log_' . self::FATAL_TOOFEWCATS => '错误: 过少分类! 最小值: $0。 帮助: 减少 <code>ExtDynamicPageList2::$minCategoryCount</code> 的值去指定更少的分类。 (当加上 <code>DynamicPageList2.php</code>后,在<code>LocalSettings.php</code>中设定一个合适的变量。)',
673673 'dpl2_log_' . self::FATAL_NOSELECTION => "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants",
674 - 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "??: ????? 'addfirstcategorydate=true' ? 'ordermethod=categoryadd' ,???????????!",
675 - 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "??: ??????????,????? 'addfirstcategorydate=true' ? 'ordermethod=categoryadd'!",
676 - 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => '??: ???????????????????!',
 674+ 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "错误: 如果您想用 'addfirstcategorydate=true' 或 'ordermethod=categoryadd' ,您需要包含最少一个分类!",
 675+ 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "错误: 如果您包含多一个分类,您不可以用 'addfirstcategorydate=true' 或 'ordermethod=categoryadd'!",
 676+ 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => '错误: 您不可以在一个时间里加入多于一种的日期!',
677677 /**
678678 * $0: param=val that is possible only with $1 as last 'ordermethod' parameter
679679 * $1: last 'ordermethod' parameter required for $0
680680 */
681 - 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "??: ????? 'ordermethod=[...,]$1' ? '$0' ?!",
 681+ 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "错误: 你只可以用 'ordermethod=[...,]$1' 在 '$0' 上!",
682682 /**
683683 * $0: the number of arguments in includepage
684684 */
@@ -694,34 +694,34 @@
695695 * $0: unknown parameter given by user
696696 * $1: list of DPL2 available parameters separated by ', '
697697 */
698 - 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "??: ????? '$0' ???? ??: ?????: <code>$1</code>?",
 698+ 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "警告: 不明的参数 '$0' 被忽略。 帮助: 可用的参数: <code>$1</code>。",
699699 /**
700700 * $3: list of valid param values separated by ' | '
701701 */
702 - 'dpl2_log_' . self::WARN_WRONGPARAM => "??: ??? '$0' ??: '$1'! ???????: '$2'? ??: <code>$0= $3</code>?",
 702+ 'dpl2_log_' . self::WARN_WRONGPARAM => "警告: 错误的 '$0' 参数: '$1'! 正在使用默认值: '$2'。 帮助: <code>$0= $3</code>。",
703703 /**
704704 * $0: param name
705705 * $1: wrong param value given by user
706706 * $2: default param value used instead by program
707707 */
708 - 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "??: ??? '$0' ??: '$1'! ???????: '$2' (????)? ??: <code>$0= <i>????</i> (????) | n</code>, <code>n</code>???????",
709 - 'dpl2_log_' . self::WARN_NORESULTS => '??: ???!',
710 - 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "??: ??* ?? ('adduser', 'addeditdate', ?)' ?? 'mode=category' ????????????/??????????????",
 708+ 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "警告: 错误的 '$0' 参数: '$1'! 正在使用默认值: '$2' (没有上限)。 帮助: <code>$0= <i>空白字符串</i> (没有上限) | n</code>, <code>n</code>是一个正整数。",
 709+ 'dpl2_log_' . self::WARN_NORESULTS => '警告: 无结果!',
 710+ 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "警告: 加入* 参数 ('adduser', 'addeditdate', 等)' 是对 'mode=category' 没有作用。只有页面空间名/标题才可以在这个模式度看到。",
711711 /**
712712 * $0: 'headingmode' value given by user
713713 * $1: value used instead by program (which means no heading)
714714 */
715 - 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "??: ??????, 'ordermethod' ? 'headingmode=$0' ??????? ????: '$1'? ??: ?????$1 'headingmode' ??,??????? 'ordermethod' ????????????????????? 'ordermethod=category,<i>comp</i>' (<i>comp</i>???????) ?",
 715+ 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "警告: 在单一部件中, 'ordermethod' 用 'headingmode=$0' 是没有作用的。 正在使用: '$1'。 帮助: 你可以用非$1 'headingmode' 数值,在多个部件中用 'ordermethod' 。第一个部是用来作标题。例如在分类标题中用 'ordermethod=category,<i>comp</i>' (<i>comp</i>是另外一个部件) 。",
716716 /**
717717 * $0: 'debug' value
718718 */
719 - 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "??: 'debug=$0' ??????DPL?????????????????????????????????",
 719+ 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "警告: 'debug=$0' 不是第一个在DPL元素嘅第一位置。新的除错设定在所有参数都能处理和检查前都不会应用。",
720720
721721 // DEBUG
722722 /**
723723 * $0: SQL query executed to generate the dynamic page list
724724 */
725 - 'dpl2_log_' . self::DEBUG_QUERY => '??: <code>$0</code>',
 725+ 'dpl2_log_' . self::DEBUG_QUERY => '查訽: <code>$0</code>',
726726
727727 /*
728728 Output formatting
@@ -729,9 +729,9 @@
730730 /**
731731 * $1: number of articles
732732 */
733 - 'dpl2_articlecount' => '???????$1????'
 733+ 'dpl2_articlecount' => '在这个标题中有$1篇条目。'
734734 );
735 - self::$messages['zh-yue'] = array(
 735+ self::$messages['zh-hant'] = array(
736736 /*
737737 Log
738738 */
@@ -741,24 +741,24 @@
742742 * $1: wrong parameter given by user
743743 * $3: list of possible titles of namespaces (except pseudo-namespaces: Media, Special)
744744 */
745 - 'dpl2_log_' . self::FATAL_WRONGNS => "??: ?? '$0' ??: '$1'! ??: <code>$0= <i>???</i> (?)$3</code>?",
 745+ 'dpl2_log_' . self::FATAL_WRONGNS => "錯誤: 錯誤的 '$0' 參數: '$1'! 說明: <code>$0= <i>空白字串</i> (主)$3</code>。",
746746 /**
747747 * $0: max number of categories that can be included
748748 */
749 - 'dpl2_log_' . self::FATAL_TOOMANYCATS => '??: ????! ???: $0? ??: ?? <code>ExtDynamicPageList2::$maxCategoryCount</code> ?????????????? <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> ?????? (??? <code>DynamicPageList2.php</code>??,?<code>LocalSettings.php</code>??????)',
 749+ 'dpl2_log_' . self::FATAL_TOOMANYCATS => '錯誤: 過多分類! 最大值: $0。 說明: 增加 <code>ExtDynamicPageList2::$maxCategoryCount</code> 的值去指定更多的分類或設定 <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> 以解除限制。 (當加上 <code>DynamicPageList2.php</code>後,在<code>LocalSettings.php</code>中設定變數。)',
750750 /**
751751 * $0: min number of categories that have to be included
752752 */
753 - 'dpl2_log_' . self::FATAL_TOOFEWCATS => '??: ????! ???: $0. ??: ?? <code>ExtDynamicPageList2::$minCategoryCount</code> ??????????? (??? <code>DynamicPageList2.php</code>??,?<code>LocalSettings.php</code>???????????)',
 753+ 'dpl2_log_' . self::FATAL_TOOFEWCATS => '錯誤: 過少分類! 最小值: $0。 說明: 減少 <code>ExtDynamicPageList2::$minCategoryCount</code> 的值去指定更少的分類。 (當加上 <code>DynamicPageList2.php</code>後,在<code>LocalSettings.php</code>中設定一個合適的變數。)',
754754 'dpl2_log_' . self::FATAL_NOSELECTION => "ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants",
755 - 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "??: ?????? 'addfirstcategorydate=true' ?? 'ordermethod=categoryadd' ,???????????!",
756 - 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "??: ???????????,????? 'addfirstcategorydate=true' ?? 'ordermethod=categoryadd'!",
757 - 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => '??: ???????????????????!',
 755+ 'dpl2_log_' . self::FATAL_CATDATEBUTNOINCLUDEDCATS => "錯誤: 如果您想用 'addfirstcategorydate=true' 或 'ordermethod=categoryadd' ,您需要包含最少一個分類!",
 756+ 'dpl2_log_' . self::FATAL_CATDATEBUTMORETHAN1CAT => "錯誤: 如果您包含多一個分類,您不可以用 'addfirstcategorydate=true' 或 'ordermethod=categoryadd'!",
 757+ 'dpl2_log_' . self::FATAL_MORETHAN1TYPEOFDATE => '錯誤: 您不可以在一個時間裡加入多於一種的日期!',
758758 /**
759759 * $0: param=val that is possible only with $1 as last 'ordermethod' parameter
760760 * $1: last 'ordermethod' parameter required for $0
761761 */
762 - 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "??: ????? 'ordermethod=[...,]$1' ? '$0' ?!",
 762+ 'dpl2_log_' . self::FATAL_WRONGORDERMETHOD => "錯誤: 你只可以用 'ordermethod=[...,]$1' 在 '$0' 上!",
763763 /**
764764 * $0: the number of arguments in includepage
765765 */
@@ -775,34 +775,34 @@
776776 * $0: unknown parameter given by user
777777 * $1: list of DPL2 available parameters separated by ', '
778778 */
779 - 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "??: ????? '$0' ???? ??: ?????: <code>$1</code>?",
 779+ 'dpl2_log_' . self::WARN_UNKNOWNPARAM => "警告: 不明的參數 '$0' 被忽略。 說明: 可用的參數: <code>$1</code>。",
780780 /**
781781 * $3: list of valid param values separated by ' | '
782782 */
783 - 'dpl2_log_' . self::WARN_WRONGPARAM => "??: ??? '$0' ??: '$1'! ?????: '$2'? ??: <code>$0= $3</code>?",
 783+ 'dpl2_log_' . self::WARN_WRONGPARAM => "警告: 錯誤的 '$0' 參數: '$1'! 正在使用預設值: '$2'。 說明: <code>$0= $3</code>。",
784784 /**
785785 * $0: param name
786786 * $1: wrong param value given by user
787787 * $2: default param value used instead by program
788788 */
789 - 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "??: ??? '$0' ??: '$1'! ?????: '$2' (???)? ??: <code>$0= <i>???</i> (???) | n</code>, <code>n</code>???????",
790 - 'dpl2_log_' . self::WARN_NORESULTS => '??: ???!',
791 - 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "??: ??* ?? ('adduser', 'addeditdate', ?)' ?? 'mode=category' ???????????/??????????????",
 789+ 'dpl2_log_' . self::WARN_WRONGPARAM_INT => "警告: 錯誤的 '$0' 參數: '$1'! 正在使用預設值: '$2' (沒有上限)。 說明: <code>$0= <i>空白字串</i> (沒有上限) | n</code>, <code>n</code>是一個正整數。",
 790+ 'dpl2_log_' . self::WARN_NORESULTS => '警告: 無結果!',
 791+ 'dpl2_log_' . self::WARN_CATOUTPUTBUTWRONGPARAMS => "警告: 加入* 參數 ('adduser', 'addeditdate', 等)' 是對 'mode=category' 沒有作用。只有頁面空間名/標題才可以在這個模式度看到。",
792792 /**
793793 * $0: 'headingmode' value given by user
794794 * $1: value used instead by program (which means no heading)
795795 */
796 - 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "??: ??????, 'ordermethod' ?? 'headingmode=$0' ?????? ??: '$1'? ??: ?????$1 'headingmode' ??,??????? 'ordermethod' ?????????????????????? 'ordermethod=category,<i>comp</i>' (<i>comp</i>???????) ?",
 796+ 'dpl2_log_' . self::WARN_HEADINGBUTSIMPLEORDERMETHOD => "警告: 在單一部件中, 'ordermethod' 用 'headingmode=$0' 是沒有作用的。 正在使用: '$1'。 說明: 你可以用非$1 'headingmode' 數值,在多個部件中用 'ordermethod' 。第一個部是用來作標題。例如在分類標題中用 'ordermethod=category,<i>comp</i>' (<i>comp</i>是另外一個部件) 。",
797797 /**
798798 * $0: 'debug' value
799799 */
800 - 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "??: 'debug=$0' ??????DPL??????????????????????????????????",
 800+ 'dpl2_log_' . self::WARN_DEBUGPARAMNOTFIRST => "警告: 'debug=$0' 不是第一個在DPL元素嘅第一位置。新的除錯設定在所有參數都能處理和檢查前都不會應用。",
801801
802802 // DEBUG
803803 /**
804804 * $0: SQL query executed to generate the dynamic page list
805805 */
806 - 'dpl2_log_' . self::DEBUG_QUERY => '??: <code>$0</code>',
 806+ 'dpl2_log_' . self::DEBUG_QUERY => '查訽: <code>$0</code>',
807807
808808 /*
809809 Output formatting
@@ -810,10 +810,15 @@
811811 /**
812812 * $1: number of articles
813813 */
814 - 'dpl2_articlecount' => '???????$1???'
 814+ 'dpl2_articlecount' => '在這個標題中有$1篇條目。'
815815 );
816 - self::$messages['zh-hk'] = self::$messages['zh-tw'];
817 - self::$messages['zh-sg'] = self::$messages['zh-cn'];
 816+ self::$messages['zh-cn'] = self::$messages['zh-hans'];
 817+ self::$messages['zh-hk'] = self::$messages['zh-hant'];
 818+ self::$messages['zh-mo'] = self::$messages['zh-hant'];
 819+ self::$messages['zh-my'] = self::$messages['zh-hans'];
 820+ self::$messages['zh-sg'] = self::$messages['zh-hans'];
 821+ self::$messages['zh-tw'] = self::$messages['zh-hant'];
 822+ self::$messages['zh-yue'] = self::$messages['yue'];
818823 return self::$messages;
819824 }
820825 }
Index: trunk/extensions/DynamicPageList/DynamicPageList2.php
@@ -27,7 +27,7 @@
2828 * addcategories: bug fixed
2929 * CATLIST variable defined
3030 * @version 0.9.3
31 - * allow � as an alias for |
 31+ * allow ¦ as an alias for |
3232 * escapelinks= introduced
3333 * @version 0.9.4
3434 * allow "-" with categories =
@@ -273,8 +273,17 @@
274274 * @version 1.7.4
275275 * new command: imagecontainer
276276 * @version 1.7.5
277 -
278 - * ! when making changes here you must update the VERSION constant at the beginning of class ExtSynamicPageList2 !
 277+ * suppresserrors
 278+ * changed UPPER to LOWER in all SQL statements which ignore case
 279+ * added updaterules feature
 280+ * includematch now also works with include=*; note that it always tries to match the raw text, including template parameters
 281+ * allowcachedresults accepts now 'yes+warn'
 282+ * usedby
 283+ * CATBULLETS variable
 284+ * @version 1.7.6
 285+ * error correction: non existing array index 0 when trying to includematch content in a non-existing chapter (near #3887)
 286+ *
 287+ * ! when making changes here you must update the VERSION constant at the beginning of class ExtDynamicPageList2 !
279288 */
280289
281290 /**
@@ -292,11 +301,9 @@
293302 $wgExtensionCredits['parserhook'][] = array(
294303 'path' => __FILE__,
295304 'name' => 'DynamicPageList2',
296 - 'author' => '[http://en.wikinews.org/wiki/User:IlyaHaykinson IlyaHaykinson], [http://en.wikinews.org/wiki/User:Amgine Amgine],'
297 - .'[http://de.wikipedia.org/wiki/Benutzer:Unendlich Unendlich], [http://meta.wikimedia.org/wiki/User:Dangerman Cyril Dangerville],'
298 - .'[http://de.wikipedia.org/wiki/Benutzer:Algorithmix Algorithmix]',
 305+ 'author' => array( "[http://en.wikinews.org/wiki/User:IlyaHaykinson IlyaHaykinson]", "[http://en.wikinews.org/wiki/User:Amgine Amgine]", "[http://de.wikipedia.org/wiki/Benutzer:Unendlich Unendlich]", "[http://meta.wikimedia.org/wiki/User:Dangerman Cyril Dangerville]", "[http://de.wikipedia.org/wiki/Benutzer:Algorithmix Algorithmix]" ),
299306 'url' => 'http://www.mediawiki.org/wiki/Extension:DynamicPageList',
300 - 'description' => 'based on [http://www.mediawiki.org/wiki/Extension:DynamicPageList DynamicPageList], featuring many improvements',
 307+ 'description' => 'a highly flexible report generator for MediaWikis - manual and examples: see [http://semeb.com/dpldemo]',
301308 'version' => ExtDynamicPageList2::VERSION
302309 );
303310
@@ -313,7 +320,7 @@
314321
315322 class ExtDynamicPageList2
316323 {
317 - const VERSION = '1.7.4'; // current version
 324+ const VERSION = '1.7.6'; // current version
318325
319326 /**
320327 * Extension options
@@ -344,7 +351,7 @@
345352 'addauthor' => array('default' => 'false', 'true', 'no', 'yes', '0', '1', 'off', 'on'),
346353 'addcontribution' => array('default' => 'false', 'true', 'no', 'yes', '0', '1', 'off', 'on'),
347354 'addlasteditor' => array('default' => 'false', 'true', 'no', 'yes', '0', '1', 'off', 'on'),
348 - 'allowcachedresults' => array('default' => 'false', 'true', 'no', 'yes', '0', '1', 'off', 'on'),
 355+ 'allowcachedresults' => array('default' => 'false', 'true', 'no', 'yes', '0', '1', 'off', 'on', 'yes+warn'),
349356 /**
350357 * search for a page with the same title in another namespace (this is normally the article to a talk page)
351358 */
@@ -497,7 +504,7 @@
498505 /**
499506 * listseparators is an array of four tags (in html or wiki syntax) which defines the output of DPL2
500507 * if mode = 'userformat' was specified.
501 - * '\n' or '�' in the input will be interpreted as a newline character.
 508+ * '\n' or '¶' in the input will be interpreted as a newline character.
502509 * '%xxx%' in the input will be replaced by a corresponding value (xxx= PAGE, NR, COUNT etc.)
503510 * t1 and t4 are the "outer envelope" for the whole result list,
504511 * t2,t3 form an inner envelope around the article name of each entry.
@@ -553,6 +560,10 @@
554561 */
555562 'notuses' => array('default' => ''),
556563 /**
 564+ * this parameter restricts the output to the template used by the specified page.
 565+ */
 566+ 'usedby' => array('default' => ''),
 567+ /**
557568 * allows to specify a username who must be the first editor of the pages we select
558569 */
559570 'createdby' => NULL,
@@ -632,12 +643,14 @@
633644 */
634645 'titlematch' => NULL,
635646 'titleregexp' => NULL,
 647+ 'userdateformat' => array('default' => ''),
 648+ 'updaterules' => array('default' => ''),
 649+ 'deleterules' => array('default' => ''),
 650+
636651 /**
637652 * nottitlematch is a (SQL-LIKE-expression) pattern
638653 * which excludes pages matching that pattern from the result
639654 */
640 - 'userdateformat' => array('default' => ''),
641 -
642655 'nottitlematch' => NULL,
643656 'nottitleregexp' => NULL,
644657 'order' => array('default' => 'ascending', 'ascending', 'descending'),
@@ -680,6 +693,7 @@
681694 * if the result set is empty; setting 'noresultsheader' to something like ' ' will suppress
682695 * the warning about empty result set.
683696 */
 697+ 'suppresserrors' => array('default' => 'false', 'true', 'no', 'yes', '0', '1', 'off', 'on'),
684698 'noresultsheader' => array('default' => ''),
685699 'noresultsfooter' => array('default' => ''),
686700 /**
@@ -784,7 +798,7 @@
785799 // phase of the MediaWiki parser
786800
787801 public static function setup() {
788 - // Page Transclusion, adopted from Steve Sanbeg�s LabeledSectionTransclusion
 802+ // Page Transclusion, adopted from Steve Sanbeg´s LabeledSectionTransclusion
789803 require_once( 'DynamicPageList2Include.php' );
790804
791805 global $wgParser, $wgMessageCache;
@@ -889,7 +903,7 @@
890904 $numargs = func_num_args();
891905 if ($numargs < 2) {
892906 $input = "#dpl: no arguments specified";
893 - return str_replace('�','<','�pre>�nowiki>'.$input.'�/nowiki>�/pre>');
 907+ return str_replace('§','<','§pre>§nowiki>'.$input.'§/nowiki>§/pre>');
894908 }
895909
896910 // fetch all user-provided arguments (skipping $parser)
@@ -899,7 +913,7 @@
900914 $input .= str_replace("\n","",$p1) ."\n";
901915 }
902916 // for debugging you may want to uncomment the following statement
903 - // return str_replace('�','<','�pre>�nowiki>'.$input.'�/nowiki>�/pre>');
 917+ // return str_replace('§','<','§pre>§nowiki>'.$input.'§/nowiki>§/pre>');
904918
905919
906920 // $dump1 = self::dumpParsedRefs($parser,"before DPL func");
@@ -1158,6 +1172,7 @@
11591173
11601174 $sRedirects = self::$options['redirects']['default'];
11611175
 1176+ $bSuppressErrors = self::argBoolean(self::$options['suppresserrors']['default']);
11621177 $sResultsHeader = self::$options['resultsheader']['default'];
11631178 $sResultsFooter = self::$options['resultsfooter']['default'];
11641179 $sNoResultsHeader = self::$options['noresultsheader']['default'];
@@ -1190,6 +1205,7 @@
11911206 $bAddLastEditor = self::argBoolean(self::$options['addlasteditor']['default']);
11921207
11931208 $bAllowCachedResults = self::argBoolean(self::$options['allowcachedresults']['default']);
 1209+ $bWarnCachedResults = false;
11941210
11951211 $sUserDateFormat = self::$options['userdateformat']['default'];
11961212
@@ -1268,6 +1284,7 @@
12691285
12701286 $aUses = array();
12711287 $aNotUses = array();
 1288+ $aUsedBy = array();
12721289
12731290 $sCreatedBy = '';
12741291 $sNotCreatedBy = '';
@@ -1292,6 +1309,9 @@
12931310
12941311 $sArticleCategory = null;
12951312
 1313+ $sUpdateRules = self::$options['updaterules']['default'];
 1314+ $sDeleteRules = self::$options['deleterules']['default'];
 1315+
12961316 // Output
12971317 $output = '';
12981318
@@ -1299,16 +1319,16 @@
13001320 // ###### PARSE PARAMETERS ######
13011321
13021322 // we replace double angle brackets by < > ; thus we avoid premature tag expansion in the input
1303 - $input = str_replace('»','>',$input);
1304 - $input = str_replace('«','<',$input);
 1323+ $input = str_replace('»','>',$input);
 1324+ $input = str_replace('«','<',$input);
13051325
1306 - // use the � as a general alias for |
1307 - $input = str_replace('¦','|',$input); // the symbol is utf8-escaped
 1326+ // use the ¦ as a general alias for |
 1327+ $input = str_replace('¦','|',$input); // the symbol is utf8-escaped
13081328
1309 - // the combination '�{' and '}�'will be translated to double curly braces; this allows postponed template execution
 1329+ // the combination '²{' and '}²'will be translated to double curly braces; this allows postponed template execution
13101330 // which is crucial for DPL queries which call other DPL queries
1311 - $input = str_replace('²{','{{',$input);
1312 - $input = str_replace('}²','}}',$input);
 1331+ $input = str_replace('²{','{{',$input);
 1332+ $input = str_replace('}²','}}',$input);
13131333
13141334 $aParams = explode("\n", $input);
13151335 $bIncludeUncat = false; // to check if pseudo-category of Uncategorized pages is included
@@ -1568,6 +1588,19 @@
15691589 $bConflictsWithOpenReferences=true;
15701590 break;
15711591
 1592+ case 'usedby':
 1593+ $pages = explode('|', $sArg);
 1594+ $n=0;
 1595+ foreach($pages as $page) {
 1596+ if (trim($page)=='') continue;
 1597+ if (!($theTitle = Title::newFromText(trim($page)))) return $logger->msgWrongParam('usedby', $sArg);
 1598+ $aUsedBy[$n++] = $theTitle;
 1599+ $bSelectionCriteriaFound=true;
 1600+ }
 1601+ if(!$bSelectionCriteriaFound) return $logger->msgWrongParam('usedby', $sArg);
 1602+ $bConflictsWithOpenReferences=true;
 1603+ break;
 1604+
15721605 case 'createdby':
15731606 $sCreatedBy = $sArg;
15741607 if ($sCreatedBy != '') $bSelectionCriteriaFound=true;
@@ -1999,7 +2032,7 @@
20002033 // parsing of wikitext will happen at the end of the output phase
20012034 // we replace '\n' in the input by linefeed because wiki syntax depends on linefeeds
20022035 $sArg = str_replace( '\n', "\n", $sArg );
2003 - $sArg = str_replace( "¶", "\n", $sArg ); // the paragraph delimiter is utf8-escaped
 2036+ $sArg = str_replace( "¶", "\n", $sArg ); // the paragraph delimiter is utf8-escaped
20042037 $aListSeparators = explode (',', $sArg, 4);
20052038 // mode=userformat will be automatically assumed
20062039 $sPageListMode='userformat';
@@ -2009,25 +2042,25 @@
20102043 case 'secseparators':
20112044 // we replace '\n' by newline to support wiki syntax within the section separators
20122045 $sArg = str_replace( '\n', "\n", $sArg );
2013 - $sArg = str_replace( "¶", "\n", $sArg ); // the paragraph delimiter is utf8-escaped
 2046+ $sArg = str_replace( "¶", "\n", $sArg ); // the paragraph delimiter is utf8-escaped
20142047 $aSecSeparators = explode (',',$sArg);
20152048 break;
20162049
20172050 case 'multisecseparators':
20182051 // we replace '\n' by newline to support wiki syntax within the section separators
20192052 $sArg = str_replace( '\n', "\n", $sArg );
2020 - $sArg = str_replace( "¶", "\n", $sArg ); // the paragraph delimiter is utf8-escaped
 2053+ $sArg = str_replace( "¶", "\n", $sArg ); // the paragraph delimiter is utf8-escaped
20212054 $aMultiSecSeparators = explode (',',$sArg);
20222055 break;
20232056
20242057 case 'table':
20252058 $sArg = str_replace( '\n', "\n", $sArg );
2026 - $sTable = str_replace( "¶", "\n", $sArg ); // the paragraph delimiter is utf8-escaped
 2059+ $sTable = str_replace( "¶", "\n", $sArg ); // the paragraph delimiter is utf8-escaped
20272060 break;
20282061
20292062 case 'tablerow':
20302063 $sArg = str_replace( '\n', "\n", $sArg );
2031 - $sArg = str_replace( "¶", "\n", $sArg ); // the paragraph delimiter is utf8-escaped
 2064+ $sArg = str_replace( "¶", "\n", $sArg ); // the paragraph delimiter is utf8-escaped
20322065 if (trim($sArg)=='') $aTableRow = array();
20332066 else $aTableRow = explode (',',$sArg);
20342067 break;
@@ -2095,6 +2128,16 @@
20962129 case 'noresultsheader':
20972130 $sNoResultsHeader = $sArg;
20982131 break;
 2132+ case 'suppresserrors':
 2133+ if( in_array($sArg, self::$options['suppresserrors'])) {
 2134+ $bSuppressErrors = self::argBoolean($sArg);
 2135+ if( $bSuppressErrors ) $sNoResultsHeader = ' ';
 2136+ }
 2137+ else {
 2138+ $output .= $logger->msgWrongParam('suppresserrors', $sArg);
 2139+ }
 2140+ break;
 2141+
20992142 case 'noresultsfooter':
21002143 $sNoResultsFooter = $sArg;
21012144 break;
@@ -2106,12 +2149,32 @@
21072150 break;
21082151
21092152 /**
 2153+ * UPDATERULES
 2154+ */
 2155+
 2156+ case 'updaterules':
 2157+ $sUpdateRules = $sArg;
 2158+ break;
 2159+
 2160+ /**
 2161+ * DELETERULES
 2162+ */
 2163+
 2164+ case 'deleterules':
 2165+ $sDeleteRules = $sArg;
 2166+ break;
 2167+
 2168+ /**
21102169 * DEBUG, RESET and CACHE PARAMETER
21112170 */
21122171
21132172 case 'allowcachedresults':
21142173 if( in_array($sArg, self::$options['allowcachedresults'])) {
21152174 $bAllowCachedResults = self::argBoolean($sArg);
 2175+ if ($sArg=='yes+warn') {
 2176+ $bAllowCachedResults = true;
 2177+ $bWarnCachedResults = true;
 2178+ }
21162179 }
21172180 else
21182181 $output .= $logger->msgWrongParam('allowcachedresults', $sArg);
@@ -2188,6 +2251,9 @@
21892252
21902253 // disable parser cache
21912254 if ( !$bAllowCachedResults) $parser->disableCache();
 2255+
 2256+ // place cache warning in resultsheader
 2257+ if ($bWarnCachedResults) $sResultsHeader = '{{DPL Cache Warning}}' . $sResultsHeader;
21922258
21932259 if ($calledInMode=='tag') {
21942260 // in tag mode 'eliminate' is the same as 'reset' for tpl,cat,img
@@ -2387,6 +2453,7 @@
23882454 $sTemplateLinksTable = $dbr->tableName( 'templatelinks' );
23892455 $sSqlPageLinksTable = '';
23902456 $sSqlCond_page_pl = '';
 2457+ $sSqlCond_page_tpl = '';
23912458 $sSqlCond_MaxCat = '';
23922459 $sSqlWhere = ' WHERE 1=1 ';
23932460 $sSqlSelPage = ''; // initial page for selection
@@ -2432,14 +2499,14 @@
24332500 // UTF-8 created problems with non-utf-8 MySQL databases
24342501 //see line 2011 (order method sortkey requires category
24352502 if (in_array('category',$aOrderMethods)) {
2436 - $sSqlSortkey = ", IFNULL(cl_head.cl_sortkey, REPLACE(REPLACE(CONCAT( IF(".$sPageTable.".page_namespace=0, '', CONCAT(" . $sSqlNsIdToText . ", ':')), ".$sPageTable.".page_title), '_', ' '),'♣','⣣')) ".$sOrderCollation." as sortkey";
 2503+ $sSqlSortkey = ", IFNULL(cl_head.cl_sortkey, REPLACE(REPLACE(CONCAT( IF(".$sPageTable.".page_namespace=0, '', CONCAT(" . $sSqlNsIdToText . ", ':')), ".$sPageTable.".page_title), '_', ' '),'♣','⣣')) ".$sOrderCollation." as sortkey";
24372504 }
24382505 else {
2439 - $sSqlSortkey = ", IFNULL(cl0.cl_sortkey, REPLACE(REPLACE(CONCAT( IF(".$sPageTable.".page_namespace=0, '', CONCAT(" . $sSqlNsIdToText . ", ':')), ".$sPageTable.".page_title), '_', ' '),'♣','⣣')) ".$sOrderCollation." as sortkey";
 2506+ $sSqlSortkey = ", IFNULL(cl0.cl_sortkey, REPLACE(REPLACE(CONCAT( IF(".$sPageTable.".page_namespace=0, '', CONCAT(" . $sSqlNsIdToText . ", ':')), ".$sPageTable.".page_title), '_', ' '),'♣','⣣')) ".$sOrderCollation." as sortkey";
24402507 }
24412508 break;
24422509 case 'titlewithoutnamespace':
2443 - $sSqlSortkey = ", REPLACE(page_title,'♣','⣣') ".$sOrderCollation." as sortkey";
 2510+ $sSqlSortkey = ", REPLACE(page_title,'♣','⣣') ".$sOrderCollation." as sortkey";
24442511 break;
24452512 case 'pagesel':
24462513 $sSqlSortkey = ", CONCAT(pl.pl_namespace,pl.pl_title) ".$sOrderCollation." as sortkey";
@@ -2452,7 +2519,7 @@
24532520 foreach($aStrictNs as $iNs => $sNs)
24542521 $sSqlNsIdToText .= ' WHEN ' . intval( $iNs ) . " THEN " . $dbr->addQuotes( $sNs ) ;
24552522 $sSqlNsIdToText .= ' END';
2456 - $sSqlSortkey = ", REPLACE(REPLACE(CONCAT( IF(pl_namespace=0, '', CONCAT(" . $sSqlNsIdToText . ", ':')), pl_title), '_', ' '),'♣','⣣') ".$sOrderCollation." as sortkey";
 2523+ $sSqlSortkey = ", REPLACE(REPLACE(CONCAT( IF(pl_namespace=0, '', CONCAT(" . $sSqlNsIdToText . ", ':')), pl_title), '_', ' '),'♣','⣣') ".$sOrderCollation." as sortkey";
24572524 }
24582525 else {
24592526 $sSqlNsIdToText = 'CASE '.$sPageTable.'.page_namespace';
@@ -2460,7 +2527,7 @@
24612528 $sSqlNsIdToText .= ' WHEN ' . intval( $iNs ) . " THEN " . $dbr->addQuotes( $sNs ) ;
24622529 $sSqlNsIdToText .= ' END';
24632530 // Generate sortkey like for category links. UTF-8 created problems with non-utf-8 MySQL databases
2464 - $sSqlSortkey = ", REPLACE(REPLACE(CONCAT( IF(".$sPageTable.".page_namespace=0, '', CONCAT(" . $sSqlNsIdToText . ", ':')), ".$sPageTable.".page_title), '_', ' '),'♣','⣣') ".$sOrderCollation." as sortkey";
 2531+ $sSqlSortkey = ", REPLACE(REPLACE(CONCAT( IF(".$sPageTable.".page_namespace=0, '', CONCAT(" . $sSqlNsIdToText . ", ':')), ".$sPageTable.".page_title), '_', ' '),'♣','⣣') ".$sOrderCollation." as sortkey";
24652532 }
24662533 break;
24672534 case 'user':
@@ -2479,7 +2546,7 @@
24802547 foreach ($aLinksTo as $link) {
24812548 if ($n>0) $sSqlCond_page_pl .= ' OR ';
24822549 $sSqlCond_page_pl .= '(pl.pl_namespace=' . intval( $link->getNamespace() );
2483 - if ($bIgnoreCase) $sSqlCond_page_pl .= " AND UPPER(pl.pl_title)=UPPER(" . $dbr->addQuotes( $link->getDBKey() ).'))';
 2550+ if ($bIgnoreCase) $sSqlCond_page_pl .= " AND LOWER(pl.pl_title)=LOWER(" . $dbr->addQuotes( $link->getDBKey() ).'))';
24842551 else $sSqlCond_page_pl .= " AND pl.pl_title=" . $dbr->addQuotes( $link->getDBKey() ).')';
24852552 $n++;
24862553 }
@@ -2493,7 +2560,7 @@
24942561 foreach ($aNotLinksTo as $link) {
24952562 if ($n>0) $sSqlCond_page_pl .= ' OR ';
24962563 $sSqlCond_page_pl .= '('.$sPageLinksTable.'.pl_namespace=' . intval($link->getNamespace());
2497 - if ($bIgnoreCase) $sSqlCond_page_pl .= ' AND UPPER('.$sPageLinksTable.'.pl_title)=UPPER(' . $dbr->addQuotes( $link->getDBKey() ).'))';
 2564+ if ($bIgnoreCase) $sSqlCond_page_pl .= ' AND LOWER('.$sPageLinksTable.'.pl_title)=LOWER(' . $dbr->addQuotes( $link->getDBKey() ).'))';
24982565 else $sSqlCond_page_pl .= ' AND '.$sPageLinksTable.'.pl_title=' . $dbr->addQuotes( $link->getDBKey() ).')';
24992566 $n++;
25002567 }
@@ -2559,7 +2626,7 @@
25602627 $n=0;
25612628 foreach ($aImageUsed as $link) {
25622629 if ($n>0) $sSqlCond_page_pl .= ' OR ';
2563 - if ($bIgnoreCase) $sSqlCond_page_pl .= "UPPER(il.il_to)=UPPER(" . $dbr->addQuotes( $link->getDBKey() ).')';
 2630+ if ($bIgnoreCase) $sSqlCond_page_pl .= "LOWER(il.il_to)=LOWER(" . $dbr->addQuotes( $link->getDBKey() ).')';
25642631 else $sSqlCond_page_pl .= "il.il_to=" . $dbr->addQuotes( $link->getDBKey() );
25652632 $n++;
25662633 }
@@ -2578,7 +2645,7 @@
25792646 $n=0;
25802647 foreach ($aImageContainer as $link) {
25812648 if ($n>0) $sSqlCond_page_pl .= ' OR ';
2582 - if ($bIgnoreCase) $sSqlCond_page_pl .= "UPPER(ic.il_from)=UPPER(" . $dbr->addQuotes( $link->getArticleID() ).')';
 2649+ if ($bIgnoreCase) $sSqlCond_page_pl .= "LOWER(ic.il_from)=LOWER(" . $dbr->addQuotes( $link->getArticleID() ).')';
25832650 else $sSqlCond_page_pl .= "ic.il_from=" . $dbr->addQuotes( $link->getArticleID() );
25842651 $n++;
25852652 }
@@ -2593,7 +2660,7 @@
25942661 foreach ($aUses as $link) {
25952662 if ($n>0) $sSqlCond_page_pl .= ' OR ';
25962663 $sSqlCond_page_pl .= '(tl.tl_namespace=' . intval( $link->getNamespace() );
2597 - if ($bIgnoreCase) $sSqlCond_page_pl .= " AND UPPER(tl.tl_title)=UPPER(" . $dbr->addQuotes( $link->getDBKey() ).'))';
 2664+ if ($bIgnoreCase) $sSqlCond_page_pl .= " AND LOWER(tl.tl_title)=LOWER(" . $dbr->addQuotes( $link->getDBKey() ).'))';
25982665 else $sSqlCond_page_pl .= " AND tl.tl_title=" . $dbr->addQuotes( $link->getDBKey() ).')';
25992666 $n++;
26002667 }
@@ -2607,13 +2674,40 @@
26082675 foreach ($aNotUses as $link) {
26092676 if ($n>0) $sSqlCond_page_pl .= ' OR ';
26102677 $sSqlCond_page_pl .= '('.$sTemplateLinksTable.'.tl_namespace=' . intval($link->getNamespace());
2611 - if ($bIgnoreCase) $sSqlCond_page_pl .= ' AND UPPER('.$sTemplateLinksTable.'.tl_title)=UPPER(' . $dbr->addQuotes( $link->getDBKey() ).'))';
 2678+ if ($bIgnoreCase) $sSqlCond_page_pl .= ' AND LOWER('.$sTemplateLinksTable.'.tl_title)=LOWER(' . $dbr->addQuotes( $link->getDBKey() ).'))';
26122679 else $sSqlCond_page_pl .= ' AND '.$sTemplateLinksTable.'.tl_title=' . $dbr->addQuotes( $link->getDBKey() ).')';
26132680 $n++;
26142681 }
26152682 $sSqlCond_page_pl .= ') )';
26162683 }
 2684+
 2685+ // usedby
 2686+ if ( count($aUsedBy)>0 ) {
 2687+ if ($acceptOpenReferences) {
 2688+ $sSqlCond_page_tpl .= ' AND (';
 2689+ $n=0;
 2690+ foreach ($aUsedBy as $link) {
 2691+ if ($n>0) $sSqlCond_page_pl .= ' OR ';
 2692+ $sSqlCond_page_tpl .= '(tpl_from=' . $link->getArticleID().')';
 2693+ $n++;
 2694+ }
 2695+ $sSqlCond_page_tpl .= ')';
 2696+ }
 2697+ else {
 2698+ $sSqlPageLinksTable .= $sTemplateLinksTable . ' as tpl, '. $sPageTable . 'as tplsrc, ';
 2699+ $sSqlCond_page_tpl .= ' AND '.$sPageTable.'.page_title = tpl.tl_title AND tplsrc.page_id=tpl.tl_from AND (';
 2700+ $sSqlSelPage = ', tplsrc.page_title as tpl_sel_title, tplsrc.page_namespace as tpl_sel_ns';
 2701+ $n=0;
 2702+ foreach ($aUsedBy as $link) {
 2703+ if ($n>0) $sSqlCond_page_tpl .= ' OR ';
 2704+ $sSqlCond_page_tpl .= '(tpl.tl_from=' . $link->getArticleID().')';
 2705+ $n++;
 2706+ }
 2707+ $sSqlCond_page_tpl .= ')';
 2708+ }
 2709+ }
26172710
 2711+
26182712 // recent changes =============================
26192713
26202714 if ( $bAddContribution ) {
@@ -2651,14 +2745,13 @@
26522746
26532747 if ($bAddAuthor && $sSqlRevisionTable =='') {
26542748 $sSqlRevisionTable = $sRevisionTable . ' AS rev, ';
2655 - $sSqlCond_page_rev = ' AND '.$sPageTable.'.page_id=rev.rev_page AND rev.rev_timestamp=( SELECT MIN(rev_aux.rev_timestamp) FROM ' . $sRevisionTable . ' AS rev_aux WHERE rev_aux.rev_page=rev.rev_page )';
 2749+ $sSqlCond_page_rev .= ' AND '.$sPageTable.'.page_id=rev.rev_page AND rev.rev_timestamp=( SELECT MIN(rev_aux.rev_timestamp) FROM ' . $sRevisionTable . ' AS rev_aux WHERE rev_aux.rev_page=rev.rev_page )';
26562750 }
26572751 if ($bAddLastEditor && $sSqlRevisionTable =='') {
26582752 $sSqlRevisionTable = $sRevisionTable . ' AS rev, ';
2659 - $sSqlCond_page_rev = ' AND '.$sPageTable.'.page_id=rev.rev_page AND rev.rev_timestamp=( SELECT MAX(rev_aux.rev_timestamp) FROM ' . $sRevisionTable . ' AS rev_aux WHERE rev_aux.rev_page=rev.rev_page )';
 2753+ $sSqlCond_page_rev .= ' AND '.$sPageTable.'.page_id=rev.rev_page AND rev.rev_timestamp=( SELECT MAX(rev_aux.rev_timestamp) FROM ' . $sRevisionTable . ' AS rev_aux WHERE rev_aux.rev_page=rev.rev_page )';
26602754 }
26612755
2662 -
26632756 if ($sLastRevisionBefore.$sAllRevisionsBefore.$sFirstRevisionSince.$sAllRevisionsSince != '') {
26642757
26652758 // later during output we are going to create html links to the revisions, so we must enable RawHtml
@@ -2777,7 +2870,7 @@
27782871
27792872 // TitleIs
27802873 if ( $sTitleIs != '' ) {
2781 - if ($bIgnoreCase) $sSqlWhere .= ' AND UPPER('.$sPageTable.'.page_title) = UPPER(' . $dbr->addQuotes($sTitleIs) .')' ;
 2874+ if ($bIgnoreCase) $sSqlWhere .= ' AND LOWER('.$sPageTable.'.page_title) = LOWER(' . $dbr->addQuotes($sTitleIs) .')' ;
27822875 else $sSqlWhere .= ' AND '.$sPageTable.'.page_title = ' . $dbr->addQuotes($sTitleIs) ;
27832876 }
27842877
@@ -2788,10 +2881,10 @@
27892882 foreach ($aTitleMatch as $link) {
27902883 if ($n>0) $sSqlWhere .= ' OR ';
27912884 if ($acceptOpenReferences) {
2792 - if ($bIgnoreCase) $sSqlWhere .= 'UPPER(pl_title)' . $sTitleMatchMode . 'UPPER('. $dbr->addQuotes($link) . ')' ;
 2885+ if ($bIgnoreCase) $sSqlWhere .= 'LOWER(pl_title)' . $sTitleMatchMode . strtolower($dbr->addQuotes($link)) ;
27932886 else $sSqlWhere .= 'pl_title' . $sTitleMatchMode . $dbr->addQuotes($link) ;
27942887 } else {
2795 - if ($bIgnoreCase) $sSqlWhere .= 'UPPER(' . $sPageTable.'.page_title)' . $sTitleMatchMode . 'UPPER('. $dbr->addQuotes($link) .')' ;
 2888+ if ($bIgnoreCase) $sSqlWhere .= 'LOWER(' . $sPageTable.'.page_title)' . $sTitleMatchMode . strtolower($dbr->addQuotes($link)) ;
27962889 else $sSqlWhere .= $sPageTable.'.page_title' . $sTitleMatchMode . $dbr->addQuotes($link) ;
27972890 }
27982891 $n++;
@@ -2806,10 +2899,10 @@
28072900 foreach ($aNotTitleMatch as $link) {
28082901 if ($n>0) $sSqlWhere .= ' OR ';
28092902 if ($acceptOpenReferences) {
2810 - if ($bIgnoreCase) $sSqlWhere .= 'UPPER(pl_title)' . $sNotTitleMatchMode . 'UPPER(' . $dbr->addQuotes($link) . ')';
 2903+ if ($bIgnoreCase) $sSqlWhere .= 'LOWER(pl_title)' . $sNotTitleMatchMode . 'LOWER(' . $dbr->addQuotes($link) . ')';
28112904 else $sSqlWhere .= 'pl_title' . $sNotTitleMatchMode . $dbr->addQuotes($link);
28122905 } else {
2813 - if ($bIgnoreCase) $sSqlWhere .= 'UPPER('.$sPageTable.'.page_title)' . $sNotTitleMatchMode . 'UPPER(' . $dbr->addQuotes($link) .')';
 2906+ if ($bIgnoreCase) $sSqlWhere .= 'LOWER('.$sPageTable.'.page_title)' . $sNotTitleMatchMode . 'LOWER(' . $dbr->addQuotes($link) .')';
28142907 else $sSqlWhere .= $sPageTable.'.page_title' . $sNotTitleMatchMode . $dbr->addQuotes($link);
28152908 }
28162909 $n++;
@@ -2834,7 +2927,7 @@
28352928
28362929 // page_id=rev_page (if revision table required)
28372930 $sSqlWhere .= $sSqlCond_page_rev;
2838 -
 2931+
28392932 // count(all categories) <= max no of categories
28402933 $sSqlWhere .= $sSqlCond_MaxCat;
28412934
@@ -2847,6 +2940,9 @@
28482941 // page_id=pl.pl_from (if pagelinks table required)
28492942 $sSqlWhere .= $sSqlCond_page_pl;
28502943
 2944+ // page_id=tpl.pl_from (if templatelinks table required)
 2945+ $sSqlWhere .= $sSqlCond_page_tpl;
 2946+
28512947 if ( isset($sArticleCategory) && $sArticleCategory !== null ) {
28522948 $sSqlWhere .= " AND $sPageTable.page_title IN (
28532949 select p2.page_title
@@ -2941,8 +3037,8 @@
29423038 }
29433039
29443040 if ($dbr->numRows( $res ) <= 0) {
2945 - if ($sNoResultsHeader != '') $output .= str_replace( '\n', "\n", str_replace( "¶", "\n", $sNoResultsHeader));
2946 - if ($sNoResultsFooter != '') $output .= str_replace( '\n', "\n", str_replace( "¶", "\n", $sNoResultsFooter));
 3041+ if ($sNoResultsHeader != '') $output .= str_replace( '\n', "\n", str_replace( "¶", "\n", $sNoResultsHeader));
 3042+ if ($sNoResultsFooter != '') $output .= str_replace( '\n', "\n", str_replace( "¶", "\n", $sNoResultsFooter));
29473043 if ($sNoResultsHeader == '' && $sNoResultsFooter == '') $output .= $logger->escapeMsg(DPL2_i18n::WARN_NORESULTS);
29483044 $dbr->freeResult( $res );
29493045 return $output;
@@ -3093,7 +3189,7 @@
30943190
30953191 //USER/AUTHOR(S)
30963192 // because we are going to do a recursive parse at the end of the output phase
3097 - // we have to generate wiki syntax for linking to a user�s homepage
 3193+ // we have to generate wiki syntax for linking to a user´s homepage
30983194 if($bAddUser || $bAddAuthor || $bAddLastEditor || $sLastRevisionBefore.$sAllRevisionsBefore.$sFirstRevisionSince.$sAllRevisionsSince != '') {
30993195 $dplArticle->mUserLink = '[[User:'.$row->rev_user_text.'|'.$row->rev_user_text.']]';
31003196 $dplArticle->mUser = $row->rev_user_text;
@@ -3156,7 +3252,7 @@
31573253 $dpl = new DPL2($aHeadings, $bHeadingCount, $iColumns, $iRows, $iRowSize, $sRowColFormat, $aArticles,
31583254 $aOrderMethods[0], $hListMode, $listMode, $bEscapeLinks, $bIncPage, $iIncludeMaxLen,
31593255 $aSecLabels, $aSecLabelsMatch, $aSecLabelsNotMatch, $bIncParsed, $parser, $logger, $aReplaceInTitle,
3160 - $iTitleMaxLen, $defaultTemplateSuffix, $aTableRow, $bIncludeTrim, $iTableSortCol);
 3256+ $iTitleMaxLen, $defaultTemplateSuffix, $aTableRow, $bIncludeTrim, $iTableSortCol, $sUpdateRules, $sDeleteRules);
31613257
31623258 if ($rowcount == -1) $rowcount = $dpl->getRowCount();
31633259 $dpl2result = $dpl->getText();
@@ -3164,14 +3260,14 @@
31653261 if ($sOneResultHeader != '' && $rowcount==1) {
31663262 $header = str_replace('%PAGES%',1,$sOneResultHeader);
31673263 } else if ($rowcount==0) {
3168 - if ($sNoResultsHeader != '') $output .= str_replace( '\n', "\n", str_replace( "¶", "\n", $sNoResultsHeader));
3169 - if ($sNoResultsFooter != '') $output .= str_replace( '\n', "\n", str_replace( "¶", "\n", $sNoResultsFooter));
 3264+ if ($sNoResultsHeader != '') $output .= str_replace( '\n', "\n", str_replace( "¶", "\n", $sNoResultsHeader));
 3265+ if ($sNoResultsFooter != '') $output .= str_replace( '\n', "\n", str_replace( "¶", "\n", $sNoResultsFooter));
31703266 if ($sNoResultsHeader == '' && $sNoResultsFooter == '') $output .= $logger->escapeMsg(DPL2_i18n::WARN_NORESULTS);
31713267 }
31723268 else {
31733269 if ($sResultsHeader != '') $header = str_replace('%TOTALPAGES%',$rowcount,str_replace('%PAGES%',$rowcount,$sResultsHeader));
31743270 }
3175 - $header = str_replace( '\n', "\n", str_replace( "¶", "\n", $header ));
 3271+ $header = str_replace( '\n', "\n", str_replace( "¶", "\n", $header ));
31763272 $header = str_replace('%VERSION%', self::VERSION,$header);
31773273 $footer='';
31783274 if ($sOneResultFooter != '' && $rowcount==1) {
@@ -3179,7 +3275,7 @@
31803276 } else {
31813277 if ($sResultsFooter != '') $footer = str_replace('%TOTALPAGES%',$rowcount,str_replace('%PAGES%',$rowcount,$sResultsFooter));
31823278 }
3183 - $footer = str_replace( '\n', "\n", str_replace( "¶", "\n", $footer ));
 3279+ $footer = str_replace( '\n', "\n", str_replace( "¶", "\n", $footer ));
31843280 $footer = str_replace('%VERSION%', self::VERSION, $footer);
31853281
31863282 $output .= $header . $dpl2result . $footer;
@@ -3478,7 +3574,7 @@
34793575 function DPL2($headings, $bHeadingCount, $iColumns, $iRows, $iRowSize, $sRowColFormat, $articles, $headingtype, $hlistmode,
34803576 $listmode, $bescapelinks, $includepage, $includemaxlen, $includeseclabels, $includeseclabelsmatch,
34813577 $includeseclabelsnotmatch, $includematchparsed, &$parser, $logger, $replaceInTitle, $iTitleMaxLen,
3482 - $defaultTemplateSuffix, $aTableRow, $bIncludeTrim, $iTableSortCol ) {
 3578+ $defaultTemplateSuffix, $aTableRow, $bIncludeTrim, $iTableSortCol, $updateRules, $deleteRules ) {
34833579 global $wgContLang;
34843580 $this->nameSpaces = $wgContLang->getNamespaces();
34853581 $this->mArticles = $articles;
@@ -3534,13 +3630,13 @@
35353631 $greml -= $portion;
35363632 // $this->mOutput .= "nsize=$nsize, portion=$portion, greml=$greml";
35373633 if ($greml>0) {
3538 - $this->mOutput .= $this->formatList($nstart-$offset, $portion, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol);
 3634+ $this->mOutput .= $this->formatList($nstart-$offset, $portion, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol, $updateRules, $deleteRules);
35393635 $nstart += $portion;
35403636 $portion=0;
35413637 break;
35423638 }
35433639 else {
3544 - $this->mOutput .= $this->formatList($nstart-$offset, $portion+$greml, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol);
 3640+ $this->mOutput .= $this->formatList($nstart-$offset, $portion+$greml, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol, $updateRules, $deleteRules);
35453641 $nstart += ($portion+$greml);
35463642 $portion = (-$greml);
35473643 if ($iColumns!=1) $this->mOutput .= "\n|valign=top|\n";
@@ -3567,7 +3663,7 @@
35683664 $this->mOutput .= $hlistmode->sItemStart;
35693665 $this->mOutput .= $hlistmode->sHeadingStart . $headingLink . $hlistmode->sHeadingEnd;
35703666 if ($bHeadingCount) $this->mOutput .= $this->formatCount($headingCount);
3571 - $this->mOutput .= $this->formatList($headingStart, $headingCount, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol);
 3667+ $this->mOutput .= $this->formatList($headingStart, $headingCount, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol, $updateRules, $deleteRules);
35723668 $this->mOutput .= $hlistmode->sItemEnd;
35733669 $headingStart += $headingCount;
35743670 }
@@ -3584,7 +3680,7 @@
35853681 if ($rest>0) $nsize += 1;
35863682 $this->mOutput .= "{|".$sRowColFormat."\n|\n";
35873683 for ($g=0;$g<$iGroup;$g++) {
3588 - $this->mOutput .= $this->formatList($nstart, $nsize, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol);
 3684+ $this->mOutput .= $this->formatList($nstart, $nsize, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol, $updateRules, $deleteRules);
35893685 if ($iColumns!=1) $this->mOutput .= "\n|valign=top|\n";
35903686 else $this->mOutput .= "\n|-\n|\n";
35913687 $nstart = $nstart + $nsize;
@@ -3600,14 +3696,14 @@
36013697 $this->mOutput .= '{|'.$sRowColFormat."\n|\n";
36023698 do {
36033699 if ($nstart+$nsize > $count) $nsize = $count - $nstart;
3604 - $this->mOutput .= $this->formatList($nstart, $nsize, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol);
 3700+ $this->mOutput .= $this->formatList($nstart, $nsize, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol, $updateRules, $deleteRules);
36053701 $this->mOutput .= "\n|-\n|\n";
36063702 $nstart = $nstart + $nsize;
36073703 if ($nstart >= $count) break;
36083704 } while (true);
36093705 $this->mOutput .= "\n|}\n";
36103706 } else {
3611 - $this->mOutput .= $this->formatList(0, count($articles), $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol);
 3707+ $this->mOutput .= $this->formatList(0, count($articles), $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol, $updateRules, $deleteRules);
36123708 }
36133709
36143710 }
@@ -3663,16 +3759,18 @@
36643760 if ($article->mImageSelTitle!= '') $sTag = str_replace('%IMAGESEL%',str_replace('_',' ',$article->mImageSelTitle),$sTag);
36653761 if (!empty($article->mCategoryLinks) ) {
36663762 $sTag = str_replace('%'.'CATLIST%',implode(', ', $article->mCategoryLinks),$sTag);
 3763+ $sTag = str_replace('%'.'CATBULLETS%','* '.implode("\n* ", $article->mCategoryLinks),$sTag);
36673764 $sTag = str_replace('%'.'CATNAMES%',implode(', ', $article->mCategoryTexts),$sTag);
36683765 }
36693766 else {
36703767 $sTag = str_replace('%'.'CATLIST%','',$sTag);
 3768+ $sTag = str_replace('%'.'CATBULLETS%','',$sTag);
36713769 $sTag = str_replace('%'.'CATNAMES%','',$sTag);
36723770 }
36733771 return $sTag;
36743772 }
36753773
3676 - function formatList($iStart, $iCount, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol) {
 3774+ function formatList($iStart, $iCount, $iTitleMaxLen, $defaultTemplateSuffix, $bIncludeTrim, $iTableSortCol, $updateRules, $deleteRules) {
36773775 global $wgUser, $wgLang, $wgContLang;
36783776
36793777 $mode = $this->mListMode;
@@ -3703,12 +3801,35 @@
37043802 if ($mode->name == 'userformat') $incwiki = '';
37053803 else $incwiki = '<br/>';
37063804 $text = $this->mParser->fetchTemplate(Title::newFromText($title));
3707 - if( $this->mIncMaxLen > 0 && (strlen($text) > $this->mIncMaxLen) ) {
3708 - $text = DPL2Include::limitTranscludedText($text, $this->mIncMaxLen, ' [['.$title.'|..&rarr;]]');
 3805+ if ((count($this->mIncSecLabelsMatch)<=0 || $this->mIncSecLabelsMatch[0] == '' ||
 3806+ !preg_match($this->mIncSecLabelsMatch[0],$text)==false) &&
 3807+ (count($this->mIncSecLabelsNotMatch)<=0 || $this->mIncSecLabelsNotMatch[0] == '' ||
 3808+ preg_match($this->mIncSecLabelsNotMatch[0],$text)==false)) {
 3809+ if( $this->mIncMaxLen > 0 && (strlen($text) > $this->mIncMaxLen) ) {
 3810+ $text = DPL2Include::limitTranscludedText($text, $this->mIncMaxLen, ' [['.$title.'|..&rarr;]]');
 3811+ }
 3812+ $this->filteredCount = $this->filteredCount + 1;
 3813+
 3814+ // update article if include=* and updaterules are given
 3815+ if ($updateRules!='') {
 3816+ $message = $this->updateArticleByRule($title,$text,$updateRules);
 3817+ // append update message to output
 3818+ $incwiki .= $message;
 3819+ }
 3820+ else if ($deleteRules!='') {
 3821+ $message = $this->deleteArticleByRule($title,$text,$deleteRules);
 3822+ // append delete message to output
 3823+ $incwiki .= $message;
 3824+ }
 3825+ else {
 3826+ // append full text to output
 3827+ $incwiki .= $text;
 3828+ }
37093829 }
3710 - $incwiki .= $text;
3711 - $this->filteredCount = $this->filteredCount + 1;
3712 -
 3830+ else {
 3831+ continue;
 3832+ }
 3833+
37133834 } else {
37143835 // identify section pieces
37153836 $secPiece=array();
@@ -3764,6 +3885,7 @@
37653886 }
37663887 }
37673888 $this->formatSingleItems($secPieces,$s);
 3889+ if (!array_key_exists(0,$secPieces)) break; # to avoid matching against a non-existing array element
37683890 $secPiece[$s] = $secPieces[0];
37693891 for ($sp=1;$sp<count($secPieces);$sp++) {
37703892 if (isset($mode->aMultiSecSeparators[$s])) {
@@ -3880,7 +4002,7 @@
38814003 if($article->mUserLink != '') $rBody .= ' . . [[User:' . $article->mUser .'|'.$article->mUser.']]';
38824004 if($article->mContributor != '')$rBody .= ' . . [[User:' . $article->mContributor .'|'.$article->mContributor." $article->mContrib]]";
38834005
3884 - if( !empty($article->mCategoryLinks) ) $rBody .= ' . . <small>' . wfMsg('categories') . ': ' . $wgLang->pipeList( $article->mCategoryLinks ) . '</small>';
 4006+ if( !empty($article->mCategoryLinks) ) $rBody .= ' . . <small>' . wfMsg('categories') . ': ' . $wgLang->pipeList( $article->mCategoryLinks ) . '</small>';
38854007 }
38864008
38874009 // add included contents
@@ -3917,7 +4039,138 @@
39184040 }
39194041 return $mode->sListStart . $rBody . $mode->sListEnd;
39204042 }
 4043+
39214044
 4045+ function updateArticleByRule($title,$text,$rulesText) {
 4046+ // we use ; as command delimiter; \; stands for a semicolon
 4047+ // \n is translated to a real linefeed
 4048+ $rulesText = str_replace(";",'°',$rulesText);
 4049+ $rulesText = str_replace('\°',';',$rulesText);
 4050+ $rulesText = str_replace("\\n","\n",$rulesText);
 4051+ $rules=split('°',$rulesText);
 4052+ $exec=false;
 4053+ $replaceThis='';
 4054+ $replacement='';
 4055+ $after='';
 4056+ $insertionAfter='';
 4057+ $before='';
 4058+ $insertionBefore='';
 4059+ $lastCmd='';
 4060+ $message= '';
 4061+ $summary='';
 4062+ // $message .= 'updaterules=<pre><nowiki>';
 4063+ foreach ($rules as $rule) {
 4064+ $cmd = preg_split("/ +/",$rule,2);
 4065+ if (count($cmd)>1) $arg = $cmd[1];
 4066+ else $arg='';
 4067+ $cmd[0]=trim($cmd[0]);
 4068+
 4069+ // after ... insert ... , before ... insert ...
 4070+ if ($cmd[0] == 'before') {
 4071+ // $message.= "before = $arg\n";
 4072+ $before=$arg;
 4073+ $lastCmd='B';
 4074+ }
 4075+ if ($cmd[0] == 'after') {
 4076+ // $message.= "after = $arg\n";
 4077+ $after=$arg;
 4078+ $lastCmd='A';
 4079+ }
 4080+ if ($cmd[0] == 'insert' && $lastCmd!='') {
 4081+ // $message.= "insert $lastCmd = $arg\n";
 4082+ if ($lastCmd=='A') $insertionAfter=$arg;
 4083+ if ($lastCmd=='B') $insertionBefore=$arg;
 4084+ }
 4085+
 4086+ // replace ... by ...
 4087+ if ($cmd[0] == 'replace') {
 4088+ // $message.= "repl = $arg\n";
 4089+ $replaceThis=$arg;
 4090+ }
 4091+ if ($cmd[0] == 'by') {
 4092+ // $message.= "by = $arg\n";
 4093+ $replacement=$arg;
 4094+ }
 4095+
 4096+ if ($cmd[0] == 'summary') {
 4097+ // $message.= "summary = $arg\n";
 4098+ $summary=$arg;
 4099+ }
 4100+
 4101+ // we execute only if "exec" is given, otherwise we merely show what would be done
 4102+ if ($cmd[0] == 'exec') {
 4103+ // $message.= "exec = true\n";
 4104+ $exec=true;
 4105+ }
 4106+
 4107+
 4108+ }
 4109+ $summary .= "\nbulk update:";
 4110+ if ($replaceThis!='') $summary .= "\n replace $replaceThis\n by $replacement";
 4111+ if ($before!='') $summary .= "\n before $before\n insertionBefore";
 4112+ if ($after!='') $summary .= "\n after $after\n insertionAfter";
 4113+
 4114+ // $message.= '</nowiki></pre>';
 4115+
 4116+ if ($replaceThis!='') {
 4117+ $text = preg_replace("$replaceThis",$replacement,$text);
 4118+ }
 4119+
 4120+ if ($insertionBefore!='' && $before != '') {
 4121+ $text = preg_replace("/($before)/",$insertionBefore.'\1',$text);
 4122+ }
 4123+
 4124+ if ($insertionAfter!='' && $after != '') {
 4125+ $text = preg_replace("/($after)/",'\1'.$insertionAfter,$text);
 4126+ }
 4127+
 4128+ $titleX = Title::newFromText($title);
 4129+ global $wgArticle;
 4130+ $wgArticle = $articleX = new Article($titleX);
 4131+ if ($exec) $articleX->updateArticle($text, $summary, false, $titleX->userIsWatching());
 4132+ else $message .= "set 'exec yes' to perform the following modification to &nbsp; &nbsp; <big>'''$title'''</big>\n";
 4133+ $message .= "<pre><nowiki>"
 4134+ ."\n".$text."</nowiki></pre>"; // <pre><nowiki>\n"; // .$text."\n</nowiki></pre>\n";
 4135+ return $message;
 4136+ }
 4137+
 4138+ function deleteArticleByRule($title,$text,$rulesText) {
 4139+ // we use ; as command delimiter; \; stands for a semicolon
 4140+ // \n is translated to a real linefeed
 4141+ $rulesText = str_replace(";",'°',$rulesText);
 4142+ $rulesText = str_replace('\°',';',$rulesText);
 4143+ $rulesText = str_replace("\\n","\n",$rulesText);
 4144+ $rules=split('°',$rulesText);
 4145+ $exec=false;
 4146+ $message= '';
 4147+ $reason='';
 4148+ foreach ($rules as $rule) {
 4149+ $cmd = preg_split("/ +/",$rule,2);
 4150+ if (count($cmd)>1) $arg = $cmd[1];
 4151+ else $arg='';
 4152+ $cmd[0]=trim($cmd[0]);
 4153+
 4154+ if ($cmd[0] == 'reason') {
 4155+ $reason=$arg;
 4156+ }
 4157+
 4158+ // we execute only if "exec" is given, otherwise we merely show what would be done
 4159+ if ($cmd[0] == 'exec') {
 4160+ $exec=true;
 4161+ }
 4162+ }
 4163+ $reason .= "\nbulk delete by DPL query";
 4164+
 4165+ $titleX = Title::newFromText($title);
 4166+ global $wgArticle;
 4167+ $wgArticle = $articleX = new Article($titleX);
 4168+ if ($exec) $articleX->doDelete($reason);
 4169+ else $message .= "set 'exec yes' to delete &nbsp; &nbsp; <big>'''$title'''</big>\n";
 4170+ $message .= "<pre><nowiki>"
 4171+ ."\n".$text."</nowiki></pre>"; // <pre><nowiki>\n"; // .$text."\n</nowiki></pre>\n";
 4172+ return $message;
 4173+ }
 4174+
39224175 // generate a hyperlink to the article
39234176 function articleLink($tag,$article,$iTitleMaxLen) {
39244177 $pagename = $article->mTitle->getPrefixedText();
Index: trunk/extensions/DynamicPageList/DynamicPageList2Include.php
@@ -8,7 +8,7 @@
99 *
1010 *
1111 * @author Steve Sanbeg
12 - * @copyright Copyright � 2006, Steve Sanbeg
 12+ * @copyright Copyright © 2006, Steve Sanbeg
1313 * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
1414 *
1515 *
@@ -436,7 +436,7 @@
437437 $extractParm = array();
438438
439439 // check if we want to extract parameters directly from the call
440 - // in that case we won�t invoke template2 but will directly return the extracted parameters
 440+ // in that case we won´t invoke template2 but will directly return the extracted parameters
441441 // as a sequence of table columns;
442442 if (strlen($template2)>strlen($template1) && ($template2[strlen($template1)]==':')) {
443443 $extractParm = split(':',substr($template2,strlen($template1)+1));
@@ -572,4 +572,3 @@
573573 }
574574
575575 }
576 -?>
\ No newline at end of file

Follow-up revisions

RevisionCommit summaryAuthorDate
r50225Backport r50074 and r50075 from trunk, due to encoding error.shinjiman14:32, 5 May 2009
r50226Backport r50074 and r50075 from trunk, due to encoding error.shinjiman14:38, 5 May 2009

Status & tagging log