From d7cbe3a4cd6aa024c597a435f96bceb324a490fb Mon Sep 17 00:00:00 2001 From: nbm Date: Wed, 21 Dec 2005 15:04:50 +0000 Subject: [PATCH] Moved search from presentation/lookAndFeel/knowledgeTree/ to / --- presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php | 62 -------------------------------------------------------------- presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc | 143 ----------------------------------------------------------------------------------------------------------------------------------------------- presentation/lookAndFeel/knowledgeTree/search/advancedSearchUtil.inc | 155 ----------------------------------------------------------------------------------------------------------------------------------------------------------- presentation/lookAndFeel/knowledgeTree/search/ajaxBooleanSearch.php | 46 ---------------------------------------------- presentation/lookAndFeel/knowledgeTree/search/booleanSearch.php | 114 ------------------------------------------------------------------------------------------------------------------ presentation/lookAndFeel/knowledgeTree/search/simpleSearch.php | 111 --------------------------------------------------------------------------------------------------------------- search/advancedSearchBL.php | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ search/advancedSearchUI.inc | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ search/advancedSearchUtil.inc | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ search/ajaxBooleanSearch.php | 45 +++++++++++++++++++++++++++++++++++++++++++++ search/booleanSearch.php | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ search/simpleSearch.php | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 12 files changed, 626 insertions(+), 631 deletions(-) delete mode 100644 presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php delete mode 100644 presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc delete mode 100644 presentation/lookAndFeel/knowledgeTree/search/advancedSearchUtil.inc delete mode 100644 presentation/lookAndFeel/knowledgeTree/search/ajaxBooleanSearch.php delete mode 100644 presentation/lookAndFeel/knowledgeTree/search/booleanSearch.php delete mode 100644 presentation/lookAndFeel/knowledgeTree/search/simpleSearch.php create mode 100755 search/advancedSearchBL.php create mode 100644 search/advancedSearchUI.inc create mode 100644 search/advancedSearchUtil.inc create mode 100755 search/ajaxBooleanSearch.php create mode 100755 search/booleanSearch.php create mode 100644 search/simpleSearch.php diff --git a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php b/presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php deleted file mode 100644 index 27f500a..0000000 --- a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchBL.php +++ /dev/null @@ -1,62 +0,0 @@ -fileSystemRoot/lib/visualpatterns/PatternBrowsableSearchResults.inc"); - require_once("$default->fileSystemRoot/lib/visualpatterns/PatternEditableTableSqlQuery.inc"); - require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); - require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); - require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc"); - require_once("$default->fileSystemRoot/lib/security/Permission.inc"); - require_once("$default->fileSystemRoot/presentation/Html.inc"); - require_once("advancedSearchUI.inc"); - - require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); - - if (!isset($fStartIndex)) { - $fStartIndex = 1; - } - - if (strlen($fForSearch)) { - dealWithAdvancedSearch($_REQUEST, $fStartIndex); - } else { - //display search criteria - $oPatternCustom = & new PatternCustom(); - $oPatternCustom->setHtml(getSearchPage()); - $main->setHasRequiredFields(true); - $main->setCentralPayload($oPatternCustom); - $main->setFormAction($_SERVER["PHP_SELF"] . "?fForSearch=1"); - $main->render(); - } -} -?> diff --git a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc b/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc deleted file mode 100644 index 13588d5..0000000 --- a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUI.inc +++ /dev/null @@ -1,143 +0,0 @@ -fileSystemRoot/lib/browse/Criteria.inc"); - -function getMetaData($aMetaTagIDs) { - global $default; - /*ok*/ $sQuery = "SELECT name, id FROM $default->document_fields_table ORDER BY name ASC"; - - $sql = $default->db; - $sql->query($sQuery); - - $sToRender = "\n"; - $sToRender .= "\n"; - - $iRecordCount = 0; - $sCheckAllJavascript = ""; - while ($sql->next_record()) { - $sCheckAllJavascript .= "document.MainForm.f_adv_$iRecordCount.checked=value;\n"; - $sMetaDataCheckBox = "f("id"), $aMetaTagIDs) . " name=\"f_adv_$iRecordCount\" value=\"" . $sql->f("id") . "\">\n"; - } else if (($iRecordCount % 3) == 0) { - $sToRender .= "\n"; - } else { - $sToRender .= "\n"; - } - } - - $sToRender .= "\n"; - $sToRender .= "\n\n\n\n"; - $sToRender .= ""; - $sToRender .= "
" . $sql->f("name"); - $iRecordCount++; - if (($iRecordCount % 3) == 1) { - $sToRender .= "
$sMetaDataCheckBox$sMetaDataCheckBox
$sMetaDataCheckBox
\n"; - - return $sToRender; -} - -function getSearchPage($sSearchString = "", $aMetaTagIDs = array(), $sHeading = null, $bSearchArchive = false) { - global $default; - if (is_null($sHeading)) { - $sHeading = _("Advanced Search"); - } - - $sToRender = renderHeading($sHeading); - - $sToRender .= sprintf('

Want to use AND or OR? Use the - Boolean Search

', 'booleanSearch.php'); - - $sToRender .= "
"; - - $sToRender .= "\n"; - $sToRender .= ""; - $aBaseCriteria = Criteria::getBaseCriteria(); - foreach ($aBaseCriteria as $k => $v) { - $sToRender .= $v->searchDisplay($_REQUEST); - } - $sToRender .= ""; - $aGenericCriteria = Criteria::getGenericCriteria(); - foreach ($aGenericCriteria as $k => $v) { - $sToRender .= $v->searchDisplay($_REQUEST); - } - - if ($bSearchArchive) { - $sToRender .= ""; - } else { - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= "\n"; - $sToRender .= ""; - } - - $sToRender .= "

" . _("Document Data") . "

" . _("Document Fields") . "

 
" . _("Search") . ": " . _("Documents") . "
\n"; - $sToRender .= "\n"; - $sToRender .= "
"; - - return $sToRender . getSearchValidationJavaScript(); -} - -function getSearchValidationJavaScript() { - /*$sToRender = "\n\n\n\n"; - return $sToRender;*/ - return ""; -} - -function wasSelected($iID, $aMetaTagIDs) { - if (in_array($iID, $aMetaTagIDs)) { - return "CHECKED"; - } - return ""; -} - -function getSearchVariablesHtml($sSearchText, $sStatus, $sMetaTagIDs) { - $aMetaTagIDs = explode(",", $sMetaTagIDs); - $sToRender = "\n\n\n"; - $sToRender .= "\n\n\n"; - $sToRender .= "\n\n\n"; - $sToRender .= "\n"; - for ($i = 0; $i < count($aMetaTagIDs); $i++) { - $sToRender .= "\n"; - - } - $sToRender .= "\n"; - return $sToRender; -} -?> diff --git a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUtil.inc b/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUtil.inc deleted file mode 100644 index 6554ff7..0000000 --- a/presentation/lookAndFeel/knowledgeTree/search/advancedSearchUtil.inc +++ /dev/null @@ -1,155 +0,0 @@ -" . _("If your browser displays a 'Warning: Page has Expired' message when you attempt to return to these search results, please click your browser's 'Refresh' button") . ""; - - $aReq = array(); - foreach ($aOrigReq as $k => $v) { - if (searchCriteria($k) === 1) { - $v = trim($v); - if ($v === "") { - continue; - } - if ($v === "-1") { - continue; - } - $aReq[$k] = $v; - } - } - - $aIDs = array_unique(array_map("criteriaNumber", array_keys($aReq))); - $aSQL = array(); - $aJoinSQL = array(); - foreach ($aIDs as $iID) { - $oCriterion =& Criteria::getCriterionByNumber($iID); - $res = $oCriterion->searchSQL($aReq); - if (!is_null($res)) { - $aSQL[] = $res; - } - $res = $oCriterion->searchJoinSQL(); - if (!is_null($res)) { - $aJoinSQL[] = $res; - } - } - $aCritParams = array(); - $aCritQueries = array(); - foreach ($aSQL as $sSQL) { - if (is_array($sSQL)) { - $aCritQueries[] = $sSQL[0]; - $aCritParams = array_merge($aCritParams , $sSQL[1]); - } else { - $aCritQueries[] = $sSQL; - } - } - - if (count($aCritQueries) == 0) { - return "No search criteria were specified"; - } - - $sSQLSearchString = join(" AND ", $aCritQueries); - $sJoinSQL = join(" ", $aJoinSQL); - - $sToSearch = KTUtil::arrayGet($aOrigReq, 'fToSearch', 'Live'); - - $oPermission =& KTPermission::getByName('ktcore.permissions.read'); - $sPermissionLookupsTable = KTUtil::getTableName('permission_lookups'); - $sPermissionLookupAssignmentsTable = KTUtil::getTableName('permission_lookup_assignments'); - $sPermissionDescriptorsTable = KTUtil::getTableName('permission_descriptors'); - $aGroups = GroupUtil::listGroupsForUserExpand($_SESSION['userID']); - $aPermissionDescriptors = KTPermissionDescriptor::getByGroups($aGroups, array('ids' => true)); - $sPermissionDescriptors = DBUtil::paramArray($aPermissionDescriptors); - - $sQuery = DBUtil::compactQuery(" -SELECT - F.name AS folder_name, F.id AS folder_id, D.id AS document_id, - D.name AS document_name, D.filename AS file_name, COUNT(D.id) AS doc_count, 'View' AS view -FROM - $default->documents_table AS D - INNER JOIN $default->folders_table AS F ON D.folder_id = F.id - $sJoinSQL - INNER JOIN $default->status_table AS SL ON D.status_id=SL.id - INNER JOIN $sPermissionLookupsTable AS PL ON D.permission_lookup_id = PL.id - INNER JOIN $sPermissionLookupAssignmentsTable AS PLA ON PL.id = PLA.permission_lookup_id AND PLA.permission_id = ? -WHERE - PLA.permission_descriptor_id IN ($sPermissionDescriptors) - AND SL.name = ? - AND ($sSQLSearchString) -GROUP BY D.id -ORDER BY doc_count DESC"); - - $aParams = array(); - $aParams[] = $oPermission->getId(); - $aParams = array_merge($aParams, $aPermissionDescriptors); - $aParams[] = $sToSearch; - $aParams = array_merge($aParams, $aCritParams); - - //var_dump(DBUtil::getResultArray(array($sQuery, $aParams))); - //exit(0); - - $aColumns = array("folder_name", "file_name", "document_name", "doc_count", "view"); - $aColumnTypes = array(3,3,3,1,3); - $aColumnHeaders = array("graphicsUrl/widgets/dfolder.gif>" . _("Folder") . "", "" . _("Name") . "", "" . _("Title") . "", "" . _("Matches") . "", "" . _("View") . ""); - $aLinkURLs = array("$default->rootUrl/control.php?action=browse","$default->rootUrl/control.php?action=viewDocument", "$default->rootUrl/control.php?action=viewDocument", null, "$default->rootUrl/control.php?action=downloadDocument"); - $aDBQueryStringColumns = array("document_id","folder_id"); - $aQueryStringVariableNames = array("fDocumentID", "fFolderID"); - - $oPatternBrowse = & new PatternBrowseableSearchResults(array($sQuery, $aParams), 10, $aColumns, $aColumnTypes, $aColumnHeaders, $aLinkURLs, $aDBQueryStringColumns, $aQueryStringVariableNames); - $oPatternBrowse->setStartIndex($iStartIndex); - $oPatternBrowse->setSearchText(""); - $oPatternBrowse->setRememberValues($aReq); - $sForSearch = ""; - - return renderHeading(_("Advanced Search")) . $oPatternBrowse->render() . $sForSearch . $sRefreshMessage; -} - -function dealWithAdvancedSearch($aReq, $iStartIndex) { - global $main; - $oPatternCustom = & new PatternCustom(); - $oPatternCustom->setHtml(getAdvancedSearchResults($aReq, $iStartIndex)); - $main->setCentralPayload($oPatternCustom); - $main->render(); -} - -?> diff --git a/presentation/lookAndFeel/knowledgeTree/search/ajaxBooleanSearch.php b/presentation/lookAndFeel/knowledgeTree/search/ajaxBooleanSearch.php deleted file mode 100644 index 0a2a3ff..0000000 --- a/presentation/lookAndFeel/knowledgeTree/search/ajaxBooleanSearch.php +++ /dev/null @@ -1,46 +0,0 @@ -searchWidget($noRequest); - } - - function do_main() { - return "Ajax Error. ajaxBooleanSearch::do_main should not be reachable."; - } - - -} - -$oDispatcher = new AjaxBooleanSearchDispatcher(); -$oDispatcher->dispatch(); - -?> diff --git a/presentation/lookAndFeel/knowledgeTree/search/booleanSearch.php b/presentation/lookAndFeel/knowledgeTree/search/booleanSearch.php deleted file mode 100644 index decafc5..0000000 --- a/presentation/lookAndFeel/knowledgeTree/search/booleanSearch.php +++ /dev/null @@ -1,114 +0,0 @@ -aBreadcrumbs = array( - array('action' => 'browse', 'name' => _('Browse')), - ); - return parent::KTStandardDispatcher(); - } - - function do_main() { - $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _("Boolean search")); - $this->oPage->setBreadcrumbDetails(_('defining search')); - $oTemplating = new KTTemplating; - $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search"); - - $aCriteria = Criteria::getAllCriteria(); - - $aTemplateData = array( - "context" => &$this, - "aCriteria" => $aCriteria, - ); - return $oTemplate->render($aTemplateData); - } - - function do_performSearch() { - $datavars = KTUtil::arrayGet($_REQUEST, 'boolean_search'); - if (!is_array($datavars)) { - $datavars = unserialize($datavars); - } - $boolean_search_id = KTUtil::arrayGet($_REQUEST, 'boolean_search_id'); - if ($boolean_search_id) { - $datavars = $_SESSION['boolean_search'][$boolean_search_id]; - } - $iSavedSearchId = KTUtil::arrayGet($_REQUEST, 'fSavedSearchId'); - if (!empty($iSavedSearchId)) { - $oSearch = KTSavedSearch::get($iSavedSearchId); - $datavars = $oSearch->getSearch(); - } - - if (empty($datavars)) { - $this->errorRedirectToMain(_('You need to have at least 1 condition.')); - } - - $res = $this->handleCriteriaSet($datavars, KTUtil::arrayGet($_REQUEST, 'fStartIndex', 1)); - - return $res; - } - - function handleCriteriaSet($aCriteriaSet, $iStartIndex) { - $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _("Boolean search")); - $this->oPage->setBreadcrumbDetails(_('searching')); - $collection = new DocumentCollection; - $this->browseType = "Folder"; - - $collection->addColumn(new SelectionColumn("Browse Selection","selection")); - $t =& new TitleColumn("Test 1 (title)","title"); - $t->setOptions(array('documenturl' => '../documentmanagement/view.php')); - $collection->addColumn($t); - $collection->addColumn(new DateColumn(_("Created"),"created", "getCreatedDateTime")); - $collection->addColumn(new DateColumn(_("Last Modified"),"modified", "getLastModifiedDate")); - $collection->addColumn(new DateColumn(_("Last Modified"),"modified", "getLastModifiedDate")); - $collection->addColumn(new UserColumn(_('Creator'),'creator_id','getCreatorID')); - - $searchable_text = KTUtil::arrayGet($_REQUEST, "fSearchableText"); - - $batchPage = (int) KTUtil::arrayGet($_REQUEST, "page", 0); - $batchSize = 20; - - $sSearch = md5(serialize($aCriteriaSet)); - $_SESSION['boolean_search'][$sSearch] = $aCriteriaSet; - $resultURL = "?action=performSearch&boolean_search_id=" . urlencode($sSearch); - $collection->setBatching($resultURL, $batchPage, $batchSize); - - - // ordering. (direction and column) - $displayOrder = KTUtil::arrayGet($_REQUEST, 'sort_order', "asc"); - if ($displayOrder !== "asc") { $displayOrder = "desc"; } - $displayControl = KTUtil::arrayGet($_REQUEST, 'sort_on', "title"); - - $collection->setSorting($displayControl, $displayOrder); - - // add in the query object. - $qObj = new BooleanSearchQuery($aCriteriaSet); - $collection->setQueryObject($qObj); - - $collection->getResults(); - $oTemplating = new KTTemplating; - $oTemplate = $oTemplating->loadTemplate("kt3/browse"); - $aTemplateData = array( - "context" => $this, - "collection" => $collection, - ); - return $oTemplate->render($aTemplateData); - } -} - -$oDispatcher = new BooleanSearchDispatcher(); -$oDispatcher->dispatch(); - -?> diff --git a/presentation/lookAndFeel/knowledgeTree/search/simpleSearch.php b/presentation/lookAndFeel/knowledgeTree/search/simpleSearch.php deleted file mode 100644 index 3eb596b..0000000 --- a/presentation/lookAndFeel/knowledgeTree/search/simpleSearch.php +++ /dev/null @@ -1,111 +0,0 @@ -, Jam Warehouse (Pty) Ltd, South Africa - */ - -// main library routines and defaults -require_once("../../../../config/dmsDefaults.php"); -require_once(KT_LIB_DIR . "/templating/templating.inc.php"); -require_once(KT_LIB_DIR . "/templating/kt3template.inc.php"); -require_once(KT_LIB_DIR . "/dispatcher.inc.php"); -require_once(KT_LIB_DIR . "/util/ktutil.inc"); -require_once(KT_LIB_DIR . "/browse/DocumentCollection.inc.php"); -require_once(KT_LIB_DIR . "/browse/BrowseColumns.inc.php"); -require_once(KT_LIB_DIR . "/browse/PartialQuery.inc.php"); - - -require_once(KT_LIB_DIR . "/foldermanagement/Folder.inc"); - -class SimpleSearchDispatcher extends KTStandardDispatcher { - var $sSection = "search"; - var $browseType; - - function SimpleSearchDispatcher() { - $this->aBreadcrumbs = array( - array('action' => 'browse', 'name' => _('Browse')), - array('name' => _('Simple Search')) - ); - return parent::KTStandardDispatcher(); - } - - - function do_main() { - $aErrorOptions = array( - "message" => _("Please provide a search term"), - ); - $searchable_text = KTUtil::arrayGet($_REQUEST, "fSearchableText"); - $this->oValidator->notEmpty($searchable_text, $aErrorOptions); - - $collection = new DocumentCollection; - $this->browseType = "Folder"; - - $collection->addColumn(new SelectionColumn("Browse Selection","selection")); - $t = new TitleColumn("Test 1 (title)","title"); - $t->setOptions(array('documenturl' => '../documentmanagement/view.php')); - $collection->addColumn($t); - $collection->addColumn(new DateColumn(_("Created"),"created", "getCreatedDateTime")); - $collection->addColumn(new DateColumn(_("Last Modified"),"modified", "getLastModifiedDate")); - $collection->addColumn(new DateColumn(_("Last Modified"),"modified", "getLastModifiedDate")); - $collection->addColumn(new UserColumn(_('Creator'),'creator_id','getCreatorID')); - - $batchPage = (int) KTUtil::arrayGet($_REQUEST, "page", 0); - $batchSize = 20; - - $resultURL = "?fSearchableText=" . $searchable_text; - $collection->setBatching($resultURL, $batchPage, $batchSize); - - - // ordering. (direction and column) - $displayOrder = KTUtil::arrayGet($_REQUEST, 'sort_order', "asc"); - if ($displayOrder !== "asc") { $displayOrder = "desc"; } - $displayControl = KTUtil::arrayGet($_REQUEST, 'sort_on', "title"); - - $collection->setSorting($displayControl, $displayOrder); - - // add in the query object. - $qObj = new SimpleSearchQuery($searchable_text); - $collection->setQueryObject($qObj); - - // breadcrumbs - // FIXME handle breadcrumbs - $collection->getResults(); - - $oTemplating = new KTTemplating; - $oTemplate = $oTemplating->loadTemplate("kt3/browse"); - $aTemplateData = array( - "context" => $this, - "collection" => $collection, - ); - return $oTemplate->render($aTemplateData); - } -} - -$oDispatcher = new SimpleSearchDispatcher(); -$oDispatcher->dispatch(); - -?> - diff --git a/search/advancedSearchBL.php b/search/advancedSearchBL.php new file mode 100755 index 0000000..775280d --- /dev/null +++ b/search/advancedSearchBL.php @@ -0,0 +1,59 @@ +fileSystemRoot/lib/visualpatterns/PatternBrowsableSearchResults.inc"); + require_once("$default->fileSystemRoot/lib/visualpatterns/PatternEditableTableSqlQuery.inc"); + require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); + require_once("$default->fileSystemRoot/lib/foldermanagement/Folder.inc"); + require_once("$default->fileSystemRoot/lib/documentmanagement/Document.inc"); + require_once("$default->fileSystemRoot/lib/security/Permission.inc"); + require_once("advancedSearchUI.inc"); + + if (!isset($fStartIndex)) { + $fStartIndex = 1; + } + + if (strlen($fForSearch)) { + dealWithAdvancedSearch($_REQUEST, $fStartIndex); + } else { + //display search criteria + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml(getSearchPage()); + $main->setHasRequiredFields(true); + $main->setCentralPayload($oPatternCustom); + $main->setFormAction($_SERVER["PHP_SELF"] . "?fForSearch=1"); + $main->render(); + } +} +?> diff --git a/search/advancedSearchUI.inc b/search/advancedSearchUI.inc new file mode 100644 index 0000000..13588d5 --- /dev/null +++ b/search/advancedSearchUI.inc @@ -0,0 +1,143 @@ +fileSystemRoot/lib/browse/Criteria.inc"); + +function getMetaData($aMetaTagIDs) { + global $default; + /*ok*/ $sQuery = "SELECT name, id FROM $default->document_fields_table ORDER BY name ASC"; + + $sql = $default->db; + $sql->query($sQuery); + + $sToRender = "\n"; + $sToRender .= "\n"; + + $iRecordCount = 0; + $sCheckAllJavascript = ""; + while ($sql->next_record()) { + $sCheckAllJavascript .= "document.MainForm.f_adv_$iRecordCount.checked=value;\n"; + $sMetaDataCheckBox = "f("id"), $aMetaTagIDs) . " name=\"f_adv_$iRecordCount\" value=\"" . $sql->f("id") . "\">\n"; + } else if (($iRecordCount % 3) == 0) { + $sToRender .= "\n"; + } else { + $sToRender .= "\n"; + } + } + + $sToRender .= "\n"; + $sToRender .= "\n\n\n\n"; + $sToRender .= ""; + $sToRender .= "
" . $sql->f("name"); + $iRecordCount++; + if (($iRecordCount % 3) == 1) { + $sToRender .= "
$sMetaDataCheckBox$sMetaDataCheckBox
$sMetaDataCheckBox
\n"; + + return $sToRender; +} + +function getSearchPage($sSearchString = "", $aMetaTagIDs = array(), $sHeading = null, $bSearchArchive = false) { + global $default; + if (is_null($sHeading)) { + $sHeading = _("Advanced Search"); + } + + $sToRender = renderHeading($sHeading); + + $sToRender .= sprintf('

Want to use AND or OR? Use the + Boolean Search

', 'booleanSearch.php'); + + $sToRender .= "
"; + + $sToRender .= "\n"; + $sToRender .= ""; + $aBaseCriteria = Criteria::getBaseCriteria(); + foreach ($aBaseCriteria as $k => $v) { + $sToRender .= $v->searchDisplay($_REQUEST); + } + $sToRender .= ""; + $aGenericCriteria = Criteria::getGenericCriteria(); + foreach ($aGenericCriteria as $k => $v) { + $sToRender .= $v->searchDisplay($_REQUEST); + } + + if ($bSearchArchive) { + $sToRender .= ""; + } else { + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= "\n"; + $sToRender .= ""; + } + + $sToRender .= "

" . _("Document Data") . "

" . _("Document Fields") . "

 
" . _("Search") . ": " . _("Documents") . "
\n"; + $sToRender .= "\n"; + $sToRender .= "
"; + + return $sToRender . getSearchValidationJavaScript(); +} + +function getSearchValidationJavaScript() { + /*$sToRender = "\n\n\n\n"; + return $sToRender;*/ + return ""; +} + +function wasSelected($iID, $aMetaTagIDs) { + if (in_array($iID, $aMetaTagIDs)) { + return "CHECKED"; + } + return ""; +} + +function getSearchVariablesHtml($sSearchText, $sStatus, $sMetaTagIDs) { + $aMetaTagIDs = explode(",", $sMetaTagIDs); + $sToRender = "\n\n\n"; + $sToRender .= "\n\n\n"; + $sToRender .= "\n\n\n"; + $sToRender .= "\n"; + for ($i = 0; $i < count($aMetaTagIDs); $i++) { + $sToRender .= "\n"; + + } + $sToRender .= "\n"; + return $sToRender; +} +?> diff --git a/search/advancedSearchUtil.inc b/search/advancedSearchUtil.inc new file mode 100644 index 0000000..6554ff7 --- /dev/null +++ b/search/advancedSearchUtil.inc @@ -0,0 +1,155 @@ +" . _("If your browser displays a 'Warning: Page has Expired' message when you attempt to return to these search results, please click your browser's 'Refresh' button") . ""; + + $aReq = array(); + foreach ($aOrigReq as $k => $v) { + if (searchCriteria($k) === 1) { + $v = trim($v); + if ($v === "") { + continue; + } + if ($v === "-1") { + continue; + } + $aReq[$k] = $v; + } + } + + $aIDs = array_unique(array_map("criteriaNumber", array_keys($aReq))); + $aSQL = array(); + $aJoinSQL = array(); + foreach ($aIDs as $iID) { + $oCriterion =& Criteria::getCriterionByNumber($iID); + $res = $oCriterion->searchSQL($aReq); + if (!is_null($res)) { + $aSQL[] = $res; + } + $res = $oCriterion->searchJoinSQL(); + if (!is_null($res)) { + $aJoinSQL[] = $res; + } + } + $aCritParams = array(); + $aCritQueries = array(); + foreach ($aSQL as $sSQL) { + if (is_array($sSQL)) { + $aCritQueries[] = $sSQL[0]; + $aCritParams = array_merge($aCritParams , $sSQL[1]); + } else { + $aCritQueries[] = $sSQL; + } + } + + if (count($aCritQueries) == 0) { + return "No search criteria were specified"; + } + + $sSQLSearchString = join(" AND ", $aCritQueries); + $sJoinSQL = join(" ", $aJoinSQL); + + $sToSearch = KTUtil::arrayGet($aOrigReq, 'fToSearch', 'Live'); + + $oPermission =& KTPermission::getByName('ktcore.permissions.read'); + $sPermissionLookupsTable = KTUtil::getTableName('permission_lookups'); + $sPermissionLookupAssignmentsTable = KTUtil::getTableName('permission_lookup_assignments'); + $sPermissionDescriptorsTable = KTUtil::getTableName('permission_descriptors'); + $aGroups = GroupUtil::listGroupsForUserExpand($_SESSION['userID']); + $aPermissionDescriptors = KTPermissionDescriptor::getByGroups($aGroups, array('ids' => true)); + $sPermissionDescriptors = DBUtil::paramArray($aPermissionDescriptors); + + $sQuery = DBUtil::compactQuery(" +SELECT + F.name AS folder_name, F.id AS folder_id, D.id AS document_id, + D.name AS document_name, D.filename AS file_name, COUNT(D.id) AS doc_count, 'View' AS view +FROM + $default->documents_table AS D + INNER JOIN $default->folders_table AS F ON D.folder_id = F.id + $sJoinSQL + INNER JOIN $default->status_table AS SL ON D.status_id=SL.id + INNER JOIN $sPermissionLookupsTable AS PL ON D.permission_lookup_id = PL.id + INNER JOIN $sPermissionLookupAssignmentsTable AS PLA ON PL.id = PLA.permission_lookup_id AND PLA.permission_id = ? +WHERE + PLA.permission_descriptor_id IN ($sPermissionDescriptors) + AND SL.name = ? + AND ($sSQLSearchString) +GROUP BY D.id +ORDER BY doc_count DESC"); + + $aParams = array(); + $aParams[] = $oPermission->getId(); + $aParams = array_merge($aParams, $aPermissionDescriptors); + $aParams[] = $sToSearch; + $aParams = array_merge($aParams, $aCritParams); + + //var_dump(DBUtil::getResultArray(array($sQuery, $aParams))); + //exit(0); + + $aColumns = array("folder_name", "file_name", "document_name", "doc_count", "view"); + $aColumnTypes = array(3,3,3,1,3); + $aColumnHeaders = array("graphicsUrl/widgets/dfolder.gif>" . _("Folder") . "", "" . _("Name") . "", "" . _("Title") . "", "" . _("Matches") . "", "" . _("View") . ""); + $aLinkURLs = array("$default->rootUrl/control.php?action=browse","$default->rootUrl/control.php?action=viewDocument", "$default->rootUrl/control.php?action=viewDocument", null, "$default->rootUrl/control.php?action=downloadDocument"); + $aDBQueryStringColumns = array("document_id","folder_id"); + $aQueryStringVariableNames = array("fDocumentID", "fFolderID"); + + $oPatternBrowse = & new PatternBrowseableSearchResults(array($sQuery, $aParams), 10, $aColumns, $aColumnTypes, $aColumnHeaders, $aLinkURLs, $aDBQueryStringColumns, $aQueryStringVariableNames); + $oPatternBrowse->setStartIndex($iStartIndex); + $oPatternBrowse->setSearchText(""); + $oPatternBrowse->setRememberValues($aReq); + $sForSearch = ""; + + return renderHeading(_("Advanced Search")) . $oPatternBrowse->render() . $sForSearch . $sRefreshMessage; +} + +function dealWithAdvancedSearch($aReq, $iStartIndex) { + global $main; + $oPatternCustom = & new PatternCustom(); + $oPatternCustom->setHtml(getAdvancedSearchResults($aReq, $iStartIndex)); + $main->setCentralPayload($oPatternCustom); + $main->render(); +} + +?> diff --git a/search/ajaxBooleanSearch.php b/search/ajaxBooleanSearch.php new file mode 100755 index 0000000..11d14e3 --- /dev/null +++ b/search/ajaxBooleanSearch.php @@ -0,0 +1,45 @@ +searchWidget($noRequest); + } + + function do_main() { + return "Ajax Error. ajaxBooleanSearch::do_main should not be reachable."; + } + + +} + +$oDispatcher = new AjaxBooleanSearchDispatcher(); +$oDispatcher->dispatch(); + +?> diff --git a/search/booleanSearch.php b/search/booleanSearch.php new file mode 100755 index 0000000..d8ecdfd --- /dev/null +++ b/search/booleanSearch.php @@ -0,0 +1,113 @@ +aBreadcrumbs = array( + array('action' => 'browse', 'name' => _('Browse')), + ); + return parent::KTStandardDispatcher(); + } + + function do_main() { + $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _("Boolean search")); + $this->oPage->setBreadcrumbDetails(_('defining search')); + $oTemplating = new KTTemplating; + $oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search"); + + $aCriteria = Criteria::getAllCriteria(); + + $aTemplateData = array( + "context" => &$this, + "aCriteria" => $aCriteria, + ); + return $oTemplate->render($aTemplateData); + } + + function do_performSearch() { + $datavars = KTUtil::arrayGet($_REQUEST, 'boolean_search'); + if (!is_array($datavars)) { + $datavars = unserialize($datavars); + } + $boolean_search_id = KTUtil::arrayGet($_REQUEST, 'boolean_search_id'); + if ($boolean_search_id) { + $datavars = $_SESSION['boolean_search'][$boolean_search_id]; + } + $iSavedSearchId = KTUtil::arrayGet($_REQUEST, 'fSavedSearchId'); + if (!empty($iSavedSearchId)) { + $oSearch = KTSavedSearch::get($iSavedSearchId); + $datavars = $oSearch->getSearch(); + } + + if (empty($datavars)) { + $this->errorRedirectToMain(_('You need to have at least 1 condition.')); + } + + $res = $this->handleCriteriaSet($datavars, KTUtil::arrayGet($_REQUEST, 'fStartIndex', 1)); + + return $res; + } + + function handleCriteriaSet($aCriteriaSet, $iStartIndex) { + $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _("Boolean search")); + $this->oPage->setBreadcrumbDetails(_('searching')); + $collection = new DocumentCollection; + $this->browseType = "Folder"; + + $collection->addColumn(new SelectionColumn("Browse Selection","selection")); + $t =& new TitleColumn("Test 1 (title)","title"); + $t->setOptions(array('documenturl' => $GLOBALS['KTRootUrl'] . '/view.php')); + $collection->addColumn($t); + $collection->addColumn(new DateColumn(_("Created"),"created", "getCreatedDateTime")); + $collection->addColumn(new DateColumn(_("Last Modified"),"modified", "getLastModifiedDate")); + $collection->addColumn(new DateColumn(_("Last Modified"),"modified", "getLastModifiedDate")); + $collection->addColumn(new UserColumn(_('Creator'),'creator_id','getCreatorID')); + + $searchable_text = KTUtil::arrayGet($_REQUEST, "fSearchableText"); + + $batchPage = (int) KTUtil::arrayGet($_REQUEST, "page", 0); + $batchSize = 20; + + $sSearch = md5(serialize($aCriteriaSet)); + $_SESSION['boolean_search'][$sSearch] = $aCriteriaSet; + $resultURL = "?action=performSearch&boolean_search_id=" . urlencode($sSearch); + $collection->setBatching($resultURL, $batchPage, $batchSize); + + + // ordering. (direction and column) + $displayOrder = KTUtil::arrayGet($_REQUEST, 'sort_order', "asc"); + if ($displayOrder !== "asc") { $displayOrder = "desc"; } + $displayControl = KTUtil::arrayGet($_REQUEST, 'sort_on', "title"); + + $collection->setSorting($displayControl, $displayOrder); + + // add in the query object. + $qObj = new BooleanSearchQuery($aCriteriaSet); + $collection->setQueryObject($qObj); + + $collection->getResults(); + $oTemplating = new KTTemplating; + $oTemplate = $oTemplating->loadTemplate("kt3/browse"); + $aTemplateData = array( + "context" => $this, + "collection" => $collection, + ); + return $oTemplate->render($aTemplateData); + } +} + +$oDispatcher = new BooleanSearchDispatcher(); +$oDispatcher->dispatch(); + +?> diff --git a/search/simpleSearch.php b/search/simpleSearch.php new file mode 100644 index 0000000..b724e6b --- /dev/null +++ b/search/simpleSearch.php @@ -0,0 +1,111 @@ +, Jam Warehouse (Pty) Ltd, South Africa + */ + +// main library routines and defaults +require_once("../../../../config/dmsDefaults.php"); +require_once(KT_LIB_DIR . "/templating/templating.inc.php"); +require_once(KT_LIB_DIR . "/templating/kt3template.inc.php"); +require_once(KT_LIB_DIR . "/dispatcher.inc.php"); +require_once(KT_LIB_DIR . "/util/ktutil.inc"); +require_once(KT_LIB_DIR . "/browse/DocumentCollection.inc.php"); +require_once(KT_LIB_DIR . "/browse/BrowseColumns.inc.php"); +require_once(KT_LIB_DIR . "/browse/PartialQuery.inc.php"); + + +require_once(KT_LIB_DIR . "/foldermanagement/Folder.inc"); + +class SimpleSearchDispatcher extends KTStandardDispatcher { + var $sSection = "search"; + var $browseType; + + function SimpleSearchDispatcher() { + $this->aBreadcrumbs = array( + array('action' => 'browse', 'name' => _('Browse')), + array('name' => _('Simple Search')) + ); + return parent::KTStandardDispatcher(); + } + + + function do_main() { + $aErrorOptions = array( + "message" => _("Please provide a search term"), + ); + $searchable_text = KTUtil::arrayGet($_REQUEST, "fSearchableText"); + $this->oValidator->notEmpty($searchable_text, $aErrorOptions); + + $collection = new DocumentCollection; + $this->browseType = "Folder"; + + $collection->addColumn(new SelectionColumn("Browse Selection","selection")); + $t = new TitleColumn("Test 1 (title)","title"); + $t->setOptions(array('documenturl' => $GLOBALS['KTRootUrl'] . '/view.php')); + $collection->addColumn($t); + $collection->addColumn(new DateColumn(_("Created"),"created", "getCreatedDateTime")); + $collection->addColumn(new DateColumn(_("Last Modified"),"modified", "getLastModifiedDate")); + $collection->addColumn(new DateColumn(_("Last Modified"),"modified", "getLastModifiedDate")); + $collection->addColumn(new UserColumn(_('Creator'),'creator_id','getCreatorID')); + + $batchPage = (int) KTUtil::arrayGet($_REQUEST, "page", 0); + $batchSize = 20; + + $resultURL = "?fSearchableText=" . $searchable_text; + $collection->setBatching($resultURL, $batchPage, $batchSize); + + + // ordering. (direction and column) + $displayOrder = KTUtil::arrayGet($_REQUEST, 'sort_order', "asc"); + if ($displayOrder !== "asc") { $displayOrder = "desc"; } + $displayControl = KTUtil::arrayGet($_REQUEST, 'sort_on', "title"); + + $collection->setSorting($displayControl, $displayOrder); + + // add in the query object. + $qObj = new SimpleSearchQuery($searchable_text); + $collection->setQueryObject($qObj); + + // breadcrumbs + // FIXME handle breadcrumbs + $collection->getResults(); + + $oTemplating = new KTTemplating; + $oTemplate = $oTemplating->loadTemplate("kt3/browse"); + $aTemplateData = array( + "context" => $this, + "collection" => $collection, + ); + return $oTemplate->render($aTemplateData); + } +} + +$oDispatcher = new SimpleSearchDispatcher(); +$oDispatcher->dispatch(); + +?> + -- libgit2 0.21.4