config->site_url($uri);
}
}
// ------------------------------------------------------------------------
/**
* Base URL
*
* Create a local URL based on your basepath.
* Segments can be passed in as a string or an array, same as site_url
* or a URL to a file can be passed in, e.g. to an image file.
*
* @param string
* @return string
*/
if ( ! function_exists('base_url'))
{
function base_url($uri = '')
{
$CI =& get_instance();
return $CI->config->base_url($uri);
}
}
// ------------------------------------------------------------------------
/**
* Current URL
*
* Returns the full URL (including segments) of the page where this
* function is placed
*
* @return string
*/
if ( ! function_exists('current_url'))
{
function current_url()
{
$CI =& get_instance();
return $CI->config->site_url($CI->uri->uri_string());
}
}
// ------------------------------------------------------------------------
/**
* URL String
*
* Returns the URI segments.
*
* @return string
*/
if ( ! function_exists('uri_string'))
{
function uri_string()
{
$CI =& get_instance();
return $CI->uri->uri_string();
}
}
// ------------------------------------------------------------------------
/**
* Index page
*
* Returns the "index_page" from your config file
*
* @return string
*/
if ( ! function_exists('index_page'))
{
function index_page()
{
$CI =& get_instance();
return $CI->config->item('index_page');
}
}
// ------------------------------------------------------------------------
/**
* Anchor Link
*
* Creates an anchor based on the local URL.
*
* @param string the URL
* @param string the link title
* @param mixed any attributes
* @return string
*/
if ( ! function_exists('anchor'))
{
function anchor($uri = '', $title = '', $attributes = '')
{
$title = (string) $title;
if ( ! is_array($uri))
{
$site_url = preg_match('!^\w+://! i', $uri) ? $uri : site_url($uri);
}
else
{
$site_url = site_url($uri);
}
if ($title == '')
{
$title = $site_url;
}
if ($attributes != '')
{
$attributes = _parse_attributes($attributes);
}
return ''.$title.'';
}
}
// ------------------------------------------------------------------------
/**
* Anchor Link - Pop-up version
*
* Creates an anchor based on the local URL. The link
* opens a new window based on the attributes specified.
*
* @param string the URL
* @param string the link title
* @param mixed any attributes
* @return string
*/
if ( ! function_exists('anchor_popup'))
{
function anchor_popup($uri = '', $title = '', $attributes = FALSE)
{
$title = (string) $title;
$site_url = preg_match('!^\w+://! i', $uri) ? $uri : site_url($uri);
if ($title == '')
{
$title = $site_url;
}
if ($attributes === FALSE)
{
return '".$title.'';
}
if ( ! is_array($attributes))
{
$attributes = array();
}
foreach (array('width' => '800', 'height' => '600', 'scrollbars' => 'yes', 'status' => 'yes', 'resizable' => 'yes', 'screenx' => '0', 'screeny' => '0', ) as $key => $val)
{
$atts[$key] = isset($attributes[$key]) ? $attributes[$key] : $val;
unset($attributes[$key]);
}
if ($attributes != '')
{
$attributes = _parse_attributes($attributes);
}
return ''.$title.'';
}
}
// ------------------------------------------------------------------------
/**
* Mailto Link
*
* @param string the email address
* @param string the link title
* @param mixed any attributes
* @return string
*/
if ( ! function_exists('mailto'))
{
function mailto($email, $title = '', $attributes = '')
{
$title = (string) $title;
if ($title == '')
{
$title = $email;
}
return ''.$title.'';
}
}
// ------------------------------------------------------------------------
/**
* Encoded Mailto Link
*
* Create a spam-protected mailto link written in Javascript
*
* @param string the email address
* @param string the link title
* @param mixed any attributes
* @return string
*/
if ( ! function_exists('safe_mailto'))
{
function safe_mailto($email, $title = '', $attributes = '')
{
$title = (string) $title;
if ($title == '')
{
$title = $email;
}
$x = str_split(' $val)
{
$x[] = ' '.$key.'="';
for ($i = 0, $l = strlen($val); $i < $l; $i++)
{
$x[] = '|'.ord($val[$i]);
}
$x[] = '"';
}
}
else
{
for ($i = 0, $l = strlen($attributes); $i < $l; $i++)
{
$x[] = $attributes[$i];
}
}
}
$x[] = '>';
$temp = array();
for ($i = 0, $l = strlen($title); $i < $l; $i++)
{
$ordinal = ord($title[$i]);
if ($ordinal < 128)
{
$x[] = '|'.$ordinal;
}
else
{
if (count($temp) === 0)
{
$count = ($ordinal < 224) ? 2 : 3;
}
$temp[] = $ordinal;
if (count($temp) === $count)
{
$number = ($count === 3)
? (($temp[0] % 16) * 4096) + (($temp[1] % 64) * 64) + ($temp[2] % 64)
: (($temp[0] % 32) * 64) + ($temp[1] % 64);
$x[] = '|'.$number;
$count = 1;
$temp = array();
}
}
}
$x[] = '<'; $x[] = '/'; $x[] = 'a'; $x[] = '>';
$x = array_reverse($x);
ob_start();
?>http'
.$matches[4][$i].'://'.$matches[5][$i]
.$matches[6][$i].''.$period,
$str);
}
}
if ($type !== 'url' && preg_match_all('/([a-zA-Z0-9_\.\-\+]+)@([a-zA-Z0-9\-]+)\.([a-zA-Z0-9\-\.]*)/i', $str, $matches))
{
for ($i = 0, $c = count($matches); $i < $c; $i++)
{
if (preg_match('|\.$|', $matches[3][$i]))
{
$period = '.';
$matches[3][$i] = substr($matches[3][$i], 0, -1);
}
else
{
$period = '';
}
$str = str_replace($matches[0][$i], safe_mailto($matches[1][$i].'@'.$matches[2][$i].'.'.$matches[3][$i]).$period, $str);
}
}
return $str;
}
}
// ------------------------------------------------------------------------
/**
* Prep URL
*
* Simply adds the http:// part if no scheme is included
*
* @param string the URL
* @return string
*/
if ( ! function_exists('prep_url'))
{
function prep_url($str = '')
{
if ($str === 'http://' OR $str == '')
{
return '';
}
$url = parse_url($str);
if ( ! $url OR ! isset($url['scheme']))
{
return 'http://'.$str;
}
return $str;
}
}
// ------------------------------------------------------------------------
/**
* Create URL Title
*
* Takes a "title" string as input and creates a
* human-friendly URL string with a "separator" string
* as the word separator.
*
* @param string the string
* @param string the separator
* @param bool
* @return string
*/
if ( ! function_exists('url_title'))
{
function url_title($str, $separator = '-', $lowercase = FALSE)
{
if ($separator === 'dash')
{
$separator = '-';
}
elseif ($separator === 'underscore')
{
$separator = '_';
}
$q_separator = preg_quote($separator);
$trans = array(
'&.+?;' => '',
'[^a-z0-9 _-]' => '',
'\s+' => $separator,
'('.$q_separator.')+' => $separator
);
$str = strip_tags($str);
foreach ($trans as $key => $val)
{
$str = preg_replace('#'.$key.'#i', $val, $str);
}
if ($lowercase === TRUE)
{
$str = strtolower($str);
}
return trim(trim($str, $separator));
}
}
// ------------------------------------------------------------------------
/**
* Header Redirect
*
* Header redirect in two flavors
* For very fine grained control over headers, you could use the Output
* Library's set_header() function.
*
* @param string the URL
* @param string the method: location or refresh
* @return string
*/
if ( ! function_exists('redirect'))
{
function redirect($uri = '', $method = 'auto', $http_response_code = 302)
{
if ( ! preg_match('#^https?://#i', $uri))
{
$uri = site_url($uri);
}
// IIS environment likely? Use 'refresh' for better compatibility
if (DIRECTORY_SEPARATOR !== '/' && $method === 'auto')
{
$method = 'refresh';
}
switch($method)
{
case 'refresh':
header('Refresh:0;url='.$uri);
break;
default:
header('Location: '.$uri, TRUE, $http_response_code);
break;
}
exit;
}
}
// ------------------------------------------------------------------------
/**
* Parse out the attributes
*
* Some of the functions use this
*
* @param array
* @param bool
* @return string
*/
if ( ! function_exists('_parse_attributes'))
{
function _parse_attributes($attributes, $javascript = FALSE)
{
if (is_string($attributes))
{
return ($attributes != '') ? ' '.$attributes : '';
}
$att = '';
foreach ($attributes as $key => $val)
{
if ($javascript == TRUE)
{
$att .= $key.'='.$val.',';
}
else
{
$att .= ' '.$key.'="'.$val.'"';
}
}
if ($javascript == TRUE && $att != '')
{
return substr($att, 0, -1);
}
return $att;
}
}
/* End of file url_helper.php */
/* Location: ./system/helpers/url_helper.php */