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