function handleCriteriaSet($aCriteriaSet, $iStartIndex, $sTitle = null, $bIsCondition = false)
 {
     if ($sTitle == null) {
         $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _kt('Advanced Search'));
         $sTitle = _kt('Search Results');
     } else {
         if ($bIsCondition) {
             $this->aBreadcrumbs[] = array('name' => _kt('Test Condition'));
             $this->oPage->setTitle(sprintf(_kt('Test Condition: %s'), $sTitle));
         } else {
             $this->aBreadcrumbs[] = array('name' => _kt('Saved Search'));
             $this->oPage->setTitle(sprintf(_kt('Saved Search: %s'), $sTitle));
         }
         $this->oPage->setBreadcrumbDetails($sTitle);
     }
     $this->browseType = "Folder";
     $searchable_text = KTUtil::arrayGet($_REQUEST, "fSearchableText");
     $sSearch = md5(serialize($aCriteriaSet));
     $_SESSION['boolean_search'][$sSearch] = $aCriteriaSet;
     $collection = new AdvancedCollection();
     $oColumnRegistry = KTColumnRegistry::getSingleton();
     $aColumns = $oColumnRegistry->getColumnsForView('ktcore.views.search');
     $collection->addColumns($aColumns);
     // get search parameters
     $oCriteriaRegistry =& KTCriteriaRegistry::getSingleton();
     $aParams = array();
     $aJoins = array();
     $aJoins['main'] = $aCriteriaSet['join'] == 'AND' ? _kt('all') : _kt('any');
     foreach ($aCriteriaSet['subgroup'] as $k => $subgroup) {
         $aGroup = array();
         $aJoins[$k] = $subgroup['join'] == 'AND' ? _kt('all') : _kt('any');
         if (!empty($subgroup['values'])) {
             foreach ($subgroup['values'] as $value) {
                 $oCriterion =& $oCriteriaRegistry->getCriterion($value['type']);
                 if ($oCriterion == null || $oCriterion == "" || PEAR::isError($oCriterion)) {
                     $this->errorRedirectToMain('Criterion error');
                 }
                 $aGroup[] = $oCriterion->parameterDisplay($value['data']);
             }
         }
         $aParams[] = $aGroup;
     }
     // set a view option
     $aTitleOptions = array('documenturl' => $GLOBALS['KTRootUrl'] . '/view.php');
     $collection->setColumnOptions('ktcore.columns.title', $aTitleOptions);
     $collection->setColumnOptions('ktcore.columns.selection', array('rangename' => 'selection', 'show_folders' => true, 'show_documents' => true));
     $aOptions = $collection->getEnvironOptions();
     // extract data from the environment
     $aOptions['return_url'] = KTUtil::addQueryStringSelf("action=performSearch&boolean_search_id=" . urlencode($sSearch));
     $aOptions['empty_message'] = _kt("No documents or folders match this query.");
     $aOptions['is_browse'] = true;
     $collection->setOptions($aOptions);
     $collection->setQueryObject(new BooleanSearchQuery($aCriteriaSet));
     //$a = new BooleanSearchQuery($aCriteriaSet);
     //var_dump($a->getDocumentCount()); exit(0);
     // form fields for saving the search
     $save_fields = array();
     $save_fields[] = new KTStringWidget(_kt('New search'), _kt('The name to save this search as'), 'name', null, $this->oPage, true);
     $aUserSearches = KTSavedSearch::getUserSearches($this->oUser->getId(), true);
     if (count($aUserSearches)) {
         $aVocab = array('' => ' ---- ');
         foreach ($aUserSearches as $oSearch) {
             $aVocab[$oSearch->getId()] = $oSearch->getName();
         }
         $aSelectOptions = array('vocab' => $aVocab);
         $save_fields[] = new KTLookupWidget(_kt('Existing search'), _kt('To save over one of your existing searches, select it here.'), 'fSearchId', null, $this->oPage, true, null, null, $aSelectOptions);
     }
     $oTemplating =& KTTemplating::getSingleton();
     $oTemplate = $oTemplating->loadTemplate("kt3/browse");
     $aTemplateData = array("context" => $this, "collection" => $collection, "custom_title" => $sTitle, "save_fields" => $save_fields, "params" => $aParams, "joins" => $aJoins, 'isEditable' => true, "boolean_search" => $sSearch, 'bulkactions' => KTBulkActionUtil::getAllBulkActions(), 'browseutil' => new KTBrowseUtil(), 'returnaction' => 'booleanSearch', 'returndata' => $sSearch);
     return $oTemplate->render($aTemplateData);
 }
Exemple #2
0
 function do_main()
 {
     $oColumnRegistry =& KTColumnRegistry::getSingleton();
     $collection = new AdvancedCollection();
     $collection->addColumns($oColumnRegistry->getColumnsForView('ktcore.views.browse'));
     $aOptions = $collection->getEnvironOptions();
     // extract data from the environment
     $aOptions['result_url'] = $this->resultURL;
     $aOptions['is_browse'] = true;
     $collection->setOptions($aOptions);
     $collection->setQueryObject($this->oQuery);
     $collection->setColumnOptions('ktcore.columns.selection', array('rangename' => 'selection', 'show_folders' => true, 'show_documents' => true));
     // get bulk actions
     $aBulkActions = KTBulkActionUtil::getAllBulkActions();
     $oTemplating =& KTTemplating::getSingleton();
     $oTemplate = $oTemplating->loadTemplate('kt3/browse');
     $aTemplateData = array('context' => $this, 'collection' => $collection, 'browse_mode' => $this->browse_mode, 'isEditable' => $this->editable, 'bulkactions' => $aBulkActions, 'browseutil' => new KTBrowseUtil(), 'returnaction' => 'browse');
     if ($this->oFolder) {
         $aTemplateData['returndata'] = $this->oFolder->getId();
     }
     return $oTemplate->render($aTemplateData);
 }
 function displayConfiguration($args)
 {
     $oTemplating =& KTTemplating::getSingleton();
     $oTemplate = $oTemplating->loadTemplate('ktcore/workflowtriggers/moveaction');
     require_once KT_LIB_DIR . '/browse/DocumentCollection.inc.php';
     require_once KT_LIB_DIR . '/browse/columnregistry.inc.php';
     $collection = new AdvancedCollection();
     $oColumnRegistry = KTColumnRegistry::getSingleton();
     $aColumns = array();
     $aColumns[] = $oColumnRegistry->getColumn('ktcore.columns.singleselection');
     $aColumns[] = $oColumnRegistry->getColumn('ktcore.columns.title');
     $collection->addColumns($aColumns);
     $aOptions = $collection->getEnvironOptions();
     // extract data from the environment
     $qsFrag = array();
     foreach ($args as $k => $v) {
         if ($k == 'action') {
             $v = 'editactiontrigger';
         }
         // horrible hack - we really need iframe embedding.
         $qsFrag[] = sprintf('%s=%s', urlencode($k), urlencode($v));
     }
     $qs = implode('&', $qsFrag);
     $aOptions['result_url'] = KTUtil::addQueryStringSelf($qs);
     $aOptions['show_documents'] = false;
     $fFolderId = KTUtil::arrayGet($_REQUEST, 'fFolderId', KTUtil::arrayGet($this->aConfig, 'folder_id', 1));
     $oFolder = Folder::get($fFolderId);
     if (PEAR::isError($oFolder)) {
         $iRoot = 1;
         $oFolder = Folder::get($iRoot);
         $fFolderId = 1;
     }
     $collection->setOptions($aOptions);
     $collection->setQueryObject(new BrowseQuery($fFolderId, $this->oUser));
     $collection->setColumnOptions('ktcore.columns.singleselection', array('rangename' => 'folder_id', 'show_folders' => true, 'show_documents' => false));
     $collection->setColumnOptions('ktcore.columns.title', array('direct_folder' => false, 'folder_link' => $aOptions['result_url']));
     $aBreadcrumbs = array();
     $folder_path_names = $oFolder->getPathArray();
     $folder_path_ids = explode(',', $oFolder->getParentFolderIds());
     $folder_path_ids[] = $oFolder->getId();
     if ($folder_path_ids[0] == 0) {
         array_shift($folder_path_ids);
         array_shift($folder_path_names);
     }
     foreach (range(0, count($folder_path_ids) - 1) as $index) {
         $id = $folder_path_ids[$index];
         $qsFrag2 = $qsFrag;
         $qsFrag2[] = sprintf('fFolderId=%d', $id);
         $qs2 = implode('&', $qsFrag2);
         $url = KTUtil::addQueryStringSelf($qs2);
         $aBreadcrumbs[] = sprintf('<a href="%s">%s</a>', $url, htmlentities($folder_path_names[$index], ENT_NOQUOTES, 'UTF-8'));
     }
     $sBreadcrumbs = implode(' &raquo; ', $aBreadcrumbs);
     $aTemplateData = array('context' => $this, 'breadcrumbs' => $sBreadcrumbs, 'collection' => $collection, 'args' => $args);
     return $oTemplate->render($aTemplateData);
 }
Exemple #4
0
 function do_oldSearchResults()
 {
     // call the results sorting function in case of sort options selected
     search2QuerySort(stripslashes($_GET['sort_on']), stripslashes($_GET['sort_order']));
     $this->oPage->setBreadcrumbDetails(_kt("Search Results"));
     $this->oPage->title = _kt("Search Results");
     $collection = new AdvancedCollection();
     $oColumnRegistry = KTColumnRegistry::getSingleton();
     $aColumns = $oColumnRegistry->getColumnsForView('ktcore.views.search');
     $collection->addColumns($aColumns);
     // set a view option
     $aTitleOptions = array('documenturl' => $GLOBALS['KTRootUrl'] . '/view.php', 'direct_folder' => true);
     $collection->setColumnOptions('ktcore.columns.title', $aTitleOptions);
     // set the selection options
     $collection->setColumnOptions('ktcore.columns.selection', array('rangename' => 'selection', 'show_folders' => true, 'show_documents' => true));
     $aOptions = $collection->getEnvironOptions();
     // extract data from the environment
     $aOptions['empty_message'] = _kt("No documents or folders match this query.");
     $aOptions['is_browse'] = true;
     $aOptions['return_url'] = KTUtil::addQueryStringSelf("action=oldSearchResults");
     $collection->setOptions($aOptions);
     $collection->setQueryObject(new Search2Query());
     $oTemplating =& KTTemplating::getSingleton();
     $oTemplate = $oTemplating->loadTemplate("kt3/browse");
     $aTemplateData = array("context" => $this, "collection" => $collection, 'isEditable' => true, 'bulkactions' => KTBulkActionUtil::getAllBulkActions(), 'browseutil' => new KTBrowseUtil(), 'returnaction' => 'search2');
     return $oTemplate->render($aTemplateData);
 }
 function do_main()
 {
     $aErrorOptions = array("message" => _kt("Please provide a search term"));
     $searchable_text = sanitizeForSQL(KTUtil::arrayGet($_REQUEST, "fSearchableText"));
     $this->oValidator->notEmpty($searchable_text, $aErrorOptions);
     $collection = new AdvancedCollection();
     $oColumnRegistry = KTColumnRegistry::getSingleton();
     $aColumns = $oColumnRegistry->getColumnsForView('ktcore.views.search');
     $collection->addColumns($aColumns);
     // set a view option
     $aTitleOptions = array('documenturl' => $GLOBALS['KTRootUrl'] . '/view.php', 'direct_folder' => true);
     $collection->setColumnOptions('ktcore.columns.title', $aTitleOptions);
     // set the selection options
     $collection->setColumnOptions('ktcore.columns.selection', array('rangename' => 'selection', 'show_folders' => true, 'show_documents' => true));
     $aOptions = $collection->getEnvironOptions();
     // extract data from the environment
     $aOptions['return_url'] = KTUtil::addQueryStringSelf("fSearchableText=" . urlencode($searchable_text));
     $aOptions['empty_message'] = _kt("No documents or folders match this query.");
     $aOptions['is_browse'] = true;
     $collection->setOptions($aOptions);
     $collection->setQueryObject(new SimpleSearchQuery($searchable_text));
     $oTemplating =& KTTemplating::getSingleton();
     $oTemplate = $oTemplating->loadTemplate("kt3/browse");
     $aTemplateData = array("context" => $this, "collection" => $collection, 'isEditable' => true, 'bulkactions' => KTBulkActionUtil::getAllBulkActions(), 'browseutil' => new KTBrowseUtil(), 'returnaction' => 'simpleSearch', 'returndata' => $searchable_text);
     return $oTemplate->render($aTemplateData);
 }
 function do_search()
 {
     // Get the tag to search for and create search query
     $tag = isset($_REQUEST['tag']) ? $_REQUEST['tag'] : '';
     $decode = isset($_REQUEST['decode']) ? $_REQUEST['decode'] : '';
     if ($decode == 'true') {
         $tag = urldecode($tag);
     }
     $iUserId = $_SESSION['userID'];
     $oUser = User::get($iUserId);
     // set breadcrumbs
     $this->aBreadcrumbs[] = array('url' => 'dashboard.php', 'name' => _kt('Dashboard'));
     $this->aBreadcrumbs[] = array('url' => $_SERVER['PHP_SELF'], 'name' => _kt('Tag Cloud Search'));
     $tagList = $_SESSION['tagList'];
     if (!empty($tagList)) {
         $aPrevTag = end($tagList);
         $aTagTree = $aPrevTag['tagTree'];
         $base = KTUtil::addQueryString('TagCloudRedirection&action=recall', null);
         foreach ($aTagTree as $key => $item) {
             if ($tag == $item) {
                 continue;
             }
             $url = $base . '&tag=' . urlencode($item) . '&pos=' . $key;
             $this->aBreadcrumbs[] = array('url' => $url, 'name' => $item);
         }
     }
     if (!empty($tag)) {
         $this->aBreadcrumbs[] = array('url' => '', 'name' => $tag);
     }
     // set page title
     $sTitle = _kt('Search Results');
     $this->oPage->setBreadcrumbDetails($sTitle);
     // Set tag cloud portlet
     $portlet = new TagCloudPortlet($oUser, $tag);
     $this->oPage->addPortlet($portlet);
     $collection = new AdvancedCollection();
     $oColumnRegistry = KTColumnRegistry::getSingleton();
     $aColumns = $oColumnRegistry->getColumnsForView('ktcore.views.search');
     $collection->addColumns($aColumns);
     // set a view option
     $aTitleOptions = array('documenturl' => $GLOBALS['KTRootUrl'] . '/view.php');
     $collection->setColumnOptions('ktcore.columns.title', $aTitleOptions);
     $collection->setColumnOptions('ktcore.columns.selection', array('rangename' => 'selection', 'show_folders' => true, 'show_documents' => true));
     $aOptions = $collection->getEnvironOptions();
     // extract data from the environment
     $returnUrl = KTUtil::addQueryString('TagCloudRedirection&action=search&tag=' . urlencode($tag), false);
     $aOptions['return_url'] = $returnUrl;
     $aOptions['empty_message'] = _kt('No documents or folders match this query.');
     $aOptions['is_browse'] = true;
     $collection->setOptions($aOptions);
     $collection->setQueryObject(new TagQuery($oUser, $tag));
     $oTemplating =& KTTemplating::getSingleton();
     $oTemplate = $oTemplating->loadTemplate('kt3/browse');
     $aTemplateData = array('context' => $this, 'collection' => $collection, 'custom_title' => $sTitle, 'isEditable' => true, 'boolean_search' => $sSearch, 'bulkactions' => KTBulkActionUtil::getAllBulkActions(), 'browseutil' => new KTBrowseUtil(), 'returnaction' => $returnUrl);
     return $oTemplate->render($aTemplateData);
 }