r65247 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r65246‎ | r65247 | r65248 >
Date:16:56, 18 April 2010
Author:siebrand
Status:deferred (Comments)
Tags:
Comment:
Rename catfeed to CategoryFeed. Update description message key, Configure and Translate accordingly.
Modified paths:
  • /trunk/extensions/CategoryFeed (added) (history)
  • /trunk/extensions/CategoryFeed/CategoryFeed.i18n.php (added) (history)
  • /trunk/extensions/CategoryFeed/CategoryFeed.php (added) (history)
  • /trunk/extensions/CategoryFeed/catfeed.i18n.php (deleted) (history)
  • /trunk/extensions/CategoryFeed/catfeed.php (deleted) (history)
  • /trunk/extensions/Configure/settings/Settings-ext.txt (modified) (history)
  • /trunk/extensions/Translate/groups/mediawiki-defines.txt (modified) (history)
  • /trunk/extensions/catfeed (deleted) (history)

Diff [purge]

Index: trunk/extensions/Configure/settings/Settings-ext.txt
@@ -171,7 +171,7 @@
172172 settings[] = wgCategoryWatchNotifyEditor: bool, wgCategoryWatchUseAutoCat: bool
173173 url = http://www.mediawiki.org/wiki/Extension:CategoryWatch
174174
175 -catfeed
 175+CategoryFeed
176176 url = http://wikidev.net
177177
178178 CentralAuth
Index: trunk/extensions/CategoryFeed/CategoryFeed.i18n.php
@@ -0,0 +1,468 @@
 2+<?php
 3+/* Internationalization file for CategoryFeed extension
 4+*/
 5+
 6+$messages = array();
 7+
 8+$messages['en'] = array(
 9+ 'categoryfeed-desc' => 'Uses bits from recentchanges feeds.
 10+Create in-page version, especially useful for Wikinews',
 11+);
 12+
 13+/** Message documentation (Message documentation)
 14+ * @author Purodha
 15+ */
 16+$messages['qqq'] = array(
 17+ 'categoryfeed-desc' => 'Short description of this extension, shown on [[Special:Version]]. Do not translate or change links.',
 18+);
 19+
 20+/** Arabic (العربية)
 21+ * @author Meno25
 22+ */
 23+$messages['ar'] = array(
 24+ 'categoryfeed-desc' => 'يستخدم أجزاء من تلقيمات أحدث التغييرات. ينشئ نسخة في الصفحة، مفيد خصوصا لويكي الأخبار.',
 25+);
 26+
 27+/** Egyptian Spoken Arabic (مصرى)
 28+ * @author Meno25
 29+ */
 30+$messages['arz'] = array(
 31+ 'categoryfeed-desc' => 'يستخدم أجزاء من تلقيمات أحدث التغييرات. ينشئ نسخة فى الصفحة، مفيد خصوصا لويكى الأخبار.',
 32+);
 33+
 34+/** Belarusian (Taraškievica orthography) (Беларуская (тарашкевіца))
 35+ * @author EugeneZelenko
 36+ */
 37+$messages['be-tarask'] = array(
 38+ 'categoryfeed-desc' => 'Выкарыстоўвае некаторыя часткі стужкі апошніх зьменаў.
 39+Стварае яе вэрсію на старонцы, асабліва карысна для ВікіНавінаў.',
 40+);
 41+
 42+/** Bengali (বাংলা)
 43+ * @author Zaheen
 44+ */
 45+$messages['bn'] = array(
 46+ 'categoryfeed-desc' => 'সাম্প্রতিক পরিবর্তনের ফিড থেকে বিট ব্যবহার করে। পাতা-মধ্যবর্তী সংস্করণ সৃষ্টি করুন, উইকিসংবাদের জন্য বিশেষ উপকারী।',
 47+);
 48+
 49+/** Breton (Brezhoneg)
 50+ * @author Fulup
 51+ */
 52+$messages['br'] = array(
 53+ 'categoryfeed-desc' => 'Implijout a ra bitoù evit boueta an degasadennoù nevez. Sevel a ra stumm ur bajenn, ar pezh zo emsav-tre evit Wikinews.',
 54+);
 55+
 56+/** Bosnian (Bosanski)
 57+ * @author CERminator
 58+ */
 59+$messages['bs'] = array(
 60+ 'categoryfeed-desc' => 'Koristi bitove iz fida nedavnih promjena.
 61+Pravi verziju in-page, naročito korisna za Wikivijesti.',
 62+);
 63+
 64+/** Catalan (Català)
 65+ * @author Ssola
 66+ */
 67+$messages['ca'] = array(
 68+ 'categoryfeed-desc' => 'Utilitza fragments dels canvis recents.
 69+Crea versions per les pàgines, especialment útil per Wikinews.',
 70+);
 71+
 72+/** Czech (Česky)
 73+ * @author Matěj Grabovský
 74+ */
 75+$messages['cs'] = array(
 76+ 'categoryfeed-desc' => 'Používá kousky z kanálů posledních změn. Vytvoří verzi v rámci stránky. Obzvlášť užitečné pro Wikinews.',
 77+);
 78+
 79+/** German (Deutsch)
 80+ * @author Melancholie
 81+ */
 82+$messages['de'] = array(
 83+ 'categoryfeed-desc' => 'Nutzt Teile der Letzte-Änderungen-Newsfeeds.
 84+Erzeugung einer eingebetteten Version; besonders für Wikinews nützlich.',
 85+);
 86+
 87+/** Lower Sorbian (Dolnoserbski)
 88+ * @author Michawiki
 89+ */
 90+$messages['dsb'] = array(
 91+ 'categoryfeed-desc' => 'Wužywa bity z kanalow aktualnych změnow.
 92+Napóraj wersiju w boku, wósebnje wužytnu za Wikinowosće.',
 93+);
 94+
 95+/** Greek (Ελληνικά)
 96+ * @author Omnipaedista
 97+ */
 98+$messages['el'] = array(
 99+ 'categoryfeed-desc' => 'Χρησιμοποιεί κομμάτια από τη ροή προσφάτων αλλαγών.
 100+Δημιουργία έκδοσης για εισαγωγή μέσα στις σελίδες, ιδιαίτερα χρήσιμης για τα Βικινέα',
 101+);
 102+
 103+/** Spanish (Español)
 104+ * @author Sanbec
 105+ */
 106+$messages['es'] = array(
 107+ 'categoryfeed-desc' => 'Usa partes de sindicaciones de modificaciones recientes.
 108+Crea versiones para su uso en páginas, especialmente útil para Wikinews.',
 109+);
 110+
 111+/** Basque (Euskara)
 112+ * @author Theklan
 113+ */
 114+$messages['eu'] = array(
 115+ 'categoryfeed-desc' => 'Azken aldaketen jariotik zatiak erabiltzen ditu.
 116+Wikinewserako bereziki erabilgarria den in-page bertsioa sortzen du.',
 117+);
 118+
 119+/** Finnish (Suomi)
 120+ * @author Cimon Avaro
 121+ * @author Crt
 122+ */
 123+$messages['fi'] = array(
 124+ 'categoryfeed-desc' => 'Käyttää osasia tuoreet muutokset -syötteestä.
 125+Luo sivunsisäisen version, joka on erityisen hyödyllistä Wikinewsissä.',
 126+);
 127+
 128+/** French (Français)
 129+ * @author McDutchie
 130+ */
 131+$messages['fr'] = array(
 132+ 'categoryfeed-desc' => 'Utilise des pièces des syndications de modifications récentes.
 133+Crée une version à insérer dans les pages, très pratique pour Wikinews.',
 134+);
 135+
 136+/** Galician (Galego)
 137+ * @author Toliño
 138+ */
 139+$messages['gl'] = array(
 140+ 'categoryfeed-desc' => 'Usa anacos de accións dos cambios recentes.
 141+Crear versións dentro dunha páxina, útil especialmente nas Galinovas.',
 142+);
 143+
 144+/** Swiss German (Alemannisch)
 145+ * @author Als-Holder
 146+ */
 147+$messages['gsw'] = array(
 148+ 'categoryfeed-desc' => 'Nutzt Teil vu dr Letschte-Änderige-Newsfeeds.
 149+E yybetteti Version aalege; bsundersch fir Wikinews nitzli.',
 150+);
 151+
 152+/** Hebrew (עברית)
 153+ * @author Rotemliss
 154+ */
 155+$messages['he'] = array(
 156+ 'categoryfeed-desc' => 'שימוש בחלקים מהזנות השינויים האחרונים כדי ליצור גרסה בתוך הדף. פעולה זו שימושית במיוחד בוויקיחדשות.',
 157+);
 158+
 159+/** Hindi (हिन्दी)
 160+ * @author Kaustubh
 161+ */
 162+$messages['hi'] = array(
 163+ 'categoryfeed-desc' => 'हाल में हुए बदलावोंके फीड्स इस्तेमाल करता हैं।
 164+पन्ने के अंदर ही अवतरण बन जाते हैं, जो कि विकिन्युज के लिये विशेष उपयुक्त हैं।',
 165+);
 166+
 167+/** Hiligaynon (Ilonggo)
 168+ * @author Tagimata
 169+ */
 170+$messages['hil'] = array(
 171+ 'categoryfeed-desc' => 'Naga-gamit sang gamay-gamay nga butang halin sa mga bag-o nga gin-islan feeds.
 172+Himu-an in-pahina bersiyon, labi na gid ang mga mapuslanon para sa Wikinews',
 173+);
 174+
 175+/** Upper Sorbian (Hornjoserbsce)
 176+ * @author Michawiki
 177+ */
 178+$messages['hsb'] = array(
 179+ 'categoryfeed-desc' => 'Wužiwa bity z kanalow aktualnych změnow. Wutwor wersiju w stronje, kotraž je wosebje wužitna za WikiNews.',
 180+);
 181+
 182+/** Hungarian (Magyar)
 183+ * @author Glanthor Reviol
 184+ */
 185+$messages['hu'] = array(
 186+ 'categoryfeed-desc' => 'A friss változások hírcsatornáiból használ részleteket.
 187+Lapon belüli változatot készít, különösen hasznos a Wikihírekhez',
 188+);
 189+
 190+/** Interlingua (Interlingua)
 191+ * @author McDutchie
 192+ */
 193+$messages['ia'] = array(
 194+ 'categoryfeed-desc' => 'Usa partes de syndicationes de modificationes recente.
 195+Crea versiones pro uso in paginas, specialmente utile pro Wikinews.',
 196+);
 197+
 198+/** Indonesian (Bahasa Indonesia)
 199+ * @author Bennylin
 200+ */
 201+$messages['id'] = array(
 202+ 'categoryfeed-desc' => 'Menggunakan bit dari sindikasi perubahan terbaru.
 203+Membuat versi halamannya, berguna terutama untuk Wikinews',
 204+);
 205+
 206+/** Italian (Italiano)
 207+ * @author Darth Kule
 208+ */
 209+$messages['it'] = array(
 210+ 'categoryfeed-desc' => 'Utilizza parti dai feed delle ultime modifiche.
 211+Crea una versione da inserire nelle pagine, particolarmente utile per Wikinews',
 212+);
 213+
 214+/** Japanese (日本語)
 215+ * @author Aotake
 216+ * @author JtFuruhata
 217+ */
 218+$messages['ja'] = array(
 219+ 'categoryfeed-desc' => '最近の更新フィードから一部の情報を抽出し、ページ内バージョンを作成する。ウィキニュースで特に有用',
 220+);
 221+
 222+/** Korean (한국어)
 223+ * @author Klutzy
 224+ * @author Yknok29
 225+ */
 226+$messages['ko'] = array(
 227+ 'categoryfeed-desc' => '최근 바뀜 피드에서 일부 정보를 빼내, 문서 내부 버전을 작성합니다. 위키뉴스에 유용한 기능입니다.',
 228+);
 229+
 230+/** Ripoarisch (Ripoarisch)
 231+ * @author Purodha
 232+ */
 233+$messages['ksh'] = array(
 234+ 'categoryfeed-desc' => 'Bruch Stöcker fum <i lang="en">ecentchanges feeds</i>, määt et en de Sigge, dat es besöngisch joot ze Bruche em Neueschkeitewiki.',
 235+);
 236+
 237+/** Luxembourgish (Lëtzebuergesch)
 238+ * @author Robby
 239+ */
 240+$messages['lb'] = array(
 241+ 'categoryfeed-desc' => 'Benotzt Biten vun de Rezenten Ännerungen.
 242+Leet eng nei Versioun an der Säit unn, besonnesch nëtzlech fir Wikinews',
 243+);
 244+
 245+/** Limburgish (Limburgs)
 246+ * @author Ooswesthoesbes
 247+ */
 248+$messages['li'] = array(
 249+ 'categoryfeed-desc' => "Gebroek informatie oet de recente wieziginge.
 250+Maak 'n versie binne 'n pagina.
 251+In 't biezunjer henjig veur Wikinews",
 252+);
 253+
 254+/** Malagasy (Malagasy)
 255+ * @author Jagwar
 256+ */
 257+$messages['mg'] = array(
 258+ 'categoryfeed-desc' => "Mampiasa piesy avy amin'ny topa ny fanovàna farany.
 259+Manome fapitahana ampidirina anaty pejy, ilaina be ho an'ny Wikivao",
 260+);
 261+
 262+/** Macedonian (Македонски)
 263+ * @author Bjankuloski06
 264+ */
 265+$messages['mk'] = array(
 266+ 'categoryfeed-desc' => 'Кориснички делчиња од емитувања за скорешни промени.
 267+Создава верзија во самата страница, особено корисно за Викивести',
 268+);
 269+
 270+/** Marathi (मराठी)
 271+ * @author Kaustubh
 272+ */
 273+$messages['mr'] = array(
 274+ 'categoryfeed-desc' => 'अलीकडील बदलांमधील फीड्स वापरते. पानातच आवृत्ती तयार होते, विकिन्युज साठी विशेष उपयुक्त.',
 275+);
 276+
 277+/** Low German (Plattdüütsch)
 278+ * @author Slomox
 279+ */
 280+$messages['nds'] = array(
 281+ 'categoryfeed-desc' => 'Bruukt Delen vun de Toletzt-Ännert-Newsfeeds.
 282+Maakt en inbunnen Version; besünners praktisch för Wikinews.',
 283+);
 284+
 285+/** Nedersaksisch (Nedersaksisch)
 286+ * @author Servien
 287+ */
 288+$messages['nds-nl'] = array(
 289+ 'categoryfeed-desc' => "Gebruuk infermasie uut de leste wiezigingen.
 290+Maak een versie binnen een pagina, in 't biezunder hendig veur Wikiniejs",
 291+);
 292+
 293+/** Nepali (नेपाली)
 294+ * @author सरोज कुमार ढकाल
 295+ */
 296+$messages['ne'] = array(
 297+ 'categoryfeed-desc' => 'हालै परिवर्तन गरिएको फिडबाट बिट्सहरु प्रयोग गर्छ ।
 298+पृष्ठ-भित्र शृजना गर्ने , विशेषरुपमा विकिन्युजलाई प्रभावकारी',
 299+);
 300+
 301+/** Dutch (Nederlands)
 302+ * @author Siebrand
 303+ */
 304+$messages['nl'] = array(
 305+ 'categoryfeed-desc' => 'Gebruikt informatie uit de recente wijzigingen.
 306+Maakt een versie binnen een pagina.
 307+In het bijzonder handig voor Wikinews',
 308+);
 309+
 310+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
 311+ * @author Harald Khan
 312+ */
 313+$messages['nn'] = array(
 314+ 'categoryfeed-desc' => 'Nyttar informasjon frå siste endringar.
 315+Ein kan laga versjonar til bruk på innhaldssider, noko som er spesielt nyttig for Wikinyhende.',
 316+);
 317+
 318+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
 319+ * @author Jon Harald Søby
 320+ */
 321+$messages['no'] = array(
 322+ 'categoryfeed-desc' => 'Bruker informasjon fra siste endringer. Man kan lage versjoner til bruk på innholdssider, noe som er spesielt nyttig for Wikinews.',
 323+);
 324+
 325+/** Occitan (Occitan)
 326+ * @author Cedric31
 327+ */
 328+$messages['oc'] = array(
 329+ 'categoryfeed-desc' => 'Utiliza de bits per alimentar los darrièrs cambiaments. Crèa una version de pagina, fòrça practica per Wikinews.',
 330+);
 331+
 332+/** Plautdietsch (Plautdietsch)
 333+ * @author Wikipeeta
 334+ */
 335+$messages['pdt'] = array(
 336+ 'categoryfeed-desc' => 'Brukt Deele vonne Latzte-Endarung-Newsfeeds.
 337+Moakt eene ennjebungne Versioon; besondasch praktisch fe Wikinews.',
 338+);
 339+
 340+/** Polish (Polski)
 341+ * @author Sp5uhe
 342+ */
 343+$messages['pl'] = array(
 344+ 'categoryfeed-desc' => 'Wykorzystując informacje z listy ostatnich zmian tworzy wersję umieszczaną wewnątrz treści strony. Szczególnie użyteczne dla Wikinews.',
 345+);
 346+
 347+/** Piedmontese (Piemontèis)
 348+ * @author Dragonòt
 349+ */
 350+$messages['pms'] = array(
 351+ 'categoryfeed-desc' => 'A dòvra dij "bit" da dij "feed" pen-e cambià.
 352+A crea vërsion anpaginà, utij dzortut për Wikinews',
 353+);
 354+
 355+/** Portuguese (Português)
 356+ * @author Malafaya
 357+ */
 358+$messages['pt'] = array(
 359+ 'categoryfeed-desc' => 'Usa pedaços de "feeds" de alterações recentes. Cria uma versão dentro de uma página, especialmente útil para Wikinotícias.',
 360+);
 361+
 362+/** Brazilian Portuguese (Português do Brasil)
 363+ * @author Eduardo.mps
 364+ */
 365+$messages['pt-br'] = array(
 366+ 'categoryfeed-desc' => 'Usa partes do "feed" das alterações recentes. Cria uma versão dentro de uma página, especialmente útil para o Wikinotícias.',
 367+);
 368+
 369+/** Tarandíne (Tarandíne)
 370+ * @author Joetaras
 371+ */
 372+$messages['roa-tara'] = array(
 373+ 'categoryfeed-desc' => "Ause le stuezze da le feed de le cangiaminde recende.
 374+Ccreje 'na versione jndr'à pàgene, specialmende utile pe le Uicchinews.",
 375+);
 376+
 377+/** Russian (Русский)
 378+ * @author Александр Сигачёв
 379+ */
 380+$messages['ru'] = array(
 381+ 'categoryfeed-desc' => 'Использует некоторые части ленты свежих правок, создаёт её версию внутри страницы. Особенно полезно для Викиновостей.',
 382+);
 383+
 384+/** Yakut (Саха тыла)
 385+ * @author HalanTul
 386+ */
 387+$messages['sah'] = array(
 388+ 'categoryfeed-desc' => 'Кэлиҥҥи уларытыылар сорҕолорун туһанар, сирэй иһигэр хатылыыр.
 389+Биики Сонуннарга ордук туһалаах.',
 390+);
 391+
 392+/** Slovak (Slovenčina)
 393+ * @author Helix84
 394+ */
 395+$messages['sk'] = array(
 396+ 'categoryfeed-desc' => 'Používa kúsky z kanálov posledných zmien. Vytvorí verziu v rámci stránky. Obzvlášť užitočné pre Wikinews.',
 397+);
 398+
 399+/** Serbian Cyrillic ekavian (Српски (ћирилица))
 400+ * @author Михајло Анђелковић
 401+ */
 402+$messages['sr-ec'] = array(
 403+ 'categoryfeed-desc' => 'Користи битове из протока скорашњих измена.
 404+Прави верзију унутар стране, посебно корисну за Викивести.',
 405+);
 406+
 407+/** Serbian Latin ekavian (Srpski (latinica))
 408+ * @author Michaello
 409+ */
 410+$messages['sr-el'] = array(
 411+ 'categoryfeed-desc' => 'Koristi bitove iz protoka skorašnjih izmena.
 412+Pravi verziju unutar strane, posebno korisnu za Vikivesti.',
 413+);
 414+
 415+/** Seeltersk (Seeltersk)
 416+ * @author Pyt
 417+ */
 418+$messages['stq'] = array(
 419+ 'categoryfeed-desc' => 'Nutset Deele fon ju Lääste-Annerengen-Newsfeeds.
 420+Moakjen fon ne ienbäädede Version; besunners foar Wikinews nutselk.',
 421+);
 422+
 423+/** Swedish (Svenska)
 424+ * @author M.M.S.
 425+ */
 426+$messages['sv'] = array(
 427+ 'categoryfeed-desc' => 'Använder information från senaste ändringarna. Man kan skapa versioner för användning till innehållssidor, något som är speciellt användbart för Wikinews.',
 428+);
 429+
 430+/** Telugu (తెలుగు)
 431+ * @author Veeven
 432+ */
 433+$messages['te'] = array(
 434+ 'categoryfeed-desc' => 'ఇటీవలి మార్పుల ఫీడుల నుండి అంకాలని వాడుకుంటుంది.
 435+పేజీ-లో సంచికని సృష్టించండి, వికీన్యూస్&zwnj;కి ఉపయోగకరం',
 436+);
 437+
 438+/** Tagalog (Tagalog)
 439+ * @author AnakngAraw
 440+ */
 441+$messages['tl'] = array(
 442+ 'categoryfeed-desc' => "Gumagamit ng maliliit na mga piraso mula sa isinubong kamakailang mga pagbabago.
 443+Lumikha ng bersyong nasa loob ng pahina, partikular na magagamit para sa Wikibalita (''Wikinews'').",
 444+);
 445+
 446+/** Turkish (Türkçe)
 447+ * @author Vito Genovese
 448+ */
 449+$messages['tr'] = array(
 450+ 'categoryfeed-desc' => 'Son değişiklikler beslemelerinin parçalarını kullanır.
 451+Özellikle Vikihaber için yararlı olan sayfa içi sürümünü oluşturun',
 452+);
 453+
 454+/** Ukrainian (Українська)
 455+ * @author Ahonc
 456+ */
 457+$messages['uk'] = array(
 458+ 'categoryfeed-desc' => 'Використовує деякі частини стрічки свіжих змін.
 459+Створює її версію всередині сторінки, особливо корисно для Вікіновин.',
 460+);
 461+
 462+/** Vietnamese (Tiếng Việt)
 463+ * @author Vinhtantran
 464+ */
 465+$messages['vi'] = array(
 466+ 'categoryfeed-desc' => 'Sử dụng những đoạn ngắn từ bản tin của thay đổi gần đây.
 467+Tạo ra một phiên bản nhúng vào trang, đặc biệt hữu ích cho Wikinews.',
 468+);
 469+
Property changes on: trunk/extensions/CategoryFeed/CategoryFeed.i18n.php
___________________________________________________________________
Name: svn:eol-style
1470 + native
Index: trunk/extensions/CategoryFeed/CategoryFeed.php
@@ -0,0 +1,321 @@
 2+<?php
 3+/**
 4+ * CategoryFeed extension for MediaWiki 1.4+
 5+ *
 6+ * Copyright (C) 2005 Gabriel Wicke <wicke@wikidev.net>
 7+ * http://wikidev.net
 8+ *
 9+ * uses bits from recentchanges feeds
 10+ *
 11+ * This program is free software; you can redistribute it and/or modify
 12+ * it under the terms of the GNU General Public License as published by
 13+ * the Free Software Foundation; either version 2 of the License, or
 14+ * (at your option) any later version.
 15+ *
 16+ * This program is distributed in the hope that it will be useful,
 17+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 18+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 19+ * GNU General Public License for more details.
 20+ *
 21+ * You should have received a copy of the GNU General Public License along
 22+ * with this program; if not, write to the Free Software Foundation, Inc.,
 23+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 24+ * http://www.gnu.org/copyleft/gpl.html
 25+ *
 26+ * @todo Create in-page version, especially useful for wikinews
 27+ */
 28+
 29+
 30+$wgExtensionFunctions[] = 'setupCatRSSExtension';
 31+$wgExtensionCredits['other'][] = array(
 32+ 'path' => __FILE__,
 33+ 'name' => 'Category Feed',
 34+ 'author' => 'Gabriel Wicke',
 35+ 'descriptionmsg' => 'categoryfeed-desc',
 36+ 'url' => 'http://wikidev.net',
 37+);
 38+
 39+$dir = dirname(__FILE__) . '/';
 40+$wgExtensionMessagesFiles['catfeed'] = $dir . 'Categoryfeed.i18n.php';
 41+
 42+if( $wgCategoryMagicGallery )
 43+ require_once('ImageGallery.php');
 44+
 45+function setupCatRSSExtension() {
 46+
 47+ global $IP;
 48+ require_once( "$IP/includes/CategoryPage.php" );
 49+ require_once("Feed.php");
 50+ wfLoadExtensionMessages( 'catfeed' );
 51+ global $wgHooks;
 52+
 53+ $wgHooks['CategoryPageView'][] = 'viewCatFeed';
 54+ global $wgParser;
 55+ $wgParser->setHook( "catnews", "viewCatNewslist" );
 56+
 57+
 58+ class CategoryByDate extends CategoryPage {
 59+ /**
 60+ * Feed for recently-added members of a category based on cl_timestamp
 61+ * Uses bits of the recentchanges feeds (caching and formatting)
 62+ */
 63+
 64+ var $mLimit = 50;
 65+ var $mDatelevel = 2;
 66+
 67+ function CategoryByDate( &$title, $tarray = false ) {
 68+ global $wgRequest;
 69+ $this->mTitle = $title;
 70+ $this->mFeedFormat = $wgRequest->getVal( 'feed', '' );
 71+ $this->mTitleStrings = array();
 72+ if ( is_array($tarray) ) {
 73+ foreach($tarray as $title) {
 74+ $this->mTitleStrings[] = $title->getDBkey();
 75+ }
 76+ } else {
 77+ $this->mTitleStrings[] = $title->getDBkey();
 78+ }
 79+ }
 80+
 81+ function view() {
 82+ // cache handling in subclass
 83+ return $this->getData();
 84+ }
 85+ function getData() {
 86+ $fname = __CLASS__ . '::' . __FUNCTION__;
 87+ $this->mMaxTimeStamp = 0;
 88+
 89+ $dbr = wfGetDB( DB_SLAVE );
 90+ $set = implode( ',', array_map(
 91+ array( &$dbr, 'addQuotes' ),
 92+ $this->mTitleStrings ) );
 93+ $res = $dbr->select(
 94+ array( 'cur', 'categorylinks' ),
 95+ array( 'cur_title', 'cur_namespace', 'cur_text', 'cur_user_text', 'cl_sortkey', 'cl_timestamp' ),
 96+ array( 'cl_from = cur_id',
 97+ 'cl_to IN (' . $set . ')',
 98+ 'cur_is_redirect' => 0),
 99+ $fname,
 100+ array( 'ORDER BY' => 'cl_timestamp DESC, cl_sortkey ASC',
 101+ 'LIMIT' => $this->mLimit ));
 102+ $rows = array();
 103+ while( $row = $dbr->fetchObject ( $res ) ) {
 104+ $rows[] = $row;
 105+ if ( $row->cl_timestamp > $this->mMaxTimeStamp ) {
 106+ $this->mMaxTimeStamp = $row->cl_timestamp;
 107+ }
 108+ }
 109+ return $this->formatRows( &$rows );
 110+ }
 111+
 112+ # strip images, links, tags
 113+ function formatSummary ( $text ) {
 114+ global $wgContLang;
 115+ $prefixes = array_keys($wgContLang->getLanguageNames());
 116+ $prefixes[] = $wgContLang->getNsText(NS_CATEGORY);
 117+ $imgprefix = $wgContLang->getNsText(NS_IMAGE);
 118+ $text = "\n".$text;
 119+
 120+ $rules = array(
 121+ "/\[\[(".implode('|',$prefixes)."):[^\]]*\]\]/i" => "", # interwiki links, cat links
 122+ "/\[\[(?!".$imgprefix.")([^\[\]]+)\|([^[\]\|]*)\]\]/" => "\$2", # piped links
 123+ "/\[\[(?!".$imgprefix.")([^\[\]]+)\]\]/i" => "\$1", # links
 124+ "/\[http:\/\/[^\s]+\s*(.*?)\]/" => "\$1", # external links
 125+ "/\[\[(".$imgprefix."|Image|Media):[^\]]*\]\]/i" => "", # images, plus int. prefix
 126+ "/<br([^>]{1,60})>/i" => "\n", # break
 127+ "/{{([^}]+)}}/s" => "", # templates
 128+ "/<table[^>]{0,660}>(.{1,1200})<\/table>/si" => "", # short tables are removed
 129+ "/\n{\|(.{1,1200})\n\|}/s" => "", # short tables are removed
 130+ "/\n\|-.*(?=\n)/" => "", # table row in long tables
 131+ "/\n{?\|.*\|?(?=\n)/" => "", # table cell in long tables
 132+ "/\n===\s*(.*)\s*===\s*\n/" => "\n* \$1\n", # h3
 133+ "/\n==\s*(.*)\s*==\s*\n/" => "\n* \$1\n", # h2
 134+ "/\n=\s*(.*)\s*=\s*\n/" => "\n* \$1\n", # h1
 135+ "/'''([^']+)'''/" => "\$1", # bold
 136+ "/''([^']+)''/" => "\$1", # italic
 137+ "/\n----+/" => "", # hr
 138+ "/<([^>]{1,2000})>/s" => "", # any html tags
 139+ "/__\w{1,60}__/i" => "", # __notoc__ etc
 140+ "/(\n\s*)+/" => "\n" # many newlines
 141+ );
 142+
 143+ $text = preg_replace( array_keys($rules), array_values($rules), $text);
 144+
 145+ # only return the first few chars for now
 146+ $shorttext = $wgContLang->truncate( trim( $text ), 145 );
 147+ return htmlspecialchars( $shorttext );
 148+ }
 149+
 150+ function setLimit($limit) {
 151+ $this->mLimit=$limit;
 152+ }
 153+
 154+ function setDatelevel($datelevel) {
 155+ $this->mDatelevel=$datelevel;
 156+ }
 157+
 158+ }
 159+
 160+ class CategoryByDateFeed extends CategoryByDate {
 161+
 162+ function view() {
 163+ global $wgRequest;
 164+ global $messageMemc, $wgDBname;
 165+ global $wgFeedClasses, $wgTitle, $wgSitename, $wgContLanguageCode;
 166+
 167+ if( !isset( $wgFeedClasses[$this->mFeedFormat] ) ) {
 168+ wfHttpError( 500, "Internal Server Error", "Unsupported feed type." );
 169+ return false;
 170+ }
 171+ $feedTitle = $this->mTitle->getPrefixedText() . ' - ' . $wgSitename;
 172+ $this->feed = new $wgFeedClasses[$this->mFeedFormat](
 173+ $feedTitle,
 174+ htmlspecialchars( wfMsgForContent( 'catfeedsummary' ) ),
 175+ $wgTitle->getFullUrl() );
 176+
 177+ $pagekey = md5( $this->mTitle->getDBkey() );
 178+ $timekey = "$wgDBname:catfeed:$pagekey:$this->mFeedFormat:limit:{$this->mLimit}:timestamp";
 179+ $key = "$wgDBname:catfeed:$pagekey:$this->mFeedFormat:limit:{$this->mLimit}";
 180+ $cachedFeed = false;
 181+ $adddeltimestamp = $wgDBname.':Category:'.$pagekey.':adddeltimestamp';
 182+
 183+ $catLastAddDel = $messageMemc->get( $adddeltimestamp );
 184+
 185+ if( $feedLastmod = $messageMemc->get( $timekey )
 186+ and $catLastAddDel <= $feedLastmod ) {
 187+ wfDebug( "CatFeed: loading feed from cache ($key; $feedLastmod; $catLastAddDel )...\n" );
 188+ $cachedFeed = $messageMemc->get( $key );
 189+ } else {
 190+ wfDebug( "CatFeed: cached feed timestamp check failed ($feedLastmod; $catLastAddDel) timekey: $timekey; adddel: $adddeltimestamp \n" );
 191+
 192+ }
 193+ if( is_string( $cachedFeed ) ) {
 194+ wfDebug( "CatFeed: Outputting cached feed\n" );
 195+ $this->feed->httpHeaders();
 196+ echo $cachedFeed;
 197+ } else {
 198+ wfDebug( "CatFeed: rendering new feed and caching it\n" );
 199+ ob_start();
 200+ $this->getData();
 201+ $cachedFeed = ob_get_contents();
 202+ ob_end_flush();
 203+
 204+ $expire = 3600 * 24; # One day
 205+ $messageMemc->set( $key, $cachedFeed );
 206+ $messageMemc->set( $timekey, $catLastAddDel , $expire );
 207+ }
 208+ return true;
 209+ }
 210+
 211+ function formatRows( $rows ) {
 212+ global $wgSitename, $wgFeedClasses, $wgContLanguageCode;
 213+
 214+ $this->feed->outHeader();
 215+ foreach( $rows as $row ) {
 216+ $title = Title::makeTitle( $row->cur_namespace, $row->cur_title );
 217+ $item = new FeedItem(
 218+ $title->getPrefixedText(),
 219+ $this->formatSummary( $row->cur_text ),
 220+ $title->getFullURL(),
 221+ $row->cl_timestamp,
 222+ $row->cur_user_text,
 223+ '' #$talkpage->getFullURL()
 224+ );
 225+ $this->feed->outItem( $item );
 226+ }
 227+ $this->feed->outFooter();
 228+ }
 229+
 230+ }
 231+
 232+ class CategoryByDateNewslist extends CategoryByDate {
 233+
 234+ function formatRows( $rows ) {
 235+ # format members of a category as 'news list' within a page
 236+ # useful for portals, probably wikinews etc
 237+ # todo: allow multiple categories to be merged ('or' in sql)
 238+ global $wgUser, $wgLang;
 239+ $skin = &$wgUser->getSkin();
 240+ $list = '';
 241+ $ts = $closedl = $date = $oldns = $oldtitle = '';
 242+ foreach( $rows as $row ) {
 243+ # check for duplicates, cheaper than in the db
 244+ if($row->cur_namespace != $oldns or $row->cur_title != $oldtitle) {
 245+ $oldns = $row->cur_namespace;
 246+ $oldtitle = $row->cur_title;
 247+ $title = Title::makeTitle( $row->cur_namespace, $row->cur_title );
 248+ $ts = $row->cl_timestamp;
 249+ $newdate = $wgLang->date( wfTimestamp( TS_MW, $ts ) );
 250+ if( $date != $newdate ) {
 251+ $date = $newdate;
 252+ $list .= "$closedl\n<h{$this->mDatelevel}> ".$date." </h{$this->mDatelevel}>\n<dl>";
 253+ $closedl = '</dl>';
 254+ }
 255+ $list .= '<dt>' . $skin->makeKnownLinkObj($title) .
 256+ ' <span style="font-size: 0.76em;font-weight:normal;">' .
 257+ $wgLang->time( wfTimestamp( TS_MW, $ts ) ) . '</span></dt><dd> ' .
 258+ $this->formatSummary( $row->cur_text ).'</dd>';
 259+ }
 260+ }
 261+ return $list . $closedl;
 262+ }
 263+ }
 264+
 265+}
 266+
 267+function viewCatFeed( &$CategoryPage ) {
 268+ global $wgRequest;
 269+ $catfeed = new CategoryByDateFeed($CategoryPage->mTitle);
 270+ # nothing to do,CategoryPage::view continues
 271+ if(!$wgRequest->getBool('feed',false)) return true;
 272+
 273+ # else continue
 274+ $catfeed->view();
 275+ # stop CategoryPage::view from continuing
 276+ return false;
 277+}
 278+function viewCatNewslist( $input ) {
 279+ $text = '';
 280+
 281+ # Defaults
 282+ #
 283+ # Number of headlines to be shown
 284+ $limit=50;
 285+ # Header level to be used for dates
 286+ $datelevel=2;
 287+
 288+ # Extract possible options from input
 289+ getCatOption($limit,$input,"limit");
 290+ getCatOption($datelevel,$input,"datelevel");
 291+
 292+ $iptitles = split("\n",trim($input));
 293+ $dbtitles = array();
 294+
 295+ # Add only valid title objects
 296+ foreach ( $iptitles as $title ) {
 297+ $addtitle = Title::newFromURL($title);
 298+ if(get_class($addtitle)=="title") {
 299+ $dbtitles[] = $addtitle;
 300+ }
 301+ }
 302+ # search for 5 categories max for now
 303+ $dbtitles = array_slice($dbtitles, 0, 4);
 304+ if(count($dbtitles)>0) {
 305+ $catnews = new CategoryByDateNewslist($dbtitles[0], $dbtitles);
 306+ $catnews->setLimit($limit);
 307+ $catnews->setDatelevel($datelevel);
 308+ $text .= $catnews->view();
 309+ }
 310+
 311+ return $text;
 312+}
 313+
 314+function getCatOption(&$value,&$input,$name) {
 315+
 316+ if(preg_match("/$name\s*=\s*(\d+)/mi",$input,$matches)) {
 317+ $value=$matches[1];
 318+ # Extract from input
 319+ $input=preg_replace("/$name\s*=\s*\d+/mi","",$input);
 320+ }
 321+}
 322+
Property changes on: trunk/extensions/CategoryFeed/CategoryFeed.php
___________________________________________________________________
Name: svn:keywords
1323 + Author Date Id Revision LastChangedDate LastChangedRevision
Name: svn:eol-style
2324 + native
Index: trunk/extensions/Translate/groups/mediawiki-defines.txt
@@ -77,6 +77,8 @@
7878 Call
7979 aliasfile = Call/Call.alias.php
8080
 81+Category Feed
 82+
8183 Category Intersection
8284 aliasfile = CategoryIntersection/CategoryIntersection.alias.php
8385
@@ -97,10 +99,6 @@
98100 ignored = categorytree-empty-bullet,categorytree-page-bullet
99101 ignored = categorytree-member-num
100102
101 -Category Feed
102 -file = catfeed/catfeed.i18n.php
103 -id = ext-catfeed
104 -
105103 Category Watch
106104
107105 Central Auth

Comments

#Comment by Siebrand (talk | contribs)   16:58, 18 April 2010

Adding tag scaptrap. Not a scap trap per se, because it is commented out in Wikimedia config, but might even want to update the path, or clean up the config because of this rename.

Status & tagging log