diff --git a/presentation/lookAndFeel/knowledgeTree/js/constructed_search.js b/presentation/lookAndFeel/knowledgeTree/js/constructed_search.js
index e482a60..4752378 100644
--- a/presentation/lookAndFeel/knowledgeTree/js/constructed_search.js
+++ b/presentation/lookAndFeel/knowledgeTree/js/constructed_search.js
@@ -19,6 +19,22 @@ function removeFromElementEvent(elem, event_name, func) {
}
}
+var booleanGroups = Array();
+
+function getBooleanGroupId(table) {
+ for (var i=0; i of the criteria specified.
';
+ t = DIV(null);
+ t.innerHTML = groupingString;
+ var paraObj = t.getElementsByTagName('P')[0];
+ fieldsetObj.insertBefore(paraObj, tableObj);
+
+ // add a basic item to the table.
+ createAdditionalCriteriaOption(tableObj);
+ // done.
+ simpleLog('DEBUG','done adding boolean group.');
+}
+
+// FIXME do we want a "remove boolean group" setting?
+// FIXME yes, and its easy (find parent, find ITS parent, toast.)
+function initialiseChecks() {
+
+ var initialTables = getElementsByTagAndClassName('TABLE','advanced-search-form');
+ simpleLog('DEBUG','initialising '+initialTables.length+' criteria groups.');
+ var t = TABLE(null);
+ for (var i=0; ierrorRedirectToMain('You need to have at least 1 condition.');
@@ -59,23 +59,24 @@ class BooleanSearchDispatcher extends KTStandardDispatcher {
// Step 1: extract the criteria selection, and create an array of criteria.
$criteria_set = array();
- foreach ($datavars as $order => $dataset) {
- $oCriterion = Criteria::getCriterionByNumber($dataset["type"]);
- if (PEAR::isError($oCriterion)) {
- $this->errorRedirectToMain('Invalid criteria specified.');
+ foreach (array_keys($datavars) as $k) {
+ foreach ($datavars[$k] as $order => $dataset) {
+ $oCriterion = Criteria::getCriterionByNumber($dataset["type"]);
+ if (PEAR::isError($oCriterion)) {
+ $this->errorRedirectToMain('Invalid criteria specified.');
+ }
+ $criteria_set[$k][] = array($oCriterion, $dataset["data"]);
}
- $criteria_set[] = array($oCriterion, $dataset["data"]);
}
- $res = $this->handleCriteriaSet($criteria_set, $booleanJoinName);
+ $res = $this->handleCriteriaSet($criteria_set, $booleanJoinName, $_REQUEST['boolean_condition']);
return $res;
}
-
- function handleCriteriaSet($aCriteriaSet, $mergeType='AND') {
- global $default;
- $aSQL = array();
- $aJoinSQL = array();
- foreach ($aCriteriaSet as $oCriterionPair) {
+
+ function _oneCriteriaSetToSQL($aOneCriteriaSet) {
+ $aSQL = array();
+ $aJoinSQL = array();
+ foreach ($aOneCriteriaSet as $oCriterionPair) {
$oCriterion = $oCriterionPair[0];
$aReq = $oCriterionPair[1];
$res = $oCriterion->searchSQL($aReq);
@@ -104,8 +105,27 @@ class BooleanSearchDispatcher extends KTStandardDispatcher {
exit(0);
}
- $sSQLSearchString = join("\n ".$mergeType." ", $aCritQueries);
+ return array($aCritQueries, $aCritParams, $aJoinSQL);
+ }
+
+ function criteriaSetToSQL($aCriteriaSet, $mergeType='AND', $innerMergeTypes = null) {
+ $aJoinSQL = array();
+ $aSearchStrings = array();
+ $aParams = array();
+ foreach ($aCriteriaSet as $k => $aOneCriteriaSet) {
+ list($aThisCritQueries, $aThisParams, $aThisJoinSQL) = $this->_oneCriteriaSetToSQL($aOneCriteriaSet);
+ $aJoinSQL = array_merge($aJoinSQL, $aThisJoinSQL);
+ $aParams = array_merge($aParams, $aThisParams);
+ $aSearchStrings[] = "\n\t\t(\n\t\t\t" . join("\n " . KTUtil::arrayGet($innerMergeTypes, $k, "AND") . " ", $aThisCritQueries) . "\n\t\t)";
+ }
$sJoinSQL = join(" ", $aJoinSQL);
+ $sSearchString = "\n\t(" . join("\n\t\t" . $mergeType . " ", $aSearchStrings) . "\n\t)";
+ return array($sSearchString, $aParams, $sJoinSQL);
+ }
+
+ function handleCriteriaSet($aCriteriaSet, $mergeType='AND', $innerMergeTypes = null) {
+ global $default;
+ list($sSQLSearchString, $aCritParams, $sJoinSQL) = $this->criteriaSetToSQL($aCriteriaSet, $mergeType);
$sToSearch = KTUtil::arrayGet($aOrigReq, 'fToSearch', 'Live'); // actually never present in this version.
@@ -141,7 +161,7 @@ class BooleanSearchDispatcher extends KTStandardDispatcher {
$aParams[] = $sToSearch;
$aParams = array_merge($aParams, $aCritParams);
- //''.var_dump(DBUtil::getResultArray(array($sQuery, $aParams)));
+ //print '';var_dump(DBUtil::getResultArray(array($sQuery, $aParams)));
//exit(0);
//return ''.print_r(DBUtil::getResultArray(array($sQuery, $aParams)), true).'
';
$iStartIndex = 1;
diff --git a/templates/ktcore/boolean_search.smarty b/templates/ktcore/boolean_search.smarty
index be525c1..80cbcbe 100644
--- a/templates/ktcore/boolean_search.smarty
+++ b/templates/ktcore/boolean_search.smarty
@@ -50,12 +50,15 @@ legend { border: 1px dotted #999;}