<?php
/**
* Class contain silters settings api
*/
/**
* Class contain filters settings api
* You can use it in any part of your code with construction
* FrameWpf::_()->getModule('woofilters')->getModel('settings');
*/
class SettingsModelWpf extends ModelWpf {
/**
* Get specific filter block settings
*
* @param int $filterId
*
* @return array
*/
public function getFilterBlockSettings( $filterId ) {
$settings = array();
$filter = FrameWpf::_()->getModule('woofilters')->getModel('woofilters')->getById($filterId);
if (!$filter) {
return $settings;
}
$settings = unserialize($filter['setting_data']);
return $settings;
}
/**
* Get filters order in filter block
* Except filters order we have some settings specific to individual filters
* that we keep in order settings too
*
* @param array $filterSettings
* @param int $filterId
*
* @return array
*/
public function getFiltersOrder( $filterBlockSettings = array(), $filterId = 0 ) {
$order = array();
if (!$filterBlockSettings) {
$filterBlockSettings = $this->getFilterBlockSettings($filterId);
}
if (!$filterBlockSettings) {
return $order;
}
if (!empty($filterBlockSettings['settings']['filters']['order'])) {
$order = UtilsWpf::jsonDecode($filterBlockSettings['settings']['filters']['order']);
}
return $order;
}
/**
* Get settings for individual filter in filter block by filter type
* We can have many filters in the filter block with the same type
* In such case we return all filters with the same type
*
* @param string $filterType
* @param array $order
* @param array $filterBlockSettings
* @param int $filterId
*
* @return array
*/
public function getFilterSettings( $filterType, $order = array(), $filterBlockSettings = array(), $filterId = 0, $blockId = -1 ) {
$filterSettings = array();
if (!$order) {
$order = $this->getFiltersOrder($filterBlockSettings, $filterId);
}
$filterList = FrameWpf::_()->getModule('woofilters')->getModel('woofilters')->getAllFilters();
if (!array_key_exists($filterType, $filterList)) {
return $filterSettings;
}
foreach ($order as $index => $filterData) {
if ($filterData['id'] == $filterType) {
if ($blockId < 0 || $index == $blockId) {
$filterSettings[] = $filterData;
}
}
}
return $filterSettings;
}
}