コード例 #1
0
 /**
  * Calls the single search-functions, sorts the results and creates the output.
  * Method for portal-searches.
  *
  * @param class_module_search_search $objSearch
  *
  * @return class_search_result[]
  */
 public function doPortalSearch($objSearch)
 {
     $objSearch->setStrQuery(trim(uniStrReplace("%", "", $objSearch->getStrQuery())));
     if (uniStrlen($objSearch->getStrQuery()) == 0) {
         return array();
     }
     //create a search object
     $objSearch->setBitPortalObjectFilter(true);
     $arrHits = $this->doIndexedSearch($objSearch);
     $arrReturn = array();
     foreach ($arrHits as $objOneResult) {
         $objInstance = $objOneResult->getObjObject();
         if ($objInstance instanceof class_module_pages_pageelement) {
             $objInstance = $objInstance->getConcreteAdminInstance();
             if ($objInstance != null) {
                 $objInstance->loadElementData();
             } else {
                 continue;
             }
         }
         $arrUpdatedResults = $objInstance->updateSearchResult($objOneResult);
         if (is_array($arrUpdatedResults)) {
             $arrReturn = array_merge($arrReturn, $arrUpdatedResults);
         } else {
             if ($objOneResult != null && $objOneResult instanceof class_search_result) {
                 $arrReturn[] = $objOneResult;
             }
         }
     }
     //log the query
     class_module_search_log::generateLogEntry($objSearch->getStrQuery());
     $arrReturn = $this->mergeDuplicates($arrReturn);
     return $arrReturn;
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
 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();
 }
コード例 #4
0
 /**
  * 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;
 }