booleanSearch.php
3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
// boilerplate includes
require_once("../../../../config/dmsDefaults.php");
require_once(KT_DIR . "/presentation/Html.inc");
require_once(KT_LIB_DIR . "/templating/templating.inc.php");
require_once(KT_LIB_DIR . "/database/dbutil.inc");
require_once(KT_LIB_DIR . "/util/ktutil.inc");
require_once(KT_LIB_DIR . "/dispatcher.inc.php");
require_once(KT_LIB_DIR . "/browse/Criteria.inc");
require_once(KT_LIB_DIR . "/visualpatterns/PatternBrowsableSearchResults.inc");
require_once(KT_LIB_DIR . "/search/savedsearch.inc.php");
require_once(KT_LIB_DIR . '/search/searchutil.inc.php');
class BooleanSearchDispatcher extends KTStandardDispatcher {
// Breadcrumbs base - added to in methods
var $aBreadcrumbs = array(
array('action' => 'browse', 'name' => 'Browse'),
);
var $sSection = "browse";
function do_main() {
$this->oPage->setBreadcrumbDetails('searching');
$oTemplating = new KTTemplating;
$oTemplate = $oTemplating->loadTemplate("ktcore/boolean_search");
$aCriteria = Criteria::getAllCriteria();
$aTemplateData = array(
"aCriteria" => $aCriteria,
);
return $oTemplate->render($aTemplateData);
}
function do_performSearch() {
// TODO first extract environ vars
// TODO second create criterion objects (see getAdvancedSearchResults for this.
// TODO third get each one to generate the SQL snippet. (ENSURE that they are wrapped in '('..')' )
// TODO fourth array().join(' AND ') where appropriate
// TODO finally return via PatternBrowseableSearchResults (urgh.)
$datavars = KTUtil::arrayGet($_REQUEST, 'boolean_search');
if (!is_array($datavars)) {
$datavars = unserialize($datavars);
}
$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) {
global $default;
$aQuery = KTSearchUtil::criteriaToLegacyQuery($aCriteriaSet, $_SESSION['userID'], 'ktcore.permissions.read');
$aColumns = array("folder_name", "file_name", "document_name", "view");
$aColumnTypes = array(3,3,3,3);
$aColumnHeaders = array("<font color=\"ffffff\"><img src=\"$default->graphicsUrl/widgets/dfolder.gif\" />" . _("Folder") . "</font>", "<font color=\"ffffff\">" . _("Name") . "</font>", "<font color=\"ffffff\">" . _("Title") . "</font>", "<font color=\"ffffff\">" . _("View") . "</font>");
$aLinkURLs = array("$default->rootUrl/control.php?action=browse","$default->rootUrl/control.php?action=viewDocument", "$default->rootUrl/control.php?action=viewDocument", "$default->rootUrl/control.php?action=downloadDocument");
$aDBQueryStringColumns = array("document_id","folder_id");
$aQueryStringVariableNames = array("fDocumentID", "fFolderID");
$oPatternBrowse = & new PatternBrowseableSearchResults($aQuery, 10, $aColumns, $aColumnTypes, $aColumnHeaders, $aLinkURLs, $aDBQueryStringColumns, $aQueryStringVariableNames);
$oPatternBrowse->setStartIndex($iStartIndex);
$oPatternBrowse->setSearchText("");
$sFormStart = '<form method="POST" name="MainForm">';
$sFormEnd = '<input type="hidden" name="boolean_search" value="'. htmlentities(serialize($aCriteriaSet)) . '" />';
$sFormEnd .= '<input type="hidden" name="action" value="performSearch" />';
return renderHeading(_("Advanced Search")) . $sFormStart . $oPatternBrowse->render() . $sFormEnd . $sRefreshMessage;
}
}
$oDispatcher = new BooleanSearchDispatcher();
$oDispatcher->dispatch();
?>