Quick fix for regeneration of region overview pages after report entry (ticket #39)
[philipp/winterrodeln/mediawiki_extensions/wrreport.git] / wrreport.body.php
index 22d8d99b30b0c0bf8d9f162bf7e2705296bd8af4..204ed31652f8ac7d38f02b4c8741508397cf74c6 100644 (file)
@@ -51,6 +51,20 @@ function wrReportAfterTidy(&$parser, &$text) {
 }
 
 
+/// Forces a regeneration of region overview pages
+function wrRecacheRegions() {
+       // TODO: Better implementation - it's a "quick fix" now.
+       $title = Title::newFromText('Tirol');
+       $title->invalidateCache();
+       
+       $title = Title::newFromText('Vorarlberg');
+       $title->invalidateCache();
+
+       $title = Title::newFromText('Steiermark');
+       $title->invalidateCache();
+}
+
+
 
 // Render Functions
 // ----------------
@@ -328,10 +342,9 @@ function bahnberichtformularParserHook($input, $args, $parser) {
        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"));
        
-       // Ok, we can render the form :-)
-       // To prevent cache problems (old prefilled user names shown or old dates in the date list), caching is disabled when showing the form:
-       $title = $parser->getTitle();
-       $title->invalidateCache(); // I don't know if this helps because the caching is done _after_ the call of this function...
+       // Calling "$title = $parser->getTitle(); $title->invalidateCache();" doesn't help here to force regeneration
+       // However, this would not be the best solution because the page has to be re-rendered only at midnight
+
        return replaceByMarker(wrReportFormRender(TRUE, $parser->getTitle()->getText(), NULL, NULL, NULL, $author_name));
 }
 
@@ -497,6 +510,8 @@ class WrReport extends SpecialPage {
 
                                // Purge cache
                                $title->invalidateCache();
+                               wrRecacheRegions();                             
+
                                // Show success message
                                global $wrShowReportsSection;
                                $wgOut->addWikiText(utf8_encode('<div class="successbox">Der Bahnbericht für [[') . $row['page_title'] . '#' . $wrShowReportsSection . '|' . $row['page_title'] . utf8_encode("]] wurde erfolgreich gelöscht.</div>\n"));
@@ -599,6 +614,8 @@ class WrReport extends SpecialPage {
 
                                // Purge cache
                                $title->invalidateCache();
+                               wrRecacheRegions();                             
+
                                // Show success message
                                global $wrShowReportsSection;
                                $wgOut->addWikiText(utf8_encode('<div class="successbox">Der Bahnbericht für [[') . $page_title . '#' . $wrShowReportsSection . '|' . $page_title . utf8_encode("]] wurde erfolgreich gespeichert.</div>\n"));