[0004212] Work Order Entry: fixed error when voided WO refence is reused.
[fa-stable.git] / includes / date_functions.inc
index e44f083b41d424c55f1589fab3e87c1510446e1b..c0bcbe94476acb565053bbd7268ac01479270b92 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") and function_exists("date_default_timezone_get"))
-       @date_default_timezone_set(@date_default_timezone_get());
 
 function __date($year, $month, $day)
 {
 
 function __date($year, $month, $day)
 {
-       global $dateseps;
+       global $SysPrefs, $tmonths;
        
        $how = user_date_format();
        
        $how = user_date_format();
-       $sep = $dateseps[user_date_sep()];
+       $sep = $SysPrefs->dateseps[user_date_sep()];
        $day = (int)$day;
        $month = (int)$month;
        $day = (int)$day;
        $month = (int)$month;
-       if ($day < 10)
-               $day = "0".$day;
-       if ($month < 10)
-               $month = "0".$month;
+       if ($how < 3)
+       {
+               if ($day < 10)
+                       $day = "0".$day;
+               if ($month < 10)
+                       $month = "0".$month;
+       }               
        if ($how == 0)
                return $month.$sep.$day.$sep.$year;
        if ($how == 0)
                return $month.$sep.$day.$sep.$year;
-       else if ($how == 1)
+       elseif ($how == 1)
                return $day.$sep.$month.$sep.$year;
                return $day.$sep.$month.$sep.$year;
-       else
+       elseif ($how == 2)
                return $year.$sep.$month.$sep.$day;
                return $year.$sep.$month.$sep.$day;
+       elseif ($how == 3)
+               return $tmonths[$month].$sep.$day.$sep.$year;
+       elseif ($how == 4)
+               return $day.$sep.$tmonths[$month].$sep.$year;
+       else
+               return $year.$sep.$tmonths[$month].$sep.$day;
 }
 
 function is_date($date_) 
 {
 }
 
 function is_date($date_) 
 {
-       global $dateseps;
+       global $SysPrefs;
 
        if ($date_ == null || $date_ == "")
                return 0;
        $how = user_date_format();
 
        if ($date_ == null || $date_ == "")
                return 0;
        $how = user_date_format();
-       $sep = $dateseps[user_date_sep()];
+       $sep = $SysPrefs->dateseps[user_date_sep()];
 
        $date_ = trim($date_);
 
        $date_ = trim($date_);
-       $date_ = str_replace($sep, "", $date_);
-       if (strlen($date_) == 6)
+       $date = str_replace($sep, "", $date_);
+       
+       if ($how > 2)
+       {
+               global $tmonths;
+               $dd = explode($sep, $date_);
+               if ($how == 3)
+               {
+                       $day = $dd[1];
+                       $month = array_search($dd[0], $tmonths);
+                       $year = $dd[2];
+               } 
+               elseif ($how == 4)
+               {
+                       $day = $dd[0];
+                       $month = array_search($dd[1], $tmonths);
+                       $year = $dd[2];
+               } 
+               else
+               {
+                       $day = $dd[2];
+                       $month = array_search($dd[1], $tmonths);
+                       $year = $dd[0];
+               }
+               if ($year < 1000)
+                       return 0;
+       }
+       elseif (strlen($date) == 6)
        {
                if ($how == 0)
                {
        {
                if ($how == 0)
                {
-                       $day = substr($date_,2,2);
-                       $month = substr($date_,0,2);
-                       $year = substr($date_,4,2);
+                       $day = substr($date,2,2);
+                       $month = substr($date,0,2);
+                       $year = substr($date,4,2);
                } 
                elseif ($how == 1)
                {
                } 
                elseif ($how == 1)
                {
-                       $day = substr($date_,0,2);
-                       $month = substr($date_,2,2);
-                       $year = substr($date_,4,2);
+                       $day = substr($date,0,2);
+                       $month = substr($date,2,2);
+                       $year = substr($date,4,2);
                } 
                else
                {
                } 
                else
                {
-                       $day = substr($date_,4,2);
-                       $month = substr($date_,2,2);
-                       $year = substr($date_,0,2);
+                       $day = substr($date,4,2);
+                       $month = substr($date,2,2);
+                       $year = substr($date,0,2);
                }
        }
                }
        }
-       elseif (strlen($date_) == 8)
+       elseif (strlen($date) == 8)
        {
                if ($how == 0)
                {
        {
                if ($how == 0)
                {
-                       $day = substr($date_,2,2);
-                       $month = substr($date_,0,2);
-                       $year = substr($date_,4,4);
+                       $day = substr($date,2,2);
+                       $month = substr($date,0,2);
+                       $year = substr($date,4,4);
                } 
                elseif ($how == 1)
                {
                } 
                elseif ($how == 1)
                {
-                       $day = substr($date_,0,2);
-                       $month = substr($date_,2,2);
-                       $year = substr($date_,4,4);
+                       $day = substr($date,0,2);
+                       $month = substr($date,2,2);
+                       $year = substr($date,4,4);
                } 
                else
                {
                } 
                else
                {
-                       $day = substr($date_,6,2);
-                       $month = substr($date_,4,2);
-                       $year = substr($date_,0,4);
+                       $day = substr($date,6,2);
+                       $month = substr($date,4,2);
+                       $year = substr($date,0,4);
                }
        }
        if (!isset($year)|| (int)$year > 9999) 
                }
        }
        if (!isset($year)|| (int)$year > 9999) 
@@ -99,13 +132,12 @@ function is_date($date_)
                return 0;
        }
 
                return 0;
        }
 
-
        if (is_long((int)$day) && is_long((int)$month) && is_long((int)$year))
        {
        if (is_long((int)$day) && is_long((int)$month) && is_long((int)$year))
        {
-               global $date_system;
-               if ($date_system == 1)
+               global $SysPrefs;
+               if ($SysPrefs->date_system == 1)
                        list($year, $month, $day) = jalali_to_gregorian($year, $month, $day);  
                        list($year, $month, $day) = jalali_to_gregorian($year, $month, $day);  
-               else if ($date_system == 2)     
+               elseif ($SysPrefs->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))
                {
@@ -124,14 +156,14 @@ function is_date($date_)
 
 function Today() 
 {
 
 function Today() 
 {
-       global $date_system;
+       global $SysPrefs;
 
        $year = date("Y");
        $month = date("n");
        $day = date("j");
 
        $year = date("Y");
        $month = date("n");
        $day = date("j");
-       if ($date_system == 1)
+       if ($SysPrefs->date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
                list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
-       else if ($date_system == 2)     
+       elseif ($SysPrefs->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);     
 }
@@ -148,7 +180,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())
@@ -160,15 +192,20 @@ 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)
-               return 0;
        if ($convert)
                $date2 = sql2date($date);
        else
                $date2 = $date;
        if ($convert)
                $date2 = sql2date($date);
        else
                $date2 = $date;
+
+       if (is_date_closed($date2))
+               return 0;
+
+       if (user_check_access('SA_MULTIFISCALYEARS')) // allow all open years for this one
+               return is_date_in_fiscalyears($date2, false);
+
+       $myrow = get_current_fiscalyear();
        $begin = sql2date($myrow['begin']);
        $end = sql2date($myrow['end']);
        if (date1_greater_date2($begin, $date2) || date1_greater_date2($date2, $end))
        $begin = sql2date($myrow['begin']);
        $end = sql2date($myrow['end']);
        if (date1_greater_date2($begin, $date2) || date1_greater_date2($date2, $end))
@@ -178,10 +215,15 @@ function is_date_in_fiscalyear($date, $convert=false)
        return 1;
 }
 
        return 1;
 }
 
+function is_date_closed($date)
+{
+       return !date1_greater_date2($date, sql2date(get_company_pref('gl_closing_date')));
+}
+
 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']);
@@ -190,7 +232,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']);
@@ -198,91 +240,116 @@ function end_fiscalyear()
 
 function begin_month($date)
 {
 
 function begin_month($date)
 {
-       global $date_system;
+       global $SysPrefs;
     list($day, $month, $year) = explode_date_to_dmy($date);
     list($day, $month, $year) = explode_date_to_dmy($date);
-    if ($date_system == 1)
+    if ($SysPrefs->date_system == 1)
        list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
        list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
-    else if ($date_system == 2)        
+    elseif ($SysPrefs->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);
 }
 
-function end_month($date)
+function days_in_month($month, $year)
 {
 {
-       global $date_system;
-    list($day, $month, $year) = explode_date_to_dmy($date);
-       if ($date_system == 1)
+       global $SysPrefs;
+
+       if ($SysPrefs->date_system == 1)
        {
        {
-               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));
        }
                $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 ($SysPrefs->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));
        }
        else // gregorian date
                $days_in_month = array(31, ((!($year % 4 ) && (($year % 100) || !($year % 400)))?29:28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
                $days_in_month = array(30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, (((((11 * $year) + 14) % 30) < 11) ? 30 : 29));
        }
        else // gregorian date
                $days_in_month = array(31, ((!($year % 4 ) && (($year % 100) || !($year % 400)))?29:28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
-       return __date($year, $month, $days_in_month[$month - 1]);
+
+       return $days_in_month[$month - 1];
+}
+
+function end_month($date)
+{
+       global $SysPrefs;
+
+    list($day, $month, $year) = explode_date_to_dmy($date);
+       if ($SysPrefs->date_system == 1)
+       {
+               list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
+       }
+       elseif ($SysPrefs->date_system == 2)
+       {
+               list($year, $month, $day) = gregorian_to_islamic($year, $month, $day);
+       }
+
+       return __date($year, $month, days_in_month($month, $year));
 }
 
 function add_days($date, $days) // accepts negative values as well
 {
 }
 
 function add_days($date, $days) // accepts negative values as well
 {
-       global $date_system;
+       global $SysPrefs;
     list($day, $month, $year) = explode_date_to_dmy($date);
     list($day, $month, $year) = explode_date_to_dmy($date);
-       $timet = Mktime(0,0,0, $month, $day + $days, $year);
-    if ($date_system == 1 || $date_system == 2)
+       $timet = mktime(0,0,0, $month, $day + $days, $year);
+    if ($SysPrefs->date_system == 1 || $SysPrefs->date_system == 2)
     {
     {
-       if ($date_system == 1)
+       if ($SysPrefs->date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
-       else if ($date_system == 2)     
+       elseif ($SysPrefs->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);
     }
-    return date(user_date_display(), $timet);
+    list($year, $month, $day) = explode("-", date("Y-m-d", $timet));
+       return __date($year, $month, $day);
 }
 
 function add_months($date, $months) // accepts negative values as well
 {
 }
 
 function add_months($date, $months) // accepts negative values as well
 {
-       global $date_system;
+       global $SysPrefs;
+
     list($day, $month, $year) = explode_date_to_dmy($date);
     list($day, $month, $year) = explode_date_to_dmy($date);
-       $timet = Mktime(0,0,0, $month + $months, $day, $year);
-    if ($date_system == 1 || $date_system == 2)
+
+       $months += $year*12+$month;
+       $month = ($months-1)%12+1;
+       $year = ($months-$month)/12;
+
+       $timet = mktime(0,0,0, $month, min($day, days_in_month($month, $year)), $year);
+
+    if ($SysPrefs->date_system == 1 || $SysPrefs->date_system == 2)
     {
     {
-       if ($date_system == 1)
+       if ($SysPrefs->date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
-       else if ($date_system == 2)     
+       elseif ($SysPrefs->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);
     }
-    return date(user_date_display(), $timet);
+    list($year, $month, $day) = explode("-", date("Y-m-d", $timet));
+       return __date($year, $month, $day);
 }
 
 function add_years($date, $years) // accepts negative values as well
 {
 }
 
 function add_years($date, $years) // accepts negative values as well
 {
-       global $date_system;
+       global $SysPrefs;
+
     list($day, $month, $year) = explode_date_to_dmy($date);
        $timet = Mktime(0,0,0, $month, $day, $year + $years);
     list($day, $month, $year) = explode_date_to_dmy($date);
        $timet = Mktime(0,0,0, $month, $day, $year + $years);
-    if ($date_system == 1 || $date_system == 2)
+    if ($SysPrefs->date_system == 1 || $SysPrefs->date_system == 2)
     {
     {
-       if ($date_system == 1)
+       if ($SysPrefs->date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
                list($year, $month, $day) = gregorian_to_jalali(date("Y", $timet), date("n", $timet), date("j", $timet));
-       else if ($date_system == 2)     
+       elseif ($SysPrefs->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);
     }
-    return date(user_date_display(), $timet);
+    list($year, $month, $day) = explode("-", date("Y-m-d", $timet));
+       return __date($year, $month, $day);
 }
 
 //_______________________________________________________________
 
 function sql2date($date_) 
 {
 }
 
 //_______________________________________________________________
 
 function sql2date($date_) 
 {
-       global $date_system;
+       global $SysPrefs;
 
        //for MySQL dates are in the format YYYY-mm-dd
 
        //for MySQL dates are in the format YYYY-mm-dd
-       if ($date_ == null || strlen($date_) == 0)
-               return "";
 
        if (strpos($date_, "/")) 
        { // In MySQL it could be either / or -
 
        if (strpos($date_, "/")) 
        { // In MySQL it could be either / or -
@@ -292,14 +359,16 @@ function sql2date($date_)
        {
                list($year, $month, $day) = explode("-", $date_);
        }
        {
                list($year, $month, $day) = explode("-", $date_);
        }
+       if (!isset($day)) // data format error
+               return "";
 
        if (strlen($day) > 4) 
        {  /*chop off the time stuff */
                $day = substr($day, 0, 2);
        }
 
        if (strlen($day) > 4) 
        {  /*chop off the time stuff */
                $day = substr($day, 0, 2);
        }
-       if ($date_system == 1)
+       if ($SysPrefs->date_system == 1)
                list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
                list($year, $month, $day) = gregorian_to_jalali($year, $month, $day);
-       else if ($date_system == 2)
+       elseif ($SysPrefs->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
@@ -307,66 +376,32 @@ function sql2date($date_)
 
 function date2sql($date_)
 {
 
 function date2sql($date_)
 {
-       global $dateseps, $date_system;
+       global $SysPrefs, $tmonths;
 /* takes a date in a the format specified in $DefaultDateFormat
 and converts to a yyyy/mm/dd format */
 
        $how = user_date_format();
 /* takes a date in a the format specified in $DefaultDateFormat
 and converts to a yyyy/mm/dd format */
 
        $how = user_date_format();
-       $sep = $dateseps[user_date_sep()];
+       $sep = $SysPrefs->dateseps[user_date_sep()];
 
 
+       $date_ = trim($date_);
        if ($date_ == null || strlen($date_) == 0)
                return "";
 
        if ($date_ == null || strlen($date_) == 0)
                return "";
 
-       $date_ = trim($date_);
-       $date_ = str_replace($sep, "", $date_);
-
-       if (strlen($date_) == 6)
+    $year = $month = $day = 0;
+    // Split up the date by the separator based on "how" to split it
+    if ($how == 0 || $how == 3) // MMDDYYYY or MmmDDYYYY
+        list($month, $day, $year) = explode($sep, $date_);
+    elseif ($how == 1 || $how == 4) // DDMMYYYY or DDMmYYYY
+        list($day, $month, $year) = explode($sep, $date_);
+    else // $how == 2 || $how == 5, YYYYMMDD or YYYYMmmDD
+        list($year, $month, $day) = explode($sep, $date_);
+       if ($how > 2)
        {
        {
-               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;
-
+               global $tmonths;
+               $month = array_search($month, $tmonths);
+       }       
 //to modify assumption in 2030
 //to modify assumption in 2030
-       if ($date_system == 0)
+       if ($SysPrefs->date_system == 0 || $SysPrefs->date_system == 3)
        {
                if ((int)$year < 60)
                {
        {
                if ((int)$year < 60)
                {
@@ -381,13 +416,46 @@ and converts to a yyyy/mm/dd format */
        {
                return 0;
        }
        {
                return 0;
        }
-       if ($date_system == 1)
+       if ($SysPrefs->date_system == 1)
                list($year, $month, $day) = jalali_to_gregorian($year, $month, $day); 
                list($year, $month, $day) = jalali_to_gregorian($year, $month, $day); 
-       else if ($date_system == 2)
+       elseif ($SysPrefs->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
 
 }// end of function
 
+/**
+ *     Compare dates in sql format.
+ *     Return +1 if sql date1>date2, -1 if date1<date2,
+ *  or 0 if dates are equal.
+ */
+function sql_date_comp($date1, $date2)
+{
+       @list($year1, $month1, $day1) = explode("-", $date1);
+       @list($year2, $month2, $day2) = explode("-", $date2);
+
+       if ($year1 != $year2) {
+               return $year1 < $year2 ? -1 : +1;
+    }
+    elseif ($month1 != $month2) {
+               return $month1 < $month2 ? -1 : +1;
+       }
+       elseif ($day1 != $day2) {
+               return $day1 < $day2 ? -1 : +1;
+       }
+       return 0;
+}
+/*
+       Compare dates in user format.
+*/
+function date_comp($date1, $date2)
+{
+       $date1 = date2sql($date1);
+       $date2 = date2sql($date2);
+
+       return sql_date_comp($date1, $date2);
+}
+
 function date1_greater_date2 ($date1, $date2) 
 {
 
 function date1_greater_date2 ($date1, $date2) 
 {
 
@@ -395,8 +463,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)
        {
@@ -419,7 +488,6 @@ function date1_greater_date2 ($date1, $date2)
        return 0;
 }
 
        return 0;
 }
 
-
 function date_diff2 ($date1, $date2, $period) 
 {
 
 function date_diff2 ($date1, $date2, $period) 
 {
 
@@ -460,9 +528,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);
@@ -635,4 +701,3 @@ function islamic_to_gregorian($i_y, $i_m, $i_d)
        }
        return array($y, $m, $d);
 }
        }
        return array($y, $m, $d);
 }
-?>