facility form fix (#419)
[openemr.git] / library / user.inc
blob2841d00b5d37656b09c2d37a0ce195de9de7cb9c
1 <?php
2 // Copyright (C) 2010 Brady Miller <brady@sparmy.com>
3 //
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 2
7 // of the License, or (at your option) any later version.
9 require_once(dirname(__FILE__) . "/sql.inc");
10 require_once(dirname(__FILE__) . "/formdata.inc.php");
12 // Set effective user - If no user id is provided, then use the currently logged in user
13 function effectiveUser($user) {
14   return (is_null($user) ? $_SESSION['authUserID'] : $user);
17 /**
18  * Return user setting(s) from the 'users' table
19  * 
20  * @param string $label - Setting key
21  * @param int $user - user id number from users table
22  * @param int $defaultUser - user id to check as alternative/default
23  * @return Effective user setting for $label (NULL if does not exist)
24  */
25 function getUserSetting($label, $user=NULL, $defaultUser=0) {
27   $user = effectiveUser($user);
29   // Collect entry for specified user or 0 (global default user)
30   $res = sqlQuery("SELECT setting_value FROM user_settings 
31       WHERE (setting_user=? OR setting_user=?) AND setting_label=?
32       ORDER BY setting_user DESC", array($user, $defaultUser, $label));
34   // If no entries exist, then return NULL.
35   return (isset($res['setting_value']) ? $res['setting_value'] : NULL);
38 /**
39  * Check if effective user setting matches given value
40  * 
41  * @param string $label - Setting key
42  * @param string $value - Setting value
43  * @param int $user - user id number from users table
44  * @return boolean - true if setting exist and false if does not exist
45  */
46 function checkUserSetting($label, $value, $user=NULL) {
48   $user = effectiveUser($user);
50   $curval = getUserSetting ($label, $user);
51   if (is_null($curval)) {
52     return false;
53   } else {
54     return ($curval === $value);
55   }
58 /**
59  * Set a user setting 
60  * 
61  * @param string $label - Setting key
62  * @param string $value - Setting value
63  * @param int $user - user id number from users table
64  * @param boolean $createDefault - If no current global default value, create one.
65  * @param boolean $overwrite - If this is set to true, then overwrite the current setting
66  */
67 function setUserSetting($label, $value, $user=NULL, $createDefault=TRUE, $overwrite=TRUE) {
68   
69   $user = effectiveUser($user);
71   $cur_value = getUserSetting($label, $user, $user);
73   // Check for a custom settings
74   if (is_null($cur_value)) {
75     sqlStatement("INSERT INTO user_settings(setting_user, setting_label, setting_value) " .
76       "VALUES (?,?,?)", array($user, $label, $value) );
77   } elseif ( ($cur_value !== $value) && $overwrite ) {
78     sqlStatement("UPDATE user_settings SET setting_value=? " .
79       "WHERE setting_user=? AND setting_label=?", array($value, $user, $label) );
80   }
81   
82   // Call self to create default token
83   // (Note this is only done if a default token does not yet exist, thus set overwrite to FALSE))
84   if ($createDefault) {
85     setUserSetting($label, $value, 0, false, false);
86   }
89 //This will remove the selected user setting from the 'user_settings' table.
90 // $label is used to determine which setting to remove
91 // $user is the user id number from users table
92 function removeUserSetting($label,$user=NULL) {
94   $user = effectiveUser($user);
95   
96   // mdsupport - DELETE has implicit select, no need to check and delete
97   sqlQuery("DELETE FROM user_settings " .
98       "WHERE setting_user=? AND setting_label=?", array($user, $label) );
101 function getUserIDInfo($id)
103     return sqlQuery("SELECT fname, lname, username FROM users where id=?", array($id));
107  * Function to retain current user's choices from prior sessions  
108  * @param string $uspfx - Caller specified prefix to be used in settings key, typically script name
109  * @param string $postvar - $_POST variable name containing current value
110  * @param string $label - Caller specified constant added to $uspfx to create settings key
111  * @param string $initval - Initial value to be saved in case user setting does not exist
112  * @return Prior setting (if found) or initial value to be used in script
113  */
114 function prevSetting($uspfx, $postvar, $label, $initval) {
115   
116   $setting_key = $uspfx.$label;
117   
118   if (isset($_POST[$postvar])) {
119     // If script provides current value, store it for future use.
120     $pset = $_POST[$postvar];
121     if ($pset != getUserSetting($setting_key)) {
122       setUserSetting($setting_key, $_POST[$postvar]);
123     }
124   } else {
125     // Script requires prior value
126     $pset = getUserSetting($setting_key);
127     if (is_null($pset)) {
128       setUserSetting($setting_key, $initval);
129       $pset = getUserSetting($setting_key);
130     }
131   }
132   return $pset;