Advertisement
techouse

slow search

Apr 10th, 2012
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.51 KB | None | 0 0
  1. function advanced_company_search() {
  2.     if(isset($_GET['s'])) {
  3.         // our advanced input boxes give us an array
  4.         $filtered_search = array();
  5.         $advanced_query = array(); // we will return this as our displayed search query
  6.         $single_prefix = 'wpcf-';
  7.         $multi_prefix = 'multi-'; // make sure it's the same prefix as above in prepare_company_data_for_advanced_search
  8.         $postType = 'podjetje';
  9.         // filter the $_GET vars into a secure array
  10.         foreach ($_GET['s'] as $key => $value) {
  11.             if (!empty($value)) {
  12.                 switch($key) {
  13.             case 'region':
  14.                         $field = 'regija';
  15.                         $filtered_search[$field] = mysql_real_escape_string($value);
  16.                         $query = __('Region', 'iwasc');
  17.                         break;
  18.             case 'municipality':
  19.                         $field = $single_prefix.'obcina';
  20.                         $filtered_search[$field] = mysql_real_escape_string($value);
  21.                         $query = __('Municipality', 'iwasc');
  22.                         break;
  23.                     case 'name':
  24.                         $field = $single_prefix.'ime';
  25.                         $filtered_search[$field] = mysql_real_escape_string($value);
  26.                         $query = __('Name', 'iwasc');
  27.                         break;
  28.                     case 'address':
  29.                         $field = $multi_prefix.'naslov';
  30.                         $filtered_search[$field] = mysql_real_escape_string($value);
  31.                         $query = __('Address', 'iwasc');
  32.                         break;
  33.                     case 'telephone':
  34.                         $field = $single_prefix.'telefon';
  35.                         $filtered_search[$field] = mysql_real_escape_string($value);
  36.                         $query = __('Telephone number', 'iwasc');
  37.                         break;
  38.                     case 'email':
  39.                         $field = $single_prefix.'eposta';
  40.                         $filtered_search[$field] = mysql_real_escape_string($value);
  41.                         $query = __('E-mail address', 'iwasc');
  42.                         break;
  43.                     case 'web':
  44.                         $field = $single_prefix.'povezava';
  45.                         $filtered_search[$field] = mysql_real_escape_string($value);
  46.                         $query = __('Website URL', 'iwasc');
  47.                         break;
  48.                     case 'pin':
  49.                         $field = $single_prefix.'maticna';
  50.                         $filtered_search[$field] = mysql_real_escape_string($value);
  51.                         $query = __('PIN', 'iwasc');
  52.                         break;
  53.                     case 'tin':
  54.                         $field = $single_prefix.'ddv_id';
  55.                         $filtered_search[$field] = mysql_real_escape_string($value);
  56.                         $query = __('Tax ID', 'iwasc');
  57.                         break;
  58.                     case 'iban':
  59.                         $field = $multi_prefix.'iban'; // since we merged all of them we use another custom field name
  60.                         $value = preg_replace('/ /', '', mysql_real_escape_string($value));
  61.                         $filtered_search[$field] = mysql_real_escape_string($value);
  62.                         $query = __('IBAN', 'iwasc');
  63.                         break;
  64.                     case 'bank':
  65.                         $field = $multi_prefix.'banka'; // since we merged all of them we use another custom field name
  66.                         $filtered_search[$field] = mysql_real_escape_string($value);
  67.                         $query = __('Bank', 'iwasc');
  68.                         break;
  69.                     case 'principal':
  70.                         $field = $single_prefix.'glavna_dejavnost';
  71.                         $filtered_search[$field] = mysql_real_escape_string($value);
  72.                         $query = __('Principal occupation', 'iwasc');
  73.                         break;
  74.                     default:
  75.                         $field = false;
  76.                         $query = false;
  77.                         $filtered_search[$field] = false;
  78.                 }
  79.             }
  80.             else {
  81.                 switch($key) {
  82.             case 'region':
  83.                         $field = 'regija';
  84.                         $filtered_search[$field] = false;
  85.                         $query = __('Region', 'iwasc');
  86.                         break;
  87.             case 'municipality':
  88.                         $field = $single_prefix.'obcina';
  89.                         $filtered_search[$field] = false;
  90.                         $query = __('Municipality', 'iwasc');
  91.                         break;
  92.                     case 'name':
  93.                         $field = $single_prefix.'ime';
  94.                         $filtered_search[$field] = false;
  95.                         $query = __('Name', 'iwasc');
  96.                         break;
  97.                     case 'address':
  98.                         $field = $multi_prefix.'naslov';
  99.                         $filtered_search[$field] = false;
  100.                         $query = __('Address', 'iwasc');
  101.                         break;
  102.                     case 'telephone':
  103.                         $field = $single_prefix.'telefon';
  104.                         $filtered_search[$field] = false;
  105.                         $query = __('Telephone number', 'iwasc');
  106.                         break;
  107.                     case 'email':
  108.                         $field = $single_prefix.'eposta';
  109.                         $filtered_search[$field] = false;
  110.                         $query = __('E-mail address', 'iwasc');
  111.                         break;
  112.                     case 'web':
  113.                         $field = $single_prefix.'povezava';
  114.                         $filtered_search[$field] = false;
  115.                         $query = __('Website URL', 'iwasc');
  116.                         break;
  117.                     case 'pin':
  118.                         $field = $single_prefix.'maticna';
  119.                         $filtered_search[$field] = false;
  120.                         $query = __('PIN', 'iwasc');
  121.                         break;
  122.                     case 'tin':
  123.                         $field = $single_prefix.'ddv_id';
  124.                         $filtered_search[$field] = false;
  125.                         $query = __('Tax ID', 'iwasc');
  126.                         break;
  127.                     case 'iban':
  128.                         $field = $multi_prefix.'iban'; // since we merged all of them we use another custom field name
  129.                         $value = preg_replace('/ /', '', false);
  130.                         $filtered_search[$field] = false;
  131.                         $query = __('IBAN', 'iwasc');
  132.                         break;
  133.                     case 'bank':
  134.                         $field = $multi_prefix.'banka'; // since we merged all of them we use another custom field name
  135.                         $filtered_search[$field] = false;
  136.                         $query = __('Bank', 'iwasc');
  137.                         break;
  138.                     case 'principal':
  139.                         $field = $single_prefix.'glavna_dejavnost';
  140.                         $filtered_search[$field] = false;
  141.                         $query = __('Principal occupation', 'iwasc');
  142.                         break;
  143.                     default:
  144.                         $field = false;
  145.                         $query = false;
  146.                         $filtered_search[$field] = false;
  147.                 }
  148.             }
  149.             unset($key, $field, $query, $value);
  150.         }
  151.         unset($_GET['s']);
  152.         $total = count($filtered_search);
  153.         if ($total > 0) {
  154.             $meta_query = array('relation' => 'AND');
  155.             foreach($filtered_search as $key => $value) {
  156.                 array_push($meta_query, array(
  157.                     'key' => $key,
  158.                     'value' => $value,
  159.                     'compare' => 'LIKE',
  160.                     'type' => 'CHAR'
  161.                 ));
  162.                 unset($key, $value);
  163.             }
  164.             $search_args = array(
  165.                 'post_type' => $postType,
  166.                 'post_status' => 'publish', // else we get all the drafts as well :P
  167.                 'meta_query' => $meta_query,
  168.         'post_per_page' => 10
  169.             );
  170.             $advanced_results = (in_array(true, $filtered_search)) ? new WP_Query($search_args) : false;
  171.             return array($advanced_results, $advanced_query);
  172.         }
  173.         else {
  174.             return false;
  175.         }
  176.     }
  177.     else {
  178.         return false;
  179.     }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement