Skip to content
Permalink
0f3418cef7
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
executable file 410 lines (364 sloc) 9.42 KB
<?php
/**
* CodeIgniter
*
* An open source application development framework for PHP
*
* This content is released under the MIT License (MIT)
*
* Copyright (c) 2014 - 2017, British Columbia Institute of Technology
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* @package CodeIgniter
* @author EllisLab Dev Team
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
* @copyright Copyright (c) 2014 - 2017, British Columbia Institute of Technology (http://bcit.ca/)
* @license http://opensource.org/licenses/MIT MIT License
* @link https://codeigniter.com
* @since Version 1.0.0
* @filesource
*/
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* CodeIgniter HTML Helpers
*
* @package CodeIgniter
* @subpackage Helpers
* @category Helpers
* @author EllisLab Dev Team
* @link https://codeigniter.com/user_guide/helpers/html_helper.html
*/
// ------------------------------------------------------------------------
if ( ! function_exists('heading'))
{
/**
* Heading
*
* Generates an HTML heading tag.
*
* @param string content
* @param int heading level
* @param string
* @return string
*/
function heading($data = '', $h = '1', $attributes = '')
{
return '<h'.$h._stringify_attributes($attributes).'>'.$data.'</h'.$h.'>';
}
}
// ------------------------------------------------------------------------
if ( ! function_exists('ul'))
{
/**
* Unordered List
*
* Generates an HTML unordered list from an single or multi-dimensional array.
*
* @param array
* @param mixed
* @return string
*/
function ul($list, $attributes = '')
{
return _list('ul', $list, $attributes);
}
}
// ------------------------------------------------------------------------
if ( ! function_exists('ol'))
{
/**
* Ordered List
*
* Generates an HTML ordered list from an single or multi-dimensional array.
*
* @param array
* @param mixed
* @return string
*/
function ol($list, $attributes = '')
{
return _list('ol', $list, $attributes);
}
}
// ------------------------------------------------------------------------
if ( ! function_exists('_list'))
{
/**
* Generates the list
*
* Generates an HTML ordered list from an single or multi-dimensional array.
*
* @param string
* @param mixed
* @param mixed
* @param int
* @return string
*/
function _list($type = 'ul', $list = array(), $attributes = '', $depth = 0)
{
// If an array wasn't submitted there's nothing to do...
if ( ! is_array($list))
{
return $list;
}
// Set the indentation based on the depth
$out = str_repeat(' ', $depth)
// Write the opening list tag
.'<'.$type._stringify_attributes($attributes).">\n";
// Cycle through the list elements. If an array is
// encountered we will recursively call _list()
static $_last_list_item = '';
foreach ($list as $key => $val)
{
$_last_list_item = $key;
$out .= str_repeat(' ', $depth + 2).'<li>';
if ( ! is_array($val))
{
$out .= $val;
}
else
{
$out .= $_last_list_item."\n"._list($type, $val, '', $depth + 4).str_repeat(' ', $depth + 2);
}
$out .= "</li>\n";
}
// Set the indentation for the closing tag and apply it
return $out.str_repeat(' ', $depth).'</'.$type.">\n";
}
}
// ------------------------------------------------------------------------
if ( ! function_exists('img'))
{
/**
* Image
*
* Generates an <img /> element
*
* @param mixed
* @param bool
* @param mixed
* @return string
*/
function img($src = '', $index_page = FALSE, $attributes = '')
{
if ( ! is_array($src) )
{
$src = array('src' => $src);
}
// If there is no alt attribute defined, set it to an empty string
if ( ! isset($src['alt']))
{
$src['alt'] = '';
}
$img = '<img';
foreach ($src as $k => $v)
{
if ($k === 'src' && ! preg_match('#^(data:[a-z,;])|(([a-z]+:)?(?<!data:)//)#i', $v))
{
if ($index_page === TRUE)
{
$img .= ' src="'.get_instance()->config->site_url($v).'"';
}
else
{
$img .= ' src="'.get_instance()->config->slash_item('base_url').$v.'"';
}
}
else
{
$img .= ' '.$k.'="'.$v.'"';
}
}
return $img._stringify_attributes($attributes).' />';
}
}
// ------------------------------------------------------------------------
if ( ! function_exists('doctype'))
{
/**
* Doctype
*
* Generates a page document type declaration
*
* Examples of valid options: html5, xhtml-11, xhtml-strict, xhtml-trans,
* xhtml-frame, html4-strict, html4-trans, and html4-frame.
* All values are saved in the doctypes config file.
*
* @param string type The doctype to be generated
* @return string
*/
function doctype($type = 'xhtml1-strict')
{
static $doctypes;
if ( ! is_array($doctypes))
{
if (file_exists(APPPATH.'config/doctypes.php'))
{
include(APPPATH.'config/doctypes.php');
}
if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/doctypes.php'))
{
include(APPPATH.'config/'.ENVIRONMENT.'/doctypes.php');
}
if (empty($_doctypes) OR ! is_array($_doctypes))
{
$doctypes = array();
return FALSE;
}
$doctypes = $_doctypes;
}
return isset($doctypes[$type]) ? $doctypes[$type] : FALSE;
}
}
// ------------------------------------------------------------------------
if ( ! function_exists('link_tag'))
{
/**
* Link
*
* Generates link to a CSS file
*
* @param mixed stylesheet hrefs or an array
* @param string rel
* @param string type
* @param string title
* @param string media
* @param bool should index_page be added to the css path
* @return string
*/
function link_tag($href = '', $rel = 'stylesheet', $type = 'text/css', $title = '', $media = '', $index_page = FALSE)
{
$CI =& get_instance();
$link = '<link ';
if (is_array($href))
{
foreach ($href as $k => $v)
{
if ($k === 'href' && ! preg_match('#^([a-z]+:)?//#i', $v))
{
if ($index_page === TRUE)
{
$link .= 'href="'.$CI->config->site_url($v).'" ';
}
else
{
$link .= 'href="'.$CI->config->slash_item('base_url').$v.'" ';
}
}
else
{
$link .= $k.'="'.$v.'" ';
}
}
}
else
{
if (preg_match('#^([a-z]+:)?//#i', $href))
{
$link .= 'href="'.$href.'" ';
}
elseif ($index_page === TRUE)
{
$link .= 'href="'.$CI->config->site_url($href).'" ';
}
else
{
$link .= 'href="'.$CI->config->slash_item('base_url').$href.'" ';
}
$link .= 'rel="'.$rel.'" type="'.$type.'" ';
if ($media !== '')
{
$link .= 'media="'.$media.'" ';
}
if ($title !== '')
{
$link .= 'title="'.$title.'" ';
}
}
return $link."/>\n";
}
}
// ------------------------------------------------------------------------
if ( ! function_exists('meta'))
{
/**
* Generates meta tags from an array of key/values
*
* @param array
* @param string
* @param string
* @param string
* @return string
*/
function meta($name = '', $content = '', $type = 'name', $newline = "\n")
{
// Since we allow the data to be passes as a string, a simple array
// or a multidimensional one, we need to do a little prepping.
if ( ! is_array($name))
{
$name = array(array('name' => $name, 'content' => $content, 'type' => $type, 'newline' => $newline));
}
elseif (isset($name['name']))
{
// Turn single array into multidimensional
$name = array($name);
}
$str = '';
foreach ($name as $meta)
{
$type = (isset($meta['type']) && $meta['type'] !== 'name') ? 'http-equiv' : 'name';
$name = isset($meta['name']) ? $meta['name'] : '';
$content = isset($meta['content']) ? $meta['content'] : '';
$newline = isset($meta['newline']) ? $meta['newline'] : "\n";
$str .= '<meta '.$type.'="'.$name.'" content="'.$content.'" />'.$newline;
}
return $str;
}
}
// ------------------------------------------------------------------------
if ( ! function_exists('br'))
{
/**
* Generates HTML BR tags based on number supplied
*
* @deprecated 3.0.0 Use str_repeat() instead
* @param int $count Number of times to repeat the tag
* @return string
*/
function br($count = 1)
{
return str_repeat('<br />', $count);
}
}
// ------------------------------------------------------------------------
if ( ! function_exists('nbs'))
{
/**
* Generates non-breaking space entities based on number supplied
*
* @deprecated 3.0.0 Use str_repeat() instead
* @param int
* @return string
*/
function nbs($num = 1)
{
return str_repeat('&nbsp;', $num);
}
}