You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
5.3 KiB
169 lines
5.3 KiB
<?php |
|
|
|
/** |
|
* user.inc |
|
* |
|
* @package OpenEMR |
|
* @link http://www.open-emr.org |
|
* @author Brady Miller <brady.g.miller@gmail.com> |
|
* @copyright Copyright (c) 2010 Brady Miller <brady.g.miller@gmail.com> |
|
* @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3 |
|
*/ |
|
|
|
|
|
// Set effective user - If no user id is provided, then use the currently logged in user |
|
function effectiveUser($user) |
|
{ |
|
return (is_null($user) ? $_SESSION['authUserID'] : $user); |
|
} |
|
|
|
/** |
|
* Return user setting(s) from the 'users' table |
|
* |
|
* @param string $label - Setting key |
|
* @param int $user - user id number from users table |
|
* @param int $defaultUser - user id to check as alternative/default |
|
* @return Effective user setting for $label (NULL if does not exist) |
|
*/ |
|
function getUserSetting($label, $user = null, $defaultUser = 0) |
|
{ |
|
|
|
$user = effectiveUser($user); |
|
|
|
// Collect entry for specified user or 0 (global default user) |
|
$res = sqlQuery("SELECT setting_value FROM user_settings |
|
WHERE (setting_user=? OR setting_user=?) AND setting_label=? |
|
ORDER BY setting_user DESC", array($user, $defaultUser, $label)); |
|
|
|
// If no entries exist, then return NULL. |
|
return (isset($res['setting_value']) ? $res['setting_value'] : null); |
|
} |
|
|
|
/** |
|
* Check if effective user setting matches given value |
|
* |
|
* @param string $label - Setting key |
|
* @param string $value - Setting value |
|
* @param int $user - user id number from users table |
|
* @return boolean - true if setting exist and false if does not exist |
|
*/ |
|
function checkUserSetting($label, $value, $user = null) |
|
{ |
|
|
|
$user = effectiveUser($user); |
|
|
|
$curval = getUserSetting($label, $user); |
|
if (is_null($curval)) { |
|
return false; |
|
} else { |
|
return ($curval === $value); |
|
} |
|
} |
|
|
|
/** |
|
* Set a user setting |
|
* |
|
* @param string $label - Setting key |
|
* @param string $value - Setting value |
|
* @param int $user - user id number from users table |
|
* @param boolean $createDefault - If no current global default value, create one. |
|
* @param boolean $overwrite - If this is set to true, then overwrite the current setting |
|
*/ |
|
function setUserSetting($label, $value, $user = null, $createDefault = true, $overwrite = true) |
|
{ |
|
|
|
$user = effectiveUser($user); |
|
|
|
$cur_value = getUserSetting($label, $user, $user); |
|
|
|
// Check for a custom settings |
|
if (is_null($cur_value)) { |
|
sqlStatement("INSERT INTO user_settings(setting_user, setting_label, setting_value) " . |
|
"VALUES (?,?,?)", array($user, $label, $value)); |
|
} elseif (($cur_value !== $value) && $overwrite) { |
|
sqlStatement("UPDATE user_settings SET setting_value=? " . |
|
"WHERE setting_user=? AND setting_label=?", array($value, $user, $label)); |
|
} |
|
|
|
// Call self to create default token |
|
// (Note this is only done if a default token does not yet exist, thus set overwrite to FALSE)) |
|
if ($createDefault) { |
|
setUserSetting($label, $value, 0, false, false); |
|
} |
|
} |
|
|
|
//This will remove the selected user setting from the 'user_settings' table. |
|
// $label is used to determine which setting to remove |
|
// $user is the user id number from users table |
|
function removeUserSetting($label, $user = null) |
|
{ |
|
|
|
$user = effectiveUser($user); |
|
|
|
// mdsupport - DELETE has implicit select, no need to check and delete |
|
sqlQuery("DELETE FROM user_settings " . |
|
"WHERE setting_user=? AND setting_label=?", array($user, $label)); |
|
} |
|
|
|
function getUserIDInfo($id) |
|
{ |
|
return sqlQuery("SELECT fname, lname, username FROM users where id=?", array($id)); |
|
} |
|
|
|
/** |
|
* Function to retain current user's choices from prior sessions |
|
* @param string $uspfx - Caller specified prefix to be used in settings key, typically script name |
|
* @param string $postvar - $_POST variable name containing current value |
|
* @param string $label - Caller specified constant added to $uspfx to create settings key |
|
* @param string $initval - Initial value to be saved in case user setting does not exist |
|
* @return Prior setting (if found) or initial value to be used in script |
|
*/ |
|
function prevSetting($uspfx, $postvar, $label, $initval) |
|
{ |
|
|
|
$setting_key = $uspfx . $label; |
|
|
|
if (isset($_POST[$postvar])) { |
|
// If script provides current value, store it for future use. |
|
$pset = $_POST[$postvar]; |
|
if ($pset != getUserSetting($setting_key)) { |
|
setUserSetting($setting_key, $_POST[$postvar]); |
|
} |
|
} else { |
|
// Script requires prior value |
|
$pset = getUserSetting($setting_key); |
|
if (is_null($pset)) { |
|
setUserSetting($setting_key, $initval); |
|
$pset = getUserSetting($setting_key); |
|
} |
|
} |
|
|
|
return $pset; |
|
} |
|
|
|
/** |
|
* Function to set the state of expandable forms as per user choice, user default or global default |
|
* @return the current state of the file after updating table user_settings |
|
*/ |
|
|
|
function collectAndOrganizeExpandSetting($filenames = array()) |
|
{ |
|
$current_filename = $filenames[0]; |
|
$global_value = $GLOBALS['expand_form']; |
|
|
|
if (getUserSetting($current_filename) > -1) { |
|
$current_state = getUserSetting($current_filename); |
|
} elseif ($global_value) { |
|
$current_state = $global_value; |
|
} else { |
|
$current_state = 0; |
|
} |
|
|
|
if (count($filenames)) { |
|
foreach ($filenames as $filename) { |
|
setUserSetting($filename, $current_state); |
|
} |
|
} |
|
|
|
return $current_state; |
|
}
|
|
|