Пример #1
0
 /**
  * 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&amp;mode=compose&amp;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&amp;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&amp;action=jabber&amp;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];
 }