Various code cleanups
[fa-stable.git] / includes / date_functions.inc
index c681353109eb44ae7548d706fd3b3d0f3e92c3e5..64fdfab4b8a28012f9a61e48d5207439e1df85ff 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)
 {
@@ -33,7 +35,7 @@ function __date($year, $month, $day)
                $month = "0".$month;
        if ($how == 0)
                return $month.$sep.$day.$sep.$year;
                $month = "0".$month;
        if ($how == 0)
                return $month.$sep.$day.$sep.$year;
-       else if ($how == 1)
+       elseif ($how == 1)
                return $day.$sep.$month.$sep.$year;
        else
                return $year.$sep.$month.$sep.$day;
                return $day.$sep.$month.$sep.$year;
        else
                return $year.$sep.$month.$sep.$day;
@@ -103,7 +105,7 @@ function is_date($date_)
                global $date_system;
                if ($date_system == 1)
                        list($year, $month, $day) = jalali_to_gregorian($year, $month, $day);  
                global $date_system;
                if ($date_system == 1)
                        list($year, $month, $day) = jalali_to_gregorian($year, $month, $day);  
-               else if ($date_system == 2)     
+               elseif ($date_system == 2)      
                        list($year, $month, $day) = islamic_to_gregorian($year, $month, $day);  
                if (checkdate((int)$month, (int)$day, (int)$year))
                {
                        list($year, $month, $day) = islamic_to_gregorian($year, $month, $day);  
                if (checkdate((int)$month, (int)$day, (int)$year))
                {
@@ -129,7 +131,7 @@ function Today()
        $day = date("j");
        if ($date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
        $day = date("j");
        if ($date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
-       else if ($date_system == 2)     
+       elseif ($date_system == 2)      
                list($year, $month, $day) = gregorian_to_islamic($year, $month, $day);
        return __date($year, $month, $day);     
 }
                list($year, $month, $day) = gregorian_to_islamic($year, $month, $day);
        return __date($year, $month, $day);     
 }
@@ -141,12 +143,27 @@ function Now()
        else
                return date("H:i");
 }
        else
                return date("H:i");
 }
+//
+//     Retrieve and optionaly set default date for new document.
+//
+function new_doc_date($date=null)
+{
+       if (isset($date) && $date != '')
+               $_SESSION['_default_date'] = $date;
+
+       if (!isset($_SESSION['_default_date']) || !sticky_doc_date())
+               $_SESSION['_default_date'] = Today();
+
+       return $_SESSION['_default_date'];
+}
 
 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");
 
 
+       if ($_SESSION["wa_current_user"]->can_access('SA_MULTIFISCALYEARS')) // allow all open years for this one
+               return is_date_in_fiscalyears($date, false);
        $myrow = get_current_fiscalyear();
        if ($myrow['closed'] == 1)
                return 0;
        $myrow = get_current_fiscalyear();
        if ($myrow['closed'] == 1)
                return 0;
@@ -166,7 +183,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']);
@@ -175,7 +192,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']);
@@ -187,7 +204,7 @@ function begin_month($date)
     list($day, $month, $year) = explode_date_to_dmy($date);
     if ($date_system == 1)
        list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
     list($day, $month, $year) = explode_date_to_dmy($date);
     if ($date_system == 1)
        list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
-    else if ($date_system == 2)        
+    elseif ($date_system == 2) 
        list($year, $month, $day) = gregorian_to_islamic($year, $month, $day);
        return __date($year, $month, 1);
 }
        list($year, $month, $day) = gregorian_to_islamic($year, $month, $day);
        return __date($year, $month, 1);
 }
@@ -201,7 +218,7 @@ function end_month($date)
                list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
                $days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, ((((((($year - (($year > 0) ? 474 : 473)) % 2820) + 474) + 38) * 682) % 2816) < 682 ? 30 : 29));
        }
                list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
                $days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, ((((((($year - (($year > 0) ? 474 : 473)) % 2820) + 474) + 38) * 682) % 2816) < 682 ? 30 : 29));
        }
-       else if ($date_system == 2)
+       elseif ($date_system == 2)
        {
                list($year, $month, $day) = gregorian_to_islamic($year, $month, $day);
                $days_in_month = array(30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, (((((11 * $year) + 14) % 30) < 11) ? 30 : 29));
        {
                list($year, $month, $day) = gregorian_to_islamic($year, $month, $day);
                $days_in_month = array(30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, (((((11 * $year) + 14) % 30) < 11) ? 30 : 29));
@@ -220,7 +237,7 @@ function add_days($date, $days) // accepts negative values as well
     {
        if ($date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
     {
        if ($date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
-       else if ($date_system == 2)     
+       elseif ($date_system == 2)      
                list($year, $month, $day) = gregorian_to_islamic(date("Y", $timet), date("n", $timet), date("j", $timet));
        return __date($year, $month, $day);
     }
                list($year, $month, $day) = gregorian_to_islamic(date("Y", $timet), date("n", $timet), date("j", $timet));
        return __date($year, $month, $day);
     }
@@ -236,7 +253,7 @@ function add_months($date, $months) // accepts negative values as well
     {
        if ($date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
     {
        if ($date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
-       else if ($date_system == 2)     
+       elseif ($date_system == 2)      
                list($year, $month, $day) = gregorian_to_islamic(date("Y", $timet), date("n", $timet), date("j", $timet));
        return __date($year, $month, $day);
     }
                list($year, $month, $day) = gregorian_to_islamic(date("Y", $timet), date("n", $timet), date("j", $timet));
        return __date($year, $month, $day);
     }
@@ -252,7 +269,7 @@ function add_years($date, $years) // accepts negative values as well
     {
        if ($date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
     {
        if ($date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
-       else if ($date_system == 2)     
+       elseif ($date_system == 2)      
                list($year, $month, $day) = gregorian_to_islamic(date("Y", $timet), date("n", $timet), date("j", $timet));
        return __date($year, $month, $day);
     }
                list($year, $month, $day) = gregorian_to_islamic(date("Y", $timet), date("n", $timet), date("j", $timet));
        return __date($year, $month, $day);
     }
@@ -284,7 +301,7 @@ function sql2date($date_)
        }
        if ($date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
        }
        if ($date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
-       else if ($date_system == 2)
+       elseif ($date_system == 2)
                list($year, $month, $day) = gregorian_to_islamic($year, $month, $day);
        return __date($year, $month, $day);     
 } // end function sql2date
                list($year, $month, $day) = gregorian_to_islamic($year, $month, $day);
        return __date($year, $month, $day);     
 } // end function sql2date
@@ -303,53 +320,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)
                {
@@ -366,9 +348,10 @@ and converts to a yyyy/mm/dd format */
        }
        if ($date_system == 1)
                list($year, $month, $day) = jalali_to_gregorian($year, $month, $day); 
        }
        if ($date_system == 1)
                list($year, $month, $day) = jalali_to_gregorian($year, $month, $day); 
-       else if ($date_system == 2)
+       elseif ($date_system == 2)
                list($year, $month, $day) = islamic_to_gregorian($year, $month, $day); 
                list($year, $month, $day) = islamic_to_gregorian($year, $month, $day); 
-       return $year."-".$month."-".$day;
+
+       return sprintf("%04d-%02d-%02d", $year, $month, $day);
 }// end of function
 
 function date1_greater_date2 ($date1, $date2) 
 }// end of function
 
 function date1_greater_date2 ($date1, $date2) 
@@ -378,8 +361,9 @@ function date1_greater_date2 ($date1, $date2)
 
        $date1 = date2sql($date1);
        $date2 = date2sql($date2);
 
        $date1 = date2sql($date1);
        $date2 = date2sql($date2);
-       list($year1, $month1, $day1) = explode("-", $date1);
-       list($year2, $month2, $day2) = explode("-", $date2);
+
+       @list($year1, $month1, $day1) = explode("-", $date1);
+       @list($year2, $month2, $day2) = explode("-", $date2);
 
        if ($year1 > $year2)
        {
 
        if ($year1 > $year2)
        {
@@ -403,7 +387,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'
@@ -443,9 +427,7 @@ function explode_date_to_dmy($date_)
        $date = date2sql($date_);
        if ($date == "") 
        {
        $date = date2sql($date_);
        if ($date == "") 
        {
-               $disp = user_date_display();
-               echo "<br>Dates must be entered in the format $disp. Sent was $date_<br>";
-               exit;
+               return array(0,0,0);
        }
        list($year, $month, $day) = explode("-", $date);
        return array($day, $month, $year);
        }
        list($year, $month, $day) = explode("-", $date);
        return array($day, $month, $year);