/**
 * constructor
 */
function wfSpecialUserlogoutUCSC()
{
    global $wgUser, $wgOut, $wgRequest;
    $oldName = $wgUser->getName();
    $wgUser->logout();
    $wgOut->setRobotpolicy('noindex,nofollow');
    // Hook.
    $injected_html = '';
    wfRunHooks('UserLogoutComplete', array(&$wgUser, &$injected_html, $oldName));
    $wgOut->addHTML(wfMsgExt('logouttext', array('parse')) . $injected_html);
    returnToExternal(true, $wgRequest->getVal('returnto'));
}
/**
 * constructor
 */
function wfSpecialUserlogoutUCSC()
{
    global $wgUser, $wgOut, $wgRequest;
    /**
     * Some satellite ISPs use broken precaching schemes that log people out straight after
     * they're logged in (bug 17790). Luckily, there's a way to detect such requests.
     */
    if (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '&') !== false) {
        wfDebug("Special:Userlogout request {$_SERVER['REQUEST_URI']} looks suspicious, denying.\n");
        wfHttpError(400, wfMsg('loginerror'), wfMsg('suspicious-userlogout'));
        return;
    }
    $oldName = $wgUser->getName();
    $wgUser->logout();
    $wgOut->setRobotPolicy('noindex,nofollow');
    // Hook.
    $injected_html = '';
    wfRunHooks('UserLogoutComplete', array(&$wgUser, &$injected_html, $oldName));
    $wgOut->addHTML(wfMsgExt('logouttext', array('parse')) . $injected_html);
    returnToExternal(true, $wgRequest->getVal('returnto'));
}