config->site_url($uri);
}
// ------------------------------------------------------------------------
/**
* Base URL
*
* Returns the "base_url" item from your config file
*
* @access public
* @return string
*/
function base_url()
{
$obj =& get_instance();
return $obj->config->item('base_url', 1);
}
// ------------------------------------------------------------------------
/**
* Index page
*
* Returns the "index_page" from your config file
*
* @access public
* @return string
*/
function index_page()
{
$obj =& get_instance();
return $obj->config->item('index_page');
}
// ------------------------------------------------------------------------
/**
* Anchor Link
*
* Creates an anchor based on the local URL.
*
* @access public
* @param string the URL
* @param string the link title
* @param mixed any attributes
* @return string
*/
function anchor($uri = '', $title = '', $attributes = '')
{
$site_url = site_url($uri);
if ($title == '')
{
$title = $site_url;
}
if ($attributes == '')
{
$attributes = ' title="'.$title.'"';
}
else
{
if (is_array($attributes))
{
$attributes = parse_url_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.
*
* @access public
* @param string the URL
* @param string the link title
* @param mixed any attributes
* @return string
*/
function anchor_popup($uri = '', $title = '', $attributes = FALSE)
{
$site_url = 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])) ? $val : $attributes[$key];
}
return "".$title."";
}
// ------------------------------------------------------------------------
/**
* Mailto Link
*
* @access public
* @param string the email address
* @param string the link title
* @param mixed any attributes
* @return string
*/
function mailto($email, $title = '', $attributes = '')
{
if ($title == "")
{
$title = $email;
}
if (is_array($attributes))
{
$attributes = parse_url_attributes($attributes);
}
return ''.$title.'';
}
// ------------------------------------------------------------------------
/**
* Encoded Mailto Link
*
* Create a spam-protected mailto link written in Javascript
*
* @access public
* @param string the email address
* @param string the link title
* @param mixed any attributes
* @return string
*/
function safe_mailto($email, $title = '', $attributes = '')
{
if ($title == "")
{
$title = $email;
}
for ($i = 0; $i < 16; $i++)
{
$x[] = substr(' $val)
{
$x[] = ' '.$key.'="';
for ($i = 0; $i < strlen($val); $i++)
{
$x[] = "|".ord(substr($val, $i, 1));
}
$x[] = '"';
}
}
else
{
for ($i = 0; $i < strlen($attributes); $i++)
{
$x[] = substr($attributes, $i, 1);
}
}
}
$x[] = '>';
$temp = array();
for ($i = 0; $i < strlen($title); $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')
{
if (preg_match_all("/([a-zA-Z0-9_\.\-]+)@([a-zA-Z0-9\-]+)\.([a-zA-Z0-9\-\.]*)/i", $str, $matches))
{
for ($i = 0; $i < sizeof($matches['0']); $i++)
{
$period = '';
if (preg_match("|\.$|", $matches['3'][$i]))
{
$period = '.';
$matches['3'][$i] = substr($matches['3'][$i], 0, -1);
}
$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 missing
*
* @access public
* @param string the URL
* @return string
*/
function prep_url($str = '')
{
if ($str == 'http://' OR $str == '')
{
return '';
}
if (substr($str, 0, 7) != 'http://' && substr($str, 0, 8) != 'https://')
{
$str = 'http://'.$str;
}
return $str;
}
// ------------------------------------------------------------------------
/**
* Create URL Title
*
* Takes a "title" string as input and creates a
* human-friendly URL string with either a dash
* or an underscore as the word separator.
*
* @access public
* @param string the string
* @param string the separator: dash, or underscore
* @return string
*/
function url_title($str, $separator = 'dash')
{
if ($separator == 'dash')
{
$search = '_';
$replace = '-';
}
else
{
$search = '-';
$replace = '_';
}
$trans = array(
$search => $replace,
"\s+" => $replace,
"[^a-z0-9".$replace."]" => '',
$replace."+" => $replace,
$replace."$" => '',
"^".$replace => ''
);
$str = strip_tags(strtolower($str));
foreach ($trans as $key => $val)
{
$str = preg_replace("#".$key."#", $val, $str);
}
return trim(stripslashes($str));
}
// ------------------------------------------------------------------------
/**
* Header Redirect
*
* Header redirect in two flavors
*
* @access public
* @param string the URL
* @param string the method: location or redirect
* @return string
*/
function redirect($uri = '', $method = 'location')
{
switch($method)
{
case 'refresh' : header("Refresh:0;url=".site_url($uri));
break;
default : header("location:".site_url($uri));
break;
}
exit;
}
// ------------------------------------------------------------------------
/**
* Parse out the attributes
*
* Some of the functions use this
*
* @access private
* @param array
* @param bool
* @return string
*/
function parse_url_attributes($attributes, $javascript = FALSE)
{
$att = '';
foreach ($attributes as $key => $val)
{
if ($javascript == TRUE)
{
$att .= $key . '=' . $val . ',';
}
else
{
$att .= ' ' . $key . '="' . $val . '"';
}
}
if ($javascript == TRUE)
{
$att = substr($att, 0, -1);
}
return $att;
}
?>