diff --git a/core/user_logs/user_logs.php b/core/user_logs/user_logs.php index b497244ad7..976158cc0a 100644 --- a/core/user_logs/user_logs.php +++ b/core/user_logs/user_logs.php @@ -1,270 +1,283 @@ - - Portions created by the Initial Developer are Copyright (C) 2018 - 2020 - the Initial Developer. All Rights Reserved. -*/ - -//includes - require_once "root.php"; - require_once "resources/require.php"; - require_once "resources/check_auth.php"; - require_once "resources/paging.php"; - -//check permissions - if (permission_exists('user_log_view')) { - //access granted - } - else { - echo "access denied"; - exit; - } - -//add multi-lingual support - $language = new text; - $text = $language->get(); - -//get the http post data - if (is_array($_POST['user_logs'])) { - $action = $_POST['action']; - $search = $_POST['search']; - $user_logs = $_POST['user_logs']; - } - -//process the http post data by action - if ($action != '' && is_array($user_logs) && @sizeof($user_logs) != 0) { - - //validate the token - $token = new token; - if (!$token->validate($_SERVER['PHP_SELF'])) { - message::add($text['message-invalid_token'],'negative'); - header('Location: user_logs.php'); - exit; - } - - //prepare the array - foreach($user_logs as $row) { - $array['user_logs'][$x]['checked'] = $row['checked']; - $array['user_logs'][$x]['user_log_uuid'] = $row['user_log_uuid']; - $x++; - } - - //prepare the database object - $database = new database; - $database->app_name = 'user_logs'; - $database->app_uuid = '582a13cf-7d75-4ea3-b2d9-60914352d76e'; - - //send the array to the database class - if ($action == 'delete') { - if (permission_exists('user_log_delete')) { - $database->delete($array); - } - } - - //redirect the user - header('Location: user_logs.php'.($search != '' ? '?search='.urlencode($search) : null)); - exit; - } - -//get order and order by - $order_by = $_GET["order_by"]; - $order = $_GET["order"]; - -//add the search - if (isset($_GET["search"])) { - $search = strtolower($_GET["search"]); - } - -//get the count - $sql = "select count(user_log_uuid) "; - $sql .= "from v_user_logs "; - if (permission_exists('user_log_all') && $_GET['show'] == 'all') { - $sql .= "where true "; - } - else { - $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; - } - if (isset($search)) { - $sql .= "and ("; - $sql .= " lower(username) like :search "; - $sql .= " or lower(type) like :search "; - $sql .= " or lower(result) like :search "; - $sql .= " or lower(remote_address) like :search "; - $sql .= " or lower(user_agent) like :search "; - $sql .= ") "; - $parameters['search'] = '%'.$search.'%'; - } - $database = new database; - $num_rows = $database->select($sql, $parameters, 'column'); - unset($sql, $parameters); - -//prepare to page the results - $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; - $param = $search ? "&search=".$search : null; - $param = ($_GET['show'] == 'all' && permission_exists('user_log_all')) ? "&show=all" : null; - $page = is_numeric($_GET['page']) ? $_GET['page'] : 0; - list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page); - list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true); - $offset = $rows_per_page * $page; - -//get the list - $sql = "select "; - $sql .= "domain_uuid, "; - $sql .= "user_log_uuid, "; - $sql .= "timestamp, "; - $sql .= "username, "; - $sql .= "type, "; - $sql .= "result, "; - $sql .= "remote_address, "; - $sql .= "user_agent "; - $sql .= "from v_user_logs "; - if (permission_exists('user_log_all') && $_GET['show'] == 'all') { - $sql .= "where true "; - } - else { - $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; - } - if (isset($search)) { - $sql .= "and ( "; - $sql .= " lower(username) like :search "; - $sql .= " or lower(type) like :search "; - $sql .= " or lower(result) like :search "; - $sql .= " or lower(remote_address) like :search "; - $sql .= " or lower(user_agent) like :search "; - $sql .= ") "; - $parameters['search'] = '%'.$search.'%'; - } - $sql .= order_by($order_by, $order, 'timestamp', 'desc'); - $sql .= limit_offset($rows_per_page, $offset); - $database = new database; - $user_logs = $database->select($sql, $parameters, 'all'); - unset($sql, $parameters); - -//create token - $object = new token; - $token = $object->create($_SERVER['PHP_SELF']); - -//additional includes - $document['title'] = $text['title-user_logs']; - require_once "resources/header.php"; - -//show the content - echo "
\n"; - echo "
".$text['title-user_logs']." (".$num_rows.")
\n"; - echo "
\n"; - if (permission_exists('user_log_delete') && $user_logs) { - echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display:none;','onclick'=>"modal_open('modal-delete','btn_delete');"]); - } - echo "\n"; - echo "
\n"; - echo "
\n"; - echo "
\n"; - - if (permission_exists('user_log_delete') && $user_logs) { - echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]); - } - - echo $text['title_description-user_logs']."\n"; - echo "

\n"; - - echo "
\n"; - echo "\n"; - echo "\n"; - - echo "\n"; - echo "\n"; - if (permission_exists('user_log_add') || permission_exists('user_log_edit') || permission_exists('user_log_delete')) { - echo " \n"; - } - if ($_GET['show'] == 'all' && permission_exists('user_log_all')) { - echo th_order_by('domain_name', $text['label-domain'], $order_by, $order); - } - echo th_order_by('timestamp', $text['label-timestamp'], $order_by, $order); - echo th_order_by('username', $text['label-username'], $order_by, $order); - echo th_order_by('type', $text['label-type'], $order_by, $order); - echo th_order_by('result', $text['label-result'], $order_by, $order); - echo th_order_by('remote_address', $text['label-remote_address'], $order_by, $order); - echo th_order_by('user_agent', $text['label-user_agent'], $order_by, $order); - if (permission_exists('user_log_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { - echo " \n"; - } - echo "\n"; - - if (is_array($user_logs) && @sizeof($user_logs) != 0) { - $x = 0; - foreach ($user_logs as $row) { - if (permission_exists('user_log_edit')) { - $list_row_url = "user_log_edit.php?id=".urlencode($row['user_log_uuid']); - } - echo "\n"; - if (permission_exists('user_log_add') || permission_exists('user_log_edit') || permission_exists('user_log_delete')) { - echo " \n"; - } - if ($_GET['show'] == 'all' && permission_exists('user_log_all')) { - echo " \n"; - } - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - if (permission_exists('user_log_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { - echo " \n"; - } - echo "\n"; - $x++; - } - unset($user_logs); - } - - echo "
\n"; - echo " \n"; - echo "  
\n"; - echo " \n"; - echo " \n"; - echo " ".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."".escape($row['timestamp'])."".escape($row['username'])."".escape($row['type'])."".escape($row['result'])."".escape($row['remote_address'])."".escape($row['user_agent'])."\n"; - echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); - echo "
\n"; - echo "
\n"; - echo "
".$paging_controls."
\n"; - echo "\n"; - echo "
\n"; - -//include the footer - require_once "resources/footer.php"; - -?> + + Portions created by the Initial Developer are Copyright (C) 2018 - 2021 + the Initial Developer. All Rights Reserved. +*/ + +//includes + require_once "root.php"; + require_once "resources/require.php"; + require_once "resources/check_auth.php"; + require_once "resources/paging.php"; + +//check permissions + if (permission_exists('user_log_view')) { + //access granted + } + else { + echo "access denied"; + exit; + } + +//add multi-lingual support + $language = new text; + $text = $language->get(); + +//get the http post data + if (is_array($_POST['user_logs'])) { + $action = $_POST['action']; + $search = $_POST['search']; + $user_logs = $_POST['user_logs']; + } + +//process the http post data by action + if ($action != '' && is_array($user_logs) && @sizeof($user_logs) != 0) { + + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: user_logs.php'); + exit; + } + + //prepare the array + foreach($user_logs as $row) { + $array['user_logs'][$x]['checked'] = $row['checked']; + $array['user_logs'][$x]['user_log_uuid'] = $row['user_log_uuid']; + $x++; + } + + //prepare the database object + $database = new database; + $database->app_name = 'user_logs'; + $database->app_uuid = '582a13cf-7d75-4ea3-b2d9-60914352d76e'; + + //send the array to the database class + if ($action == 'delete') { + if (permission_exists('user_log_delete')) { + $database->delete($array); + } + } + + //redirect the user + header('Location: user_logs.php'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + +//get order and order by + $order_by = $_GET["order_by"]; + $order = $_GET["order"]; + +//add the search + if (isset($_GET["search"])) { + $search = strtolower($_GET["search"]); + } + +//get the count + $sql = "select count(user_log_uuid) "; + $sql .= "from v_user_logs "; + if (permission_exists('user_log_all') && $_GET['show'] == 'all') { + $sql .= "where true "; + } + else { + $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + } + if (isset($search)) { + $sql .= "and ("; + $sql .= " lower(username) like :search "; + $sql .= " or lower(type) like :search "; + $sql .= " or lower(result) like :search "; + $sql .= " or lower(remote_address) like :search "; + $sql .= " or lower(user_agent) like :search "; + $sql .= ") "; + $parameters['search'] = '%'.$search.'%'; + } + $database = new database; + $num_rows = $database->select($sql, $parameters, 'column'); + unset($sql, $parameters); + +//prepare to page the results + $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; + $param = $search ? "&search=".$search : null; + $param = ($_GET['show'] == 'all' && permission_exists('user_log_all')) ? "&show=all" : null; + $page = is_numeric($_GET['page']) ? $_GET['page'] : 0; + list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page); + list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true); + $offset = $rows_per_page * $page; + +//set the time zone + if (isset($_SESSION['domain']['time_zone']['name'])) { + $time_zone = $_SESSION['domain']['time_zone']['name']; + } + else { + $time_zone = date_default_timezone_get(); + } + $parameters['time_zone'] = $time_zone; + +//get the list + $sql = "select "; + $sql .= "domain_uuid, "; + $sql .= "user_log_uuid, "; + $sql .= "timestamp, "; + $sql .= "to_char(timezone(:time_zone, timestamp), 'DD Mon YYYY') as date_formatted, \n"; + $sql .= "to_char(timezone(:time_zone, timestamp), 'HH12:MI:SS am') as time_formatted, \n"; + $sql .= "username, "; + $sql .= "type, "; + $sql .= "result, "; + $sql .= "remote_address, "; + $sql .= "user_agent "; + $sql .= "from v_user_logs "; + if (permission_exists('user_log_all') && $_GET['show'] == 'all') { + $sql .= "where true "; + } + else { + $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + } + if (isset($search)) { + $sql .= "and ( "; + $sql .= " lower(username) like :search "; + $sql .= " or lower(type) like :search "; + $sql .= " or lower(result) like :search "; + $sql .= " or lower(remote_address) like :search "; + $sql .= " or lower(user_agent) like :search "; + $sql .= ") "; + $parameters['search'] = '%'.$search.'%'; + } + $sql .= order_by($order_by, $order, 'timestamp', 'desc'); + $sql .= limit_offset($rows_per_page, $offset); + $database = new database; + $user_logs = $database->select($sql, $parameters, 'all'); + unset($sql, $parameters); + +//create token + $object = new token; + $token = $object->create($_SERVER['PHP_SELF']); + +//additional includes + $document['title'] = $text['title-user_logs']; + require_once "resources/header.php"; + +//show the content + echo "
\n"; + echo "
".$text['title-user_logs']." (".$num_rows.")
\n"; + echo "
\n"; + if (permission_exists('user_log_delete') && $user_logs) { + echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display:none;','onclick'=>"modal_open('modal-delete','btn_delete');"]); + } + echo "\n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; + + if (permission_exists('user_log_delete') && $user_logs) { + echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]); + } + + echo $text['title_description-user_logs']."\n"; + echo "

\n"; + + echo "
\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + if (permission_exists('user_log_add') || permission_exists('user_log_edit') || permission_exists('user_log_delete')) { + echo " \n"; + } + if ($_GET['show'] == 'all' && permission_exists('user_log_all')) { + echo th_order_by('domain_name', $text['label-domain'], $order_by, $order); + } + echo "\n"; + echo "\n"; + echo th_order_by('username', $text['label-username'], $order_by, $order); + echo th_order_by('type', $text['label-type'], $order_by, $order); + echo th_order_by('result', $text['label-result'], $order_by, $order); + echo th_order_by('remote_address', $text['label-remote_address'], $order_by, $order); + echo th_order_by('user_agent', $text['label-user_agent'], $order_by, $order); + if (permission_exists('user_log_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; + } + echo "\n"; + + if (is_array($user_logs) && @sizeof($user_logs) != 0) { + $x = 0; + foreach ($user_logs as $row) { + if (permission_exists('user_log_edit')) { + $list_row_url = "user_log_edit.php?id=".urlencode($row['user_log_uuid']); + } + echo "\n"; + if (permission_exists('user_log_add') || permission_exists('user_log_edit') || permission_exists('user_log_delete')) { + echo " \n"; + } + if ($_GET['show'] == 'all' && permission_exists('user_log_all')) { + echo " \n"; + } + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + if (permission_exists('user_log_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; + } + echo "\n"; + $x++; + } + unset($user_logs); + } + + echo "
\n"; + echo " \n"; + echo " ".$text['label-date']."".$text['label-time']." 
\n"; + echo " \n"; + echo " \n"; + echo " ".escape($_SESSION['domains'][$row['domain_uuid']]['domain_name'])."".escape($row['date_formatted'])."".escape($row['time_formatted'])."".escape($row['username'])."".escape($row['type'])."".escape($row['result'])."".escape($row['remote_address'])."".escape($row['user_agent'])."\n"; + echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); + echo "
\n"; + echo "
\n"; + echo "
".$paging_controls."
\n"; + echo "\n"; + echo "
\n"; + +//include the footer + require_once "resources/footer.php"; + +?> \ No newline at end of file