Password reset mail could take several hours. After fix only a couple of seconds...
[fa-stable.git] / includes / current_user.inc
index 87f71b1e45ce2a6c9ee10357bb4f3cc1ae4ee3c1..c3d162e037e1d440175cfd6f6118f0a6c2b01d46 100644 (file)
@@ -36,7 +36,7 @@ class current_user
        var $prefs;
        var $cur_con; // current db connection (can be different from $company for superuser)
 
-       function current_user()
+       function __construct()
        {
                global $def_coy;
                
@@ -150,18 +150,22 @@ class current_user
 
                set_global_connection();
 
-               $myrow = get_user_by_email($email);
+               $user = get_user_by_email($email);
 
-               if ($myrow['id'] != "") {
-
-                       $bytes = openssl_random_pseudo_bytes(8, $cstrong);
-                       $password   = base64_encode($bytes);
+               if ($user != false) {
 
+                       $password = generate_password();
                        $hash = md5($password);
 
-                       update_user_password($myrow['id'], $myrow['user_id'], $hash);
+                       update_user_password($user['id'], $user['user_id'], $hash);
+                       
+                       $sender = get_company_pref('email');
+                       if (empty($sender))
+                               $header = "";
+                       else
+                               $header = "From: $sender";
 
-                       mail($myrow['email'], _("New password for")." ".$SysPrefs->app_title, $password);
+                       mail($email, _("New password for")." ".$SysPrefs->app_title, $password, $header);
 
                        return true;
                }
@@ -304,18 +308,20 @@ function round2($number, $decimals=0)
 function number_format2($number, $decimals=0)
 {
        global $SysPrefs;
-       $tsep = $SysPrefs->thoseps[user_dec_sep()];
+       $tsep = $SysPrefs->thoseps[user_tho_sep()];
        $dsep = $SysPrefs->decseps[user_dec_sep()];
-       //return number_format($number, $decimals, $dsep,       $tsep);
+
+       if ($number == '')
+               $number = 0;
        if($decimals==='max')
                $dec = 15 - floor(log10(abs($number)));
        else {
                $delta = ($number < 0 ? -.0000000001 : .0000000001);
-               $number += $delta;
+               @$number += $delta;
                $dec = $decimals;
        }
 
-       $num = number_format($number, $dec, $dsep, $tsep);
+       $num = number_format($number, intval($dec), $dsep, $tsep);
 
        return $decimals==='max' ? rtrim($num, '0') : $num;
 
@@ -353,7 +359,7 @@ function price_decimal_format($number, &$dec)
        if ($pos !== false)
        {
                $len = strlen(substr($str, $pos + 1));
-               if ($len > $dec)
+               if ($len > $dec && $len < ini_get('precision')-3)
                        $dec = $len;
        }
        return number_format2($number, $dec);
@@ -416,12 +422,12 @@ function user_numeric($input) {
        $num = str_replace( $sep, '.', $num);
 
     if (!is_numeric($num))
-         return false;
+               return false;
     $num = (float)$num;
     if ($num == (int)$num)
-         return (int)$num;
+               return (int)$num;
     else
-         return $num;
+               return $num;
 }
 
 function user_company()
@@ -450,21 +456,21 @@ function user_price_dec()
 {
        global $SysPrefs;
 
-       return isset($_SESSION["wa_current_user"]) ? $_SESSION["wa_current_user"]->prefs->price_dec() : $SysPrefs->prices_dec;
+       return isset($_SESSION["wa_current_user"]) ? $_SESSION["wa_current_user"]->prefs->price_dec() : 2;
 }
 
 function user_exrate_dec()
 {
        global $SysPrefs;
 
-       return isset($_SESSION["wa_current_user"]) ? $_SESSION["wa_current_user"]->prefs->exrate_dec() : $SysPrefs->rates_dec;
+       return isset($_SESSION["wa_current_user"]) ? $_SESSION["wa_current_user"]->prefs->exrate_dec() : 4;
 }
 
 function user_percent_dec()
 {
        global $SysPrefs;
 
-       return isset($_SESSION["wa_current_user"]) ? $_SESSION["wa_current_user"]->prefs->percent_dec() : $SysPrefs->percent_dec;
+       return isset($_SESSION["wa_current_user"]) ? $_SESSION["wa_current_user"]->prefs->percent_dec() : 1;
 }
 
 function user_show_gl_info()
@@ -513,7 +519,7 @@ function user_date_sep()
 {
        global $SysPrefs;
 
-       return isset($_SESSION["wa_current_user"]) ? $_SESSION["wa_current_user"]->prefs->date_sep() : $SysPrefs->dflt_date_sep;
+       return isset($_SESSION["wa_current_user"]->prefs->date_sep) ? $_SESSION["wa_current_user"]->prefs->date_sep() : $SysPrefs->dflt_date_sep;
 }
 
 function user_tho_sep()
@@ -685,10 +691,12 @@ function array_append(&$array, $elements)
 //
 function array_search_value($needle, $haystack, $valuekey=null)
 {
-       foreach($haystack as $key => $value) {
-               $val = isset($valuekey) ? @$value[$valuekey] : $value;
-               if ($needle == $val){
-                       return $value;
+       if (is_array($haystack)) {
+               foreach($haystack as $key => $value) {
+                       $val = isset($valuekey) ? @$value[$valuekey] : $value;
+                       if ($needle == $val){
+                               return $value;
+                       }
                }
        }
        return null;
@@ -700,13 +708,14 @@ function array_search_value($needle, $haystack, $valuekey=null)
 function array_search_keys($needle, $haystack, $valuekey=null)
 {
        $keys = array();
-       if($haystack)
+       if (is_array($haystack)) {
                foreach($haystack as $key => $value) {
                        $val = isset($valuekey) ? @$value[$valuekey] : $value;
                        if ($needle == $val){
                                $keys[] = $key;
                        }
                }
+       }       
        return $keys;
 }
 //
@@ -729,6 +738,8 @@ function recalculate_cols(&$cols)
 
 function flush_dir($path, $wipe = false) 
 {
+       if (!file_exists($path))
+               return;
        $dir = @opendir($path);
        if(!$dir)
                return;