riainvoice/application/helpers/date_helper.php
gandhimathi Bharathirajan c940cb1a2c all files
2017-09-11 14:38:03 +05:30

191 lines
4.4 KiB
PHP

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
/*
* InvoicePlane
*
* @author InvoicePlane Developers & Contributors
* @copyright Copyright (c) 2012 - 2017 InvoicePlane.com
* @license https://invoiceplane.com/license.txt
* @link https://invoiceplane.com
*/
/**
* Available date formats
* The setting value represents the PHP date() formatting, the datepicker value represents the
* DatePicker formatting (see http://bootstrap-datepicker.readthedocs.io/en/stable/options.html#format)
*
* @return array
*/
function date_formats()
{
return array(
'm/d/Y' => array(
'setting' => 'm/d/Y',
'datepicker' => 'mm/dd/yyyy'
),
'm-d-Y' => array(
'setting' => 'm-d-Y',
'datepicker' => 'mm-dd-yyyy'
),
'm.d.Y' => array(
'setting' => 'm.d.Y',
'datepicker' => 'mm.dd.yyyy'
),
'Y/m/d' => array(
'setting' => 'Y/m/d',
'datepicker' => 'yyyy/mm/dd'
),
'Y-m-d' => array(
'setting' => 'Y-m-d',
'datepicker' => 'yyyy-mm-dd'
),
'Y.m.d' => array(
'setting' => 'Y.m.d',
'datepicker' => 'yyyy.mm.dd'
),
'd/m/Y' => array(
'setting' => 'd/m/Y',
'datepicker' => 'dd/mm/yyyy'
),
'd-m-Y' => array(
'setting' => 'd-m-Y',
'datepicker' => 'dd-mm-yyyy'
),
'd-M-Y' => array(
'setting' => 'd-M-Y',
'datepicker' => 'dd-M-yyyy'
),
'd.m.Y' => array(
'setting' => 'd.m.Y',
'datepicker' => 'dd.mm.yyyy'
),
'j.n.Y' => array(
'setting' => 'j.n.Y',
'datepicker' => 'd.m.yyyy'
),
'd M,Y' => array(
'setting' => 'd M,Y',
'datepicker' => 'dd M,yyyy'
),
);
}
/**
* @param $date
* @param bool $ignore_post_check
* @return bool|DateTime|string
*/
function date_from_mysql($date, $ignore_post_check = false)
{
if ($date <> '0000-00-00') {
if (!$_POST or $ignore_post_check) {
$CI = &get_instance();
$date = DateTime::createFromFormat('Y-m-d', $date);
return $date->format($CI->mdl_settings->setting('date_format'));
}
return $date;
}
return '';
}
/**
* @param $timestamp
* @return string
*/
function date_from_timestamp($timestamp)
{
$CI = &get_instance();
$date = new DateTime();
$date->setTimestamp($timestamp);
return $date->format($CI->mdl_settings->setting('date_format'));
}
/**
* @param $date
* @return string
*/
function date_to_mysql($date)
{
$CI = &get_instance();
$date = DateTime::createFromFormat($CI->mdl_settings->setting('date_format'), $date);
return $date->format('Y-m-d');
}
/**
* @param $date
* @return bool
*/
function is_date($date)
{
$CI = &get_instance();
$format = $CI->mdl_settings->setting('date_format');
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
/**
* @return string
*/
function date_format_setting()
{
$CI = &get_instance();
$date_format = $CI->mdl_settings->setting('date_format');
$date_formats = date_formats();
return $date_formats[$date_format]['setting'];
}
/**
* @return string
*/
function date_format_datepicker()
{
$CI = &get_instance();
$date_format = $CI->mdl_settings->setting('date_format');
$date_formats = date_formats();
return $date_formats[$date_format]['datepicker'];
}
/**
* Adds interval to user formatted date and returns user formatted date
* To be used when date is being output back to user.
*
* @param $date - user formatted date
* @param $increment - interval (1D, 2M, 1Y, etc)
* @return string
*/
function increment_user_date($date, $increment)
{
$CI = &get_instance();
$mysql_date = date_to_mysql($date);
$new_date = new DateTime($mysql_date);
$new_date->add(new DateInterval('P' . $increment));
return $new_date->format($CI->mdl_settings->setting('date_format'));
}
/**
* Adds interval to yyyy-mm-dd date and returns in same format
*
* @param $date
* @param $increment
* @return string
*/
function increment_date($date, $increment)
{
$new_date = new DateTime($date);
$new_date->add(new DateInterval('P' . $increment));
return $new_date->format('Y-m-d');
}