f9246bd62f319c3b32b6316cd0fd0d09695c5cc7
[philipp/winterrodeln/mediawiki_extensions/wrreport.git] / wrreport.php
1 <?php
2 // File encoding: utf-8
3 // This extension does not depend on other extensions.
4 //
5 // The following tags are supported:
6 // <bahnentabelle/>
7 //     Creates an overview table of all sledruns specified (one per line) in the tag.
8 //
9 // <bahnenregiontabelle/>
10 //     Like <bahnentabelle> but includes all sledruns that are in the region of the current page
11 //     or in the region specified by one of the following parameters:
12 //         <bahnenregiontabelle wiki="Innsbruck" /> (refers to region represented by the MediaWiki Title name)
13 //         <bahnenregiontabelle region_id="3" /> (refers to id in the wrregion table)
14 //         <bahnenregiontabelle region_name="Innsbruck" /> (refers to name in the wrregion table)
15 //     This tag does not accept any contents.
16 //
17 // <bahnberichte/>
18 //     Shows an overview of the sledrun reports of the current page.
19 //
20 // <bahnberichtformular/>
21 //     Creates the form that is used to enter sledrun reports.
22 //
23 // <rodelbahntabelle/>
24 //     Generates a list of sledrun entries in a flexible way.
25 //     Each line (entry) either add sledruns or removes sledruns.
26 //     Without entries, the table contains no sledruns.
27 //
28 //     Examples:
29 //     Empty list:
30 //         <rodelbahntabelle/>
31 //
32 //     Sledrun "Rumer Alm" and sledrun "Juifenalm"
33 //         <rodelbahntabelle>
34 //             <rodelbahn>Juifenalm</rodelbahn>
35 //             <rodelbahn>Rumer Alm</rodelbahn>
36 //         </rodelbahntabelle>
37 //
38 //     All sledruns in region Innsbruck thats entries are not "under construction".
39 //     The name of the region has to correspond to a name (column name)
40 //     in the table wrregion.
41 //         <rodelbahntabelle>
42 //             <region>Innsbruck</region>
43 //         </rodelbahntabelle>
44 //
45 //     Same as above but excluding the sledrun "Rumer Alm":
46 //         <rodelbahntabelle>
47 //             <region>Innsbruck</region>
48 //             <rodelbahn operation="-">Rumer Alm</rodelbahn>
49 //         </rodelbahntabelle>
50 //
51 //     All sledruns thats entries are "under construction"
52 //         <rodelbahntabelle>
53 //             <rodelbahnen in_arbeit="ja"/>
54 //         </rodelbahntabelle>
55 //
56 //     Attributes:
57 //         * in_arbeit: values "ja", "nein" (default for <region> and <rodelbahnen>), "*" (default for <rodelbahn>)
58 //             Just include the sledrun(s) if the condition is fulfilled.
59 //         * operation: values "+" (add the sledrun(s) to the set, default), "-" (subtract the sledrun(s) from the set)
60 //     Attributes that may be implemented later
61 //         * beleuchtungstage: values "0", "unknown" (is null), ">0" (excludes null), "7", "*" (includes null)
62 //             Just include the sledrun(s) if the condition is fulfilled.
63 //
64
65 # Alert the user that this is not a valid entry point to MediaWiki if they try to access the special pages file directly.
66 if (!defined('MEDIAWIKI')) {
67         echo "To install the wrreport extension, put the following line in LocalSettings.php:\n";
68         echo 'require_once "$IP/extensions/wrreport/wrreport.php"';
69         exit(1);
70 }
71
72
73 $wgExtensionCredits['parserhook'][] = array(
74         'path' => __FILE__,
75         'name' => 'Winterrodeln Report',
76         'description' => 'Interprets the <report/> tag in sledrun pages and creates report summaries',
77         'descriptionmsg' => 'wrreport-description',
78         'version' => '2.9.1',
79         'author' =>'Philipp Spitzer',
80         'url' => 'http://www.winterrodeln.org/trac/wiki/WrReport',
81 );
82
83
84 // Variables that can be changed in LocalSettings.php
85 $wgWrReportMode = 'allow'; // 'summer', 'allow', 'loggedin', 'deny'
86 $wgWrReportBlackListAll = array(); // array of page names where reports disallowed for all users. Example: array('Birgitzer Alm (vom Adelshof)');
87 $wgWrReportBlackListStrangers = array(); // array of page names where reports are disallowed for not logged in users
88 $wgWrReportDeleteMode = 'loggedin'; // 'allow', 'loggedin', 'deny'
89 $wgWrReportFeedRoot = 'http://www.winterrodeln.org/feed'; // root URL of the Winterrodeln feed without trailing slash
90
91
92
93 // Resources
94 $wgResourceModules['ext.wrreport'] = array(
95         'styles' => array('wrreport.css'),
96         'localBasePath' => dirname( __FILE__ ),
97         'remoteExtPath' => 'wrreport',
98         'position' => 'top'
99 );
100
101
102 // Init
103 $wgAutoloadClasses['SpecialWrReport'] = dirname(__FILE__) . '/wrreport.body.php';
104 $wgAutoloadClasses['WrReport'] = dirname(__FILE__) . '/wrreport.body.php';
105 $wgAutoloadClasses['Services_Libravatar'] = dirname(__FILE__) . '/libravatar.php'; // from http://pear.php.net/package/Services_Libravatar
106 $wgExtensionMessagesFiles['wrreport'] = dirname(__FILE__) . '/wrreport.i18n.php';
107 $wgSpecialPages['wrreport'] = 'SpecialWrReport';
108 $wgHooks['LanguageGetSpecialPageAliases'][] = 'WrReportLanguageGetSpecialPageAliasesHook';
109 $wgHooks['ParserFirstCallInit'][] = 'WrReportParserFirstCallInitHook';
110
111
112 function WrReportLanguageGetSpecialPageAliasesHook(&$specialPageArray, $languageCode) {
113         $text = wfMessage('wrreport')->text(); // 'Bahnberichte'
114         $title = Title::newFromText($text); // 'Bahnberichte'
115         $specialPageArray['wrreport'][] = $title->getDBKey(); // 'Bahnberichte'
116         return true;
117 }
118
119
120 function WrReportParserFirstCallInitHook(&$parser) {
121         $parser->setHook('bahnberichtformular', 'WrReport::bahnberichtformularParserHook');
122         $parser->setHook('bahnberichte', 'WrReport::bahnberichteParserHook');
123         $parser->setHook('bahnentabelle', 'WrReport::bahnentabelleParserHook');
124         $parser->setHook('bahnenregiontabelle', 'WrReport::bahnenregiontabelleParserHook');
125         $parser->setHook('rodelbahntabelle', 'WrReport::rodelbahntabelleParserHook');
126         $parser->setHook('avatar', 'WrReport::avatarParserHook');
127         return true;
128 }
129
130
131 ?>