===== Helpers =====
These are functions that may be used in many contexts.
===== Accessing Helpers =====
From controllers:
$this->form_helper->select_date();
From view templates (.tpl):
= $form_helper->select_date() ?>
From within helpers:
$this->_controller->form_helper->hidden_field();
===== Capturing code segments into variables =====
Capture lets you extract parts of code into instance variables which can be used in other points of the template or even layout file.
==== Blocks ====
begin (); ?>
[some html...]
end (); ?>
==== Javascript to header ====
''$capture_helper->content_for("name");'' is a wrapper for Capture which will store the fragment in an instance variable similar to $content_for_layout.\\ \\
**Example:**\\
layout.tpl:\\
layout with js
{content_for_layout}
view.tpl:\\
This page shows an alert box!\\
begin ('script'); ?>
alert('hello world');
end (); ?>
Normal view text
===== Date and Time =====
==== locale_date ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'date_helper.php');
**Syntax:**\\
locale_date( [ $iso_date ])\\
**Description:**\\
Converts an ISO date (format: yyyy-mm-dd) to the current date locale format. If ''$iso_date'' is omitted, the current date is assumed.
==== locale_date_time ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'date_helper.php');
**Syntax:**\\
locale_date_time( [ $iso_date_time = null])\\
**Description:**\\
Converts an ISO date/time (format: yyyy-mm-dd hh:mm:ss) to the current locale format. If ''$iso_date_time'' is omitted, the current date/time is assumed.
==== Text of difference between 2 times ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'date_helper.php');
**Syntax:**\\
distance_of_time_in_words( $from_time, [ $to_time = 0], [ $include_seconds = false])\\
**Description:**\\
Reports the approximate difference in time between ''$from_time'' and ''$to_time'' in an ISO string translated to the current language:
For example, if the distance is 47 minutes, it'll return "about 1 hour". Integers are interpreted as seconds. So,
$date_helper->distance_of_time_in_words(50);
returns "less than a minute".\\ \\
Set ''$include_seconds'' to ''true'' if you want more detailed approximations for distances of < 1 minute.\\ \\
Here are the returned messages:
^ Time Difference ^ Message ^
| < 20 seconds | less than x seconds* |
| < 40 seconds | less than half a minute* |
| < 60 seconds | less than a minute |
| 1 minute | 1 minute |
| < = 45 minutes | x minutes |
| < = 90 minutes | about 1 hour |
| < = 1440 minutes | about x hours |
| < = 2880 minutes | 1 day |
| > 2880 minutes | x days |
* reported only if $include_seconds = true; otherwise "less than a minute".
==== Text of difference From time to now ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'date_helper.php');
**Syntax:**\\
distance_of_time_in_words_to_now ( $from_time, [ $include_seconds = false])\\
**OR**
time_ago_in_words ( $from_time, [ $include_seconds ])\\
**Description:**\\
Reports the approximate difference in time between ''$from_time'' until now (the current time) in an ISO string translated to the current language:
^ Time Difference ^ Message ^
| < 20 seconds | less than x seconds* |
| < 40 seconds | less than half a minute* |
| < 60 seconds | less than a minute |
| 1 minute | 1 minute |
| < = 45 minutes | x minutes |
| < = 90 minutes | about 1 hour |
| < = 1440 minutes | about x hours |
| < = 2880 minutes | 1 day |
| > 2880 minutes | x days |
* reported only if $include_seconds = true; otherwise "less than a minute".
===== Number Helpers =====
==== Add one ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'date_helper.php');
**Syntax:**\\
_add_one( $number)\\ \\
**Description:**\\
Returns ''$number++'' or ''$number+1''
==== Human size ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'number_helper.php');
**Syntax:**\\
human_size($number)\\ \\
**Description:**\\
Formats the bytes in ''$number'' into a more understandable representation (e.g., giving it 1500 yields 1.5 KB). This method is useful for reporting file sizes to users. This method returns "0 Bytes" if ''$number'' cannot be converted into a number.\\
This is the same as $number_helper->number_to_human_size, where the default ''$decimal = 1'' is assumed.\\ \\
**Examples:**\\
$number_helper->human_size(123) # returns 123 Bytes
$number_helper->human_size(1234) # returns 1.2 KB
$number_helper->human_size(12345) # returns 12.1 KB
$number_helper->human_size(1234567) # returns 1.2 MB
$number_helper->human_size(1234567890) # returns 1.1 GB
$number_helper->human_size(1234567890123) # returns 1.1 TB
==== Human size to bytes ====
human_size_to_bytes ( $size)
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'number_helper.php');
**Syntax:**\\
human_size_to_bytes($number)\\ \\
**Description:**\\
Converts the humanized ''$number'' as an integer.\\ \\
**Examples:**\\
$number_helper->human_size_to_bytes("123 bytes") # returns 123
$number_helper->human_size_to_bytes("0.123 kb") # returns 126
$number_helper->human_size_to_bytes("1.234 KILOBYTES") # returns 1264
$number_helper->human_size_to_bytes("12.1 KB") # returns 12391
$number_helper->human_size_to_bytes("1.2 mb") # returns 1258292
$number_helper->human_size_to_bytes('1.1 GB') # returns 1181116007
$number_helper->human_size_to_bytes('1.23tb') # returns 1352399302165
==== Number to currency ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'number_helper.php');
**Syntax:**\\
number_to_currency ( $number, [ $options = array()])\\ \\
**Description:**\\
Formats a number into a currency string (e.g., $13.65).\\ \\
You can customize the format in the ''$options'' array. (The defaults are in config/locales/LOCALE.php, where LOCALE is the one currently selected. The default LOCALE is "en"):
* 'precision' => Sets the level of precision. Numbers are rounded up or down as required.
* 'unit' => Sets the denomination of the currency (e.g. "$", "€" or "kr").
* 'separator' => Sets the separator between the whole number and the fractional amount.
* 'delimiter' => Sets the thousands delimiter.
* 'unit_position' => Sets the unit of the output string at the ''left'' or the ''right''
**Examples:**\\
$number_helper->number_to_currency(1234567890.50) # returns $1,234,567,890.50
$number_helper->number_to_currency(1234567890.506) # returns $1,234,567,890.51
$number_helper->number_to_currency(1234567890.50,
array('unit' => "£", 'separator' => ",", 'delimiter' => "")) # returns £1234567890,50
$number_helper->number_to_currency(1234567890.50,
array('unit' => " €", 'separator' => ",", 'delimiter' => ".",
'unit_position' => 'right')) # returns 1.234.567.890,50 €
$number_helper->number_to_currency(1234567890.506, array('precision' => 3)) # returns $1,234,567,890.506
$number_helper->number_to_currency(1234567890.50, array('unit' => "£",
'separator' => ",", 'delimiter' => "")) # returns £1234567890,50
$number_helper->number_to_currency(1234567890.50, array('unit' => "£",
'separator' => ",",'delimiter' => "", 'unit_position' => 'right')) # returns 1234567890,50 £
==== Number to human size ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'number_helper.php');
**Syntax:**\\
number_to_human_size($number, [ $decimal = 1])\\ \\
**Description:**\\
Formats the bytes in ''$number'' into a more understandable representation (e.g., giving it 1500 yields 1.5 KB). This method is useful for reporting file sizes to users. This method returns "0 Bytes" if ''$number'' cannot be converted into a number. The result is rounded to ''$decimal'' places.\\ \\
**Examples:**\\
$number_helper->number_to_human_size(123) # returns 123 Bytes
$number_helper->number_to_human_size(1234,2) # returns 1.23 KB
$number_helper->number_to_human_size(12345,2) # returns 12.35 KB
$number_helper->number_to_human_size(1234567,4) # returns 1.2346 MB
$number_helper->number_to_human_size(1234567890,3) # returns 1.235 GB
$number_helper->number_to_human_size(1234567890123,2) # returns 1.23 TB
==== Number to percentage ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'number_helper.php');
**Syntax:**\\
number_to_percentage ( $number, [ $options = array()])\\ \\
**Description:**\\
Formats a number as a percentage string (e.g., 65%). You can customize the format in the ''$options'' array:
* 'precision' => Sets the level of precision (defaults to 2).
* 'separator' => Sets the separator between the units (defaults to ".").
**Examples:**\\
$number_helper->number_to_percentage(100) # => 100.00%
$number_helper->number_to_percentage(100, array('precision' => 0)) # => 100%
$number_helper->number_to_percentage(1000, array('separator' => ',')) # => 1000,00%
$number_helper->number_to_percentage(302.24398923423, array('precision' => 5)) # => 302.24399%
==== Number to phone ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'number_helper.php');
**Syntax:**\\
number_to_phone ( $number, [ $options = array()])\\ \\
**Description:**\\
Formats a number into a US phone number (e.g., (555) 123-9876). You can customize the format in the options array.
* 'area_code' => Adds parentheses around the area code.
* 'delimiter' => Specifies the delimiter to use (defaults to "-").
* 'extension' => Specifies an extension to add to the end of the generated number.
* 'extension_delimiter' => Sets string that separates the extension from the main number (defaults to "x").
**Examples:**\\
$number_helper->number_to_phone(1235551234) # => 123-555-1234
$number_helper->number_to_phone(1235551234, array('area_code' => true)) # => (123) 555-1234
$number_helper->number_to_phone(1235551234, array('delimiter' => " ")) # => 123 555 1234
$number_helper->number_to_phone(1235551234, array('area_code' => true, 'extension' => 555))
# => (123) 555-1234 x 555
$number_helper->number_to_phone(1235551234, array('extension' => 123,'extension_delimiter' => 'ext.'))
# => 123-555-1234 ext. 123
$number_helper->number_to_phone(1235551234, array(
'extension_delimiter' => 'extension', 'extension' => 1343, 'delimiter' => "."))
# => 123.555.1234 extension 1343
==== Number with delimiter ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'number_helper.php');
**Syntax:**\\
number_with_delimiter ( $number, [ $delimiter = ','])\\ \\
**Description:**\\
Inserts ''$delimiter'' into the thousands positions of ''$number'' converted to a string.\\ \\
**Examples:**\\
$number_helper->number_with_delimiter(12345678) # returns 12,345,678
$number_helper->number_with_delimiter(12345678.05) # returns 12,345,678.05
$number_helper->number_with_delimiter(12345678, ".") # returns 12.345.678
$number_helper->number_with_delimiter(98765432.98, " ") # returns 98 765 432.98
==== Number with precision ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'number_helper.php');
**Syntax:**\\
number_with_precision ( $number, [ $precision = 3])\\ \\
**Description:**\\
Formats ''$number'' with ''$precision'' level of precision.\\ \\
**Examples:**\\
$number_helper->number_with_precision(111.2345) # returns 111.235
$number_helper->number_with_precision(12345678.05) # returns 12345678.6
$number_helper->number_with_precision(12345678, ".") # returns 12345678
$number_helper->number_with_precision(98765432.98, " ") # returns 98765433
==== Pad single digits with leading zero(s) ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'date_helper.php');
**Syntax:**\\
_leading_zero_on_single_digits( $number)\\ \\
**Description:**\\
This returns $number > 9 ? $number : "0$number";
==== Pad with zeros ====
**Include:**\\
require_once(AK_LIB_DIR.DS.'AkActionView'.DS.'helpers'.DS.'number_helper.php');
**Syntax:**\\
zeropad ( $number, $length)\\ \\
**Description:**\\
Formats ''$number'' with ''$precision'' level of precision.\\ \\
**Examples:**\\
$number_helper->zeropad(123, 6) # returns the string "123". FIXME!