mc-cms-namelessmc/core/classes/Core/Log.php

236 lines
7.6 KiB
PHP
Raw Permalink Normal View History

Created Log Class Changes to be committed: new file: core/classes/Log.php modified: custom/languages/EnglishUK/log.php modified: modules/Core/pages/admin/api.php modified: modules/Core/pages/admin/auth.php modified: modules/Core/pages/admin/groups.php modified: modules/Core/pages/admin/images.php modified: modules/Core/pages/admin/minecraft.php modified: modules/Core/pages/admin/modules.php modified: modules/Core/pages/admin/pages.php modified: modules/Core/pages/admin/registration.php modified: modules/Core/pages/admin/styles.php modified: modules/Core/pages/admin/users.php modified: modules/Core/pages/admin/widgets.php modified: modules/Core/pages/login.php modified: modules/Core/pages/logout.php modified: modules/Core/pages/mod/ip_lookup.php modified: modules/Core/pages/mod/punishments.php modified: modules/Core/pages/mod/reports.php modified: modules/Core/pages/register.php modified: modules/Core/pages/user/acknowledge.php modified: modules/Core/pages/user/settings.php modified: modules/Forum/pages/forum/delete.php modified: modules/Forum/pages/forum/delete_post.php modified: modules/Forum/pages/forum/edit.php modified: modules/Forum/pages/forum/lock.php modified: modules/Forum/pages/forum/merge.php modified: modules/Forum/pages/forum/move.php modified: modules/Forum/pages/forum/new_topic.php modified: modules/Forum/pages/forum/reactions.php modified: modules/Forum/pages/forum/report.php modified: modules/Forum/pages/forum/search.php modified: modules/Forum/pages/forum/stick.php As per request of @partydragen https://github.com/NamelessMC/Nameless/pull/1003#issuecomment-381251017
2018-04-14 01:13:47 -05:00
<?php
/**
* Log handling class.
2020-12-13 19:38:04 +01:00
*
* @package NamelessMC\Core
* @author Timothy Gibbons
* @version 2.0.0-pr13
* @license MIT
Created Log Class Changes to be committed: new file: core/classes/Log.php modified: custom/languages/EnglishUK/log.php modified: modules/Core/pages/admin/api.php modified: modules/Core/pages/admin/auth.php modified: modules/Core/pages/admin/groups.php modified: modules/Core/pages/admin/images.php modified: modules/Core/pages/admin/minecraft.php modified: modules/Core/pages/admin/modules.php modified: modules/Core/pages/admin/pages.php modified: modules/Core/pages/admin/registration.php modified: modules/Core/pages/admin/styles.php modified: modules/Core/pages/admin/users.php modified: modules/Core/pages/admin/widgets.php modified: modules/Core/pages/login.php modified: modules/Core/pages/logout.php modified: modules/Core/pages/mod/ip_lookup.php modified: modules/Core/pages/mod/punishments.php modified: modules/Core/pages/mod/reports.php modified: modules/Core/pages/register.php modified: modules/Core/pages/user/acknowledge.php modified: modules/Core/pages/user/settings.php modified: modules/Forum/pages/forum/delete.php modified: modules/Forum/pages/forum/delete_post.php modified: modules/Forum/pages/forum/edit.php modified: modules/Forum/pages/forum/lock.php modified: modules/Forum/pages/forum/merge.php modified: modules/Forum/pages/forum/move.php modified: modules/Forum/pages/forum/new_topic.php modified: modules/Forum/pages/forum/reactions.php modified: modules/Forum/pages/forum/report.php modified: modules/Forum/pages/forum/search.php modified: modules/Forum/pages/forum/stick.php As per request of @partydragen https://github.com/NamelessMC/Nameless/pull/1003#issuecomment-381251017
2018-04-14 01:13:47 -05:00
*/
class Log extends Instanceable
{
/**
* @var array Mapping of log Actions to their language key
*/
2021-10-07 14:02:46 -07:00
private static array $_actions = [
2020-12-13 19:38:04 +01:00
'admin' => [
'login' => 'acp_login',
'core' => [
'general' => 'acp_core_update',
'avatar' => 'acp_avatar_update',
'profile' => [
'add' => 'acp_core_profile_add',
'delete' => 'acp_core_profile_delete',
'update' => 'acp_core_profile_update',
],
'maintenance' => [
'enable' => 'acp_maintenance_enable',
'disable' => 'acp_maintenance_disable',
'update' => 'acp_maintenance_update',
],
'email' => [
'update' => 'acp_email_update',
'test' => 'acp_email_test',
'mass_message' => 'acp_email_mass_message',
2020-12-13 19:38:04 +01:00
],
'nav' => 'admin_nav_update',
'reaction' => [
'update' => 'acp_reaction_update',
'add' => 'acp_reaction_add',
'delete' => 'acp_reaction_remove',
2020-12-13 19:38:04 +01:00
],
'social' => 'acp_social_update',
'term' => 'acp_term_update',
'queue' => [
'cancel_task' => 'acp_cancel_task',
'requeue_task' => 'acp_requeue_task',
],
2020-12-13 19:38:04 +01:00
],
'api' => [
'change' => 'acp_api_change',
],
'group' => [
'create' => 'acp_group_create',
'update' => 'acp_group_update',
'delete' => 'acp_group_delte',
],
'bgimage' => [
'submit' => 'acp_bgimage_submit',
'reset' => 'acp_bgimage_reset',
],
2021-12-07 22:14:12 -08:00
'mc' => [
'update' => 'acp_mc_update',
2020-12-13 19:38:04 +01:00
],
'authme' => [
'update' => 'acp_authme_update',
],
'server' => [
'update' => 'acp_server_update',
'delete' => 'acp_server_delete',
'add' => 'acp_server_add',
'default' => 'acp_server_default_update',
'banner' => 'acp_server_banner_update',
2020-12-13 19:38:04 +01:00
],
'module' => [
'install' => 'acp_module_install',
'enable' => 'acp_module_enable',
'disable' => 'acp_module_disable',
],
'pages' => [
'new' => 'acp_pages_new',
'edit' => 'acp_pages_edit',
'delete' => 'acp_pages_delete',
],
'template' => [
2021-12-07 22:14:12 -08:00
'update' => 'acp_template_update',
2020-12-13 19:38:04 +01:00
'install' => 'acp_template_install',
'default' => 'acp_template_default_change',
'activate' => 'acp_template_activate',
'deactivate' => 'acp_template_deactivate',
'delete' => 'acp_template_delete',
],
'user' => [
'create' => 'acp_user_add',
'delete' => 'acp_user_remove',
'update' => 'acp_user_update',
'register' => 'acp_register_change',
],
'widget' => [
'update' => 'acp_widget_update',
],
],
'mod' => [
'iplookup' => 'mcp_ip_lookup',
'punishment' => [
'create' => 'mcp_punishment_create',
'revoke' => 'mcp_punishment_revoke',
],
'report' => [
'comment' => 'mcp_report_comment',
'open' => 'mcp_report_open',
'close' => 'mcp_report_close',
],
],
'user' => [
'login' => 'user_login',
'logout' => 'user_logout',
'register' => 'user_register',
'acknowledge' => 'user_acknowledge',
'ucp' => [
'update' => 'ucp_update',
],
'tfa' => [
'key' => [
'sent' => 'tfa_key_sent',
],
],
],
'forums' => [
'topic' => [
'delete' => 'forums_topic_delete',
'edit' => 'forums_topic_edit',
'lock' => 'forums_topic_lock',
'create' => 'forums_topic_create',
'search' => 'forums_topic_search',
'stick' => 'forums_topic_stick',
'view' => 'forums_topic_view',
'move' => 'forums_topic_move',
'merge' => 'forums_topic_merge',
'react' => 'forums_topic_react',
'unstick' => 'forum_topic_unstick',
],
'post' => [
'delete' => 'forums_post_delete',
'edit' => 'forums_post_edit',
'lock' => 'forums_post_lock',
'create' => 'forums_post_create',
'search' => 'forums_post_search',
'stick' => 'forums_post_stick',
'unstick' => 'forum_topic_unstick',
'view' => 'forums_post_view',
'move' => 'forums_post_move',
'merge' => 'forums_post_merge',
'react' => 'forums_post_react',
],
'delete' => 'forum_delete',
'edit' => 'forum_edit',
'lock' => 'forum_lock',
'create' => 'forum_create',
'search' => 'forum_search',
'stick' => 'forum_stick',
'view' => 'forum_view',
'move' => 'forum_move',
'merge' => 'forum_merge',
'react' => 'forum_react',
],
'misc' => [
'report' => 'report',
'curl_error' => 'curl_error',
2020-12-13 19:38:04 +01:00
],
'api' => [
2022-01-15 11:48:52 -08:00
// TODO
2020-12-13 19:38:04 +01:00
],
'discord' => [
'bot_request_failed' => 'discord_bot_request_failed',
2020-12-13 14:32:03 -08:00
'role_set' => 'discord_role_set',
],
'mc_group_sync' => [
'role_set' => 'mc_group_sync_set',
],
2020-12-13 19:38:04 +01:00
];
Created Log Class Changes to be committed: new file: core/classes/Log.php modified: custom/languages/EnglishUK/log.php modified: modules/Core/pages/admin/api.php modified: modules/Core/pages/admin/auth.php modified: modules/Core/pages/admin/groups.php modified: modules/Core/pages/admin/images.php modified: modules/Core/pages/admin/minecraft.php modified: modules/Core/pages/admin/modules.php modified: modules/Core/pages/admin/pages.php modified: modules/Core/pages/admin/registration.php modified: modules/Core/pages/admin/styles.php modified: modules/Core/pages/admin/users.php modified: modules/Core/pages/admin/widgets.php modified: modules/Core/pages/login.php modified: modules/Core/pages/logout.php modified: modules/Core/pages/mod/ip_lookup.php modified: modules/Core/pages/mod/punishments.php modified: modules/Core/pages/mod/reports.php modified: modules/Core/pages/register.php modified: modules/Core/pages/user/acknowledge.php modified: modules/Core/pages/user/settings.php modified: modules/Forum/pages/forum/delete.php modified: modules/Forum/pages/forum/delete_post.php modified: modules/Forum/pages/forum/edit.php modified: modules/Forum/pages/forum/lock.php modified: modules/Forum/pages/forum/merge.php modified: modules/Forum/pages/forum/move.php modified: modules/Forum/pages/forum/new_topic.php modified: modules/Forum/pages/forum/reactions.php modified: modules/Forum/pages/forum/report.php modified: modules/Forum/pages/forum/search.php modified: modules/Forum/pages/forum/stick.php As per request of @partydragen https://github.com/NamelessMC/Nameless/pull/1003#issuecomment-381251017
2018-04-14 01:13:47 -05:00
private DB $_db;
Created Log Class Changes to be committed: new file: core/classes/Log.php modified: custom/languages/EnglishUK/log.php modified: modules/Core/pages/admin/api.php modified: modules/Core/pages/admin/auth.php modified: modules/Core/pages/admin/groups.php modified: modules/Core/pages/admin/images.php modified: modules/Core/pages/admin/minecraft.php modified: modules/Core/pages/admin/modules.php modified: modules/Core/pages/admin/pages.php modified: modules/Core/pages/admin/registration.php modified: modules/Core/pages/admin/styles.php modified: modules/Core/pages/admin/users.php modified: modules/Core/pages/admin/widgets.php modified: modules/Core/pages/login.php modified: modules/Core/pages/logout.php modified: modules/Core/pages/mod/ip_lookup.php modified: modules/Core/pages/mod/punishments.php modified: modules/Core/pages/mod/reports.php modified: modules/Core/pages/register.php modified: modules/Core/pages/user/acknowledge.php modified: modules/Core/pages/user/settings.php modified: modules/Forum/pages/forum/delete.php modified: modules/Forum/pages/forum/delete_post.php modified: modules/Forum/pages/forum/edit.php modified: modules/Forum/pages/forum/lock.php modified: modules/Forum/pages/forum/merge.php modified: modules/Forum/pages/forum/move.php modified: modules/Forum/pages/forum/new_topic.php modified: modules/Forum/pages/forum/reactions.php modified: modules/Forum/pages/forum/report.php modified: modules/Forum/pages/forum/search.php modified: modules/Forum/pages/forum/stick.php As per request of @partydragen https://github.com/NamelessMC/Nameless/pull/1003#issuecomment-381251017
2018-04-14 01:13:47 -05:00
public function __construct()
{
2020-12-13 19:38:04 +01:00
$this->_db = DB::getInstance();
}
Created Log Class Changes to be committed: new file: core/classes/Log.php modified: custom/languages/EnglishUK/log.php modified: modules/Core/pages/admin/api.php modified: modules/Core/pages/admin/auth.php modified: modules/Core/pages/admin/groups.php modified: modules/Core/pages/admin/images.php modified: modules/Core/pages/admin/minecraft.php modified: modules/Core/pages/admin/modules.php modified: modules/Core/pages/admin/pages.php modified: modules/Core/pages/admin/registration.php modified: modules/Core/pages/admin/styles.php modified: modules/Core/pages/admin/users.php modified: modules/Core/pages/admin/widgets.php modified: modules/Core/pages/login.php modified: modules/Core/pages/logout.php modified: modules/Core/pages/mod/ip_lookup.php modified: modules/Core/pages/mod/punishments.php modified: modules/Core/pages/mod/reports.php modified: modules/Core/pages/register.php modified: modules/Core/pages/user/acknowledge.php modified: modules/Core/pages/user/settings.php modified: modules/Forum/pages/forum/delete.php modified: modules/Forum/pages/forum/delete_post.php modified: modules/Forum/pages/forum/edit.php modified: modules/Forum/pages/forum/lock.php modified: modules/Forum/pages/forum/merge.php modified: modules/Forum/pages/forum/move.php modified: modules/Forum/pages/forum/new_topic.php modified: modules/Forum/pages/forum/reactions.php modified: modules/Forum/pages/forum/report.php modified: modules/Forum/pages/forum/search.php modified: modules/Forum/pages/forum/stick.php As per request of @partydragen https://github.com/NamelessMC/Nameless/pull/1003#issuecomment-381251017
2018-04-14 01:13:47 -05:00
2020-12-13 19:38:04 +01:00
/**
* Get an action from the Action array.
2021-12-07 22:14:12 -08:00
*
* @param string $path The path to the action.
* @return string|array The keys
2020-12-13 19:38:04 +01:00
*/
public static function Action(string $path)
{
2020-12-13 19:38:04 +01:00
$path = explode('/', $path);
$config = self::$_actions;
2020-12-13 19:38:04 +01:00
foreach ($path as $bit) {
if (isset($config[$bit])) {
$config = $config[$bit];
}
}
2020-12-13 20:42:04 -08:00
2020-12-13 19:38:04 +01:00
return $config;
}
Created Log Class Changes to be committed: new file: core/classes/Log.php modified: custom/languages/EnglishUK/log.php modified: modules/Core/pages/admin/api.php modified: modules/Core/pages/admin/auth.php modified: modules/Core/pages/admin/groups.php modified: modules/Core/pages/admin/images.php modified: modules/Core/pages/admin/minecraft.php modified: modules/Core/pages/admin/modules.php modified: modules/Core/pages/admin/pages.php modified: modules/Core/pages/admin/registration.php modified: modules/Core/pages/admin/styles.php modified: modules/Core/pages/admin/users.php modified: modules/Core/pages/admin/widgets.php modified: modules/Core/pages/login.php modified: modules/Core/pages/logout.php modified: modules/Core/pages/mod/ip_lookup.php modified: modules/Core/pages/mod/punishments.php modified: modules/Core/pages/mod/reports.php modified: modules/Core/pages/register.php modified: modules/Core/pages/user/acknowledge.php modified: modules/Core/pages/user/settings.php modified: modules/Forum/pages/forum/delete.php modified: modules/Forum/pages/forum/delete_post.php modified: modules/Forum/pages/forum/edit.php modified: modules/Forum/pages/forum/lock.php modified: modules/Forum/pages/forum/merge.php modified: modules/Forum/pages/forum/move.php modified: modules/Forum/pages/forum/new_topic.php modified: modules/Forum/pages/forum/reactions.php modified: modules/Forum/pages/forum/report.php modified: modules/Forum/pages/forum/search.php modified: modules/Forum/pages/forum/stick.php As per request of @partydragen https://github.com/NamelessMC/Nameless/pull/1003#issuecomment-381251017
2018-04-14 01:13:47 -05:00
2020-12-13 19:38:04 +01:00
/**
* Logs an action.
2021-12-07 22:14:12 -08:00
*
* @param string $action The action being logged
* @param string $info Some more information about what the action is about
* @param ?int $user The User ID who is doing the action
* @return bool Return true or false if inserted into the database.
2020-12-13 19:38:04 +01:00
*/
public function log(string $action, string $info = '', ?int $user = null): bool
{
2022-07-03 20:56:15 +02:00
if ($user === null) {
2021-10-11 21:31:23 +02:00
$userTemp = new User();
2021-01-23 18:54:34 -08:00
$user = ($userTemp->isLoggedIn() ? $userTemp->data()->id : 0);
2020-12-13 19:38:04 +01:00
}
2021-01-23 18:54:34 -08:00
2022-06-13 22:24:43 -06:00
$ip = HttpUtils::getRemoteAddress();
2021-10-29 22:00:05 -07:00
return $this->_db->insert('logs', [
2020-12-13 19:38:04 +01:00
'time' => date('U'),
'action' => $action,
2020-12-30 20:31:25 +00:00
'user_id' => $user,
'ip' => $ip ?? 'unknown',
2020-12-13 19:38:04 +01:00
'info' => $info,
2021-10-29 22:00:05 -07:00
]);
2020-12-13 19:38:04 +01:00
}
Created Log Class Changes to be committed: new file: core/classes/Log.php modified: custom/languages/EnglishUK/log.php modified: modules/Core/pages/admin/api.php modified: modules/Core/pages/admin/auth.php modified: modules/Core/pages/admin/groups.php modified: modules/Core/pages/admin/images.php modified: modules/Core/pages/admin/minecraft.php modified: modules/Core/pages/admin/modules.php modified: modules/Core/pages/admin/pages.php modified: modules/Core/pages/admin/registration.php modified: modules/Core/pages/admin/styles.php modified: modules/Core/pages/admin/users.php modified: modules/Core/pages/admin/widgets.php modified: modules/Core/pages/login.php modified: modules/Core/pages/logout.php modified: modules/Core/pages/mod/ip_lookup.php modified: modules/Core/pages/mod/punishments.php modified: modules/Core/pages/mod/reports.php modified: modules/Core/pages/register.php modified: modules/Core/pages/user/acknowledge.php modified: modules/Core/pages/user/settings.php modified: modules/Forum/pages/forum/delete.php modified: modules/Forum/pages/forum/delete_post.php modified: modules/Forum/pages/forum/edit.php modified: modules/Forum/pages/forum/lock.php modified: modules/Forum/pages/forum/merge.php modified: modules/Forum/pages/forum/move.php modified: modules/Forum/pages/forum/new_topic.php modified: modules/Forum/pages/forum/reactions.php modified: modules/Forum/pages/forum/report.php modified: modules/Forum/pages/forum/search.php modified: modules/Forum/pages/forum/stick.php As per request of @partydragen https://github.com/NamelessMC/Nameless/pull/1003#issuecomment-381251017
2018-04-14 01:13:47 -05:00
}