X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fdb%2Fusers_db.inc;h=1040930591988465f9a24a09e45d53a3e8eefced;hb=fabc8d3e9dbd0ebeb28cefcdf85c5abf90a3496f;hp=496f18acc5304f7fae4e2d9222757fc1d2132c96;hpb=891fe0dc1e5f4da99e74565e41f0eb3b179127f0;p=fa-stable.git diff --git a/admin/db/users_db.inc b/admin/db/users_db.inc index 496f18ac..10409305 100644 --- a/admin/db/users_db.inc +++ b/admin/db/users_db.inc @@ -13,6 +13,7 @@ function add_user($user_id, $real_name, $password, $phone, $email, $role_id, $language, $profile, $rep_popup, $pos) { + begin_transaction(__FUNCTION__, func_get_args()); $sql = "INSERT INTO ".TB_PREF."users (user_id, real_name, password" .", phone, email, role_id, language, pos, print_profile, rep_popup) VALUES (".db_escape($user_id).", @@ -21,17 +22,23 @@ function add_user($user_id, $real_name, $password, $phone, $email, $role_id, .", ".db_escape($pos).",".db_escape($profile).",".db_escape($rep_popup) ." )"; - db_query($sql, "could not add user for $user_id"); + $result = db_query($sql, "could not add user for $user_id"); + commit_transaction(); + return $result; } //----------------------------------------------------------------------------------------------- function update_user_password($id, $user_id, $password) { + begin_transaction(__FUNCTION__, func_get_args()); + $sql = "UPDATE ".TB_PREF."users SET password=".db_escape($password) . ", user_id = ".db_escape($user_id). " WHERE id=".db_escape($id); + $result = db_query($sql, "could not update user password for $user_id"); - db_query($sql, "could not update user password for $user_id"); + commit_transaction(); + return $result; } //----------------------------------------------------------------------------------------------- @@ -39,6 +46,7 @@ function update_user_password($id, $user_id, $password) function update_user($id, $user_id, $real_name, $phone, $email, $role_id, $language, $profile, $rep_popup, $pos) { + begin_transaction(__FUNCTION__, func_get_args()); $sql = "UPDATE ".TB_PREF."users SET real_name=".db_escape($real_name). ", phone=".db_escape($phone).", email=".db_escape($email).", @@ -49,40 +57,26 @@ function update_user($id, $user_id, $real_name, $phone, $email, $role_id, pos=".db_escape($pos).", user_id = " . db_escape($user_id) . " WHERE id=" . db_escape($id); - db_query($sql, "could not update user for $user_id"); + return db_query($sql, "could not update user for $user_id"); + commit_transaction(); } //----------------------------------------------------------------------------------------------- -function update_user_display_prefs($id, $price_dec, $qty_dec, $exrate_dec, - $percent_dec, $showgl, $showcodes, $date_format, $date_sep, $tho_sep, - $dec_sep, $theme, $pagesize, $show_hints, $profile, $rep_popup, $query_size, - $graphic_links, $lang, $stickydate, $startup_tab) +function update_user_prefs($id, $prefs) { - $sql = "UPDATE ".TB_PREF."users SET - prices_dec=".db_escape($price_dec).", - qty_dec=".db_escape($qty_dec).", - rates_dec=".db_escape($exrate_dec).", - percent_dec=".db_escape($percent_dec).", - show_gl=".db_escape($showgl).", - show_codes=".db_escape($showcodes).", - date_format=".db_escape($date_format).", - date_sep=".db_escape($date_sep).", - tho_sep=".db_escape($tho_sep).", - dec_sep=".db_escape($dec_sep).", - theme=".db_escape($theme).", - page_size=".db_escape($pagesize).", - show_hints=".db_escape($show_hints).", - print_profile=".db_escape($profile).", - rep_popup=".db_escape($rep_popup).", - query_size=".db_escape($query_size).", - graphic_links=".db_escape($graphic_links).", - language=".db_escape($lang).", - sticky_doc_date=".db_escape($stickydate).", - startup_tab=".db_escape($startup_tab)." - WHERE id = ".db_escape($id); - - db_query($sql, "could not update user display prefs for $id"); + begin_transaction(__FUNCTION__, func_get_args()); + + $sql = "UPDATE ".TB_PREF."users SET "; + foreach($prefs as $name => $value) { + $prefs[$name] = $name.'='. db_escape($value); + } + $sql .= implode(',', $prefs) . " WHERE id=".db_escape($id); + + $result = db_query($sql, "could not update user display prefs for $id"); + + commit_transaction(); + return $result; } //----------------------------------------------------------------------------------------------- @@ -109,8 +103,7 @@ function get_user($id) } //----------------------------------------------------------------------------------------------- -// This function is necessary for admin prefs update after upgrade from 2.1 -// + function get_user_by_login($user_id) { $sql = "SELECT * FROM ".TB_PREF."users WHERE user_id=".db_escape($user_id); @@ -122,35 +115,56 @@ function get_user_by_login($user_id) //----------------------------------------------------------------------------------------------- +function get_user_by_email($email) +{ + $sql = "SELECT * FROM ".TB_PREF."users WHERE email=".db_escape($email); + + $result = db_query($sql, "could not get user for email $email"); + + if (db_num_rows($result) != 1) + return false; + + return db_fetch($result); +} + +//----------------------------------------------------------------------------------------------- + function delete_user($id) { + begin_transaction(__FUNCTION__, func_get_args()); + $sql="DELETE FROM ".TB_PREF."users WHERE id=".db_escape($id); db_query($sql, "could not delete user $id"); + + commit_transaction(); } //----------------------------------------------------------------------------------------------- -function get_user_for_login($user_id, $password) +function get_user_auth($user_id, $password) { - set_global_connection(); -// do not exclude inactive records or you lost access after source upgrade -// on sites using pre 2.2 database $sql = "SELECT * FROM ".TB_PREF."users WHERE user_id = ".db_escape($user_id)." AND" ." password=".db_escape($password); - return db_query($sql, "could not get validate user login for $user_id"); + return db_num_rows(db_query($sql, "could not get validate user login for $user_id")) != 0; } //----------------------------------------------------------------------------------------------- - -function update_user_visitdate($user_id) +// +// Record user login. When logging is on also current FA state is recorded. +// +function update_user_visitdate($user_id, $src_version, $db_version, $extensions) { + begin_transaction(__FUNCTION__, func_get_args()); + $sql = "UPDATE ".TB_PREF."users SET last_visit_date='". date("Y-m-d H:i:s") ."' WHERE user_id=".db_escape($user_id); db_query($sql, "could not update last visit date for user $user_id"); + + commit_transaction(); } //----------------------------------------------------------------------------------------------- @@ -163,4 +177,57 @@ function check_user_activity($id) return $ret[0]; } -?> \ No newline at end of file + +//----------------------------------------------------------------------------------------------- +function show_users_online() +{ + global $db, $GetText, $SysPrefs; + + if (!isset($SysPrefs->show_users_online) || $SysPrefs->show_users_online == 0 || !defined('TB_PREF') || + !isset($GetText) || !isset($db)) + return ""; + $result = db_query("SHOW TABLES LIKE '".TB_PREF."useronline'"); + if (db_num_rows($result) == 1) + { + $timeoutseconds = 120; + + $timestamp=time(); + $timeout=$timestamp-$timeoutseconds; + /* + This will find out if user is from behind proxy server. + In that case, the script would count them all as 1 user. + This function tryes to get real IP address. + */ + if (isset($_SERVER['HTTP_CLIENT_IP'])) { + $ip = $_SERVER['HTTP_CLIENT_IP']; + } + elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + } + elseif (isset($_SERVER['HTTP_X_FORWARDED'])) { + $ip = $_SERVER['HTTP_X_FORWARDED']; + } + elseif (isset($_SERVER['HTTP_FORWARDED_FOR'])) { + $ip = $_SERVER['HTTP_FORWARDED_FOR']; + } + elseif (isset($_SERVER['HTTP_FORWARDED'])) { + $ip = $_SERVER['HTTP_FORWARDED']; + } + else { + $ip = $_SERVER['REMOTE_ADDR']; + } + + // Add user to database + db_query("INSERT INTO ".TB_PREF."useronline (timestamp, ip, file) VALUES ('". $timestamp ."',". db_escape($ip) .",". db_escape($_SERVER['PHP_SELF']) .")"); + //Remove users that were not online within $timeoutseconds. + db_query("DELETE FROM ".TB_PREF."useronline WHERE timestamp<". $timeout); + + // Select online users + $result = db_query("SELECT DISTINCT ip FROM ".TB_PREF."useronline"); + $users = db_num_rows($result); + } + else + $users = 1; + return "$users ".($users == 1 ? _("user online") : _("users online")); + +}