URL
Kohana_URL

Class Contents

Constants

  • None

Properties

  • None

Class declared in SYSPATH/classes/url.php on line 3.

Methods

public static base( )
Kohana_URL

Source Code
public static function base($index = FALSE, $protocol = FALSE)
{
	// Start with the configured base URL
	$base_url = Kohana::$base_url;

	if ($protocol === TRUE)
	{
		// Use the current protocol
		$protocol = Request::$protocol;
	}
	elseif ($protocol === FALSE AND $scheme = parse_url($base_url, PHP_URL_SCHEME))
	{
		// Use the configured default protocol
		$protocol = $scheme;
	}

	if ($index === TRUE AND ! empty(Kohana::$index_file))
	{
		// Add the index file to the URL
		$base_url .= Kohana::$index_file.'/';
	}

	if (is_string($protocol))
	{
		if ($port = parse_url($base_url, PHP_URL_PORT))
		{
			// Found a port, make it usable for the URL
			$port = ':'.$port;
		}

		if ($domain = parse_url($base_url, PHP_URL_HOST))
		{
			// Remove everything but the path from the URL
			$base_url = parse_url($base_url, PHP_URL_PATH);
		}
		else
		{
			// Attempt to use HTTP_HOST and fallback to SERVER_NAME
			$domain = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
		}

		// Add the protocol and domain to the base URL
		$base_url = $protocol.'://'.$domain.$port.$base_url;
	}

	return $base_url;
}

public static query( )
Kohana_URL

Source Code
public static function query(array $params = NULL, $use_get = TRUE)
{
	if ($use_get)
	{
		if ($params === NULL)
		{
			// Use only the current parameters
			$params = $_GET;
		}
		else
		{
			// Merge the current and new parameters
			$params = array_merge($_GET, $params);
		}
	}

	if (empty($params))
	{
		// No query parameters
		return '';
	}

	// Note: http_build_query returns an empty string for a params array with only NULL values
	$query = http_build_query($params, '', '&');

	// Don't prepend '?' to an empty string
	return ($query === '') ? '' : ('?'.$query);
}

public static site( )
Kohana_URL

Source Code
public static function site($uri = '', $protocol = FALSE)
{
	// Chop off possible scheme, host, port, user and pass parts
	$path = preg_replace('~^[-a-z0-9+.]++://[^/]++/?~', '', trim($uri, '/'));

	if ( ! UTF8::is_ascii($path))
	{
		// Encode all non-ASCII characters, as per RFC 1738
		$path = preg_replace('~([^/]+)~e', 'rawurlencode("$1")', $path);
	}

	// Concat the URL
	return URL::base(TRUE, $protocol).$path;
}

public static title( )
Kohana_URL

Source Code
public static function title($title, $separator = '-', $ascii_only = FALSE)
{
	if ($ascii_only === TRUE)
	{
		// Transliterate non-ASCII characters
		$title = UTF8::transliterate_to_ascii($title);

		// Remove all characters that are not the separator, a-z, 0-9, or whitespace
		$title = preg_replace('![^'.preg_quote($separator).'a-z0-9\s]+!', '', strtolower($title));
	}
	else
	{
		// Remove all characters that are not the separator, letters, numbers, or whitespace
		$title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', UTF8::strtolower($title));
	}

	// Replace all separator characters and whitespace by a single separator
	$title = preg_replace('!['.preg_quote($separator).'\s]+!u', $separator, $title);

	// Trim separators from the beginning and end
	return trim($title, $separator);
}