Execute($sql_query); while (!$rs_app->EOF) { $variables[$rs_app->fields['name']] = $rs_app->fields['value']; $rs_app->MoveNext(); } // Template $output = new Template(); //Function to sort the results array function ArraySort($a,$subkey,$order) { foreach($a as $k=>$v) { $b[$k] = strtolower($v[$subkey]); } if ($order == "desc") { arsort($b); } else { asort($b); } foreach($b as $key=>$val) { $c[] = $a[$key]; } return $c; } //Function to get path function GetLink($structure_id,$content_id) { if ($structure_id == "") { $sql_cs_query = 'SELECT * FROM bCMS_contents_to_structures cs INNER JOIN bCMS_elements e on cs.structure_id=e.structure_id INNER JOIN bCMS_applications_listing al on al.content_id=e.element_type_id WHERE cs.structure_id != 1 AND cs.content_id='.$content_id; $rs_cs = $GLOBALS['ddb']->Execute($sql_cs_query); $structure_id = $rs_cs->fields['structure_id']; $content_type = "news"; } $sql_query = 'SELECT * FROM bCMS_structures WHERE structure_id='.$structure_id; $rs = $GLOBALS['ddb']->Execute($sql_query); $rs->fields['content_id'] = $content_id; if (!$rs->EOF) { if (($rs->fields['structure_id'] !=0 )and($rs->fields['structure_id'] !=1)) { $navigations = GetLink($rs->fields['parent_id'],$content_id); $navigations .= $rs->fields['directory'].'/'; //$prevname = $rs->fields['directory']; } } else if($structure_id != "0") $navigations = "mobile"; if ($content_type == "news") $navigations .= "index.php?content_id=" . $content_id; if ($structure_id == "") $navigations = "mobile"; return $navigations; } $whereclause = "WHERE ((s.display = 'Show') or (s.display IS NULL)) AND ((s.report = 'Enabled') or (s.report IS NULL)) AND c.display = 'Show' AND "; if ($_REQUEST['search-terms'] != "") { //$whereclause .= "((p.body LIKE '%".$_REQUEST['search-terms']."%') or (c.name LIKE '%".$_REQUEST['search-terms']."%'))"; $whereclause .= " ((match(p.body) against (\"+".$_REQUEST['search-terms']."\" IN BOOLEAN MODE)) or (match(c.name) against (\"+".$_REQUEST['search-terms']."\" IN BOOLEAN MODE)) or (match(s.keywords) against (\"+".$_REQUEST['search-terms']."\" IN BOOLEAN MODE)))"; } else { $errors['message'] = 'No term submitted'; } if (empty($errors)) { $sql_query_search = 'SELECT p.page_id, p.body, p.page_number, p.date_modified, p.display as pagedisplay, c.content_id, c.name AS contentname, c.redirect as contentredirect, c.description, c.date_start, c.date_stamp, c.display as contentdisplay, e.element_type_id, e.structure_id, s.structure_id, s.parent_id, s.order_id, s.directory, s.keywords, s.redirect, s.name AS structurename, s.status, s.display as structuredisplay FROM bCMS_contents c LEFT JOIN bCMS_pages p ON p.content_id=c.content_id LEFT JOIN bCMS_elements e ON e.element_type_id=c.content_id LEFT JOIN bCMS_structures s ON e.structure_id=s.structure_id '.$whereclause . ' ORDER BY s.parent_id DESC'; $rs_search = $GLOBALS['ddb']->Execute($sql_query_search); //echo $sql_query_search; $count = 0; while (!$rs_search->EOF) { if ($rs_search->fields['structurename'] == "") { $rs_search->fields['name'] = $rs_search->fields['contentname']; } else { $rs_search->fields['name'] = $rs_search->fields['structurename']; } $body2 = str_ireplace($_REQUEST['search-terms'], "", $rs_search->fields['body']); $content2 = str_ireplace($_REQUEST['search-terms'], "", $rs_search->fields['name']); $keywords2 = str_ireplace($_REQUEST['search-terms'], "", $rs_search->fields['keywords']); $stringlength = strlen($_REQUEST['search-terms']); $pagelength1 = strlen($rs_search->fields['body']); $pagelength2 = strlen($body2); $contentlength1 = strlen($rs_search->fields['name']); $contentlength2 = strlen($content2); $keywordslength1 = strlen($rs_search->fields['keywords']); $keywordslength2 = strlen($keywords2); $matches1 = ($pagelength1 - $pagelength2) / $stringlength; $matches2 = ($contentlength1 - $contentlength2) / $stringlength; $matches3 = ($keywordslength1 - $keywordslength2) / $stringlength; $rs_search->fields['matches'] = $matches1 + $matches2 + $matches3; $rs_search->fields['body'] = strip_tags($rs_search->fields['body']); $rs_search->fields['name'] = strip_tags($rs_search->fields['name']); if ($rs_search->fields['name'] == "Overview") { $sql_query_name = 'SELECT name FROM bCMS_structures WHERE structure_id='.$rs_search->fields['parent_id']; $rs_name = $GLOBALS['ddb']->Execute($sql_query_name); $rs_search->fields['name'] = $rs_name->fields['name'] . " - " . $rs_search->fields['name']; } $rs_search->fields['body'] = str_ireplace(" ", " ", $rs_search->fields['body']); //Find first occurrence of term $first = stripos($rs_search->fields['body'], $_REQUEST['search-terms']); if ($first < 250) { $rs_search->fields['body'] = substr($rs_search->fields['body'], 0, 255); } else { $rs_search->fields['body'] = "..." . substr($rs_search->fields['body'], $first-50, 200); } $rs_search->fields['name'] = substr($rs_search->fields['name'], 0, 255); //$rs_search->fields['name'] = preg_replace("/\b".preg_quote($_REQUEST['search-terms'])."\b/i", "$0", $rs_search->fields['name']); //$rs_search->fields['body'] = preg_replace("/\b".preg_quote($_REQUEST['search-terms'])."\b/i", "$0", $rs_search->fields['body']); if ($rs_search->fields['body'] != "") $rs_search->fields['body'] .= "..."; if ($rs_search->fields['status'] == "") $rs_search->fields['date_modified'] = $rs_search->fields['date_stamp']; //Get link for result $rs_search->fields['link'] = GetLink($rs_search->fields['structure_id'],$rs_search->fields['content_id']); //Give results a weight for relevancy sorting (higher weight = higher on the results list) $rs_search->fields['display_weight'] = $rs_search->fields['matches']; if ($rs_search->fields['structure_id'] > 0) $rs_search->fields['display_weight'] = $rs_search->fields['display_weight'] + 0.5; if ($matches2 > 0) $rs_search->fields['display_weight'] = $rs_search->fields['display_weight'] + 5.5; if ($first < 250) $rs_search->fields['display_weight'] = $rs_search->fields['display_weight'] + 1.5; $separate_content = strpos($rs_search->fields['link'], "content_id"); if ($separate_content === false) $rs_search->fields['display_weight'] = $rs_search->fields['display_weight'] + 15.5; //Push search matches on structure names to top of relevancy list if (($separate_content === false) and ($matches2 > 0)) $rs_search->fields['display_weight'] = $rs_search->fields['display_weight'] + 55.5; if ($rs_search->fields['contentredirect'] != "") $rs_search->fields['link'] = $rs_search->fields['contentredirect']; //Count slashes for sitemap display $slashcount = substr_count($rs_search->fields['link'], '/'); $rs_search->fields['sitemap_level'] = $slashcount; //only include if not mobile and page redirect results and add others to array $mobile = strpos($rs_search->fields['link'], "mobile"); if (($mobile === false) and (trim($rs_search->fields['redirect']) == "")) { if ($rs_search->fields['matches'] > 0) { $list_search_results[] = $rs_search->fields; $count++; //echo $rs_search->fields['link']."---".$count."
"; } } $rs_search->MoveNext(); } if ($_REQUEST['sort'] == "date") { $list_search_results = ArraySort($list_search_results,'date_modified','desc'); } else if($_REQUEST['sort'] == "match") { $list_search_results = ArraySort($list_search_results,'matches','desc'); } else { $list_search_results = ArraySort($list_search_results,'display_weight','desc'); } if ($count == 0) $errors['message'] = '

No results found. Try again in the box above or try Google site search.

'; if ($_REQUEST['sort'] == "match") { $sort_display = "
Sort by: Relevancy | Matches | Date
"; } else if ($_REQUEST['sort'] == "date") { $sort_display = "
Sort by: Relevancy | Matches | Date
"; } else { $sort_display = "
Sort by: Relevancy | Matches | Date
"; } $total_time = round((microtime(1) - $start), 4); $originalArray = $list_search_results; $newArray = array(); $usedArray = array(); foreach ( $originalArray AS $line ) { if ( !in_array($line['link'], $usedArray) ) { $usedArray[] = $line['link']; $newArray[] = $line; } else $count--; } $list_search_results = $newArray; unset($newArray,$usedArray); //Get and display page info $total_pages = ceil($count / $results_per_page); if ($total_pages > 1) { if ($_REQUEST['page'] > 1) $display_page_links .= "« Previous "; for ($i = 1; $i <= $total_pages; $i++) { if ($_REQUEST['page'] == $i) { $display_page_links .= "".$i." "; } else { $display_page_links .= "".$i." "; } } if (($total_pages > 1) and ($_REQUEST['page'] != $total_pages)) $display_page_links .= "Next » "; } $results_portion1 = (($_REQUEST['page']-1) * $results_per_page) +1; if ($_REQUEST['page'] == $total_pages) { $results_portion2 = $count; } else { $results_portion2 = $_REQUEST['page'] * $results_per_page; } //print_r($list_search_results); $output->AssignVariable('list_search_results',$list_search_results); $output->AssignVariable('message',$errors['message']); $output->AssignVariable('results_num',$count); $output->AssignVariable('results_time',"Results ".$results_portion1."-".$results_portion2." of ".$count." for \"".$_REQUEST['search-terms']."\"
(".$total_time." seconds)

"); $output->AssignVariable('sorting',$sort_display); $output->AssignVariable('display_page_links',"
".$display_page_links."
"); $output->AssignVariable('prevsearch',$_REQUEST['search-terms']); $output->AssignVariable('sort',$_REQUEST['sort']); $output->AssignVariable('loop_start',($_REQUEST['page']-1)*$results_per_page); $output->AssignVariable('loop_max',$results_per_page); } $output->SetTemplateFilename($CUSTOM_TEMPLATE_PATH.'template.htm'); ?>