Merged changes from main trunk 2.2.1-2.2.2
[fa-stable.git] / includes / date_functions.inc
index 089eeb7e3fbc3c730ff0906ee53b677f1caa4920..94654c35c874d5003e9021db442e1e626530a7ba 100644 (file)
 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
-"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)
 {
@@ -158,7 +160,7 @@ function new_doc_date($date=null)
 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)
@@ -179,7 +181,7 @@ function is_date_in_fiscalyear($date, $convert=false)
 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']);
@@ -188,7 +190,7 @@ function begin_fiscalyear()
 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']);
@@ -316,55 +318,18 @@ and converts to a yyyy/mm/dd format */
                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);
-               }
-       }
-       else
-               $year = $month = $day = 0;
+    // 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
-       if ($date_system == 0)
+       if ($date_system == 0 || $date_system == 3)
        {
                if ((int)$year < 60)
                {
@@ -383,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); 
+
+       // 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
 
@@ -418,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'