Class: UserCardSerializer
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#include_status?, included, #status
#avatar_template, #categories_with_notification_level, #category_user_notification_levels, #include_name?, #name, #user, #user_is_current_user
expire_cache_fragment!, fragment_cache
#include!
Constructor Details
Returns a new instance of UserCardSerializer.
8
9
10
11
|
# File 'app/serializers/user_card_serializer.rb', line 8
def initialize(object, options = {})
super
options[:include_status] = true
end
|
Instance Attribute Details
#topic_post_count ⇒ Object
Returns the value of attribute topic_post_count.
6
7
8
|
# File 'app/serializers/user_card_serializer.rb', line 6
def topic_post_count
@topic_post_count
end
|
Class Method Details
.private_attributes(*attrs) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'app/serializers/user_card_serializer.rb', line 22
def self.private_attributes(*attrs)
attributes(*attrs)
attrs.each do |attr|
define_method "include_#{attr}?" do
if defined?(super)
super() && can_edit
else
can_edit
end
end
end
end
|
.staff_attributes(*attrs) ⇒ Object
13
14
15
16
17
18
19
20
|
# File 'app/serializers/user_card_serializer.rb', line 13
def self.staff_attributes(*attrs)
attributes(*attrs)
attrs.each do |attr|
define_method "include_#{attr}?" do
scope.is_staff?
end
end
end
|
.untrusted_attributes(*attrs) ⇒ Object
attributes that are hidden for TL0 users when seen by anonymous
36
37
38
39
40
41
42
43
44
45
|
# File 'app/serializers/user_card_serializer.rb', line 36
def self.untrusted_attributes(*attrs)
attributes(*attrs)
attrs.each do |attr|
method_name = "include_#{attr}?"
define_method(method_name) do
return false if scope.restrict_user_fields?(object)
public_send(attr).present?
end
end
end
|
Instance Method Details
#bio_excerpt ⇒ Object
102
103
104
|
# File 'app/serializers/user_card_serializer.rb', line 102
def bio_excerpt
object.user_profile.bio_excerpt(350, keep_newlines: true, keep_emoji_images: true)
end
|
#can_ignore_user ⇒ Object
139
140
141
|
# File 'app/serializers/user_card_serializer.rb', line 139
def can_ignore_user
scope.can_ignore_user?(object)
end
|
#can_mute_user ⇒ Object
135
136
137
|
# File 'app/serializers/user_card_serializer.rb', line 135
def can_mute_user
scope.can_mute_user?(object)
end
|
#can_send_private_message_to_user ⇒ Object
149
150
151
|
# File 'app/serializers/user_card_serializer.rb', line 149
def can_send_private_message_to_user
scope.can_send_private_message?(object)
end
|
#can_send_private_messages ⇒ Object
Needed because ‘send_private_message_to_user’ will always return false when the current user is being serialized
145
146
147
|
# File 'app/serializers/user_card_serializer.rb', line 145
def can_send_private_messages
scope.can_send_private_messages?
end
|
#card_background_upload_url ⇒ Object
228
229
230
|
# File 'app/serializers/user_card_serializer.rb', line 228
def card_background_upload_url
object.card_background_upload&.url
end
|
#custom_fields ⇒ Object
170
171
172
173
174
175
176
177
178
179
180
181
182
|
# File 'app/serializers/user_card_serializer.rb', line 170
def custom_fields
fields = custom_field_keys
if fields.present?
if object.custom_fields_preloaded?
{}.tap { |h| fields.each { |f| h[f] = object.custom_fields[f] } }
else
User.custom_fields_for_ids([object.id], fields)[object.id] || {}
end
else
{}
end
end
|
#featured_topic ⇒ Object
216
217
218
|
# File 'app/serializers/user_card_serializer.rb', line 216
def featured_topic
BasicTopicSerializer.new(object.user_profile.featured_topic, scope: scope, root: false).as_json
end
|
#flair_bg_color ⇒ Object
208
209
210
|
# File 'app/serializers/user_card_serializer.rb', line 208
def flair_bg_color
object.flair_group&.flair_bg_color
end
|
#flair_color ⇒ Object
212
213
214
|
# File 'app/serializers/user_card_serializer.rb', line 212
def flair_color
object.flair_group&.flair_color
end
|
#flair_name ⇒ Object
200
201
202
|
# File 'app/serializers/user_card_serializer.rb', line 200
def flair_name
object.flair_group&.name
end
|
#flair_url ⇒ Object
204
205
206
|
# File 'app/serializers/user_card_serializer.rb', line 204
def flair_url
object.flair_group&.flair_url
end
|
#ignored ⇒ Object
125
126
127
128
|
# File 'app/serializers/user_card_serializer.rb', line 125
def ignored
scope_ignored_user_ids = scope.user&.ignored_user_ids || []
scope_ignored_user_ids.include?(object.id)
end
|
#include_email? ⇒ Boolean
Also known as:
include_secondary_emails?, include_unconfirmed_emails?
95
96
97
|
# File 'app/serializers/user_card_serializer.rb', line 95
def include_email?
(object.id && object.id == scope.user.try(:id)) || (scope.is_staff? && object.staged?)
end
|
#include_pending_posts_count? ⇒ Boolean
91
92
93
|
# File 'app/serializers/user_card_serializer.rb', line 91
def include_pending_posts_count?
scope.is_me?(object) || scope.is_staff?
end
|
#include_suspend_reason? ⇒ Boolean
153
154
155
|
# File 'app/serializers/user_card_serializer.rb', line 153
def include_suspend_reason?
scope.can_see_suspension_reason?(object) && object.suspended?
end
|
#include_suspended_till? ⇒ Boolean
157
158
159
|
# File 'app/serializers/user_card_serializer.rb', line 157
def include_suspended_till?
object.suspended?
end
|
#include_timezone? ⇒ Boolean
220
221
222
|
# File 'app/serializers/user_card_serializer.rb', line 220
def include_timezone?
SiteSetting.display_local_time_in_user_card?
end
|
#include_topic_post_count? ⇒ Boolean
184
185
186
|
# File 'app/serializers/user_card_serializer.rb', line 184
def include_topic_post_count?
topic_post_count.present?
end
|
#include_user_fields? ⇒ Boolean
166
167
168
|
# File 'app/serializers/user_card_serializer.rb', line 166
def include_user_fields?
user_fields.present?
end
|
#location ⇒ Object
106
107
108
|
# File 'app/serializers/user_card_serializer.rb', line 106
def location
object.user_profile.location
end
|
#muted ⇒ Object
130
131
132
133
|
# File 'app/serializers/user_card_serializer.rb', line 130
def muted
scope_muted_user_ids = scope.user&.muted_user_ids || []
scope_muted_user_ids.include?(object.id)
end
|
#primary_group_name ⇒ Object
196
197
198
|
# File 'app/serializers/user_card_serializer.rb', line 196
def primary_group_name
object.primary_group&.name
end
|
#recent_time_read ⇒ Object
192
193
194
|
# File 'app/serializers/user_card_serializer.rb', line 192
def recent_time_read
time = object.recent_time_read
end
|
#time_read ⇒ Object
188
189
190
|
# File 'app/serializers/user_card_serializer.rb', line 188
def time_read
object.user_stat&.time_read
end
|
#timezone ⇒ Object
224
225
226
|
# File 'app/serializers/user_card_serializer.rb', line 224
def timezone
object.user_option.timezone
end
|
#user_fields ⇒ Object
161
162
163
164
|
# File 'app/serializers/user_card_serializer.rb', line 161
def user_fields
allowed_keys = scope.allowed_user_field_ids(object)
object.user_fields(allowed_keys)
end
|
#website ⇒ Object
110
111
112
|
# File 'app/serializers/user_card_serializer.rb', line 110
def website
object.user_profile.website
end
|
#website_name ⇒ Object
114
115
116
117
118
119
120
121
122
123
|
# File 'app/serializers/user_card_serializer.rb', line 114
def website_name
uri =
begin
URI(website.to_s)
rescue URI::Error
end
return if uri.nil? || uri.host.nil?
uri.host.sub(/\Awww\./, "") + uri.path
end
|