/** * Searches for a passed string * * @return string * @permissions view */ protected function actionDoSearch() { $strReturn = ""; $objSearch = new class_module_search_search(); $objSearch->setStrPortalLangFilter($this->getStrPortalLanguage()); if ($this->getParam("searchterm") != "") { $objSearch->setStrQuery(htmlToString(urldecode($this->getParam("searchterm")), true)); } $arrResult = array(); $objSearchCommons = new class_module_search_commons(); if ($objSearch->getStrQuery() != "") { $arrResult = $objSearchCommons->doPortalSearch($objSearch); } $strReturn .= $this->createSearchXML($objSearch->getStrQuery(), $arrResult); return $strReturn; }
/** * Calls the single search-functions, sorts the results an creates the output * * @return string * @permissions view */ protected function actionSearch() { $strReturn = ""; //Read the config $arrTemplate = array(); $arrTemplate["hitlist"] = ""; $strReturn .= $this->actionList(); $objSearchCommons = new class_module_search_commons(); $this->objSearchSearch->setBitPortalObjectFilter(true); $this->objSearchSearch->setStrPortalLangFilter($this->getStrPortalLanguage()); /** @var $arrHitsSorted class_search_result[] */ $arrHitsSorted = $objSearchCommons->doPortalSearch($this->objSearchSearch); //Resize Array to wanted size $arrHitsFilter = $this->objToolkit->pager($this->arrElementData["search_amount"], $this->getParam("pv") != "" ? (int) $this->getParam("pv") : 1, $this->getLang("commons_next"), $this->getLang("commons_back"), "search", $this->arrElementData["search_page"] != "" ? $this->arrElementData["search_page"] : $this->getPagename(), $arrHitsSorted, "&searchterm=" . urlencode(html_entity_decode($this->objSearchSearch->getStrQuery(), ENT_COMPAT, "UTF-8"))); $strRowTemplateID = $this->objTemplate->readTemplate("/module_search/" . $this->arrElementData["search_template"], "search_hitlist_hit"); /** @var $objHit class_search_result */ foreach ($arrHitsFilter["arrData"] as $objHit) { if ($objHit->getStrPagename() == "master") { continue; } $objPage = class_module_pages_page::getPageByName($objHit->getStrPagename()); if ($objPage === null || !$objPage->rightView() || $objPage->getIntRecordStatus() != 1) { continue; } $arrRow = array(); if ($objHit->getStrPagelink() == "") { $arrRow["page_link"] = getLinkPortal($objHit->getStrPagename(), "", "_self", $objHit->getStrPagename(), "", "&highlight=" . urlencode(html_entity_decode($this->objSearchSearch->getStrQuery(), ENT_QUOTES, "UTF-8")) . "#" . uniStrtolower(urlencode(html_entity_decode($this->objSearchSearch->getStrQuery(), ENT_QUOTES, "UTF-8")))); } else { $arrRow["page_link"] = $objHit->getStrPagelink(); } $arrRow["page_description"] = uniStrTrim($objHit->getStrDescription(), 200); $arrTemplate["hitlist"] .= $this->objTemplate->fillTemplate($arrRow, $strRowTemplateID, false); } //Collect global data $arrTemplate["search_term"] = $this->objSearchSearch->getStrQuery(); $arrTemplate["search_nrresults"] = count($arrHitsSorted); $arrTemplate["link_forward"] = $arrHitsFilter["strForward"]; $arrTemplate["link_back"] = $arrHitsFilter["strBack"]; $arrTemplate["link_overview"] = $arrHitsFilter["strPages"]; $strTemplateID = $this->objTemplate->readTemplate("/module_search/" . $this->arrElementData["search_template"], "search_hitlist"); return $strReturn . $this->fillTemplate($arrTemplate, $strTemplateID); }
public function testIndexEvent() { if (class_module_system_module::getModuleByName("tags") == null || class_module_system_module::getModuleByName("system") == null) { return; } $strSearchKey1 = generateSystemid(); $objAspect = new class_module_system_aspect(); $objAspect->setStrName($strSearchKey1); $objAspect->updateObjectToDb(); $objSearchCommons = new class_module_search_commons(); $objSearchParams = new class_module_search_search(); $objSearchParams->setStrQuery($strSearchKey1); $arrResult = $objSearchCommons->doIndexedSearch($objSearchParams, null); $this->assertEquals(count($arrResult), 1); $this->assertEquals($arrResult[0]->getObjObject()->getStrSystemid(), $objAspect->getStrSystemid()); $strSearchKey2 = generateSystemid(); $objTag = new class_module_tags_tag(); $objTag->setStrName($strSearchKey2); $objTag->updateObjectToDb(); $objSearchParams = new class_module_search_search(); $objSearchParams->setStrQuery($strSearchKey2); $arrResult = $objSearchCommons->doIndexedSearch($objSearchParams, null); $this->assertEquals(count($arrResult), 1); $this->assertEquals($arrResult[0]->getObjObject()->getStrSystemid(), $objTag->getStrSystemid()); $objTag->assignToSystemrecord($objAspect->getStrSystemid()); $arrResult = $objSearchCommons->doIndexedSearch($objSearchParams, null); $this->assertEquals(count($arrResult), 2); $objSearchParams->setStrInternalFilterModules(_system_modul_id_); $arrResult = $objSearchCommons->doIndexedSearch($objSearchParams, null); $this->assertEquals(count($arrResult), 1); $this->assertEquals($arrResult[0]->getObjObject()->getStrSystemid(), $objAspect->getStrSystemid()); $objTag->removeFromSystemrecord($objAspect->getStrSystemid()); //the aspect itself should not be found any more $objSearchParams = new class_module_search_search(); $objSearchParams->setStrQuery($strSearchKey2); $arrResult = $objSearchCommons->doIndexedSearch($objSearchParams, null); $this->assertEquals(count($arrResult), 1); $this->assertEquals($arrResult[0]->getObjObject()->getStrSystemid(), $objTag->getStrSystemid()); $objAspect->deleteObjectFromDatabase(); $objTag->deleteObjectFromDatabase(); }
/** * Searches for a passed string * * @return string * @permissions view * @xml */ protected function actionSearchXml() { $strReturn = ""; $strSearchterm = ""; if ($this->getParam("search_query") != "") { $strSearchterm = htmlToString(urldecode($this->getParam("search_query")), false); } $objSearch = new class_module_search_search(); $objSearch->setStrQuery($strSearchterm); $arrResult = array(); $objSearchCommons = new class_module_search_commons(); if ($strSearchterm != "") { $arrResult = $objSearchCommons->doAdminSearch($objSearch, 0, self::INT_MAX_NR_OF_RESULTS); } $objSearchFunc = function (class_search_result $objA, class_search_result $objB) { //first by module, second by score if ($objA->getObjObject() instanceof class_model && $objB->getObjObject() instanceof class_model) { $intCmp = strcmp($objA->getObjObject()->getArrModule("modul"), $objB->getObjObject()->getArrModule("modul")); if ($intCmp != 0) { return $intCmp; } else { return $objA->getIntScore() < $objB->getIntScore(); } } //fallback: score only return $objA->getIntScore() < $objB->getIntScore(); }; uasort($arrResult, $objSearchFunc); if ($this->getParam("asJson") != "") { $strReturn .= $this->createSearchJson($strSearchterm, $arrResult); } else { $strReturn .= $this->createSearchXML($strSearchterm, $arrResult); } return $strReturn; }