booleanSearch.php
5.09 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
// boilerplate includes
require_once("../config/dmsDefaults.php");
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 . "/search/savedsearch.inc.php");
require_once(KT_LIB_DIR . "/search/searchutil.inc.php");
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");
class BooleanSearchDispatcher extends KTStandardDispatcher {
var $sSection = "browse";
function BooleanSearchDispatcher() {
$this->aBreadcrumbs = array(
array('action' => 'browse', 'name' => _('Browse')),
);
return parent::KTStandardDispatcher();
}
function do_main() {
$this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _("Advanced 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() {
$title = null;
$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();
$title = $oSearch->getName();
}
if (is_null(KTUtil::arrayGet($datavars["subgroup"][0], "values"))) {
$this->errorRedirectToMain("No search parameters given");
}
if (empty($datavars)) {
$this->errorRedirectToMain(_('You need to have at least 1 condition.'));
}
$res = $this->handleCriteriaSet($datavars, KTUtil::arrayGet($_REQUEST, 'fStartIndex', 1), $title);
return $res;
}
function handleCriteriaSet($aCriteriaSet, $iStartIndex, $sTitle=null) {
if ($sTitle == null) {
$this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _('Advanced Search'));
$sTitle = _('Search Results');
} else {
$this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _('Saved Search'));
$this->oPage->setTitle(_('Saved Search: ') . $sTitle);
}
$this->oPage->setBreadcrumbDetails($sTitle);
$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,
"custom_title" => $sTitle,
);
return $oTemplate->render($aTemplateData);
}
}
$oDispatcher = new BooleanSearchDispatcher();
$oDispatcher->dispatch();
?>