Stable merged into unstable again (due to failure on binary file during previous...
[fa-stable.git] / includes / current_user.inc
index 1c7d161183a560d493ee685b891bba6020d1bfc5..0a5b7481dc381bba29617ae769f30ef60a24dae0 100644 (file)
@@ -63,11 +63,20 @@ class current_user
                $this->set_company($company);
            $this->logged = false;
 
-               $Auth_Result = get_user_for_login($loginname, $password);
+               set_global_connection();
 
-               if (db_num_rows($Auth_Result) > 0)
+               // Use external authentication source if any.
+               // Keep in mind you need to have user data set for $loginname
+               // in FA users table anyway to successfully log in.
+               $Auth_Result = hook_authenticate($loginname, $password);
+
+               if (!isset($Auth_Result))       // if not used: standard method
+                       $Auth_Result = get_user_auth($loginname, md5($password));
+
+               if ($Auth_Result)
                {
-                       $myrow = db_fetch($Auth_Result);
+                       $myrow = get_user_by_login($loginname);
+
                        $this->old_db = isset($myrow["full_access"]);
                        if (! @$myrow["inactive"]) {
                                if ($this->old_db) { 
@@ -202,6 +211,20 @@ function number_format2($number, $decimals=0)
        return $decimals==='max' ? rtrim($num, '0') : $num;
 
 }
+
+/* price/float comparision helper to be used in any suspicious place for zero values? 
+usage:
+if (!floatcmp($value1, $value2)) 
+       compare value is 0
+*/
+
+define('FLOAT_COMP_DELTA', 0.004);
+
+function floatcmp($a, $b)
+{
+    return $a - $b > FLOAT_COMP_DELTA ? 1 : $b - $a > FLOAT_COMP_DELTA ? -1 : 0;
+}
+
 //
 //     Current ui mode.
 //
@@ -525,6 +548,9 @@ function array_search_key($needle, $haystack, $valuekey=null)
 function flush_dir($path, $wipe = false) 
 {
        $dir = opendir($path);
+       if(!$dir)
+               return;
+
        while(false !== ($fname = readdir($dir))) {
                if($fname=='.' || $fname=='..' || $fname=='CVS' || (!$wipe && $fname=='index.php')) continue;
                if(is_dir($path.'/'.$fname)) {