/modules/Calendar/Date.php
https://bitbucket.org/jhunsinfotech/blue-blues · PHP · 537 lines · 357 code · 39 blank · 141 comment · 77 complexity · a49e776126675b6913f3ae149656adf8 MD5 · raw file
- <?php
- /*********************************************************************************
- ** The contents of this file are subject to the vtiger CRM Public License Version 1.0
- * ("License"); You may not use this file except in compliance with the License
- * The Original Code is: vtiger CRM Open Source
- * The Initial Developer of the Original Code is vtiger.
- * Portions created by vtiger are Copyright (C) vtiger.
- * All Rights Reserved.
- *
- ********************************************************************************/
- class vt_DateTime
- {
- var $second = 0;
- var $minute = 0;
- var $hour = 0;
- var $z_hour = '00';
- var $day;
- var $z_day;
- var $week;
- var $month;
- var $z_month;
- var $year;
- var $dayofweek;
- var $dayofyear;
- var $daysinmonth;
- var $daysinyear;
- var $dayofweek_inshort;
- var $dayofweek_inlong;
- var $month_inshort;
- var $month_inlong;
- var $ts;
- var $offset;
- var $format;
- var $tz;
- var $ts_def;
- /**
- * Constructor for vt_DateTime class
- * @param array $timearr - collection of string
- * @param string $check - check string
- */
- function vt_DateTime(&$timearr,$check)
- {
- if (! isset( $timearr) || count($timearr) == 0 )
- {
- $this->setDateTime(null);
- }
- else if ( isset( $timearr['ts']))
- {
- $this->setDateTime($time['ts']);
- }
- else
- {
- if(isset($timearr['hour']) && $timearr['hour'] !== '')
- {
- $this->hour = $timearr['hour'];
- }
- if(isset($timearr['min']) && $timearr['min'] !== '')
- {
- $this->minute = $timearr['min'];
- }
- if(isset($timearr['sec']) && $timearr['sec'] !== '')
- {
- $this->second = $timearr['sec'];
- }
- if(isset($timearr['day']) && $timearr['day'] !== '')
- {
- $this->day = $timearr['day'];
- }
- if(isset($timearr['week']) && $timearr['week'] !== '')
- {
- $this->week = $timearr['week'];
- }
- if(isset($timearr['month']) && $timearr['month'] !== '')
- {
- $this->month = $timearr['month'];
- }
- if(isset($timearr['year']) && $timearr['year'] >= 1970)
- {
- $this->year = $timearr['year'];
- }
- else
- {
- return null;
- }
- }
- if ($check)
- {
- $this->getDateTime();
- }
- }
- /**
- * function to get date and time using index
- * @param integer $index - number between 0 to 23
- * @param string $day - date
- * @param string $month - month
- * @param string $year - year
- * return vt_DateTime obj $datetimevalue
- */
- function getTodayDatetimebyIndex($index,$day='', $month='', $year=''){
- if($day === '')
- $day = $this->day;
- if($month === '')
- $month = $this->month;
- if($year === '')
- $year = $this->year;
- $day_array = array();
-
- if($index < 0 || $index > 23){
- die("hour is invalid");
- }
-
- $day_array['hour'] = $index;
- $day_array['min'] = 0;
- $day_array['day'] = $day;
- $day_array['month'] = $month;
- $day_array['year'] = $year;
- $datetimevalue = new vt_DateTime($day_array,true);
- return $datetimevalue;
- }
-
- /**
- * function to get days in week using index
- * @param integer $index - number between 1 to 7
- * return vt_DateTime obj $datetimevalue
- */
- function getThisweekDaysbyIndex($index){
- $week_array = array();
- if($index < 1 || $index > 7){
- die("day is invalid");
- }
- $week_array['day'] = $this->day + ($index - $this->dayofweek);
- $week_array['month'] = $this->month;
- $week_array['year'] = $this->year;
- $datetimevalue = new vt_DateTime($week_array,true);
- return $datetimevalue;
- }
- /**
- * function to get days in month using index
- *
- * This function will be deprecated.
- * The newer version is getThisMonthsDayByIndex() and should be used wherever possible
- *
- * @param integer $index - number between 0 to 42
- * @param string $day - date
- * @param string $month - month
- * @param string $year - year
- * return vt_DateTime obj $datetimevalue
- */
- function getThismonthDaysbyIndex($index,$day='', $month='', $year='')
- {
- if($day == '')
- $day = $index+1;
- if($month == '')
- $month = $this->month;
- if($year == '')
- $year = $this->year;
- $month_array = array();
- $month_array['day'] = $day;
- $month_array['month'] = $month;
- $month_array['year'] = $year;
- $datetimevalue = new vt_DateTime($month_array,true);
- return $datetimevalue;
- }
- /**
- * function to get months in year using index
- * @param integer $index - number between 0 to 11
- * return vt_DateTime obj $datetimevalue
- */
- function getThisyearMonthsbyIndex($index)
- {
- $year_array = array();
- $year_array['day'] = 1;
- if($index < 0 || $index > 11)
- {
- die("month is invalid");
- }
- $year_array['month'] = $index+1;
- $year_array['year'] = $this->year;
- $datetimevalue = new vt_DateTime($year_array,true);
- return $datetimevalue;
- }
- /**
- * function to get hour end time
- * return vt_DateTime obj $datetimevalue
- */
- function getHourendtime()
- {
- $date_array = array();
- $date_array['hour'] = $this->hour;
- $date_array['min'] = 59;
- $date_array['day'] = $this->day;
- $date_array['sec'] = 59;
- $date_array['month'] = $this->month;
- $date_array['year'] = $this->year;
- $datetimevalue = new vt_DateTime($date_array,true);
- return $datetimevalue;
- }
- /**
- * function to get day end time
- * return vt_DateTime obj $datetimevalue
- */
- function getDayendtime()
- {
- $date_array = array();
- $date_array['hour'] = 23;
- $date_array['min'] = 59;
- $date_array['sec'] = 59;
- $date_array['day'] = $this->day;
- $date_array['month'] = $this->month;
- $date_array['year'] = $this->year;
- $datetimevalue = new vt_DateTime($date_array,true);
- return $datetimevalue;
- }
- /**
- * function to get month end time
- * return vt_DateTime obj $datetimevalue
- */
- function getMonthendtime()
- {
- $date_array = array();
- $date_array['hour'] = 23;
- $date_array['min'] = 59;
- $date_array['sec'] = 59;
- $date_array['day'] = $this->daysinmonth;
- $date_array['month'] = $this->month;
- $date_array['year'] = $this->year;
- $datetimevalue = new vt_DateTime($date_array,true);
- return $datetimevalue;
- }
- /**
- * function to get day of week
- * return string $this->day - day (eg: Monday)
- */
- function get_Date()
- {
- return $this->day;
- }
- /**
- * function to get month name in short
- * return string $this->month_inshort - month name (eg: Jan)
- */
- function getmonthName_inshort(){
- return $this->month_inshort;
- }
- /**
- * function to get month
- * return string $this->month - month name
- */
- function getMonth(){
- return $this->month;
- }
- /**
- * function to get year
- */
- function getYear() {
- return $this->year;
- }
- /**
- * function to get the number of days in a month
- */
- function getDaysInMonth() {
- return $this->daysinmonth;
- }
- /**
- * function to get month name
- * return string $this->month_inlong - month name
- */
- function getmonthName(){
- return $this->month_inlong;
- }
-
- /**
- * function to get day of week
- * return string $this->dayofweek_inlong - day of week
- */
- function getdayofWeek(){
- return $this->dayofweek_inlong;
- }
- /**
- * function to get day of week in short
- * return string $this->dayofweek_inshort - day of week (eg: Mon)
- */
- function getdayofWeek_inshort(){
- return $this->dayofweek_inshort;
- }
- /**
- * function to set values for vt_DateTime object
- * @param integer $ts - Time stamp
- */
- function setDateTime($ts){
- global $mod_strings;
- if (empty($ts)){
- $ts = time();
- }
- $this->ts = $ts;
- $this->ts_def = $this->ts;
- $date_string = date('i::G::H::j::d::t::N::z::L::W::n::m::Y::Z::T::s',$ts);
-
- list($this->minute,$this->hour,$this->z_hour,$this->day,$this->z_day,$this->daysinmonth,$this->dayofweek,$this->dayofyear,$is_leap,$this->week,$this->month,$this->z_month,$this->year,$this->offset,$this->tz,$this->second) = explode('::',$date_string);
- $this->dayofweek_inshort =$mod_strings['cal_weekdays_short'][$this->dayofweek-1];
- $this->dayofweek_inlong=$mod_strings['cal_weekdays_long'][$this->dayofweek-1];
- $this->month_inshort=$mod_strings['cal_month_short'][$this->month];
- $this->month_inlong=$mod_strings['cal_month_long'][$this->month];
- $this->daysinyear = 365;
- if ($is_leap == 1){
- $this->daysinyear += 1;
- }
- }
- /**
- * function to get values from vt_DateTime object
- */
- function getDateTime()
- {
- global $mod_strings;
- $hour = 0;
- $minute = 0;
- $second = 0;
- $day = 1;
- $month = 1;
- $year = 1970;
- if ( isset($this->second) && $this->second !== ''){
- $second = $this->second;
- }
- if ( isset($this->minute) && $this->minute !== ''){
- $minute = $this->minute;
- }
- if ( isset($this->hour) && $this->hour !== '')
- {
- $hour = $this->hour;
- }
- if ( isset($this->day) && $this->day !== ''){
- $day= $this->day;
- }
- if ( isset($this->month) && $this->month !== ''){
- $month = $this->month;
- }
- if ( isset($this->year) && $this->year !== ''){
- $year = $this->year;
- }else{
- die("year was not set");
- }
- if(empty($hour) && $hour !== 0) $hour = 0;
- $this->ts = mktime($hour,$minute,$second,$month,$day,$year);
- $this->setDateTime($this->ts);
- }
- /**
- * function to get mysql formatted date
- * return formatted date in string format
- */
- function get_formatted_date(){
- $date = $this->year."-".$this->z_month."-".$this->z_day;
- return DateTimeField::convertToUserFormat($date);
- }
-
- /**
- *
- * @return Date
- */
- function get_DB_formatted_date() {
- return $this->year."-".$this->z_month."-".$this->z_day;
- }
-
- /**
- * function to get mysql formatted time
- * return formatted time in string format
- */
- function get_formatted_time(){
- $hour = $this->z_hour;
- $min = $this->min;
- if(empty($hour)) $hour = '00';
- if(empty($min)) $min = '00';
- return $hour.':'.$min;
- }
- /**
- * function to get date depends on mode value
- * @param string $mode - 'increment' or 'decrement'
- * return vt_DateTime obj
- */
- function get_changed_day($mode){
- if($mode == 'increment')
- $day = $this->day + 1;
- else
- $day = $this->day - 1;
- $date_data = array('day'=>$day,
- 'month'=>$this->month,
- 'year'=>$this->year
- );
- return new vt_DateTime($date_data,true);
- }
-
- /**
- * function to get changed week depends on mode value
- * @param string $mode - 'increment' or 'decrement'
- * return vt_DateTime obj
- */
- function get_first_day_of_changed_week($mode){
- $first_day = $this->getThisweekDaysbyIndex(1);
- if($mode == 'increment')
- $day = $first_day->day + 7;
- else
- $day = $first_day->day - 7;
- $date_data = array('day'=>$day,
- 'month'=>$first_day->month,
- 'year'=>$first_day->year
- );
- return new vt_DateTime($date_data,true);
- }
-
- /**
- * function to get month depends on mode value
- * @param string $mode - 'increment' or 'decrement'
- * return vt_DateTime obj
- */
- function get_first_day_of_changed_month($mode){
- $tmpDate['day'] = $this->day;
- $tmpDate['month'] = $this->month;
- $tmpDate['year'] = $this->year;
- if(is_array($arr) && !empty($arr)){
- $tmpDate['year'] = $arr[0];
- $tmpDate['month'] = $arr[1];
- $tmpDate['day'] = $arr[2];
- }
- if($mode == 'increment'){
- $month = $tmpDate['month'] + 1;
- $year = $tmpDate['year'] ;
- }else{
- if($tmpDate['month'] == 1){
- $month = 12;
- $year = $tmpDate['year'] - 1;
- }else{
- $month = $tmpDate['month'] - 1;
- $year = $tmpDate['year'] ;
- }
- }
- $date_data = array(
- 'day'=>1,
- 'month'=>$month,
- 'year'=>$year
- );
- return new vt_DateTime($date_data,true);
- }
- /**
- * function to get year depends on mode value
- * @param string $mode - 'increment' or 'decrement'
- * return vt_DateTime obj
- */
- function get_first_day_of_changed_year($mode){
- if($mode == 'increment'){
- $year = $this->year + 1;
- }else{
- $year = $this->year - 1;
- }
- $date_data = array('day'=>1,
- 'month'=>1,
- 'year'=>$year
- );
- return new vt_DateTime($date_data,true);
- }
- /**
- * function to get date string
- * return date string
- */
- function get_date_str(){
- $array = Array();
- if ( isset( $this->hour) && $this->hour != '')
- {
- array_push( $array, "hour=".$this->hour);
- }
- if ( isset( $this->day) && $this->day != '')
- {
- array_push( $array, "day=".$this->day);
- }
- if ( isset( $this->month) && $this->month)
- {
- array_push( $array, "month=".$this->month);
- }
- if ( isset( $this->year) && $this->year != '')
- {
- array_push( $array, "year=".$this->year);
- }
- return ("&".implode('&',$array));
- }
- /**
- * function to get days in month using index
- *
- * This is the newer version of the function getThismonthDaysbyIndex().
- * This should be used whereever possible
- *
- * @param integer $index - number between 0 to 42
- * @param string $day - date
- * @param string $month - month
- * @param string $year - year
- * return vt_DateTime obj $datetimevalue
- */
- function getThisMonthsDayByIndex($index){
- $day = $index;
- $month = $this->month;
- $year = $this->year;
- $month_array = array();
- $month_array['day'] = $day;
- $month_array['month'] = $month;
- $month_array['year'] = $year;
- $datetimevalue = new vt_DateTime($month_array,true);
- return $datetimevalue;
- }
- }
- ?>