Use typed arguments for parser hooks.
[philipp/winterrodeln/mediawiki_extensions/wrreport.git] / wrreport_body.php
index 73c9b923404ef3b10b523a253a2b23f6b73524e8..4b645c97dd195a44ff2e41c646a702f2fbf0288b 100644 (file)
@@ -149,6 +149,7 @@ class WrServicesLibravatar extends Services_Libravatar {
        function __construct() {
                $this->setSize(32);
                $this->setDefault('monsterid');
+               $this->setHttps(true);
        }
 
 
@@ -314,7 +315,7 @@ function wrReportFormRender($hide_save_button = TRUE, $page_title = NULL, $date_
        $tr = $table->appendElement('tr');
        $tr->appendElement('th')->appendText(wfMessage('wrreport-newreport-condition')->text());
        $td = $tr->appendElement('td');
-       $select = $td->appendElement('select', array('name' => 'condition'));
+       $select = $td->appendElement('select', array('name' => 'condition', 'required' => 'required'));
        $option = $select->appendElement('option', array('value' => '0'));
        $option->appendText(wfMessage('wrreport-condition-select')->text());
        foreach (WrReport::$wrConditions as $condition_num => $condition_text) {
@@ -329,7 +330,7 @@ function wrReportFormRender($hide_save_button = TRUE, $page_title = NULL, $date_
        // description
        $tr = $table->appendElement('tr');
        $tr->appendElement('th')->appendText(wfMessage('wrreport-newreport-description')->text());
-       $tr->appendElement('td')->appendElement('textarea', array('name' => 'description', 'class' => 'fullwidth', 'rows' => '7'))->appendText($description);
+       $tr->appendElement('td')->appendElement('textarea', array('name' => 'description', 'class' => 'fullwidth', 'rows' => '7', 'required' => 'required'))->appendText($description);
 
        // author
        $tr = $table->appendElement('tr');
@@ -348,7 +349,7 @@ function wrReportFormRender($hide_save_button = TRUE, $page_title = NULL, $date_
        $td = $tr->appendElement('td');
        $input = $td->appendElement('input', array('name' => 'preview', 'type' => 'submit'));
        if ($hide_save_button)
-               $input->setAttribute('value', wfMessage('wrreport-newreport-preview')->text() . ' & ' . wfMessage('wrreport-newreport-save')->text());
+               $input->setAttribute('value', wfMessage('wrreport-newreport-next')->text());
        else {
                $input->setAttribute('value', wfMessage('wrreport-newreport-preview')->text());
 
@@ -636,7 +637,7 @@ class WrReport {
        // Parser Hook Functions
        // ---------------------
 
-       public static function ParserFirstCallInitHook(&$parser) {
+       public static function ParserFirstCallInitHook(Parser &$parser) {
                $parser->setHook('bahnberichtformular', 'WrReport::bahnberichtformularParserHook');
                $parser->setHook('bahnberichte', 'WrReport::bahnberichteParserHook');
                $parser->setHook('bahnentabelle', 'WrReport::bahnentabelleParserHook');
@@ -649,9 +650,9 @@ class WrReport {
        /// \brief Is called when the tag <bahnberichtformular/> is encountered.
        ///
        /// The current page name is taken.
-       public static function bahnberichtformularParserHook($input, $args, $parser) {
+       public static function bahnberichtformularParserHook($input, array $args, Parser $parser, PPFrame $frame) {
                // Username
-               global $wgUser;
+               $wgUser = $parser->getUser();
                $author_name = NULL;
                if ($wgUser->isLoggedIn()) {
                        $author_name = $wgUser->getRealName();
@@ -689,16 +690,20 @@ class WrReport {
        /// \brief Is called when the tag <bahnberichte/> is encountered.
        ///
        /// The current page name is taken.
-       public static function bahnberichteParserHook($input, $args, $parser) {
+       public static function bahnberichteParserHook($input, array $args, Parser $parser, PPFrame $frame) {
                $parser->getOutput()->addModules('ext.wrreport'); // getOutput() returns class ParserOutput
                $title = $parser->getTitle();
+               $page_id = $title->getArticleID();
 
-               global $wgOut; // class OutputPage
-               global $wgWrReportFeedRoot;
-               $wgOut->addFeedLink('atom', $wgWrReportFeedRoot . '/berichte/bahn/' . strtolower($title->getPartialURL()));
+               $rows = array();
+               if ($page_id > 0) {
+                       global $wgOut; // class OutputPage
+                       global $wgWrReportFeedRoot;
+                       $wgOut->addFeedLink('atom', $wgWrReportFeedRoot . '/berichte/bahn/' . strtolower($title->getPartialURL()));
 
-               $conditions = array('page_title' => $title->getText(), 'date_invalid > now()');
-               $rows = wrReportGetReports($conditions);
+                       $conditions = array('page_id' => $page_id, 'date_invalid > now()');
+                       $rows = wrReportGetReports($conditions);
+               }
                if (count($rows) == 0) return wfMessage('wrreport-reports-none')->text();
                return array(wrReportTableRender($rows, WRREPORT_COMPACT, wrReportUserMayDelete(), $parser), 'markerType' => 'nowiki');
        }
@@ -881,7 +886,7 @@ class WrReport {
        /// Kemater Alm
        /// Axamer Lizum
        /// </bahnentabelle>
-       public static function bahnentabelleParserHook($input, $args, $parser) {
+       public static function bahnentabelleParserHook($input, array $args, Parser $parser, PPFrame $frame) {
                $parser->getOutput()->addModules('ext.wrreport');
 
                // Add feed
@@ -911,7 +916,7 @@ class WrReport {
        /// <bahnenregiontabelle wiki="Innsbruck" /> (refers to region represented by the MediaWiki Title name)
        /// <bahnenregiontabelle region_id="3" /> (refers to id in the wrregion table)
        /// <bahnenregiontabelle region_name="Innsbruck" /> (refers to name in the wrregion table)
-       public static function bahnenregiontabelleParserHook($input, $args, $parser) {
+       public static function bahnenregiontabelleParserHook($input, array $args, Parser $parser, PPFrame $frame) {
                $parser->getOutput()->addModules('ext.wrreport');
 
                try {
@@ -963,7 +968,7 @@ class WrReport {
        /// \brief Is called when the tag <rodelbahntabelle/> is encountered.
        ///
        /// Description: See description of wrreport.php
-       public static function rodelbahntabelleParserHook($input, $args, $parser) {
+       public static function rodelbahntabelleParserHook($input, array $args, Parser $parser, PPFrame $frame) {
                $parser->getOutput()->addModules('ext.wrreport');
 
                // Add feed
@@ -1074,7 +1079,7 @@ class WrReport {
 
 
        /// \brief Is called when the tag <avatar>username</avatar> is encountered.
-       public static function avatarParserHook($input, $args, $parser, $frame) {
+       public static function avatarParserHook($input, array $args, Parser $parser, PPFrame $frame) {
                $doc = new WrDOMDocument();
                $sla = new WrServicesLibravatar();
 
@@ -1122,7 +1127,7 @@ class SpecialWrReport extends SpecialPage {
        }
 
 
-       function LanguageGetSpecialPageAliasesHook(&$specialPageArray, $languageCode) {
+       static function LanguageGetSpecialPageAliasesHook(&$specialPageArray, $languageCode) {
                $text = wfMessage('wrreport')->text(); // 'Bahnberichte'
                $title = Title::newFromText($text); // 'Bahnberichte'
                $specialPageArray['wrreport'][] = $title->getDBKey(); // 'Bahnberichte'
@@ -1403,7 +1408,7 @@ class SpecialWrReport extends SpecialPage {
                                $output->addWikiText(wfMessage('wrreport-newreport-preview-middle')->text());
                                $output->addHTML(wrReportFormRender(FALSE, $page_title, $date_report, $time_report, $condition, $description, $author_name));
                                $output->addWikiText(wfMessage('wrreport-newreport-preview-bottom')->text());
-                               if ($author_userid)
+                               if ($wgUser->isLoggedIn())
                                        $output->addWikiText(wfMessage('wrreport-newreport-preview-bottom-loggedin')->text());
                                else
                                        $output->addWikiText(wfMessage('wrreport-newreport-preview-bottom-anonymous')->text());