/** * 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; }