freenetis-github/application/helpers/url_lang.php @ master
8baed187 | Michal Kliment | <?php defined('SYSPATH') or die('No direct script access.');
|
|
/*
|
|||
* This file is part of open source system FreenetIS
|
|||
* and it is released under GPLv3 licence.
|
|||
*
|
|||
* More info about licence can be found:
|
|||
* http://www.gnu.org/licenses/gpl-3.0.html
|
|||
*
|
|||
* More info about project can be found:
|
|||
* http://www.freenetis.org/
|
|||
*
|
|||
*/
|
|||
/**
|
|||
* Class: url_lang
|
|||
* URL language helper class.
|
|||
*
|
|||
* @package Helper
|
|||
*/
|
|||
class url_lang
|
|||
{
|
|||
/**
|
|||
* Prints translated string in given format
|
|||
*
|
|||
* @param string $value
|
|||
* @param array $args
|
|||
* @param integer $format
|
|||
* @return string
|
|||
*/
|
|||
public static function lang($value = '', $args = '', $format = 0)
|
|||
{
|
|||
switch ($format)
|
|||
{
|
|||
// default behaviour, prints without changes
|
|||
case 0:
|
|||
return Kohana::lang($value, $args);
|
|||
break;
|
|||
// prints string with lower letters
|
|||
case 1:
|
|||
return strtolower(Kohana::lang($value, $args));
|
|||
break;
|
|||
// prints string with upper first letter and others lower
|
|||
case 2:
|
|||
return ucfirst(strtolower(Kohana::lang($value, $args)));
|
|||
break;
|
|||
// prints string with upper letters
|
|||
case 3:
|
|||
return strtoupper(Kohana::lang($value, $args));
|
|||
break;
|
|||
// default behaviour, prints without changes
|
|||
default:
|
|||
return Kohana::lang($value, $args);
|
|||
break;
|
|||
}
|
|||
}
|
|||
/**
|
|||
* Return base url joined with 'index.php' string (if clean urls are off)
|
|||
* and lang string
|
|||
*
|
|||
* @param mixed $index
|
|||
* @param mixed $protocol
|
|||
* @param mixed $lang
|
|||
* @return string
|
|||
*/
|
|||
public static function base($index = FALSE, $protocol = FALSE, $lang = FALSE)
|
|||
{
|
|||
$index_page = (Settings::get('index_page')) ? 'index.php/' : '';
|
|||
$lang = Config::get('lang');
|
|||
return url::base() . $index_page . $lang . '/';
|
|||
}
|
|||
/*
|
|||
* Method: site
|
|||
* Creates a site URL based on the given URI string and
|
|||
* automatically prepends the language segment.
|
|||
*
|
|||
* Parameters:
|
|||
* uri - URI string
|
|||
* lang - non-default language
|
|||
* protocol - non-default protocol
|
|||
*
|
|||
* Returns:
|
|||
* A URL string.
|
|||
*/
|
|||
public static function site($uri = '', $lang = FALSE, $protocol = FALSE)
|
|||
{
|
|||
if ($lang === FALSE)
|
|||
{
|
|||
$lang = Config::get('lang');
|
|||
}
|
|||
$index_page = '';
|
|||
if (Settings::get('index_page'))
|
|||
{
|
|||
$index_page = 'index.php/';
|
|||
}
|
|||
return url::site($index_page . $lang . '/' . trim($uri, '/'), $protocol);
|
|||
}
|
|||
/*
|
|||
* Method: current
|
|||
*
|
|||
* Returns:
|
|||
* The current URI string without the lang part
|
|||
*/
|
|||
public static function current($length = 0, $offset = 0)
|
|||
{
|
|||
$str = substr(url::current(), 3);
|
|||
$segments = explode('/', rtrim($str, '/'));
|
|||
if (!$length)
|
|||
$length = count($segments) - $offset;
|
|||
$segments = array_slice($segments, $offset, $length);
|
|||
return implode('/', $segments);
|
|||
}
|
|||
/**
|
|||
* Returns previous URI without the lang part
|
|||
*
|
|||
* @author Michal Kliment
|
|||
* @param number $length
|
|||
* @param number $offset
|
|||
* @return string
|
|||
*/
|
|||
public static function previous($length = 0, $offset = 0)
|
|||
{
|
|||
$str = substr(url::previous(), 3);
|
|||
if (!$length)
|
|||
return $str;
|
|||
else
|
|||
{
|
|||
$segments = explode('/', rtrim($str, '/'));
|
|||
$segments = array_slice($segments, $offset, $length);
|
|||
return implode('/', $segments);
|
|||
}
|
|||
}
|
|||
/*
|
|||
* Method: redirect
|
|||
* Sends a page redirect header and
|
|||
* automatically prepends the language segment.
|
|||
*
|
|||
* Parameters:
|
|||
* uri - site URI or URL to redirect to
|
|||
* lang - non-default language
|
|||
* method - HTTP method of redirect
|
|||
*
|
|||
* Returns:
|
|||
* A HTML anchor, but sends HTTP headers. The anchor should never be seen
|
|||
* by the user, unless their browser does not understand the headers sent.
|
|||
*/
|
|||
public static function redirect($uri = '', $lang = FALSE, $method = '302')
|
|||
{
|
|||
if ($lang === FALSE)
|
|||
{
|
|||
$lang = Config::get('lang');
|
|||
}
|
|||
$index_page = '';
|
|||
if (Settings::get('index_page'))
|
|||
{
|
|||
$index_page = 'index.php/';
|
|||
}
|
|||
return url::redirect($index_page . $lang . '/' . trim($uri, '/'), $method);
|
|||
}
|
|||
/**
|
|||
* Returns uri from url, without lang segment
|
|||
*
|
|||
* @param string $url
|
|||
* @return string
|
|||
*/
|
|||
public static function uri($url)
|
|||
{
|
|||
$segments = explode('/', url::uri($url));
|
|||
array_shift($segments);
|
|||
return implode('/', $segments);
|
|||
}
|
|||
}
|