From 091c51ce96155fb09d4161d4256c3f46cae6f2cf Mon Sep 17 00:00:00 2001 From: kevin_fourie Date: Thu, 2 Aug 2007 12:19:06 +0000 Subject: [PATCH] Merged in from DEV trunk... --- lib/browse/Criteria.inc | 5 ++++- lib/browse/PartialQuery.inc.php | 10 +++++++--- lib/search/searchutil.inc.php | 30 ++++++++++++++++++------------ 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/lib/browse/Criteria.inc b/lib/browse/Criteria.inc index f4e8d55..a20d1d2 100644 --- a/lib/browse/Criteria.inc +++ b/lib/browse/Criteria.inc @@ -1036,8 +1036,11 @@ class SearchableTextCriterion extends BrowseCriterion { continue; } $keywords[$i] = '%'.$keywords[$i].'%'; + if($i > 0){ + $p[0] .= ' AND '; + } + $p[0] .= "DST.document_text LIKE ?"; } - $p[0] = "DST.document_text LIKE ? AND DST.document_text LIKE ? "; $p[1] = $keywords; }else{ $p[0] = "DST.document_text LIKE ? "; diff --git a/lib/browse/PartialQuery.inc.php b/lib/browse/PartialQuery.inc.php index 380075e..70bc2e7 100644 --- a/lib/browse/PartialQuery.inc.php +++ b/lib/browse/PartialQuery.inc.php @@ -306,8 +306,11 @@ class SimpleSearchQuery extends PartialQuery { if(count($keywords) > 1){ for($i=0; $i 0){ + $aPotentialWhereString .= ' AND '; + } + $aPotentialWhereString .= 'FST.folder_text LIKE ?'; + } }else{ $aPotentialWhereString = 'FST.folder_text LIKE ? '; } @@ -339,7 +342,8 @@ class SimpleSearchQuery extends PartialQuery { $aParams = array($this->searchable_text); } - $aParams = kt_array_merge($aPermissionParams, $aParams); + $aParams = kt_array_merge($aPermissionParams, $aParams); + return array($sQuery, $aParams); } diff --git a/lib/search/searchutil.inc.php b/lib/search/searchutil.inc.php index 3499892..a76b2b2 100644 --- a/lib/search/searchutil.inc.php +++ b/lib/search/searchutil.inc.php @@ -56,7 +56,7 @@ class KTSearchUtil { $type = KTUtil::arrayGet($dataset, "type"); $sql = KTUtil::arrayGet($dataset, "sql"); if (!empty($type)) { - $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); + $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton(); $oCriterion = $oCriteriaRegistry->getCriterion($dataset['type']); if (PEAR::isError($oCriterion)) { return PEAR::raiseError(_kt('Invalid criteria specified.')); @@ -75,6 +75,7 @@ class KTSearchUtil { foreach ($criteria_set as $oCriterionPair) { $oCriterion = $oCriterionPair[0]; $aReq = $oCriterionPair[1]; + if (is_object($oCriterion)) { $res = $oCriterion->searchSQL($aReq); if (!is_null($res)) { @@ -136,6 +137,7 @@ class KTSearchUtil { * subgroups at the top level, even though we most often only * have a single "subgroup". */ + foreach ($aCriteriaSet["subgroup"] as $k => $aOneCriteriaSet) { /* * Each subgroup will either have values or it will have @@ -144,15 +146,15 @@ class KTSearchUtil { $aValues = KTUtil::arrayGet($aOneCriteriaSet, "values"); $aSubgroup = KTUtil::arrayGet($aOneCriteriaSet, "subgroup"); if (!empty($aValues)) { - $res = KTSearchUtil::_oneCriteriaSetToSQL($aOneCriteriaSet["values"]); - if(PEAR::isError($res)) { - return $res; - } - list($aThisCritQueries, $aThisParams, $aThisJoinSQL) = $res; - $aJoinSQL = kt_array_merge($aJoinSQL, $aThisJoinSQL); - $aParams = kt_array_merge($aParams, $aThisParams); - $tabs = str_repeat("\t", ($iRecurseLevel + 2)); - $aSearchStrings[] = "\n$tabs(\n$tabs\t" . join("\n " . KTUtil::arrayGet($aOneCriteriaSet, 'join', "AND") . " ", $aThisCritQueries) . "\n$tabs)"; + $res = KTSearchUtil::_oneCriteriaSetToSQL($aOneCriteriaSet["values"]); + if(PEAR::isError($res)) { + return $res; + } + list($aThisCritQueries, $aThisParams, $aThisJoinSQL) = $res; + $aJoinSQL = kt_array_merge($aJoinSQL, $aThisJoinSQL); + $aParams = kt_array_merge($aParams, $aThisParams); + $tabs = str_repeat("\t", ($iRecurseLevel + 2)); + $aSearchStrings[] = "\n$tabs(\n$tabs\t" . join("\n " . KTUtil::arrayGet($aOneCriteriaSet, 'join', "AND") . " ", $aThisCritQueries) . "\n$tabs)"; } else if (!empty($aSubgroup)) { /* * Recurse if we have a criteria set with subgroups. @@ -170,6 +172,7 @@ class KTSearchUtil { $sJoinSQL = join(" ", $aJoinSQL); $tabs = str_repeat("\t", $iRecurseLevel + 1); $sSearchString = "\n$tabs(" . join("\n$tabs\t" . $aCriteriaSet['join'] . " ", $aSearchStrings) . "\n$tabs)"; + return array($sSearchString, $aParams, $sJoinSQL); } // }}} @@ -260,12 +263,14 @@ class KTSearchUtil { } $res = KTSearchUtil::criteriaSetToSQL($aCriteriaSet); + if(PEAR::isError($res)) return $res; list($sSQLSearchString, $aCritParams, $sCritJoinSQL) = $res; - + $sToSearch = KTUtil::arrayGet($aOrigReq, 'fToSearch', 'Live'); // actually never present in this version. $res = KTSearchUtil::permissionToSQL($oUser, $sPermissionName); + if (PEAR::isError($res)) { // only occurs if the group has no permissions. return $res; } else { @@ -278,6 +283,7 @@ class KTSearchUtil { * trailing ANDs. */ $aPotentialWhere = array($sPermissionString, 'SL.name = ?', "($sSQLSearchString)"); + $aWhere = array(); foreach ($aPotentialWhere as $sWhere) { if (empty($sWhere)) { @@ -287,6 +293,7 @@ class KTSearchUtil { continue; } $aWhere[] = $sWhere; + } $sWhere = ""; if ($aWhere) { @@ -320,7 +327,6 @@ class KTSearchUtil { $aParams = kt_array_merge($aParams, $aPermissionParams); $aParams[] = $sToSearch; $aParams = kt_array_merge($aParams, $aCritParams); - return array($sQuery, $aParams); } // }}} -- libgit2 0.21.4