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 74 def abused? status.eql?('denunciado') end
Indica si un comentario está aprobado
# File app/models/comment.rb, line 54 def approved? status.eql?('aprobado') || status.eql?('aprobado tras denuncia') end
# File app/models/comment.rb, line 149 def get_commentable # HQ begin item = self.commentable rescue ActiveRecord::SubclassNotFound => err if err.to_s.match(/The single-table inheritance mechanism failed to locate the subclass: 'Question'/) logger.info "Hiding comment on question #{self.commentable_id}" end item = nil end return item end
Marca el comentario como no-spam, comunicándoselo a Akismet
# File app/models/comment.rb, line 129 def mark_as_ham! update_attribute(:status, 'aprobado') Akismetor.submit_ham(akismet_attributes) end
Marca el comentario como spam, comunicándoselo a Akismet
# File app/models/comment.rb, line 123 def mark_as_spam! update_attribute(:status, 'spam') Akismetor.submit_spam(akismet_attributes) end
Indica si un comentario está pendiente de aprobación
# File app/models/comment.rb, line 69 def pending? status.eql?('pendiente') end
# File app/models/comment.rb, line 145 def published_at created_at end
Indica si un comentario está rechazado
# File app/models/comment.rb, line 59 def rejected? status.eql?('rechazado') end
Indica si el comentario es una respuesta oficial desde la aplicación RRCC
# File app/models/comment.rb, line 79 def rrcc_response? self.rrcc_answered_at.present? end
Indica si un comentario es spam
# File app/models/comment.rb, line 64 def spam? status.eql?('spam') end
Indica si ha sido redirigido a Zuzenean
# File app/models/comment.rb, line 141 def zforwarded? !zforwarded_at.nil? 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 191 def approve_if_official_commenter self.status = 'aprobado' if self.is_official? end
# File app/models/comment.rb, line 216 def assign_is_official self.is_official = self.user_id && self.user.is_official_commenter? return true end
# File app/models/comment.rb, line 212 def assign_parents_area self.tag_list = self.commentable.area_tags if self.commentable.respond_to?(:area_tags) end
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 197 def check_abuse_counter if self.abuse_counter >= 5 && !self.status.eql?('aprobado tras denuncia') self.status = 'denunciado' end end
Envía el comentario a Akismet, quien determina si es spam o no
# File app/models/comment.rb, line 204 def check_for_spam if RAILS_ENV.eql?("production") && Akismetor.spam?(akismet_attributes) self.status = 'spam' else return true end end
El valor por defecto del campo “url” en el formuario es “http://”. No es una URL válida, por lo que si se deja asi se vacía. Se llama before_validation
# File app/models/comment.rb, line 179 def nullify_url_if_necessary self.url = nil if self.url.eql?("http://") 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 185 def set_comment_locale self.locale = I18n.locale.to_s end
Copia el nombre, el email y la url del comentarista de los datos de usuario. Se llama en before_validation. Hay dos casos especiales:
El comentario se ha importado automáticamente con Ubervu: en este caso el email es común para todos (sn@irekia.euskadi.net) y el nombre es el nick de twitter
El comentarista se ha loggeado con las credenciales de Twitter o Facebook, y por lo tanto no tenemos su email
# File app/models/comment.rb, line 169 def set_user_name_and_email if user self.name = self.user.public_name if self.name.blank? self.email = self.user.email self.url = self.user.url if self.url.blank? end end