| Class | Comment |
| In: |
app/models/comment.rb
|
| Parent: | ActiveRecord::Base |
Clase para los comentarios en cualquiera de los recursos disponibles: noticias, propuestas, videos…
Indica si un comentario ha sido denunciado
# File app/models/comment.rb, line 37
37: def abused?
38: status.eql?('denunciado')
39: end
Atributos necesarios para que Akismet determine si es spam
# File app/models/comment.rb, line 112
112: def akismet_attributes
113: {
114: :key => '41e2384dc1ef',
115: :blog => 'http://www.irekia.euskadi.net',
116: :user_ip => user_ip,
117: :user_agent => user_agent,
118: :comment_author => name,
119: :comment_author_email => email,
120: :comment_author_url => url,
121: :comment_content => body
122: }
123: end
Aprueba automáticamente el comentario, si es que lo ha hecho un usuario miembro del "staff". Se llama desde before_create
# File app/models/comment.rb, line 71
71: def approve_if_official_commenter
72: if self.user_id
73: if User.find(self.user_id).is_official_commenter?
74: self.status = 'aprobado'
75: end
76: end
77: end
Indica si un comentario está aprobado
# File app/models/comment.rb, line 17
17: def approved?
18: status.eql?('aprobado') || status.eql?('aprobado tras denuncia')
19: end
Devuelve el nombre del autor del comentario
# File app/models/comment.rb, line 139
139: def author_name
140: self.name || self.user.public_name
141: end
before_save :check_abuse_counter Marca el comentario como "denunciado", y por tanto desaparece de la web, cuando ha habido 5 denuncias o más.
Se llama desde before_save.
# File app/models/comment.rb, line 82
82: def check_abuse_counter
83: if self.abuse_counter >= 5 && !self.status.eql?('aprobado tras denuncia')
84: self.status = 'denunciado'
85: end
86: end
Envía el comentario a Akismet, quien determina si es spam o no
# File app/models/comment.rb, line 99
99: def check_for_spam
100: if RAILS_ENV.eql?("production") && Akismetor.spam?(akismet_attributes)
101: self.status = 'spam'
102: else
103: return true
104: end
105: end
Marca el comentario como no-spam, comunicándoselo a Akismet
# File app/models/comment.rb, line 132
132: def mark_as_ham!
133: update_attribute(:status, 'aprobado')
134: Akismetor.submit_ham(akismet_attributes)
135: end
Marca el comentario como spam, comunicándoselo a Akismet
# File app/models/comment.rb, line 126
126: def mark_as_spam!
127: update_attribute(:status, 'spam')
128: Akismetor.submit_spam(akismet_attributes)
129: end
# File app/models/comment.rb, line 57
57: def nullify_url_if_necessary
58: self.url = nil if self.url.eql?("http://")
59: end
Indica si un comentario está pendiente de aprobación
# File app/models/comment.rb, line 32
32: def pending?
33: status.eql?('pendiente')
34: end
Indica si un comentario está rechazado
# File app/models/comment.rb, line 22
22: def rejected?
23: status.eql?('rechazado')
24: end
Especifica el idioma del comentario a partir del idioma en el que navega el comentarista, para poder mostrar en cada idioma sólo los comentarios en ese mismo idioma.
# File app/models/comment.rb, line 64
64: def set_comment_locale
65: self.locale = I18n.locale
66: end
Copia el nombre y el email del comentarista de los datos de usuario si el comentarista esta logueado y dichos campos son nulos para este comentario. Se llama en before_validation. Ya no tenemos comentarios anónimos así que, en principio, <tt>comment.name</tt> debería ser igual a <tt>comment.user.name</tt>
(y lo mismo para email y url), pero como tenemos comentarios de Ubervu, tenemos un usuario común para todos ellos y ponemos nombre diferente en cada comentario
# File app/models/comment.rb, line 48
48: def set_user_name_and_email
49: if self.user
50: self.name = self.user.public_name if self.name.blank?
51: self.email = self.user.email if self.email.blank?
52: self.url = self.user.url if self.url.blank?
53: end
54: end
Indica si un comentario es spam
# File app/models/comment.rb, line 27
27: def spam?
28: status.eql?('spam')
29: end