Class: MaxEmojisValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
lib/validators/max_emojis_validator.rb

Instance Method Summary collapse

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/validators/max_emojis_validator.rb', line 4

def validate_each(record, attribute, value)
  unescaped_title = PrettyText.unescape_emoji(Emoji.unicode_unescape(CGI.escapeHTML(value)))
  if unescaped_title.present? &&
       unescaped_title.scan(/<img.+?class\s*=\s*'(emoji|emoji emoji-custom)'/).size >
         SiteSetting.max_emojis_in_title
    record.errors.add(
      attribute,
      SiteSetting.max_emojis_in_title > 0 ? :max_emojis : :emojis_disabled,
      max_emojis_count: SiteSetting.max_emojis_in_title,
    )
  end
end