class HTTP (View source)

A class with HTTP-related helpers.

Like Debug, this is more a bundle of methods than a class ;-)

Properties

protected static int $cache_age
protected static int $modification_date
protected static string $etag

Methods

public static 
string
filename2url($filename)

Turns a local system filename into a URL by comparing it to the script filename.

public static 
string
absoluteURLs(string $html)

Turn all relative URLs in the content to absolute URLs

public static 
string
urlRewriter(string $content, string|callable $code)

Rewrite all the URLs in the given content, evaluating the given string as PHP code.

public static 
string
setGetVar(string $varname, string $varvalue, string $currentURL = null, string $separator = '&')

Will try to include a GET parameter for an existing URL, preserving existing parameters and fragments.

public static 
RAW_setGetVar($varname, $varvalue, $currentURL = null)

No description

public static 
array
findByTagAndAttribute(string $content, array $attributes)

Search for all tags with a specific attribute, then return the value of that attribute in a flat array.

public static 
getLinksIn($content)

No description

public static 
getImagesIn($content)

No description

public static 
string
get_mime_type(string $filename)

Get the MIME type based on a file's extension.

public static 
set_cache_age(int $age)

Set the maximum age of this page in web caches, in seconds

public static 
register_modification_date($dateString)

No description

public static 
register_modification_timestamp($timestamp)

No description

public static 
register_etag($etag)

No description

public static 
add_cache_headers(SS_HTTPResponse $body = null)

Add the appropriate caching headers to the response, including If-Modified-Since / 304 handling.

protected static 
string|false
generateETag(SS_HTTPResponse|string $response)

No description

public static 
string
gmt_date(int $timestamp)

Return an http://www.faqs.org/rfcs/rfc2822 RFC 2822 date in the GMT timezone (a timestamp is always in GMT: the number of seconds since January 1 1970 00:00:00 GMT)

public static 
int
get_cache_age()

Return static variable cache_age in second

protected static 
string
combineVary($vary)

Combine vary strings

Details

static string filename2url($filename)

Turns a local system filename into a URL by comparing it to the script filename.

Parameters

$filename

Return Value

string

static string absoluteURLs(string $html)

Turn all relative URLs in the content to absolute URLs

Parameters

string $html

Return Value

string

static string urlRewriter(string $content, string|callable $code)

Rewrite all the URLs in the given content, evaluating the given string as PHP code.

Put $URL where you want the URL to appear, however, you can't embed $URL in strings Some example code:

  • ```'"../../" . $URL'```
  • ```'myRewriter($URL)'```
  • ```'(substr($URL,0,1)=="/") ? "../" . substr($URL,1) : $URL'```

As of 3.2 $code should be a callable which takes a single parameter and returns the rewritten URL. e.g.

function($url) {
    return Director::absoluteURL($url, true);
}

Parameters

string $content

The HTML to search for links to rewrite

string|callable $code

Either a string that can evaluate to an expression to rewrite links (depreciated), or a callable that takes a single parameter and returns the rewritten URL

Return Value

string

The content with all links rewritten as per the logic specified in $code

static string setGetVar(string $varname, string $varvalue, string $currentURL = null, string $separator = '&')

Will try to include a GET parameter for an existing URL, preserving existing parameters and fragments.

If no URL is given, falls back to $_SERVER['REQUEST_URI']. Uses parse_url() to dissect the URL, and http_build_query() to reconstruct it with the additional parameter. Converts any '&' (ampersand) URL parameter separators to the more XHTML compliant '&'.

CAUTION: If the URL is determined to be relative, it is prepended with Director::absoluteBaseURL(). This method will always return an absolute URL because Director::makeRelative() can lead to inconsistent results.

Parameters

string $varname
string $varvalue
string $currentURL

Relative or absolute URL (Optional).

string $separator

Separator for http_build_query(). (Optional).

Return Value

string

Absolute URL

static RAW_setGetVar($varname, $varvalue, $currentURL = null)

No description

Parameters

$varname
$varvalue
$currentURL

static array findByTagAndAttribute(string $content, array $attributes)

Search for all tags with a specific attribute, then return the value of that attribute in a flat array.

Parameters

string $content
array $attributes

an array of tags to attributes, for example "[a] => 'href', [div] => 'id'"

Return Value

array

static getLinksIn($content)

No description

Parameters

$content

static getImagesIn($content)

No description

Parameters

$content

static string get_mime_type(string $filename)

Get the MIME type based on a file's extension.

If the finfo class exists in PHP, and the file actually exists, then use that extension, otherwise fallback to a list of commonly known MIME types.

Parameters

string $filename

Relative path to filename from project root, e.g. "mysite/tests/file.csv"

Return Value

string

MIME type

static set_cache_age(int $age)

Set the maximum age of this page in web caches, in seconds

Parameters

int $age

static register_modification_date($dateString)

No description

Parameters

$dateString

static register_modification_timestamp($timestamp)

No description

Parameters

$timestamp

static register_etag($etag)

No description

Parameters

$etag

static add_cache_headers(SS_HTTPResponse $body = null)

Add the appropriate caching headers to the response, including If-Modified-Since / 304 handling.

Note that setting HTTP::$cache_age will overrule any cache headers set by PHP's session_cache_limiter functionality. It is your responsibility to ensure only cacheable data is in fact cached, and HTTP::$cache_age isn't set when the HTTP body contains session-specific content.

Parameters

SS_HTTPResponse $body

The SS_HTTPResponse object to augment. Omitted the argument or passing a string is deprecated; in these cases, the headers are output directly.

static protected string|false generateETag(SS_HTTPResponse|string $response)

No description

Parameters

SS_HTTPResponse|string $response

Return Value

string|false

static string gmt_date(int $timestamp)

Return an http://www.faqs.org/rfcs/rfc2822 RFC 2822 date in the GMT timezone (a timestamp is always in GMT: the number of seconds since January 1 1970 00:00:00 GMT)

Parameters

int $timestamp

Return Value

string

static int get_cache_age()

Return static variable cache_age in second

Return Value

int

static protected string combineVary($vary)

Combine vary strings

Parameters

$vary

Return Value

string