if ($_SESSION[$strTableName . "_mastertable"] != $masterTablesInfoArr[$i]['mDataSourceTable']) { continue; } if ($masterTablesInfoArr[$i]['dispInfo']) { $masterPSet = new ProjectSettings($masterTablesInfoArr[$i]['mDataSourceTable'], PAGE_SEARCH); $masterControls = new EditControlsContainer(null, $masterPSet, PAGE_LIST, new RunnerCipherer($masterTablesInfoArr[$i]['mDataSourceTable'], $masterPSet)); $detailKeys = $masterTablesInfoArr[$i]['detailKeys']; for ($j = 0; $j < count($detailKeys); $j++) { $masterWhere .= " and " . $masterControls->getControl($detailKeys[$j])->getSuggestWhere('Equals', @$_SESSION[$strTableName . "_masterkey" . ($j + 1)]); } } break; } } $cipherer = new RunnerCipherer($strTableName); $controls = new EditControlsContainer(null, $pSet, PAGE_LIST, $cipherer); $result = array(); // traversing searchable fields foreach ($allSearchFields as $f) { // filter fields by type $fType = $pSet->getFieldType($f); if (!IsCharType($fType) && !IsNumberType($fType) && !IsGuid($fType) || in_array($f, $detailKeys)) { continue; } if ($_connection->dbType == nDATABASE_Oracle && IsTextType($fType)) { continue; } if ($searchField != '' && $searchField != GoodFieldName($f) || !$pSet->checkFieldPermissions($f)) { continue; } $fieldControl = $controls->getControl($f);
$searchOpt = postvalue("start") ? "Starts with" : "Contains"; $searchField = GoodFieldName(postvalue('searchField')); $strSecuritySql = SecuritySQL("Search", $strTableName); $numberOfSuggests = GetGlobalData("searchSuggestsNumber", 10); $pSet = new ProjectSettings($strTableName, PAGE_SEARCH); if ($searchField == "") { $allSearchFields = $pSet->getGoogleLikeFields(); } else { // array of fields which were added in wizard for search $allSearchFields = $pSet->getAllSearchFields(); } require_once getabspath('classes/controls/EditControlsContainer.php'); $detailKeys = array(); $masterWhere = ""; $cipherer = new RunnerCipherer($strTableName); $controls = new EditControlsContainer(null, $pSet, PAGE_LIST, $cipherer); if (@$_SESSION[$strTableName . "_mastertable"] != "") { $masterTablesInfoArr = $pSet->getMasterTablesArr($strTableName); for ($i = 0; $i < count($masterTablesInfoArr); $i++) { if ($_SESSION[$strTableName . "_mastertable"] != $masterTablesInfoArr[$i]['mDataSourceTable']) { continue; } if ($masterTablesInfoArr[$i]['dispInfo']) { $detailKeys = $masterTablesInfoArr[$i]['detailKeys']; for ($j = 0; $j < count($detailKeys); $j++) { $masterWhere .= " and " . $controls->getControl($detailKeys[$j])->getSuggestWhere('Equals', @$_SESSION[$strTableName . "_masterkey" . ($j + 1)]); } } break; } }
$masterKeys = array(); for ($i = 0; $i < count($masterTablesInfoArr); $i++) { if ($_SESSION[$sessionPrefix . "_mastertable"] == $masterTablesInfoArr[$i]['mDataSourceTable']) { if ($masterTablesInfoArr[$i]['dispInfo']) { $masterPSet = new ProjectSettings($masterTablesInfoArr[$i]['mDataSourceTable'], PAGE_SEARCH); $masterControls = new EditControlsContainer(null, $masterPSet, PAGE_LIST, new RunnerCipherer($masterTablesInfoArr[$i]['mDataSourceTable'], $masterPSet)); $detailKeys = $masterTablesInfoArr[$i]['detailKeys']; for ($j = 0; $j < count($detailKeys); $j++) { $masterWhere .= " and " . $masterControls->getControl($detailKeys[$j])->SQLWhere(@$_SESSION[$sessionPrefix . "_masterkey" . ($j + 1)], 'Equals', "", "", true); } } break; } } } $controls = new EditControlsContainer(null, $pSet, PAGE_LIST, $cipherer); // proccess fields and create sql foreach ($allSearchFields as $f) { $fType = $pSet->getFieldType($f); // filter fields by type if (!IsCharType($fType) && !IsNumberType($fType) && !IsGuid($fType) || in_array($f, $detailKeys)) { continue; } else { } // get suggest for field if (($searchField == '' || $searchField == GoodFieldName($f)) && $pSet->checkFieldPermissions($f)) { $where = ""; $having = ""; if (!$gQuery->IsAggrFuncField($pSet->getFieldIndex($f) - 1)) { $where = $searchClauseObj->getSuggestWhere($controls->getControl($f), $suggestAllContent, $searchFor); } elseif ($gQuery->IsAggrFuncField($pSet->getFieldIndex($f) - 1)) {