/** * Sets details locator data for articles that came from search list. * * @param oxubase $oLocatorTarget oxubase object * @param oxarticle $oCurrArticle current article */ protected function _setSearchLocatorData($oLocatorTarget, $oCurrArticle) { if ($oSearchCat = $oLocatorTarget->getActSearch()) { // #1834/1184M - specialchar search $sSearchParam = oxRegistry::getConfig()->getRequestParameter('searchparam', true); $sSearchFormParam = oxRegistry::getConfig()->getRequestParameter('searchparam'); $sSearchLinkParam = rawurlencode($sSearchParam); $sSearchCat = oxRegistry::getConfig()->getRequestParameter('searchcnid'); $sSearchCat = $sSearchCat ? rawurldecode($sSearchCat) : $sSearchCat; $sSearchVendor = oxRegistry::getConfig()->getRequestParameter('searchvendor'); $sSearchVendor = $sSearchVendor ? rawurldecode($sSearchVendor) : $sSearchVendor; $sSearchManufacturer = oxRegistry::getConfig()->getRequestParameter('searchmanufacturer'); $sSearchManufacturer = $sSearchManufacturer ? rawurldecode($sSearchManufacturer) : $sSearchManufacturer; // loading data for article navigation $oIdList = oxNew('oxArticleList'); if ($oLocatorTarget->showSorting()) { $oIdList->setCustomSorting($oLocatorTarget->getSortingSql($oLocatorTarget->getSortIdent())); } $oIdList->loadSearchIds($sSearchParam, $sSearchCat, $sSearchVendor, $sSearchManufacturer); //page number $iPage = $this->_findActPageNumber($oLocatorTarget->getActPage(), $oIdList, $oCurrArticle); $sAddSearch = "searchparam={$sSearchLinkParam}"; $sAddSearch .= '&listtype=search'; if ($sSearchCat !== null) { $sAddSearch .= "&searchcnid={$sSearchCat}"; } if ($sSearchVendor !== null) { $sAddSearch .= "&searchvendor={$sSearchVendor}"; } if ($sSearchManufacturer !== null) { $sAddSearch .= "&searchmanufacturer={$sSearchManufacturer}"; } // setting product position in list, amount of articles etc $oSearchCat->iCntOfProd = $oIdList->count(); $oSearchCat->iProductPos = $this->_getProductPos($oCurrArticle, $oIdList, $oLocatorTarget); $sPageNr = $this->_getPageNumber($iPage); $sParams = $sPageNr . ($sPageNr ? '&' : '') . $sAddSearch; $oSearchCat->toListLink = $this->_makeLink($oSearchCat->link, $sParams); $oNextProd = $this->_oNextProduct; $oBackProd = $this->_oBackProduct; $oSearchCat->nextProductLink = $oNextProd ? $this->_makeLink($oNextProd->getLink(), $sAddSearch) : null; $oSearchCat->prevProductLink = $oBackProd ? $this->_makeLink($oBackProd->getLink(), $sAddSearch) : null; $sFormat = oxRegistry::getLang()->translateString('SEARCH_RESULT'); $oLocatorTarget->setSearchTitle(sprintf($sFormat, $sSearchFormParam)); $oLocatorTarget->setActiveCategory($oSearchCat); } }