Module: Messaging
- Included in:
- DrbDb
- Defined in:
- lib/DrbDB/Messaging.rb
Overview
this file is part of manqod manqod is distributed under the CDDL licence the owner of manqod is Dobai-Pataky Balint([email protected])
Instance Method Summary collapse
- #delete_message(message_id, nick) ⇒ Object
- #messages(nick) ⇒ Object
- #send_check_messages(nick) ⇒ Object
- #send_message(nick, subject, body, sender = nil, sendmail = true) ⇒ Object
- #sendmail_to_nick(nick, subject, body) ⇒ Object
- #set_message_read(message_id, nick) ⇒ Object
- #unread_messages(nick) ⇒ Object
Instance Method Details
#delete_message(message_id, nick) ⇒ Object
70 71 72 73 |
# File 'lib/DrbDB/Messaging.rb', line 70 def (,nick) admin.query("update messages set `state`='d' where id='#{}'") (nick) end |
#messages(nick) ⇒ Object
66 67 68 |
# File 'lib/DrbDB/Messaging.rb', line 66 def (nick) admin.rows("select * from messages where recipient='#{nick}' and `state`!='d'") end |
#send_check_messages(nick) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/DrbDB/Messaging.rb', line 17 def (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) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/DrbDB/Messaging.rb', line 6 def (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())") (n) } } sendmail_to_nick(nick,subject,body) if sendmail end |
#sendmail_to_nick(nick, subject, body) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# 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.(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) ⇒ Object
61 62 63 64 |
# File 'lib/DrbDB/Messaging.rb', line 61 def (,nick) admin.query("update messages set `state`='c' where id='#{}'") (nick) end |
#unread_messages(nick) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/DrbDB/Messaging.rb', line 53 def (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 |