/** * Retrieve the data on a user * * @param <type> $user_id The user_id * @param <type> $field The field you want (leave blank to return the full row) * @param <type> $query True to query the DB for the user if not already loaded */ public static function get_user($user_id, $field = false, $query = false) { if ($query) { // Load the user if not already done self::load_users(array($user_id)); } // If the user does not exist, use the anonymous uer if (!isset(self::$users[$user_id])) { $user_id = ANONYMOUS; } if (!self::$controller_helper) { self::$controller_helper = phpbb::$container->get('phpbb.titania.controller.helper'); } // Special things... if ($field[0] == '_') { switch ($field) { case '_profile': case '_username': case '_colour': case '_full': case '_no_profile': return get_username_string(substr($field, 1), $user_id, self::$users[$user_id]['username'], self::$users[$user_id]['user_colour'], false, phpbb::append_sid('memberlist', 'mode=viewprofile')); break; case '_unbuilt_titania_profile': return urlencode(self::$users[$user_id]['username_clean']); break; case '_titania_profile': return self::$controller_helper->route('phpbb.titania.author', array('author' => self::get_user($user_id, '_unbuilt_titania_profile'))); break; case '_titania': return '<a href="' . self::get_user($user_id, '_titania_profile') . (self::$users[$user_id]['user_colour'] ? '" style="color: #' . self::$users[$user_id]['user_colour'] . ';" class="username-coloured">' : '">') . get_username_string('no_profile', $user_id, self::$users[$user_id]['username'], self::$users[$user_id]['user_colour']) . '</a>'; break; case '_u_pm': return $user_id != ANONYMOUS && phpbb::$config['allow_privmsg'] && phpbb::$auth->acl_get('u_sendpm') && (self::$users[$user_id]['user_allow_pm'] || phpbb::$auth->acl_gets('a_', 'm_') || phpbb::$auth->acl_getf_global('m_')) ? phpbb::append_sid('ucp', "i=pm&mode=compose&u={$user_id}") : ''; break; case '_u_email': return !empty(self::$users[$user_id]['user_allow_viewemail']) || phpbb::$auth->acl_get('a_email') ? phpbb::$config['board_email_form'] && phpbb::$config['email_enable'] ? phpbb::append_sid('memberlist', "mode=email&u={$user_id}") : (phpbb::$config['board_hide_emails'] && !phpbb::$auth->acl_get('a_email') ? '' : 'mailto:' . self::$users[$user_id]['user_email']) : ''; break; case '_jabber': return self::$users[$user_id]['user_jabber'] && phpbb::$auth->acl_get('u_sendim') ? phpbb::append_sid('memberlist', "mode=contact&action=jabber&u={$user_id}") : ''; break; case '_avatar': // Get avatar (need hacks for this) $avatar = phpbb::$user->optionget('viewavatars') ? get_user_avatar(self::$users[$user_id]['user_avatar'], self::$users[$user_id]['user_avatar_type'], self::$users[$user_id]['user_avatar_width'], self::$users[$user_id]['user_avatar_height']) : ''; return $avatar; break; case '_signature': if (self::$users[$user_id]['user_sig'] && phpbb::$config['allow_sig'] && phpbb::$user->optionget('viewsigs')) { return generate_text_for_display(self::$users[$user_id]['user_sig'], self::$users[$user_id]['user_sig_bbcode_uid'], self::$users[$user_id]['user_sig_bbcode_bitfield'], 7); } return ''; break; } } if ($field) { return self::$users[$user_id][$field]; } return self::$users[$user_id]; }