function doSearch($searchString,$searchStyle,$useAllWords,$ajaxSearch) {
if ($ajaxSearch) {
$table_prefix = connectForAjax();
} else {
global $modx;
}
$search = explode(" ", $searchString);
if ($ajaxSearch) {
$tbl_sc = $table_prefix . "site_content";
$tbl_dg = $table_prefix . "document_groups";
} else {
$tbl_sc = $modx->dbConfig['dbase'] . "." . $modx->dbConfig['table_prefix'] . "site_content";
$tbl_dg = $modx->dbConfig['dbase'] . "." . $modx->dbConfig['table_prefix'] . "document_groups";
}
if ($docgrp = $modx->getUserDocGroups()) {
$docgrp = implode(",", $docgrp);
$tbl_sql = " LEFT JOIN $tbl_dg dg ON sc.id = dg.document";
$qry_sql = "(ISNULL(dg.document_group) OR dg.document_group IN ($docgrp)) AND ";
} else {
$tbl_sql = "";
$qry_sql = "sc.privateweb = 0 AND ";
}
if ($searchStyle == 'partial'){
$sql = "SELECT DISTINCT sc.id, sc.pagetitle, sc.description, sc.content ";
$sql .= "FROM $tbl_sc sc" . $tbl_sql . " WHERE ";
if (count($search)>1 && $useAllWords){
foreach ($search as $searchTerm){
$sql .= "(sc.pagetitle LIKE '%$searchString%' OR sc.description LIKE '%$searchString%' OR sc.content LIKE '%$searchTerm%') AND ";
}
} else {
$sql .= "(sc.pagetitle LIKE '%$searchString%' OR sc.description LIKE '%$searchString%' OR sc.content LIKE '%$searchString%') AND ";
}
$sql .= $qry_sql . "sc.published = 1 AND sc.searchable=1 AND sc.deleted=0;";
} else {
$sql = "SELECT DISTINCT sc.id, sc.pagetitle, sc.description, sc.content ";
$sql .= "FROM $tbl_sc" . $tbl_sql . " sc WHERE ";
if (count($search)>1 && $useAllWords){
foreach ($search as $searchTerm){
$sql .= "MATCH (sc.pagetitle, sc.longtitle, sc.introtext, sc.description, sc.content) AGAINST ('$searchTerm') AND ";
}
} else {
$sql .= "MATCH (sc.pagetitle, sc.longtitle, sc.introtext, sc.description, sc.content) AGAINST ('$searchString') AND ";
}
$sql .= $qry_sql . "sc.published = 1 AND sc.searchable=1 AND sc.deleted=0;";
}
if ($ajaxSearch) {
$rs = mysql_query($sql) or die ("Cannot query the database ($sql)");
} else {
$rs = $modx->dbQuery($sql);
}
return $rs;
}
This discussion is closed to further replies. Keep calm and carry on.