<?php

// Thanks WordPress..
function is_ssl() {
    if ( isset(
$_SERVER['HTTPS']) ) {
        if ( 
'on' == strtolower($_SERVER['HTTPS']) )
            return 
true;
        if ( 
'1' == $_SERVER['HTTPS'] )
            return 
true;
    } elseif ( isset(
$_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
        return 
true;
    }
    return 
false;
}

$url = ( is_ssl() ? 'https://' 'http://' ) . $_SERVER['HTTP_HOST'] . (!empty($_SERVER['HTTP_POST']) && 80 != $_SERVER['HTTP_POST'] ? ':' $_SERVER['HTTP_POST'] : '');
if ( 
strpos($_SERVER['REQUEST_URI'], '?') )
    
$url .= substr($_SERVER['REQUEST_URI'], 0strpos($_SERVER['REQUEST_URI'], '?'));
else
    
$url .= $_SERVER['REQUEST_URI'];

if ( isset(
$_GET['source']) ) {
    
highlight_file(__FILE__ );
    exit;
}

if ( isset(
$_GET['201-location']) ) {
    
header("HTTP/1.1 201 OK");
    if ( isset(
$_GET['fail']) ) {
        echo 
"FAIL";
    } else {
        
header("Location: $url?201-location&fail=true"true201);
        echo 
"PASS";
    }
    exit;
}
if ( isset(
$_GET['header-check']) ) {
    
$out = array();
    
header("Content-type: text/plain");
    foreach ( 
$_SERVER as $key => $value ) {
        if ( 
stripos($key'http') === ) {
            
$key strtolower(substr($key5));
            echo 
"$key:$value\n";
        }
    }
    exit;
}
if ( isset(
$_GET['multiple-headers']) ) {
    
header("HeaderName: One"false);
    
header("HeaderName: Two"false);
    
header("HeaderName: Three"false);
    exit;
}

if ( isset( 
$_GET['post-redirect-to-method'] ) ) {
    
$method $_SERVER['REQUEST_METHOD'];
    
$response_code = isset( $_GET['response_code'] ) ? $_GET['response_code'] : 301;

    if ( 
'POST' == $method && ! isset( $_GET['redirection-performed'] ) ) {
        
header"Location: $url?post-redirect-to-method=1&redirection-performed=1"true$response_code );
        exit;
    }

    echo 
$method;
    exit;
    
}

if ( isset( 
$_GET['location-with-200'] ) ) {
    if ( ! isset( 
$_GET['redirection-performed'] ) ) {
        
header"HTTP/1.1 200 OK" );
        
header"Location: $url?location-with-200=1&redirection-performed"true200 );
        echo 
'PASS';
        exit;
    }
    
// Redirection was followed
    
echo 'FAIL';
    exit;
}

if ( isset( 
$_GET['print-pass'] ) ) {
    echo 
'PASS';
    exit;
}

if ( isset( 
$_GET['multiple-location-headers'] ) ) {
    if ( ! isset( 
$_GET['redirected'] ) ) {
        
header"Location: $url?multiple-location-headers=1&redirected=one"false );
        
header"Location: $url?multiple-location-headers=1&redirected=two"false );
        exit;
    }
    if ( 
'two' != $_GET['redirected'] )
        echo 
'FAIL';
    else
        echo 
'PASS';
    exit;
}

if ( isset( 
$_GET['cookie-test'] ) ) {
    if ( 
'test-cookie' != $_GET['cookie-test'] ) {
        
setcookie'api_test_cookie''value'time() + 365*24*60*60'/core/tests/1.0/''api.wordpress.org' );
        
setcookie'api_test_cookie_minimal''value'  );
        
setcookie'api_test_cookie_wrong_host''value'time() + 365*24*60*60'/''example.com' );
        
setcookie'api_test_wildcard_domain''value'time() + 365*24*60*60'/''.wordpress.org' );
        
setcookie'api_test_cookie_expired''value'time() - 365*24*60*60'/''.wordpress.org' );
        
header"Location: $url?cookie-test=test-cookie" );
        exit;
    }

    if ( empty( 
$_COOKIE['api_test_cookie'] ) || 'value' != $_COOKIE['api_test_cookie'] )
        die( 
'FAIL_NO_COOKIE' );
    if ( empty( 
$_COOKIE['api_test_cookie_minimal'] ) )
        die( 
'FAIL_NO_MINIMAL' );
    if ( isset( 
$_COOKIE['api_test_cookie_wrong_host'] ) )
        die( 
'FAIL_WRONG_HOST' );
    if ( empty( 
$_COOKIE['api_test_wildcard_domain'] ) )
        die( 
'FAIL_NO_WILDCARD' );
    if ( isset( 
$_COOKIE['api_test_cookie_expired'] ) )
        die( 
'FAIL_EXPIRED_COOKIE' );

    echo 
'PASS';
    exit;
}


$rt = isset($_GET['rt']) ? $_GET['rt'] : 5;
$r = isset($_GET['r']) ? $_GET['r'] : 0;

if ( 
$r $rt ) {
    
$code = isset($_GET['code']) ? (int)$_GET['code'] : 302;
    
header("Location: $url?rt=" $rt "&r=" . ($r+1), true$code);
    echo 
"Redirect $r of $rt";
    exit;
}
echo 
"Redirect $r of $rt is FINAL.<br/>";
echo 
"GET['rt'] = Total times to redirect. Defaults to 5.<br />";
echo 
"GET['r'] = Current redirection. Defaults to 0.<br />";
echo 
"<a href='$url?source=true'>View Source</a>";