Minor tweaks and house cleaning
[estigi.git] / core / user / user.module
blob685fcc457570280eb095f8053c6f9feae0a3411f
1 <?php
2 /** @file user.module
3  * Main user module file.
4  * Core Module. Deals with user integration.
5  */
7 global $user;
9 /**
10  * @param $access
11  *  The access permition to be looked for
12  * @bug
13  *  The data casting (array)$access is not working, no idea why
14  * @todo
15  *  Redo all this according to the new implementation, it must be able to compare with other values
16  */
17 function user_access($access){
19         global $user, $db;
21         static $permissions;
23         if(!is_array($access))
24                 $access = array($access);
26         static $permissions;
28         if($user['uid'] == 1){
29                 return TRUE;
30         }
32         if(!isset($permissions)){
33                 $p = db_query("SELECT perm FROM {PRE_}permission WHERE rid IN (".implode(', ', array_keys($user['roles'])).")", TRUE);
35                 foreach($p as $perms){
36                         $permissions[] = $perms['perm'];
37                 }
38         }
40         foreach($permissions as $perm){
41                 foreach($access as $verify)
42                         if(strpos($perm, $verify) !== FALSE){
43                                 return TRUE;
44                         }
45         }
47         return FALSE;
51 function user_load($uid, $logged = FALSE){
53         global $db;
55         //Security for main admin and anonymous
56         if($uid < 1){
57                 return FALSE;
58         }
60         $user = db_query("SELECT * FROM {PRE_}users WHERE uid = ".$uid." AND uid > 0", TRUE, TRUE);
62         if($user){
63                 unset($user['pass']);
64         }
66         $roles = db_query("SELECT ur. * , r. * FROM {PRE_}users_roles ur INNER JOIN role r WHERE ur.rid = r.rid AND ur.uid = ".$uid."", TRUE);
68         foreach($roles as $r){
69                 $user['roles'][$r['rid']] = $r['name'];
70         }
72         //Add the role logged in (or any name used)
73         if($logged){
74                 $user['roles'][3] = user_roles(3);
75         }
77         //Unserialize data
78         $user['data'] = unserialize($user['data']);
80         return $user;
84 function user_sessions($key){
86         global $user;
88         $u = db_query("SELECT uid FROM {PRE_}sessions WHERE sid = '".$key."'", TRUE, TRUE);
90         if($u != ''){
91                 if($u['uid'] == 0){
92                         user_anonymous();
93                         $user['session'] = '';
94                         return TRUE;
95                 }
96                 $user = user_load($u['uid'], TRUE);
97                 $user['session'] = $u;
98                 return TRUE;
99         }
100                 else{
101                 return FALSE;
102                 }
106 function user_anonymous($session = ''){
108         global $user;
110         $user['uid'] = 0;
111         $user['hostname'] = core_ip_address();
112         $user['roles'] = array(2 => user_roles(2));
113         $user['session'] = $session;
117 function user_roles($rid = NULL){
119         static $roles;
121         if(!isset($roles)){
122                 $role = db_query("SELECT * FROM {PRE_}role", TRUE);
123         
124                 //while($r = mysql_fetch_assoc($role)){
125                 foreach($role as $r){
126                         $roles[$r['rid']] = $r['name'];
127                 }
128         }
130         if(isset($rid)){
131                 return $roles[$rid];
132         }
134         return $roles;
139  * Add tabs to the user pages pages
140  */
141 function user_tabs($uid){
143         $skin_tabs = array('user/'.$uid => 'View',
144                                                          'user/edit/'.$uid => 'Edit'
145                                                 );
147         skin_tabs($skin_tabs);