Implemented report permission system.
authorphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Mon, 27 Oct 2008 22:20:06 +0000 (22:20 +0000)
committerphilipp <philipp@7aebc617-e5e2-0310-91dc-80fb5f6d2477>
Mon, 27 Oct 2008 22:20:06 +0000 (22:20 +0000)
git-svn-id: http://www.winterrodeln.org/svn/servermediawiki/trunk/extensions/wrreport@292 7aebc617-e5e2-0310-91dc-80fb5f6d2477

wrreport.body.php

index 0b554ce27ef4d7db25fb61258d0a4f9971971670..01262f3d57c5a3bafdb489c0acad1f334ecfc225 100644 (file)
@@ -208,12 +208,22 @@ function wrReportConditionRender($page_title) {
 ///
 /// The current page name is taken.
 function bahnberichtformularParserHook($input, $args, $parser) {
+       // Username
        global $wgUser;
        $author_name = NULL;
        if ($wgUser->isLoggedIn()) {
                $author_name = $wgUser->getRealName();
                if (!$author_name) $author_name = $wgUser->getName();
        }
+
+       global $wgWrReportMode;
+       global $wgWrReportBlackListAll;
+       global $wgWrReportBlackListStrangers;
+       if ($wgWrReportMode == 'summer') return wrReportSandboxParse(utf8_encode("''An dieser Stelle kann während des Winters die Schneelage von Rodelbahnen eingetragen werden.''\n\n"));
+       if ($wgWrReportMode == 'deny') return wrReportSandboxParse(utf8_encode("''Rodelbahnberichte sind derzeit leider nicht erlaubt.''\n\n"));
+       if ($wgWrReportMode == 'loggedin' && !$wgUser->isLoggedIn()) return wrReportSandboxParse(utf8_encode("''Derzeit sind Rodelbahnberichte nur für angemeldete Benutzer erlaubt.''\n\n"));
+       if (in_array($parser->getTitle()->getText(), $wgWrReportBlackListAll)) return wrReportSandboxParse(utf8_encode("''Bei dieser Rodelbahn dürfen derzeit leider keine Rodelbahnberichte abgegeben werden.''\n"));
+       if (!$wgUser->isLoggedIn() && in_array($parser->getTitle()->getText(), $wgWrReportBlackListStrangers)) return wrReportSandboxParse(utf8_encode("''Bei der angegebenen Rodelbahn dürfen derzeit nur angemeldete Benutzer Rodelbahnberichte abgebe.''\n\n"));
        return replaceByMarker(wrReportFormRender(TRUE, $parser->getTitle()->getText(), NULL, NULL, NULL, $author_name));
 }
 
@@ -301,7 +311,15 @@ class WrReport extends SpecialPage {
                                
                                // check conditions/permissions
                                $errorMsg = NULL;
-                               if (!$page_id) $errorMsg = utf8_encode('Die angegebene Seite wurde nicht gefunden.');
+                               global $wgWrReportMode;
+                               global $wgWrReportBlackListAll;
+                               global $wgWrReportBlackListStrangers;
+                               if ($wgWrReportMode == 'summer') $errorMsg = utf8_encode('Rodelbahnberichte sind in der schneefreien Zeit nicht erlaubt.');
+                               elseif ($wgWrReportMode == 'deny') $errorMsg = utf8_encode('Rodelbahnberichte sind derzeit leider nicht erlaubt.');
+                               elseif ($wgWrReportMode == 'loggedin' && !$wgUser->isLoggedIn()) $errorMsg = utf8_encode('Derzeit sind Rodelbahnberichte nur für angemeldete Benutzer erlaubt.');
+                               elseif (!$page_id) $errorMsg = utf8_encode('Die angegebene Seite wurde nicht gefunden.');
+                               elseif (in_array($page_title, $wgWrReportBlackListAll)) $errorMsg = utf8_encode('Bei der angegebenen Rodelbahn dürfen derzeit keine Rodelbahnberichte abgegeben werden.');
+                               elseif (!$wgUser->isLoggedIn() && in_array($page_title, $wgWrReportBlackListStrangers)) $errorMsg = utf8_encode('Bei der angegebenen Rodelbahn dürfen derzeit nur angemeldete Benutzer Rodelbahnberichte abgebe.');
                                elseif (!$condition && !$description) $errorMsg = utf8_encode('Es sind sowohl die Beschreibung als auch die Bewertung leer/nicht vergeben.');
                                elseif (!$wgUser->isLoggedIn()) {
                                        if (!$description) $errorMsg = utf8_encode('Bitte bei der Beschreibung eine kurze Begründung für die Bewertung abgeben.');