def ping(new_user_status, new_user_status_msg)
sql = "SELECT status FROM {ajaxim_status} WHERE uid = '"+ @user["uid"] +"'"
res = @db.query(sql)
if res.num_rows > 0
ust = res.fetch_hash
user_status = ust["status"]
bl = buddy_get_buddies(@user["uid"])
user_bl = {"Buddies" => Array.new}
bl.each_pair do |buddy_uid, buddy|
user_bl["Buddies"].push(buddy["name"])
end
if user_status.to_i != 0
sql = "UPDATE {ajaxim_status}
SET status='#{new_user_status}',
last_ping='#{Time.now.to_i.to_s}',
last_status='#{new_user_status}',
last_stmsg='#{new_user_status_msg}'
WHERE uid = '#{@user["uid"]}'"
res = @db.query(sql)
if user_status.to_i != new_user_status.to_i
user_event(user_bl, 'status,'+new_user_status.to_s);
end
sql = "SELECT id, message, type, sender, recipient, room
FROM {ajaxim_messages}
WHERE recipient = '" + @user["uid"] + "'
ORDER BY id ASC"
res = @db.query(sql)
to_delete = Array.new
output = {
'numMessages' => 0,
'numEvents' => 0,
'messages' => Array.new,
'events' => Array.new}
res.each_hash do |message|
sender = User.new(message["sender"].to_i, @db)
case message["type"]
when 'msg' :
output["messages"].push({
'message' => message["message"],
'sender' => sender["name"],
'recipient' => message["room"].length==0 ? @user["name"] : message["room"]})
output["numMessages"]+=1
when 'event' :
output["events"].push({
'event' => message["message"],
'sender' => sender["name"],
'group' => 'Buddies',
'recipient' => @user["name"]})
output["numEvents"]+=1
end
to_delete.push(message["id"])
end
if to_delete.length > 0
sql = "DELETE FROM {ajaxim_messages} WHERE id IN (" + to_delete.join(",") + ")"
@db.query(sql)
end
output.to_json
end
else
sql = "INSERT INTO {ajaxim_status} SET uid = '" + @user["uid"] + "', status = '0', last_ping = '" + Time.now.to_i.to_s + "'"
@db.query(sql)
'not_logged_in';
end
end