Example #1
0
function stash_request($extra = null, $email = null)
{
    $url = url_invoked();
    if (!is_null($_SERVER['QUERY_STRING'])) {
        $url .= "?{$_SERVER['QUERY_STRING']}";
    }
    $v = null;
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $v = $_POST;
    }
    return stash_new_request($_SERVER['REQUEST_METHOD'], $url, $v, $extra, $email);
}
Example #2
0
function track_code($extra = null)
{
    if (!defined('OPTION_TRACKING') || !OPTION_TRACKING) {
        return '';
    }
    $salt = sprintf('%08x', rand());
    $url = url_invoked();
    $sign = null;
    $img = null;
    if (is_null($extra)) {
        return '';
    } else {
        $sign = sha1(OPTION_TRACKING_SECRET . "{$salt}{$url}{$extra}");
        $img = url_new(OPTION_TRACKING_URL, false, "salt", $salt, "url", $url, "extra", $extra, "sign", $sign);
    }
    return '<!-- This "web bug" image is used to collect data which we use to improve our services. More on this at https://secure.mysociety.org/track/ --><img alt="" src="' . htmlspecialchars($img) . '" width="1" height="1">';
}
Example #3
0
function url_new($page, $retain)
{
    if (!isset($page)) {
        $page = url_invoked();
    }
    $url = "{$page}";
    $params = array();
    if ($retain) {
        /* GET takes priority over POST. This isn't the usual behaviour but is
         * consistent with other bits of the code (see fyr/phplib/forms.php) */
        $params = array_merge($_POST, $_GET);
    }
    if (func_num_args() > 2) {
        if (func_num_args() % 2 != 0) {
            die("call to url_new with odd number of arguments");
        }
        for ($i = 2; $i < func_num_args(); $i += 2) {
            $k = func_get_arg($i);
            $v = func_get_arg($i + 1);
            if (array_key_exists($k, $params)) {
                unset($params[$k]);
            }
            $params[func_get_arg($i)] = func_get_arg($i + 1);
        }
    }
    if (count($params) > 0) {
        $keyvalpairs = array();
        foreach ($params as $key => $val) {
            if (is_array($val)) {
                for ($i = 0; $i < count($val); ++$i) {
                    $keyvalpairs[] = urlencode($key) . '=' . urlencode($val[$i]);
                }
            } elseif ($val) {
                $keyvalpairs[] = urlencode($key) . '=' . urlencode($val);
            }
        }
        $url .= '?' . join('&', $keyvalpairs);
    }
    return $url;
}