diff --git a/orcinus/admin.php b/orcinus/admin.php index 1dae384..fd051cd 100644 --- a/orcinus/admin.php +++ b/orcinus/admin.php @@ -97,6 +97,10 @@ $_RDATA['admin_pagination_options'] = array(25, 50, 100, 250, 500, 1000); if (!in_array($_ODATA['admin_index_pagination'], $_RDATA['admin_pagination_options'], true)) OS_setValue('admin_index_pagination', 100); +$_RDATA['admin_query_log_display_options'] = array(10, 25, 50, 100, 250, 500, 1000, 0); +if (!in_array($_ODATA['admin_query_log_display'], $_RDATA['admin_query_log_display_options'], true)) + OS_setValue('admin_query_log_display', 250); + $_RDATA['admin_pages'] = array( 'crawler' => 'Crawler', 'index' => 'Page Index', @@ -1093,6 +1097,16 @@ ORCINUS; exit(); } + // Query Log row display limit + if (isset($_POST['os_admin_query_log_display'])) { + $_POST['os_admin_query_log_display'] = (int)$_POST['os_admin_query_log_display']; + if (in_array($_POST['os_admin_query_log_display'], $_RDATA['admin_query_log_display_options'], true)) + OS_setValue('admin_query_log_display', $_POST['os_admin_query_log_display']); + + header('Location: '.$_SERVER['REQUEST_URI']); + exit(); + } + // Unknown POST command header('Content-type: text/plain; charset='.strtolower($_ODATA['s_charset'])); var_dump($_POST); @@ -1283,6 +1297,8 @@ ORCINUS; case 'queries': $_RDATA['query_log_rows'] = array(); + $_RDATA['query_log_found_rows'] = false; + $queries = $_DDATA['pdo']->query( 'SELECT `t`.`query`, `t`.`results`, INET_NTOA(`t`.`ip`) AS `ipaddr`, REGEXP_REPLACE(`t`.`query`, \'^[[:punct:]]+\', \'\') AS `alpha`, @@ -1300,6 +1316,7 @@ ORCINUS; $err = $queries->errorInfo(); if ($err[0] == '00000') { $_RDATA['query_log_rows'] = $queries->fetchAll(); + $_RDATA['query_log_found_rows'] = count($_RDATA['query_log_rows']); if (count($_RDATA['query_log_rows'])) { $x = 0; @@ -1313,6 +1330,10 @@ ORCINUS; return $b['hits'] - $a['hits']; }); + // Limit the queries displayed to just the top X + if ($_ODATA['admin_query_log_display']) + $_RDATA['query_log_rows'] = array_slice($_RDATA['query_log_rows'], 0, (int)$_ODATA['admin_query_log_display']); + } else $_SESSION['message'][] = 'The query log is currently empty.'; } else $_SESSION['error'][] = 'Database error reading query log table: '.$err[2]; @@ -2629,8 +2650,8 @@ ORCINUS; -
-
+
+
@@ -2638,6 +2659,19 @@ ORCINUS; QuerySort + - + count($_RDATA['query_log_rows'])) { ?> + + + + + -
+ + Hits @@ -2656,11 +2690,26 @@ ORCINUS; Sort
+ + Showing top queries of total queries + +
+
@@ -2732,7 +2781,7 @@ ORCINUS; } ?>
-
+
- fetchAll())) { `admin_install_root`=\'\', `admin_install_domain`=\'\', `admin_index_pagination`=100, + `admin_query_log_display`=250, `sp_key`=\'\', `sp_starting`=\'\', `sp_limit_store`=500, diff --git a/orcinus/js/admin.js b/orcinus/js/admin.js index 56522f0..ccddd7a 100644 --- a/orcinus/js/admin.js +++ b/orcinus/js/admin.js @@ -359,6 +359,13 @@ for (let x = 0; x < os_index_with_selected.length; x++) { /* ***** Page >> Query Log ***************************************** */ +let os_admin_query_log_display = document.querySelector('select[name="os_admin_query_log_display"]'); +if (os_admin_query_log_display) { + os_admin_query_log_display.addEventListener('change', function() { + this.form.submit(); + }, false); +} + let os_queries_tbody = document.getElementById('os_queries_tbody'); if (os_queries_tbody) { let os_queries_sort = function() {