764 lines
22 KiB
PHP
764 lines
22 KiB
PHP
<?php
|
|
|
|
/**
|
|
* This Software is the property of Data Development and is protected
|
|
* by copyright law - it is NOT Freeware.
|
|
*
|
|
* Any unauthorized use of this software without a valid license
|
|
* is a violation of the license agreement and will be prosecuted by
|
|
* civil and criminal law.
|
|
*
|
|
* http://www.shopmodule.com
|
|
*
|
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
|
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
|
* @link http://www.oxidmodule.com
|
|
*/
|
|
|
|
namespace D3\Extsearch\Modules\Application\Controller;
|
|
|
|
use D3\Extsearch\Modules\Application\Model\d3_oxsearch_extsearch;
|
|
use D3\Extsearch\Application\Controller\d3_xlist_extsearch;
|
|
use D3\Extsearch\Application\Model\d3_search;
|
|
use D3\Extsearch\Application\Model\Filters\d3Filter;
|
|
use D3\Extsearch\Core\d3_extsearch_conf;
|
|
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
|
|
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
|
|
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
|
|
use Doctrine\DBAL\Exception as DBALException;
|
|
use OxidEsales\Eshop\Application\Model\Manufacturer;
|
|
use OxidEsales\Eshop\Application\Model\ManufacturerList;
|
|
use OxidEsales\Eshop\Application\Model\VendorList;
|
|
use OxidEsales\Eshop\Application\Model\CategoryList;
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
|
use OxidEsales\Eshop\Core\Exception\FileException;
|
|
use OxidEsales\Eshop\Core\Exception\StandardException;
|
|
use OxidEsales\Eshop\Core\Registry;
|
|
|
|
class d3_manufacturerlist_extsearch extends d3_manufacturerlist_extsearch_parent
|
|
{
|
|
/** @var null|d3_xlist_extsearch */
|
|
protected $_oXListController;
|
|
private $_blUseAlistFilter;
|
|
|
|
/**
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function render()
|
|
{
|
|
$this->d3GetXListController()->render();
|
|
|
|
return parent::render();
|
|
}
|
|
|
|
/**
|
|
* @param Manufacturer $oManufacturer
|
|
*
|
|
* @return array
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
protected function loadArticles($oManufacturer)
|
|
{
|
|
$aRet = parent::loadArticles( $oManufacturer);
|
|
|
|
[$oArtList, $iArtCnt] = $aRet;
|
|
|
|
if ($this->_iCntPages || $iArtCnt) {
|
|
$this->d3GetXListController()->addAListFilters( $oManufacturer);
|
|
}
|
|
|
|
$this->d3GetXListController()->setTplParams($oArtList);
|
|
|
|
return $aRet;
|
|
}
|
|
|
|
/**
|
|
* @return bool|string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
*/
|
|
public function getSearchCategory()
|
|
{
|
|
return $this->d3GetOwnSearchHandler()->getFilterList()->getCategoryFilter()->getUserSingleSelection();
|
|
}
|
|
|
|
/**
|
|
* @return bool|string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
*/
|
|
public function getSearchVendor()
|
|
{
|
|
return $this->d3GetOwnSearchHandler()->getFilterList()->getVendorFilter()->getUserSingleSelection();
|
|
}
|
|
|
|
/**
|
|
* @return bool|string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
*/
|
|
public function getSearchManufacturer()
|
|
{
|
|
return $this->d3GetOwnSearchHandler()->getFilterList()->getManufacturerFilter()->getUserSingleSelection();
|
|
}
|
|
|
|
/**
|
|
* @param string $sUrl
|
|
* @param int $iPage
|
|
* @param int|null $iLang
|
|
*
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
protected function addPageNrParam($sUrl, $iPage, $iLang = null)
|
|
{
|
|
if (false == $this->d3UseAlistFilters()) {
|
|
return parent::addPageNrParam($sUrl, $iPage, $iLang);
|
|
}
|
|
|
|
$sUrl = parent::addPageNrParam($sUrl, $iPage, $iLang);
|
|
|
|
$sUrlAdd = $this->getViewDataElement('additionalparams');
|
|
|
|
if ($sUrlAdd) {
|
|
$sUrl .= ((strpos($sUrl, '?') === false) ? '?' : '') . $sUrlAdd;
|
|
}
|
|
|
|
return $sUrl;
|
|
}
|
|
|
|
/**
|
|
* returns additional url params for dynamic url building
|
|
*
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function getDynUrlParams()
|
|
{
|
|
$sRet = parent::getDynUrlParams();
|
|
|
|
if ($this->d3UseAlistFilters()) {
|
|
$sRet .= $this->d3GetXListController()->d3AddBaseUrlParams($sRet);
|
|
}
|
|
|
|
return $sRet;
|
|
}
|
|
|
|
/**
|
|
* Returns additional URL parameters which must be added to list products urls
|
|
*
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function getAddUrlParams()
|
|
{
|
|
$sAddParams = parent::getAddUrlParams();
|
|
|
|
if ($this->d3UseAlistFilters()) {
|
|
$sAddParams .= $this->d3GetXListController()->d3AddBaseUrlParams($sAddParams);
|
|
}
|
|
|
|
return $sAddParams;
|
|
}
|
|
|
|
/**
|
|
* Returns additional URL parameters which must be added to list products seo urls
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function getAddSeoUrlParams()
|
|
{
|
|
$sAddParams = parent::getAddUrlParams();
|
|
|
|
if ($this->d3UseAlistFilters()) {
|
|
$sAddParams .= $this->d3GetXListController()->d3AddBaseUrlParams($sAddParams);
|
|
}
|
|
|
|
return $sAddParams;
|
|
}
|
|
|
|
/**
|
|
* Returns array of params => values which are used in hidden forms and as additional url params
|
|
*
|
|
* @return array
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function getNavigationParams()
|
|
{
|
|
$aParams = parent::getNavigationParams();
|
|
|
|
$aParams = $this->d3GetXListController()->addNavigationParams($aParams);
|
|
|
|
return $aParams;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
*/
|
|
public function getAdditionalParams()
|
|
{
|
|
$this->_sAdditionalParams = parent::getAdditionalParams();
|
|
|
|
if ($this->d3GetSet()->isActive()) {
|
|
$sSeparator = htmlspecialchars(ini_get('arg_separator.output'));
|
|
$this->_sAdditionalParams .= $this->d3GetXListController()->getD3AdditionalParams();
|
|
|
|
if (!strstr($this->_sAdditionalParams, $sSeparator.'isextsearch=')
|
|
&& $this->d3HaveFiltersUserSelection()
|
|
) {
|
|
$this->_sAdditionalParams .= $sSeparator.'isextsearch=alist';
|
|
}
|
|
}
|
|
|
|
return $this->_sAdditionalParams;
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3HaveFiltersUserSelection()
|
|
{
|
|
/** @var d3Filter $oFilter */
|
|
foreach ($this->d3GetOwnSearchHandler()->getFilterList() as $oFilter) {
|
|
if ($oFilter->hasUserSelection()) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function d3getFilterPageId()
|
|
{
|
|
return $this->d3GetXListController()->d3getFilterPageId();
|
|
}
|
|
|
|
/**
|
|
* @return d3_cfg_mod
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
*/
|
|
public function d3GetSet()
|
|
{
|
|
return $this->d3GetXListController()->d3GetSet();
|
|
}
|
|
|
|
/**
|
|
* @return d3_oxsearch_extsearch
|
|
*/
|
|
protected function d3GetSearchHandler(): d3_oxsearch_extsearch
|
|
{
|
|
return $this->d3GetXListController()->d3GetSearchHandler();
|
|
}
|
|
|
|
/**
|
|
* @return d3_search
|
|
*/
|
|
protected function d3GetOwnSearchHandler()
|
|
{
|
|
return $this->d3GetXListController()->d3GetOwnSearchHandler();
|
|
}
|
|
|
|
/**
|
|
* @return CategoryList
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3GetCategoryList()
|
|
{
|
|
return $this->d3GetXListController()->d3GetCategoryList();
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3HasCategoryList()
|
|
{
|
|
return $this->d3GetXListController()->d3HasCategoryList();
|
|
}
|
|
|
|
/**
|
|
* @return VendorList
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3GetVendorList()
|
|
{
|
|
return $this->d3GetXListController()->d3GetVendorList();
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3HasVendorList()
|
|
{
|
|
return $this->d3GetXListController()->d3HasVendorList();
|
|
}
|
|
|
|
/**
|
|
* @return ManufacturerList
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3GetManufacturerList()
|
|
{
|
|
return $this->d3GetXListController()->d3GetManufacturerList();
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3HasManufacturerList()
|
|
{
|
|
return $this->d3GetXListController()->d3HasManufacturerList();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3GetAttributeList()
|
|
{
|
|
return $this->d3GetXListController()->d3GetAttributeList();
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3HasAttributeList()
|
|
{
|
|
return $this->d3GetXListController()->d3HasAttributeList();
|
|
}
|
|
|
|
/**
|
|
* @param $sAttrId
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3AttributeFilterUseMultipleValues($sAttrId)
|
|
{
|
|
return $this->d3GetOwnSearchHandler()->getFilterList()->getAttributeFilter()->hasUserMultiSelection($sAttrId);
|
|
}
|
|
|
|
/**
|
|
* @return array|null
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3CategoryFilterUseMultipleValues()
|
|
{
|
|
return $this->d3GetOwnSearchHandler()->getFilterList()->getCategoryFilter()->getUserMultiSelection();
|
|
}
|
|
|
|
/**
|
|
* @return array|null
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3VendorFilterUseMultipleValues()
|
|
{
|
|
return $this->d3GetOwnSearchHandler()->getFilterList()->getVendorFilter()->getUserMultiSelection();
|
|
}
|
|
|
|
/**
|
|
* @return array|null
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3ManufacturerFilterUseMultipleValues()
|
|
{
|
|
return $this->d3GetOwnSearchHandler()->getFilterList()->getManufacturerFilter()->getUserMultiSelection();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws FileException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3getPriceSteps()
|
|
{
|
|
return $this->d3GetXListController()->d3getPriceSteps();
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3HasjQuerySlider()
|
|
{
|
|
return $this->d3GetXListController()->d3HasjQuerySlider();
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function d3GetDeselectValue()
|
|
{
|
|
return $this->d3GetXListController()->d3GetDeselectValue();
|
|
}
|
|
|
|
/**
|
|
* @param $sOptionTitle
|
|
* @return string
|
|
*/
|
|
public function d3GetMultipleSelectionTranslation($sOptionTitle)
|
|
{
|
|
return $this->d3GetXListController()->d3GetMultipleSelectionTranslation($sOptionTitle);
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3HasFilters()
|
|
{
|
|
return $this->d3GetXListController()->d3HasFilters();
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3HasPriceFilter()
|
|
{
|
|
return $this->d3GetXListController()->d3HasPriceFilter();
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws FileException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3CanShowPriceFilterSlider()
|
|
{
|
|
return $this->d3GetXListController()->d3CanShowPriceFilterSlider();
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws FileException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3GetPriceSliderInfoMinValue()
|
|
{
|
|
return $this->d3GetXListController()->d3GetPriceSliderInfoMinValue();
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws FileException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3GetPriceSliderInfoMaxValue()
|
|
{
|
|
return $this->d3GetXListController()->d3GetPriceSliderInfoMaxValue();
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws FileException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3GetPriceSliderInputMinValue()
|
|
{
|
|
return $this->d3GetXListController()->d3GetPriceSliderInputMinValue();
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws FileException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3GetPriceSliderInputMaxValue()
|
|
{
|
|
return $this->d3GetXListController()->d3GetPriceSliderInputMaxValue();
|
|
}
|
|
|
|
/**
|
|
* @return float|int
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
*/
|
|
public function d3getPricePrecision()
|
|
{
|
|
return $this->d3GetXListController()->d3getPricePrecision();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3getPriceLimits()
|
|
{
|
|
return $this->d3GetXListController()->d3getPriceLimits();
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws FileException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3GetPriceSliderOriginalMinValue()
|
|
{
|
|
return $this->d3GetXListController()->d3GetPriceSliderOriginalMinValue();
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws FileException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3GetPriceSliderOriginalMaxValue()
|
|
{
|
|
return $this->d3GetXListController()->d3GetPriceSliderOriginalMaxValue();
|
|
}
|
|
|
|
/**
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
*/
|
|
public function d3ClearFilter()
|
|
{
|
|
$this->d3GetXListController()->d3ClearFilter();
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
private function d3UseAlistFilters()
|
|
{
|
|
if (null === $this->_blUseAlistFilter) {
|
|
$this->_blUseAlistFilter = $this->d3GetSet()->isActive()
|
|
&& ($this->d3GetSet()->getLicenseConfigData(d3_extsearch_conf::SERIAL_BIT_HAS_FILTERS_IN_ALIST, false) || $this->d3GetSet()->isDemo())
|
|
&& $this->d3GetSet()->getValue(d3_extsearch_conf::CONF_USEFILTERSINLISTS);
|
|
}
|
|
return $this->_blUseAlistFilter;
|
|
}
|
|
|
|
/**
|
|
* @return d3_xlist_extsearch
|
|
*/
|
|
public function d3GetXListController()
|
|
{
|
|
if (false == $this->_oXListController) {
|
|
$this->_oXListController = oxNew(d3_xlist_extsearch::class, $this);
|
|
}
|
|
return $this->_oXListController;
|
|
}
|
|
|
|
/**
|
|
* checks if this view can be cached
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function canCache()
|
|
{
|
|
$canCache = parent::canCache();
|
|
|
|
return $canCache && $this->d3CanCache();
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
*/
|
|
public function d3CanCache()
|
|
{
|
|
// need function check, because canCache is called before the filters are reset
|
|
return trim(strtolower(Registry::getRequest()->getRequestEscapedParameter('fnc'))) === 'd3clearfilter' ||
|
|
((bool) count($this->d3GetXListController()->getAllSelections())) === false;
|
|
}
|
|
}
|