예제 #1
0
 /**
  * Load a user object with data for the given user_id
  *
  * @param string $user_id_or_login_name The login name/user_id of the user whose information needs to be loaded
  *
  * @param string $key_column "user_id" if $user_id_or_login_name is a user id, "login_name" if it's a login name, "email" if it's an e-mail address, or NULL to guess if it's a user id or login name.
  */
 public function load($user_id_or_login_name, $key_column = NULL, $check_deleted = FALSE)
 {
     Logger::log("Enter: function User::load");
     if (!$user_id_or_login_name) {
         throw new PAException(USER_INVALID_LOGIN_NAME, "Invalid user id/login name/email address '{$user_id_or_login_name}'");
     }
     if (!$key_column) {
         $key_column = is_numeric($user_id_or_login_name) ? "user_id" : "login_name";
     }
     if (!in_array($key_column, array("user_id", "login_name", "email"))) {
         throw new PAException(VALIDATION_INCORRECT_TYPE, "Invalid user id type '{$key_column}'; must be either 'user_id', 'login_name' or 'email'");
     }
     $cache_key = "user:{$key_column}:{$user_id_or_login_name}";
     $row = Cache::getValue($cache_key);
     if ($row === NULL) {
         $sql = "SELECT * FROM {users} WHERE {$key_column} = ? AND is_active <> ? LIMIT 1";
         $data = array($user_id_or_login_name, DELETED);
         $res = Dal::query($sql, $data);
         if (!$res->numRows()) {
             if ($check_deleted) {
                 // check to see if the user has been deleted - for key=user_id
                 if (Dal::query_first("SELECT COUNT(*) FROM users WHERE {$key_column} = ? AND is_active=0", array($user_id_or_login_name))) {
                     throw new PAException(USER_ALREADY_DELETED, "User {$user_id_or_login_name} has been deleted");
                 }
             }
             Logger::log(" Throwing exception USER_NOT_FOUND | Message: User does not exist.", LOGGER_ERROR);
             $print_str = ucfirst(str_replace('_', ' ', $key_column));
             throw new PAException(USER_NOT_FOUND, "{$print_str} \"{$user_id_or_login_name}\" does not exist");
         }
         $row = $res->fetchRow(DB_FETCHMODE_OBJECT);
         if (!empty($row)) {
             Cache::setValue($cache_key, $row);
         }
     }
     if (!empty($row)) {
         $this->user_id = (int) $row->user_id;
         $this->core_id = (int) $row->core_id;
         $this->login_name = $row->login_name;
         $this->password = $row->password;
         $this->first_name = $row->first_name;
         $this->last_name = $row->last_name;
         $this->email = $row->email;
         $this->is_active = $row->is_active;
         $this->is_new = FALSE;
         $this->created = $row->created;
         $this->changed = $row->changed;
         $this->last_login = $row->last_login;
         $this->picture = $row->picture;
         $this->picture_dimensions = $this->image_dimensions_to_array($row->picture_width, $row->picture_height);
         $this->avatar = $row->avatar;
         $this->avatar_dimensions = $this->image_dimensions_to_array($row->avatar_width, $row->avatar_height);
         $this->avatar_small = $row->avatar_small;
         $this->avatar_small_dimensions = $this->image_dimensions_to_array($row->avatar_small_width, $row->avatar_small_height);
         $this->role = $this->load_user_roles();
     }
     $dn = new UserDisplayName($this);
     $this->display_name = $dn->get();
     Logger::log("Exit: function User::load");
 }
 private function getUserProfile($user, $prefix = null)
 {
     if (!isset($user->display_name)) {
         $u_dname = new UserDisplayName($user);
         $user->display_name = $u_dname->get();
     }
     $user_info = array();
     $user_info["%{$prefix}.user_id%"] = $user->user_id;
     $user_info["%{$prefix}.first_name%"] = $user->first_name;
     $user_info["%{$prefix}.last_name%"] = $user->last_name;
     $user_info["%{$prefix}.login_name%"] = $user->login_name;
     $user_info["%{$prefix}.display_name%"] = $user->display_name;
     $user_info["%{$prefix}.profile_url%"] = UrlHelper::url_for(PA_ROUTE_USER_PUBLIC, array($user->user_id));
     $user_info["%{$prefix}.profile_link%"] = UrlHelper::link_to(PA_ROUTE_USER_PUBLIC, $user->display_name, null, array($user->user_id));
     $user_info["%{$prefix}.image%"] = uihelper_resize_mk_user_img($user->picture, 80, 80, 'alt="' . $user->display_name . '" align="left" style="padding: 0px 12px 12px 0px;"');
     $user_info["%{$prefix}.email_address%"] = $user->email;
     $user_info["%{$prefix}.messages_link%"] = UrlHelper::link_to(PA_ROUTE_MYMESSAGE, __("My messages"));
     return $user_info;
 }