booleanSearch.php
5.2 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
134
<?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 =& KTTemplating::getSingleton();
$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 DownloadColumn('','download'));
$collection->addColumn(new DateColumn(_("Created"),"created", "getCreatedDateTime"));
$collection->addColumn(new DateColumn(_("Last Modified"),"modified", "getLastModifiedDate"));
$collection->addColumn(new UserColumn(_('Creator'),'creator_id','getCreatorID'));
$collection->addColumn(new WorkflowColumn(_('Workflow State'),'workflow_state'));
$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 = KTUtil::addQueryStringSelf("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 =& KTTemplating::getSingleton();
$oTemplate = $oTemplating->loadTemplate("kt3/browse");
$aTemplateData = array(
"context" => $this,
"collection" => $collection,
"custom_title" => $sTitle,
);
return $oTemplate->render($aTemplateData);
}
}
$oDispatcher = new BooleanSearchDispatcher();
$oDispatcher->dispatch();
?>