module Messaging

this file is part of manqod manqod is distributed under the CDDL licence the owner of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)

Public Instance Methods

delete_message(message_id,nick) click to toggle source
# File lib/DrbDB/Messaging.rb, line 70
def delete_message(message_id,nick)
        admin.query("update messages set `state`='d' where id='#{message_id}'")
        send_check_messages(nick)
end
messages(nick) click to toggle source
# File lib/DrbDB/Messaging.rb, line 66
def messages(nick)
        admin.rows("select * from messages where recipient='#{nick}' and `state`!='d'")
end
send_check_messages(nick) click to toggle source
# File lib/DrbDB/Messaging.rb, line 17
def send_check_messages(nick)
                main_server.connected_clients.each_key{|client| 
                        begin
                                c=String.new(client.to_s).split(/\@/)[0]
                                client.rpc("Messaging.instance.check_messages") if c == nick
                        rescue =>err
                                eerror(err)
                        end
                }
end
send_message(nick,subject,body,sender=nil,sendmail=true) click to toggle source
# File lib/DrbDB/Messaging.rb, line 6
def send_message(nick,subject,body,sender=nil,sendmail=true)
        nick=[nick] unless nick.class == Array
        Thread.new{
                nick.each{|n|
                        admin.query("insert into messages (sender,recipient,subject,body,state,`date`) values('#{sender || "system"}','#{n}','#{admin.escape_string(subject)}','#{admin.escape_string(body)}','n',now())")
                        send_check_messages(n)
                }
        }
        sendmail_to_nick(nick,subject,body) if sendmail
end
sendmail_to_nick(nick,subject,body) click to toggle source
# File lib/DrbDB/Messaging.rb, line 28
def sendmail_to_nick(nick,subject,body)
        Thread.new{
                nick=[nick] unless nick.class == Array
                sent=0
                @users.each{|uid|
                        user=@users.get_user(uid)
                        nick.each{|n|
                                if n.to_s == user["nick"].to_s && user["email"].to_s.length>3
                                        begin
                                                msg="From: manqod@#{Socket.gethostbyname(Socket.gethostname).first}\nTo: #{user['email']}\nContent-Type: text/plain; charset=UTF-8\nSubject: #{subject}\n#{body}"
                                                Net::SMTP.start('localhost'){ |smtp|
                                                        smtp.send_message(msg, "manqod_server", user["email"])
                                                        einfo("mail to #{user['email']} sent: #{subject}")
                                                }
                                                sent+=1
                                        rescue => err
                                                eerror("can't send error report via SMTP")
                                        end
                                end
                        }
                }
                einfo("sent total #{sent} emails to #{nick.inspect}")
        }
end
set_message_read(message_id,nick) click to toggle source
# File lib/DrbDB/Messaging.rb, line 61
def set_message_read(message_id,nick)
        admin.query("update messages set `state`='c' where id='#{message_id}'")
        send_check_messages(nick)
end
unread_messages(nick) click to toggle source
# File lib/DrbDB/Messaging.rb, line 53
def unread_messages(nick)
        um=0
        if r=admin.qrow("select count(id) as cnt from messages where `state`='n' and recipient='#{nick}'")
                um=r["cnt"]
        end
        um
end