module Notifiable

OpenIrekia v4.0.0

Copyright 2009-2013 eFaber, S.L. Copyright 2009-2013 Ejie, S.A. Copyrigth 2009-2013 Dirección de Gobierno Abierto y Comunicación en Internet;

Gobernu Irekirako eta Interneteko Komunikaziorako Zuzendaritza; Lehendakaritza.
Gobierno Vasco – Eusko Jaurlaritza

Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto sean aprobadas por la Comisión Europea– versiones posteriores de la EUPL (la Licencia); Solo podrá usarse esta obra si se respeta la Licencia. Puede obtenerse una copia de la Licencia en: ec.europa.eu/idabc/eupl Salvo cuando lo exija la legislación aplicable o se acuerde por escrito, el programa distribuido con arreglo a la Licencia se distribuye TAL CUAL, SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas. Véase la Licencia en el idioma concreto que rige los permisos y limitaciones que establece la Licencia

http://open.irekia.net, openirekia@efaber.net

Public Class Methods

included(base) click to toggle source
# File app/models/notifiable.rb, line 24
def self.included(base)
  base.after_save :update_notifications
end

Public Instance Methods

get_item() click to toggle source
# File app/models/notifiable.rb, line 45
def get_item
  case self.class.name
  when "Comment"
    item = self.get_commentable 
    item = nil unless (item.class.base_class.eql?(Contribution) && item.approved? && item.published?)
  when "Argument"
    item = self.argumentable
    item = nil unless item.approved? && item.published?
  when "Vote"
    item = self.votable
    item = nil unless item.approved? && item.published?
  end
  return item
end
update_notifications() click to toggle source
# File app/models/notifiable.rb, line 28
def update_notifications
  item = get_item
  if self.approved? && item
    users_to_notify = [item.user_id]
    users_to_notify.each do |user_id|
      params = {:notifiable_id => item.id, :notifiable_type => item.class.base_class.to_s, :action => self.class.to_s.downcase, :user_id => user_id, :read_at => nil}
      if Notification.exists?(params)
        notification = Notification.find(:first, :conditions => params)
        notification.counter = notification.counter + 1
        notification.save!
      else
        Notification.create(params.merge({:counter => 1}))
      end
    end
  end
end