Merged changes from main trunk up to 2.2.3
[fa-stable.git] / includes / date_functions.inc
index 227a0b3472cdf7eced7cc660ed8e494e55ce67c0..47876bb87d0de2bef00ba5019b4c0e39754b0e68 100644 (file)
 date validation and parsing functions
 
 These functions refer to the global variable defining the date format
 date validation and parsing functions
 
 These functions refer to the global variable defining the date format
-The date format is defined in config.php called DefaultDateFormat
+The date format is defined in config.php called dateformats
 this can be a string either "d/m/Y" for UK/Australia/New Zealand dates or
 this can be a string either "d/m/Y" for UK/Australia/New Zealand dates or
-"m/d/Y" for US/Canada format dates
+"m/d/Y" for US/Canada format dates depending on setting in preferences.
 
 */
 
 */
+if(function_exists("date_default_timezone_set") && function_exists("date_default_timezone_get"))
+       @date_default_timezone_set(@date_default_timezone_get());
 
 function __date($year, $month, $day)
 {
 
 function __date($year, $month, $day)
 {
@@ -146,7 +148,7 @@ function Now()
 //
 function new_doc_date($date=null)
 {
 //
 function new_doc_date($date=null)
 {
-       if (isset($date))
+       if (isset($date) && $date != '')
                $_SESSION['_default_date'] = $date;
 
        if (!isset($_SESSION['_default_date']) || !sticky_doc_date())
                $_SESSION['_default_date'] = $date;
 
        if (!isset($_SESSION['_default_date']) || !sticky_doc_date())
@@ -158,7 +160,7 @@ function new_doc_date($date=null)
 function is_date_in_fiscalyear($date, $convert=false)
 {
        global $path_to_root;
 function is_date_in_fiscalyear($date, $convert=false)
 {
        global $path_to_root;
-       include_once($path_to_root . "/admin/db/company_db.inc");
+       include_once($path_to_root . "/admin/db/fiscalyears_db.inc");
 
        $myrow = get_current_fiscalyear();
        if ($myrow['closed'] == 1)
 
        $myrow = get_current_fiscalyear();
        if ($myrow['closed'] == 1)
@@ -179,7 +181,7 @@ function is_date_in_fiscalyear($date, $convert=false)
 function begin_fiscalyear()
 {
        global $path_to_root;
 function begin_fiscalyear()
 {
        global $path_to_root;
-       include_once($path_to_root . "/admin/db/company_db.inc");
+       include_once($path_to_root . "/admin/db/fiscalyears_db.inc");
 
        $myrow = get_current_fiscalyear();
        return sql2date($myrow['begin']);
 
        $myrow = get_current_fiscalyear();
        return sql2date($myrow['begin']);
@@ -188,7 +190,7 @@ function begin_fiscalyear()
 function end_fiscalyear()
 {
        global $path_to_root;
 function end_fiscalyear()
 {
        global $path_to_root;
-       include_once($path_to_root . "/admin/db/company_db.inc");
+       include_once($path_to_root . "/admin/db/fiscalyears_db.inc");
 
        $myrow = get_current_fiscalyear();
        return sql2date($myrow['end']);
 
        $myrow = get_current_fiscalyear();
        return sql2date($myrow['end']);
@@ -316,53 +318,18 @@ and converts to a yyyy/mm/dd format */
                return "";
 
        $date_ = trim($date_);
                return "";
 
        $date_ = trim($date_);
-       $date_ = str_replace($sep, "", $date_);
+    $year = $month = $day = 0;
 
 
-       if (strlen($date_) == 6)
-       {
-               if ($how == 0)
-               {
-                       $day = substr($date_,2,2);
-                       $month = substr($date_,0,2);
-                       $year = substr($date_,4,2);
-               } 
-               elseif ($how == 1)
-               {
-                       $day = substr($date_,0,2);
-                       $month = substr($date_,2,2);
-                       $year = substr($date_,4,2);
-               } 
-               else
-               {
-                       $day = substr($date_,4,2);
-                       $month = substr($date_,2,2);
-                       $year = substr($date_,0,2);
-               }
-       }
-       elseif (strlen($date_) == 8)
-       {
-               if ($how == 0)
-               {
-                       $day = substr($date_,2,2);
-                       $month = substr($date_,0,2);
-                       $year = substr($date_,4,4);
-               } 
-               elseif ($how == 1)
-               {
-                       $day = substr($date_,0,2);
-                       $month = substr($date_,2,2);
-                       $year = substr($date_,4,4);
-               } 
-               else
-               {
-                       $day = substr($date_,6,2);
-                       $month = substr($date_,4,2);
-                       $year = substr($date_,0,4);
-               }
-       }
+    // Split up the date by the separator based on "how" to split it
+    if ($how == 0) // MMDDYYYY
+        list($month, $day, $year) = explode($sep, $date_);
+    elseif ($how == 1) // DDMMYYYY
+        list($day, $month, $year) = explode($sep, $date_);
+    else // $how == 2, YYYYMMDD
+        list($year, $month, $day) = explode($sep, $date_);
 
 //to modify assumption in 2030
 
 //to modify assumption in 2030
-       if ($date_system == 0)
+       if ($date_system == 0 || $date_system == 3)
        {
                if ((int)$year < 60)
                {
        {
                if ((int)$year < 60)
                {
@@ -381,6 +348,13 @@ and converts to a yyyy/mm/dd format */
                list($year, $month, $day) = jalali_to_gregorian($year, $month, $day); 
        else if ($date_system == 2)
                list($year, $month, $day) = islamic_to_gregorian($year, $month, $day); 
                list($year, $month, $day) = jalali_to_gregorian($year, $month, $day); 
        else if ($date_system == 2)
                list($year, $month, $day) = islamic_to_gregorian($year, $month, $day); 
+
+       // Pad with 0s if needed
+       if (strlen($month) == 1)
+               $month = "0$month";
+       if (strlen($day) == 1)
+               $day = "0$day";
+
        return $year."-".$month."-".$day;
 }// end of function
 
        return $year."-".$month."-".$day;
 }// end of function
 
@@ -416,7 +390,7 @@ function date1_greater_date2 ($date1, $date2)
 }
 
 
 }
 
 
-function date_diff ($date1, $date2, $period) 
+function date_diff2 ($date1, $date2, $period) 
 {
 
 /* expects dates in the format specified in $DefaultDateFormat - period can be one of 'd','w','y','m'
 {
 
 /* expects dates in the format specified in $DefaultDateFormat - period can be one of 'd','w','y','m'