auth->check_module_permissions('dashboard'); $app->uses('tform'); $type = $_GET["type"]; //if($_SESSION["s"]["user"]["typ"] == 'admin') { /* TODO: change sql queries */ if($type == 'globalsearch'){ $q = $app->db->quote(trim($_GET["q"])); $authsql = " AND ".$app->tform->getAuthSQL('r'); $modules = explode(',', $_SESSION['s']['user']['modules']); $result = array(); // clients $result[] = _search('client', 'client', "AND limit_client = 0"); // resellers $result[] = _search('client', 'reseller', "AND limit_client != 0"); // web sites $result[] = _search('sites', 'web_vhost_domain', "AND type = 'vhost'"); // subdomains $result[] = _search('sites', 'web_childdomain', "AND type = 'subdomain'", 'type=subdomain'); // web site aliases $result[] = _search('sites', 'web_childdomain', "AND type = 'alias'", 'type=aliasdomain'); // vhostsubdomains $result[] = _search('sites', 'web_vhost_domain', "AND type = 'vhostsubdomain'", 'type=subdomain'); // vhostaliasdomains $result[] = _search('sites', 'web_vhost_domain', "AND type = 'vhostalias'", 'type=aliasdomain'); // FTP users $result[] = _search('sites', 'ftp_user'); // shell users $result[] = _search('sites', 'shell_user'); // databases $result[] = _search('sites', 'database'); // database users $result[] = _search('sites', 'database_user'); // email domains $result[] = _search('mail', 'mail_domain'); // email alias domains $result[] = _search('mail', 'mail_aliasdomain', "AND type = 'aliasdomain'"); // email mailboxes $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'); // getmails $result[] = _search('mail', 'mail_get'); // dns zones $result[] = _search('dns', 'dns_soa'); // secondary dns zones $result[] = _search('dns', 'dns_slave'); // directive snippets $result[] = _search('admin', 'directive_snippets'); $data = $app->plugin->raiseEvent('dashboard:get_searchable_data', false, true); if(is_array($data) && !empty($data)) { foreach($data as $add_result) { if(!isset($add_result['module']) || !isset($add_result['section'])) { continue; } if(!isset($add_result['sql']) || !$add_result['sql']) { $add_result['sql'] = ''; } if(!isset($add_result['params']) || !$add_result['params']) { $add_result['params'] = ''; } $result[] = _search($add_result['module'], $add_result['section'], $add_result['sql'], $add_result['params']); } } $json = $app->functions->json_encode($result); } //} function _search($module, $section, $additional_sql = '', $params = ''){ global $app, $q, $authsql, $modules; $result_array = array('cheader' => array(), 'cdata' => array()); if(in_array($module, $modules)){ $search_fields = array(); $desc_fields = array(); if(is_file('../'.$module.'/form/'.$section.'.tform.php')){ include '../'.$module.'/form/'.$section.'.tform.php'; $category_title = $form["title"]; if($params == 'type=subdomain' && $section == 'web_childdomain') $category_title = 'Subdomain'; if($params == 'type=aliasdomain' && $section == 'web_childdomain') $category_title = 'Aliasdomain'; if($params == 'type=subdomain' && $section == 'web_vhost_domain') $category_title = 'Subdomain (Vhost)'; if($params == 'type=aliasdomain' && $section == 'web_vhost_domain') $category_title = 'Aliasdomain (Vhost)'; $form_file = $form["action"]; $db_table = $form["db_table"]; $db_table_idx = $form["db_table_idx"]; $order_by = $db_table_idx; if(is_array($form["tabs"]) && !empty($form["tabs"])){ foreach($form["tabs"] as $tab){ if(is_array($tab['fields']) && !empty($tab['fields'])){ foreach($tab['fields'] as $key => $val){ if(isset($val['searchable']) && $val['searchable'] > 0){ $search_fields[] = $key." LIKE '%".$q."%'"; if($val['searchable'] == 1){ $order_by = $key; $title_key = $key; } if($val['searchable'] == 2){ $desc_fields[] = $key; } } } } } } } unset($form); $where_clause = ''; if(!empty($search_fields)){ $where_clause = implode(' OR ', $search_fields); } else { // 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; $sql = "SELECT * FROM ?? WHERE ".$where_clause.$authsql.$order_clause." LIMIT 0,10"; $results = $app->db->queryAllRecords($sql, $db_table); $results = $app->functions->htmlentities($results); if(is_array($results) && !empty($results)){ $lng_file = '../'.$module.'/lib/lang/'.$_SESSION['s']['language'].'_'.$section.'.lng'; if(is_file($lng_file)) include $lng_file; $result_array['cheader'] = array('title' => $category_title, 'total' => count($results), 'limit' => count($results) ); foreach($results as $result){ $description = ''; if(!empty($desc_fields)){ $desc_items = array(); foreach($desc_fields as $desc_field){ if($result[$desc_field] != '') $desc_items[] = $wb[$desc_field.'_txt'].': '.$result[$desc_field]; } if(!empty($desc_items)) $description = implode(' - ', $desc_items); } $result_array['cdata'][] = array('title' => $wb[$title_key.'_txt'].': '.$result[$title_key], 'description' => $description, 'onclick' => "ISPConfig.capp('".$module."','".$module."/".$form_file.urlencode("?id=".$result[$db_table_idx]).($params != ''? urlencode('&'.$params) : '')."');", 'fill_text' => strtolower($result[$title_key]) ); } } } return $result_array; } header('Content-type: application/json'); echo $json;