Main Page | Directories | File List | File Members

user.php

Go to the documentation of this file.
00001 <?php
00002 # This file is part of the Savane project
00003 # <http://gna.org/projects/savane/>
00004 #
00005 # $Id: user.php 5359 2006-02-14 08:47:46Z toddy $
00006 #
00007 #  Copyright 1999-2000 (c) The SourceForge Crew
00008 #  Copyright 2000-2003 (c) Free Software Foundation
00009 #
00010 #  Copyright 2004      (c) Mathieu Roy <yeupou--gnu.org>
00011 #
00012 # The Savane project is free software; you can redistribute it and/or
00013 # modify it under the terms of the GNU General Public License
00014 # as published by the Free Software Foundation; either version 2
00015 # of the License, or (at your option) any later version.
00016 #
00017 # The Savane project is distributed in the hope that it will be useful,
00018 # but WITHOUT ANY WARRANTY; without even the implied warranty of
00019 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020 # GNU General Public License for more details.
00021 #
00022 # You should have received a copy of the GNU General Public License
00023 # along with the Savane project; if not, write to the Free Software
00024 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00025  
00026 
00027 unset($USER_IS_SUPER_USER);
00028 $USER_RES=array();
00029 
00030 function user_isloggedin() 
00031 {
00032   global $G_USER;
00033   if ($G_USER['user_id']) 
00034     {
00035       return true;
00036     } 
00037   else 
00038     {
00039       return false;
00040     }
00041 }
00042 
00043 function user_can_be_super_user() 
00044 {
00045   global $USER_IS_SUPER_USER;
00046   /*
00047                 members of sys_group_id  are admins and have super-user privs site-wide
00048   */
00049   
00050   if (isset($USER_IS_SUPER_USER)) 
00051     {
00052       return $USER_IS_SUPER_USER;
00053     } 
00054   else 
00055     {
00056       if (user_isloggedin()) 
00057         {
00058           $sql="SELECT * FROM user_group WHERE user_id='". user_getid() ."' AND group_id='".$GLOBALS[sys_group_id]."' AND admin_flags='A'";
00059           $result=db_query($sql);
00060           if (!$result || db_numrows($result) < 1) 
00061             {
00062               $USER_IS_SUPER_USER=false;
00063               return $USER_IS_SUPER_USER;
00064             } 
00065           else 
00066             {
00067               #matching row was found - set and save this knowledge for later
00068               $USER_IS_SUPER_USER=true;
00069               return $USER_IS_SUPER_USER;
00070             }
00071         } 
00072       else 
00073         {
00074           $USER_IS_SUPER_USER=false;
00075           return $USER_IS_SUPER_USER;
00076         }
00077     }
00078 }
00079 
00080 
00081 function user_is_super_user() 
00082 {
00083   # User is superuser only if he wants to, otherwise he's going to see
00084   # things like any other user + a link in the left menu
00085   if (user_can_be_super_user() && 
00086       $_COOKIE["session_su"] == "wannabe")
00087     { 
00088       return true;
00089     }
00090 
00091  return false;
00092 }
00093 
00094 function user_ismember($group_id,$type=0) 
00095 {
00096   return member_check(0, $group_id, $type);
00097 }
00098 
00099 # Check the user role in a project  - deprecated
00100 function user_check_ismember($user_id, $group_id, $type=0) 
00101 {
00102   return member_check($user_id, $group_id, $type);
00103 }
00104 
00105 # Get the groups to which a user belongs
00106 function user_groups($uid) 
00107 {
00108   $sql="SELECT * FROM user_group WHERE user_id='$uid'";
00109   $result = db_query($sql);
00110   $arr=array();
00111   while ($val = db_fetch_array($result))
00112     {
00113       array_push($arr,$val[group_id]);
00114     };   
00115   return $arr;
00116 }
00117 
00118 # Get the email of a user
00119 function user_get_email($uid)
00120 {
00121   $sql="SELECT * FROM user WHERE user_id='$uid'";
00122   $result = db_query($sql);
00123   $val = db_fetch_array($result);   
00124   return $val['email'];
00125 }
00126 
00127 # Check if a user belongs to a group - deprecated
00128 function user_is_group_member($uid, $gid)
00129 {
00130   return user_check_ismember($uid, $gid);
00131 }
00132 
00133 # Check if a user belongs to a group and is pending - deprecated
00134 # Return value: The whole row of user_group
00135 function user_is_group_pending($uid, $gid)
00136 {
00137   return member_check_is_pending($user_id, $group_id);
00138 }
00139 
00140 # Approve a pending user for a group - deprecated
00141 function user_approve_for_group($uid, $gid)
00142 {
00143   return member_approve($uid, $gid);
00144 }
00145 
00146 # Add or update a user to/in a group - deprecated
00147 function user_add_to_group($uid, $gid, $admin_flags, $bug_flags,$forum_flags, $project_flags, $patch_flags, $support_flags, $doc_flags) 
00148 {
00149 
00150   return member_add($uid, $gid);
00151 }
00152 
00153 # Remove a user from a group - deprecated
00154 function user_remove_from_group($uid, $gid) 
00155 {
00156   return member_remove($uid, $gid);
00157 }
00158 
00159 function user_getname($user_id=0, $getrealname=0)
00160 {
00161   global $G_USER,$USER_NAMES;
00162 
00163   if (!$user_id && $getrealname != 0)
00164     {
00165       $user_id = user_getid();
00166     }
00167 
00168   # use current user if one is not passed in
00169   if (!$user_id && $getrealname == 0)
00170     {
00171       return ($G_USER?$G_USER['user_name']:"NA");
00172     }
00173   else
00174     {
00175       if ($user_id == 0) {
00176         if ($getrealname == 0) { return ("NA"); }
00177         else { return ("anonymous"); }
00178       }
00179 
00180       # else must lookup name
00181       if ($USER_NAMES["user_$user_id"] &&  $getrealname == 0)
00182         {
00183           #user name was fetched previously
00184           return $USER_NAMES["user_$user_id"];
00185         }
00186       elseif ($USER_NAMES["realname_$user_id"] && $getrealname != 0)
00187         {
00188           #user name was fetched previously
00189           return $USER_NAMES["realname_$user_id"];
00190         }
00191       else
00192         {
00193           #fetch the user name and store it for future reference
00194           $result = db_query("SELECT user_id,user_name,realname FROM user WHERE user_id='$user_id'");
00195           if ($result && db_numrows($result) > 0)
00196             {
00197               if ($getrealname == 0)
00198                 {
00199                   #valid user - store and return
00200                   $USER_NAMES["user_$user_id"]=db_result($result,0,"user_name");
00201                   return $USER_NAMES["user_$user_id"];
00202                 }
00203               else
00204                 {
00205                   #valid user - store and return
00206                   $USER_NAMES["realname_$user_id"]=db_result($result,0,"realname");
00207                   return $USER_NAMES["realname_$user_id"];
00208 
00209                 }
00210             }
00211           else
00212             {
00213               if ($getrealname == 0)
00214                 {
00215                   #invalid user - store and return
00216                   $USER_NAMES["user_$user_id"]="<strong>Invalid User ID</strong>";
00217                   return $USER_NAMES["user_$user_id"];
00218                 }
00219               else
00220                 {
00221                   #invalid user - store and return
00222                   $USER_NAMES["realname_$user_id"]="<strong>Invalid User ID</strong>";
00223                   return $USER_NAMES["realname_$user_id"];
00224                 }
00225             }
00226         }
00227     }
00228 }
00229 
00230 
00231 function user_getid($username=0)
00232 {
00233   if (!$username) 
00234     {
00235       # No username, return info for the current user
00236       global $G_USER;
00237       return ($G_USER?$G_USER['user_id']:0);
00238     }
00239   else 
00240     {
00241       $result = db_query("SELECT user_id FROM user WHERE user_name='$username'");
00242       return db_result($result,0,"user_id");
00243     }
00244 }
00245 
00246 function user_exists($user_id) 
00247 {
00248   $result = user_get_result_set($user_id); 
00249   if ($result && db_numrows($result) > 0) {
00250     return 1;
00251   } else {
00252     return 0;
00253   }
00254 }
00255 
00256 #quick hack - this entire library needs a rewrite similar to groups library
00257 # yeupou@gnu.org Please no! rewrite both the library and this one, and 
00258 # please avoid object things without discussing about it on savannah-dev
00259 function user_getrealname($user_id=0, $rfc822_compliant=0)
00260 {
00261   $ret = user_getname($user_id, 1);
00262   # rfc822 requires some characters to be escaped. We usually care about this
00263   # compliance only in email headers.
00264   if ($rfc822_compliant && ereg("\.|\,|\@|\/|\\|\||\;|\!", $ret))
00265     { $ret = "\"$ret\""; }
00266   return $ret;
00267 }
00268 
00269 function user_getemail($user_id)
00270 {
00271   $result = user_get_result_set($user_id); 
00272   if ($result && db_numrows($result) > 0) 
00273     {
00274       return db_result($result,0,"email");
00275     } 
00276   else 
00277     {
00278       return false;
00279     }
00280 }
00281 
00282 function user_get_result_set($user_id) 
00283 {
00284   #create a common set of user result sets,
00285   #so it doesn't have to be fetched each time
00286   
00287   global $USER_RES;
00288   if (!$USER_RES["_".$user_id."_"]) 
00289     {
00290       $USER_RES["_".$user_id."_"]=db_query("SELECT * FROM user WHERE user_id='$user_id'");
00291       return $USER_RES["_".$user_id."_"];
00292     } 
00293   else
00294     {
00295       return $USER_RES["_".$user_id."_"];
00296     }
00297 }
00298 
00299 function user_get_result_set_from_unix($user_name) 
00300 {
00301   #create a common set of user result sets,
00302   #so it doesn't have to be fetched each time
00303   
00304   global $USER_RES;
00305   $res = db_query("SELECT * FROM user WHERE user_name='$user_name'");
00306   $user_id = db_result($res,0,'user_id');
00307   $USER_RES["_".$user_id."_"] = $res;
00308   return $USER_RES["_".$user_id."_"];
00309 }       
00310 
00311 function user_get_timezone() 
00312 {
00313   if (user_isloggedin()) 
00314     {
00315       $result=user_get_result_set(user_getid());
00316       return db_result($result,0,'timezone');
00317     } 
00318   else 
00319     {
00320       return '';
00321     }
00322 }
00323 
00324 function user_set_preference ($preference_name,$value) 
00325 {
00326   global $user_pref;
00327   if (user_isloggedin()) {
00328     $preference_name=strtolower(trim($preference_name));
00329     $result=db_query("UPDATE user_preferences SET preference_value='$value' ".
00330                      "WHERE user_id='".user_getid()."' AND preference_name='$preference_name'");
00331     if (db_affected_rows($result) < 1) {
00332       $result=db_query("INSERT INTO user_preferences (user_id,preference_name,preference_value) ".
00333                        "VALUES ('".user_getid()."','$preference_name','$value')");
00334     }
00335 
00336     # Update the Preference cache if it was setup by a user_get_preference
00337     if (isset($user_pref)) 
00338       { $user_pref[$preference_name] = $value; }
00339 
00340     return true;
00341 
00342   } else {
00343     return false;
00344   }
00345 }
00346 function user_unset_preference ($preference_name) 
00347 {
00348   global $user_pref;
00349   if (user_isloggedin()) {
00350     $preference_name=strtolower(trim($preference_name));
00351     $result=db_query("DELETE FROM user_preferences WHERE user_id='".user_getid()."' AND preference_name='$preference_name' LIMIT 1");
00352 
00353     # Update the Preference cache if it was setup by a user_get_preference
00354     if (isset($user_pref))
00355       { unset($user_pref[$preference_name]); }
00356 
00357     dbg("Remove pref $preference_name");
00358     return true;
00359   }
00360 }
00361 
00362 
00363 
00364 
00365 function user_get_preference ($preference_name, $user_id=false) 
00366 {
00367   global $user_pref;
00368 
00369   if ($user_id) 
00370     {
00371       # looking for information without being the user
00372       return db_result(db_query("SELECT preference_value FROM user_preferences ".
00373                                 "WHERE user_id='$user_id' AND preference_name='$preference_name'"),0,'preference_value');
00374 
00375     }
00376 
00377   if (user_isloggedin()) 
00378     {
00379       $preference_name=strtolower(trim($preference_name));
00380 
00381       # First check to see if we have already fetched the preferences
00382     if ($user_pref) {
00383       if ($user_pref["$preference_name"]) {
00384         #we have fetched prefs - return part of array
00385         return $user_pref["$preference_name"];
00386       } else {
00387         #we have fetched prefs, but this pref hasn't been set
00388         return false;
00389       }
00390     } else {
00391       #we haven't returned prefs - go to the db
00392       $result=db_query("SELECT preference_name,preference_value FROM user_preferences ".
00393                        "WHERE user_id='".user_getid()."'");
00394       if (db_numrows($result) < 1) {
00395         return false;
00396       } else {
00397         #iterate and put the results into an array
00398         for ($i=0; $i<db_numrows($result); $i++) {
00399           $user_pref[db_result($result,$i,'preference_name')]=db_result($result,$i,'preference_value');
00400         }
00401         if (isset($user_pref["$preference_name"])) {
00402           #we have fetched prefs - return part of array
00403           return $user_pref["$preference_name"];
00404         } else {
00405           #we have fetched prefs, but this pref hasn't been set
00406           return false;
00407         }
00408       }
00409     }
00410   } else {
00411     return false;
00412   }
00413 }
00414 
00415 # Find out if the user use the vote, very similar to 
00416 # trackers_votes_user_remains_count
00417 function user_use_votes ($user_id=false) 
00418 {
00419   if (!$user_id)
00420     { $user_id = user_getid(); }
00421 
00422   $sql = "SELECT vote_id FROM user_votes WHERE user_id='$user_id'";
00423   $result = db_query($sql);
00424   if (db_numrows($result) > 0) 
00425     {
00426       return true;
00427     }
00428   return false;
00429 }
00430 
00441 function user_guess ()
00442 {
00443   # $group_id should have been sanitized already
00444   global $group_id;
00445 
00446   # Not logged in?
00447   if (!user_isloggedin())
00448     {
00449       define(AUDIENCE, "anonymous");
00450       return true;
00451     }
00452 
00453   # On a non-group page?
00454   if (!$group_id)
00455     {
00456       define(AUDIENCE, "loggedin");      
00457       return true;
00458     }
00459   
00460   # On a group page without being member of the group?
00461   if (!member_check(0, $group_id))
00462     {
00463       define(AUDIENCE, "loggedin");      
00464       return true;
00465     }
00466 
00467   # Being member
00468   define(AUDIENCE, "members");      
00469   return true;      
00470 
00471 }
00472 
00473 ?>

Generated on Sun Feb 26 13:23:04 2006 for Savane PHP Frontend Developer Reference by  doxygen 1.4.4