## Reports module

Control Module - Reports - Adds a way to report players and store report messages.

### Usage

        -- import the module from the control modules
        local Reports = require 'modules.control.reports'

        -- This will place a report on "MrBiter" (must be a valid player) the report will have been made
        -- by "Cooldude2606" (must be the player name) with the reason 'Liking biters too much' this can be
        -- seen by using Reports.get_report.
        Reports.report_player('MrBiter','Cooldude2606','Liking biters too much') -- true

        -- The other get methods can be used to get all the reports on a player or to test if a player is reported.
        Reports.get_report('MrBiter','Cooldude2606') -- 'Liking biters too much'

        -- This will remove the warning on 'MrBiter' (must be a valid player) which was made by 'Cooldude2606'.
        Reports.remove_report('MrBiter','Cooldude2606') -- true

        -- This will remove all the report that have been made against 'MrBiter'. Note that the remove event will
        -- be triggered once per report issused.
        Reports.remove_all('MrBiter') -- true

### Events

on_player_reported | When a player is reported
on_report_removed | When a report is removed from a player

### Dependencies

utils.game | Allows getting player from any value
utils.global | Allows storing of data in global table

### Get functions

get_reports (player) | Gets a list of all reports that a player has against them
get_report (player, by_player_name) | Gets a single report against a player given the name of the player who made the report
is_reported (player[, by_player_name]) | Checks if a player is reported, option to get if reported by a certain player
count_reports (player[, custom_count]) | Counts the number of reports that a player has aganist them

### Set functions

report_player (player, by_player_name[, reason='Non given.']) | Adds a report to a player, each player can only report another player once
remove_report (player, reported_by_name) | Removes a report from a player
remove_all (player) | Removes all reports from a player

### Events

# on_player_reported

  When a player is reported

  Event Parameters:
  - player_index : (number) the player index of the player who got reported
  - by_player_name : (string) the name of the player who made the report
  - reason : (string) the reason given for the report
# on_report_removed

  When a report is removed from a player

  Event Parameters:
  - player_index : (number) the player index of the player who has the report removed
  - reported_by_name : (string) the name of the player who made the removed report
  - removed_by_name : (string) the name of the player who removed the report

### Dependencies

# utils.game

  Allows getting player from any value

# utils.global

  Allows storing of data in global table

### Get functions

# get_reports (player)

  Gets a list of all reports that a player has against them

  Parameters:
  - player : (LuaPlayer) the player to get the report for
  Returns:
  - (table) a list of all reports, key is by player name, value is reason
# get_report (player, by_player_name)

  Gets a single report against a player given the name of the player who made the report

  Parameters:
  - player : (LuaPlayer) the player to get the report for
  - by_player_name : (string) the name of the player who made the report
  Returns:
  - (string or nil) string is the reason that the player was reported, if the player is not reported
# is_reported (player[, by_player_name])

  Checks if a player is reported, option to get if reported by a certain player

  Parameters:
  - player : (LuaPlayer) the player to check if reported
  - by_player_name : (string) when given will check if reported by this player (optional)
  Returns:
  - (boolean) if the player has been reported
# count_reports (player[, custom_count])

  Counts the number of reports that a player has aganist them

  Parameters:
  - player : (LuaPlayer) the player to count the reports for
  - custom_count : (function) when given this function will be used to count the reports (optional)
  Returns:
  - (number) the number of reports that the user has

### Set functions

# report_player (player, by_player_name[, reason='Non given.'])

  Adds a report to a player, each player can only report another player once

  Parameters:
  - player : (LuaPlayer) the player to add the report to
  - by_player_name : (string) the name of the player that is making the report
  - reason : (string) the reason that the player is being reported (default: 'Non given.')
  Returns:
  - (boolean) whether the report was added successfully
# remove_report (player, reported_by_name)

  Removes a report from a player

  Parameters:
  - player : (LuaPlayer) the player to remove the report from
  - reported_by_name : (string) the name of the player that made the report
  Returns:
  - (boolean) whether the report was removed successfully
# remove_all (player)

  Removes all reports from a player

  Parameters:
  - player : (LuaPlayer) the player to remove the reports from
  Returns:
  - (boolean) whether the reports were removed successfully