migrated ubiquitous libraries to composer autoloader (#421)
[openemr.git] / library / user.inc
blob5c4b0a7816c6048a7d7ef0ff0fad7b05f62cd186
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");
11 // Set effective user - If no user id is provided, then use the currently logged in user
12 function effectiveUser($user) {
13   return (is_null($user) ? $_SESSION['authUserID'] : $user);
16 /**
17  * Return user setting(s) from the 'users' table
18  * 
19  * @param string $label - Setting key
20  * @param int $user - user id number from users table
21  * @param int $defaultUser - user id to check as alternative/default
22  * @return Effective user setting for $label (NULL if does not exist)
23  */
24 function getUserSetting($label, $user=NULL, $defaultUser=0) {
26   $user = effectiveUser($user);
28   // Collect entry for specified user or 0 (global default user)
29   $res = sqlQuery("SELECT setting_value FROM user_settings 
30       WHERE (setting_user=? OR setting_user=?) AND setting_label=?
31       ORDER BY setting_user DESC", array($user, $defaultUser, $label));
33   // If no entries exist, then return NULL.
34   return (isset($res['setting_value']) ? $res['setting_value'] : NULL);
37 /**
38  * Check if effective user setting matches given value
39  * 
40  * @param string $label - Setting key
41  * @param string $value - Setting value
42  * @param int $user - user id number from users table
43  * @return boolean - true if setting exist and false if does not exist
44  */
45 function checkUserSetting($label, $value, $user=NULL) {
47   $user = effectiveUser($user);
49   $curval = getUserSetting ($label, $user);
50   if (is_null($curval)) {
51     return false;
52   } else {
53     return ($curval === $value);
54   }
57 /**
58  * Set a user setting 
59  * 
60  * @param string $label - Setting key
61  * @param string $value - Setting value
62  * @param int $user - user id number from users table
63  * @param boolean $createDefault - If no current global default value, create one.
64  * @param boolean $overwrite - If this is set to true, then overwrite the current setting
65  */
66 function setUserSetting($label, $value, $user=NULL, $createDefault=TRUE, $overwrite=TRUE) {
67   
68   $user = effectiveUser($user);
70   $cur_value = getUserSetting($label, $user, $user);
72   // Check for a custom settings
73   if (is_null($cur_value)) {
74     sqlStatement("INSERT INTO user_settings(setting_user, setting_label, setting_value) " .
75       "VALUES (?,?,?)", array($user, $label, $value) );
76   } elseif ( ($cur_value !== $value) && $overwrite ) {
77     sqlStatement("UPDATE user_settings SET setting_value=? " .
78       "WHERE setting_user=? AND setting_label=?", array($value, $user, $label) );
79   }
80   
81   // Call self to create default token
82   // (Note this is only done if a default token does not yet exist, thus set overwrite to FALSE))
83   if ($createDefault) {
84     setUserSetting($label, $value, 0, false, false);
85   }
88 //This will remove the selected user setting from the 'user_settings' table.
89 // $label is used to determine which setting to remove
90 // $user is the user id number from users table
91 function removeUserSetting($label,$user=NULL) {
93   $user = effectiveUser($user);
94   
95   // mdsupport - DELETE has implicit select, no need to check and delete
96   sqlQuery("DELETE FROM user_settings " .
97       "WHERE setting_user=? AND setting_label=?", array($user, $label) );
100 function getUserIDInfo($id)
102     return sqlQuery("SELECT fname, lname, username FROM users where id=?", array($id));
106  * Function to retain current user's choices from prior sessions  
107  * @param string $uspfx - Caller specified prefix to be used in settings key, typically script name
108  * @param string $postvar - $_POST variable name containing current value
109  * @param string $label - Caller specified constant added to $uspfx to create settings key
110  * @param string $initval - Initial value to be saved in case user setting does not exist
111  * @return Prior setting (if found) or initial value to be used in script
112  */
113 function prevSetting($uspfx, $postvar, $label, $initval) {
114   
115   $setting_key = $uspfx.$label;
116   
117   if (isset($_POST[$postvar])) {
118     // If script provides current value, store it for future use.
119     $pset = $_POST[$postvar];
120     if ($pset != getUserSetting($setting_key)) {
121       setUserSetting($setting_key, $_POST[$postvar]);
122     }
123   } else {
124     // Script requires prior value
125     $pset = getUserSetting($setting_key);
126     if (is_null($pset)) {
127       setUserSetting($setting_key, $initval);
128       $pset = getUserSetting($setting_key);
129     }
130   }
131   return $pset;