From 3fc28c0142bf8ab4e2cfae44931e2a51aadc4d51 Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Mon, 25 Feb 2013 13:51:37 -0500
Subject: [PATCH] - Added: remoting queries with a lot of results (e.g. email addresses or alias domains or dns rr) lead to non-functioning soap requests - added '#OFFSET#' AND '#LIMIT#' handling to the query - added automatic 'WHERE 1' if an empty array was given as query example: $result = $api->sites_web_domain_get('type' => 'vhost', '#OFFSET#' => 25, '#LIMIT#' => 50); to get the websites 26 to 75
---
interface/web/dashboard/ajax_get_json.php | 81 ++++++++++++++++++++++++++++++----------
1 files changed, 61 insertions(+), 20 deletions(-)
diff --git a/interface/web/dashboard/ajax_get_json.php b/interface/web/dashboard/ajax_get_json.php
index 18cd1e4..e761f3e 100644
--- a/interface/web/dashboard/ajax_get_json.php
+++ b/interface/web/dashboard/ajax_get_json.php
@@ -42,21 +42,35 @@
if($type == 'globalsearch'){
- $q = $app->db->quote($_GET["q"]);
+ $q = $app->db->quote(trim($_GET["q"]));
$authsql = " AND ".$app->tform->getAuthSQL('r');
$modules = explode(',', $_SESSION['s']['user']['modules']);
+ $result = array();
+
// clients
- $result_clients = _search('client', 'client');
+ $result[] = _search('client', 'client', "AND limit_client = 0");
+
+ // resellers
+ $result[] = _search('client', 'reseller', "AND limit_client != 0");
// web sites
- $result_webs = _search('sites', 'web_domain');
+ $result[] = _search('sites', 'web_domain', "AND type = 'vhost'");
+
+ // subdomains
+ $result[] = _search('sites', 'web_subdomain', "AND type = 'subdomain'");
+
+ // web site aliases
+ $result[] = _search('sites', 'web_aliasdomain', "AND type = 'alias'");
+
+ // vhostsubdomains
+ $result[] = _search('sites', 'web_vhost_subdomain', "AND type = 'vhostsubdomain'");
// FTP users
- $result_ftp_users = _search('sites', 'ftp_user');
+ $result[] = _search('sites', 'ftp_user');
// shell users
- $result_shell_users = _search('sites', 'shell_user');
+ $result[] = _search('sites', 'shell_user');
// databases
/*
@@ -81,42 +95,66 @@
}
}
*/
- $result_databases = _search('sites', 'database');
+ $result[] = _search('sites', 'database');
+
+ // database users
+ $result[] = _search('sites', 'database_user');
// email domains
- $result_email_domains = _search('mail', 'mail_domain');
+ $result[] = _search('mail', 'mail_domain');
+
+ // email alias domains
+ $result[] = _search('mail', 'mail_aliasdomain', "AND type = 'aliasdomain'");
// email mailboxes
- $result_email_mailboxes = _search('mail', 'mail_user');
+ $result[] = _search('mail', 'mail_user');
+
+ // email aliases
+ $result[] = _search('mail', 'mail_alias', "AND type = 'alias'");
+
+ // email forwards
+ $result[] = _search('mail', 'mail_forward', "AND type = 'forward'");
+
+ // email catchalls
+ $result[] = _search('mail', 'mail_domain_catchall', "AND type = 'catchall'");
+
+ // email transports
+ $result[] = _search('mail', 'mail_transport');
+
+ // mailinglists
+ $result[] = _search('mail', 'mail_mailinglist');
+
+ // getmails
+ $result[] = _search('mail', 'mail_get');
// dns zones
- $result_dns_zones = _search('dns', 'dns_soa');
+ $result[] = _search('dns', 'dns_soa');
// secondary dns zones
- $result_secondary_dns_zones = _search('dns', 'dns_slave');
+ $result[] = _search('dns', 'dns_slave');
// virtual machines
- $result_vms = _search('vm', 'openvz_vm');
+ $result[] = _search('vm', 'openvz_vm');
// virtual machines os templates
- $result_vm_ostemplates = _search('vm', 'openvz_ostemplate');
+ $result[] = _search('vm', 'openvz_ostemplate');
// virtual machines vm templates
- $result_vm_vmtemplates = _search('vm', 'openvz_template');
+ $result[] = _search('vm', 'openvz_template');
// virtual machines ip addresses
- $result_vm_ip_addresses = _search('vm', 'openvz_ip');
+ $result[] = _search('vm', 'openvz_ip');
+
+ // directive snippets
+ $result[] = _search('admin', 'directive_snippets');
- $json = $app->functions->json_encode(array($result_clients, $result_webs, $result_ftp_users, $result_shell_users, $result_databases, $result_email_domains, $result_email_mailboxes, $result_dns_zones, $result_secondary_dns_zones, $result_vms, $result_vm_ostemplates, $result_vm_vmtemplates, $result_vm_ip_addresses));
+ $json = $app->functions->json_encode($result);
}
//}
-function _search($module, $section){
+function _search($module, $section, $additional_sql = ''){
global $app, $q, $authsql, $modules;
- //$q = $app->db->quote($_GET["q"]);
- //$authsql = " AND ".$app->tform->getAuthSQL('r');
- //$user_modules = explode(',', $_SESSION['s']['user']['modules']);
$result_array = array('cheader' => array(), 'cdata' => array());
if(in_array($module, $modules)){
@@ -159,10 +197,13 @@
// valid SQL query which returns an empty result set
$where_clause = '1 = 0';
}
+ if($where_clause != '') $where_clause = '('.$where_clause.')';
+ if($additional_sql != '') $where_clause .= ' '.$additional_sql.' ';
$order_clause = '';
if($order_by != '') $order_clause = ' ORDER BY '.$order_by;
- $results = $app->db->queryAllRecords("SELECT * FROM ".$db_table." WHERE ".$where_clause.$authsql.$order_clause);
+ $sql = "SELECT * FROM ".$db_table." WHERE ".$where_clause.$authsql.$order_clause." LIMIT 0,10";
+ $results = $app->db->queryAllRecords($sql);
if(is_array($results) && !empty($results)){
$lng_file = '../'.$module.'/lib/lang/'.$_SESSION['s']['language'].'_'.$section.'.lng';
--
Gitblit v1.9.1