# File lib/ajaxim.rb, line 237
  def ping(new_user_status, new_user_status_msg)
    # get last user status
    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"]
      # get user's buddylist
      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
      #
      # set new status, status msg and last ping
      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
        # initialization of the output array
        output = {
            'numMessages' => 0,
            'numEvents' => 0,
            'messages' => Array.new,
            'events' => Array.new}
        #
        res.each_hash do |message|
          sender = User.new(message["sender"].to_i, @db)
          # verification of the message type and pushing them into output array
          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', # can be implemented multigroup buddylist
                'recipient' => @user["name"]})
              output["numEvents"]+=1
          end
          to_delete.push(message["id"])
        end
        # delete all "used" messages and events
        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