/**
 * Standard fail function, called by default when a connection cannot be
 * established.
 * Displays the file cache if possible
 */
function wfEmergencyAbort(&$conn, $error)
{
    global $wgTitle, $wgUseFileCache, $title, $wgInputEncoding, $wgOutputEncoding;
    global $wgSitename, $wgServer, $wgMessageCache, $wgLogo;
    # I give up, Brion is right. Getting the message cache to work when there is no DB is tricky.
    # Hard coding strings instead.
    $noconnect = "<h1><img src='{$wgLogo}' style='float:left;margin-right:1em' alt=''>{$wgSitename} has a problem</h1><p><strong>Sorry! This site is experiencing technical difficulties.</strong></p><p>Try waiting a few minutes and reloading.</p><p><small>(Can't contact the database server: \$1)</small></p>";
    $mainpage = 'Main Page';
    $searchdisabled = <<<EOT
<p style="margin: 1.5em 2em 1em">{$wgSitename} search is disabled for performance reasons. You can search via Google in the meantime.
<span style="font-size: 89%; display: block; margin-left: .2em">Note that their indexes of {$wgSitename} content may be out of date.</span></p>',
EOT;
    $googlesearch = "\n<!-- SiteSearch Google -->\n<FORM method=GET action=\"http://www.google.com/search\">\n<TABLE bgcolor=\"#FFFFFF\"><tr><td>\n<A HREF=\"http://www.google.com/\">\n<IMG SRC=\"http://www.google.com/logos/Logo_40wht.gif\"\nborder=\"0\" ALT=\"Google\"></A>\n</td>\n<td>\n<INPUT TYPE=text name=q size=31 maxlength=255 value=\"\$1\">\n<INPUT type=submit name=btnG VALUE=\"Google Search\">\n<font size=-1>\n<input type=hidden name=domains value=\"{$wgServer}\"><br /><input type=radio name=sitesearch value=\"\"> WWW <input type=radio name=sitesearch value=\"{$wgServer}\" checked> {$wgServer} <br />\n<input type='hidden' name='ie' value='\$2'>\n<input type='hidden' name='oe' value='\$2'>\n</font>\n</td></tr></TABLE>\n</FORM>\n<!-- SiteSearch Google -->";
    $cachederror = "The following is a cached copy of the requested page, and may not be up to date. ";
    if (!headers_sent()) {
        header('HTTP/1.0 500 Internal Server Error');
        header('Content-type: text/html; charset=' . $wgOutputEncoding);
        /* Don't cache error pages!  They cause no end of trouble... */
        header('Cache-control: none');
        header('Pragma: nocache');
    }
    # No database access
    if (is_object($wgMessageCache)) {
        $wgMessageCache->disable();
    }
    $msg = wfGetSiteNotice();
    if ($msg == '') {
        $msg = str_replace('$1', htmlspecialchars($error), $noconnect);
    }
    $text = $msg;
    if ($wgUseFileCache) {
        if ($wgTitle) {
            $t =& $wgTitle;
        } else {
            if ($title) {
                $t = Title::newFromURL($title);
            } elseif (@$_REQUEST['search']) {
                $search = $_REQUEST['search'];
                echo $searchdisabled;
                echo str_replace(array('$1', '$2'), array(htmlspecialchars($search), $wgInputEncoding), $googlesearch);
                wfErrorExit();
            } else {
                $t = Title::newFromText($mainpage);
            }
        }
        $cache = new CacheManager($t);
        if ($cache->isFileCached()) {
            $msg = '<p style="color: red"><b>' . $msg . "<br />\n" . $cachederror . "</b></p>\n";
            $tag = '<div id="article">';
            $text = str_replace($tag, $tag . $msg, $cache->fetchPageText());
        }
    }
    echo $text;
    wfErrorExit();
}
Esempio n. 2
0
 function compileTemplate($template, $ignore)
 {
     $tp = new CBTProcessor($template, $this, $ignore);
     $tp->mFunctionCache = $this->mFunctionCache;
     $this->mCompiling = true;
     $compiled = $tp->compile();
     $this->mCompiling = false;
     if ($tp->getLastError()) {
         // If there was a compile error, don't save the template
         // Instead just print the error and exit
         echo $compiled;
         wfErrorExit();
     }
     $this->mFunctionCache = $tp->mFunctionCache;
     return $compiled;
 }
Esempio n. 3
0
 function fatalError($message)
 {
     $this->setPageTitle(wfMsg("internalerror"));
     $this->setRobotpolicy("noindex,nofollow");
     $this->setArticleRelated(false);
     $this->enableClientCache(false);
     $this->mRedirect = '';
     $this->mBodytext = $message;
     $this->output();
     wfErrorExit();
 }