<?php
namespace WebBundle\Helper;
use AdmBundle\Helper\StrAdm;
use Exception;
use Import1CBundle\Helper\v3\BiConstant;
use WebBundle\Constant\CookieKeysConstant;
use WebBundle\Enum\ArticleTypeEnum;
use WebBundle\Enum\MeasureEnum;
use WebBundle\Repository\ArticleRepository;
use WebBundle\Repository\FilterRepository;
class ArticleSettingsHelper
{
/**
* @param string $description
* @param ArticleRepository $articleRepository
* @return string
* @throws Exception
*/
public static function replaceLinkToReal(string $description, ArticleRepository $articleRepository): string
{
if (preg_match_all('#\[link:(.*)]#isUu', $description, $matches, PREG_SET_ORDER)) {
foreach ($matches as $match) {
if (empty($match[1])) {
continue;
}
$aName = trim($match[1]);
$itemLink = $articleRepository->getItemUrl($aName);
if ($itemLink) {
$urlItem = App::generateUrl('app_collection_slideshow', [
'factoryUrl' => $itemLink->getFactoryUrl(),
'collectionUrl' => $itemLink->getCollectionUrl(),
'type' => 'a',
'elementId' => $itemLink->getUrl(),
]);
$description = str_replace(
$match[0],
'<a target="_blank" href="' . $urlItem . '">' . $aName . '</a>',
$description
);
} else {
$description = str_replace(
$match[0],
$aName,
$description
);
}
}
}
return $description;
}
/**
* @param $id
* @param null $locale
* @param null $country
* @param null $measure
* @param ?bool $filter
* @return mixed|null
* @throws Exception
*/
public static function getArticleSettings($id, $locale = null, $country = null, $measure = null, ?bool $filter = false)
{
$inch = App::getCurCountry() == 'us' && CookieHelper::get(CookieKeysConstant::MEASURE_FT) == 'ft';
$locale = ($locale === null) ? App::getCurLocale() : $locale;
/** @var ArticleRepository $articleRepo */
$articleRepo = App::getRepository('WebBundle:Article');
$settings = $articleRepo->getArticleForSetting((int) $id, $locale);
$textures = $articleRepo->getTexturesForArticle((int) $id);
$settings['texture'] = [];
$settings['textureIdes'] = [];
foreach ($textures as $item) {
$textureElement = null;
if ($item['id'] == 6) {
$subTextures = $articleRepo->getStoneTexturesForArticle((int) $id);
foreach ($subTextures as $subTexture) {
$textureElement = $subTexture['texture'];
}
}
if (!$textureElement) {
if (!in_array($item['id'], $settings['textureIdes'])) {
$settings['textureIdes'][] = $item['id'];
}
$settings['texture'][] = $item['texture'];
} else {
$settings['texture'][] = $textureElement;
}
}
// if (!$filter) {
$settings['texture'] = self::humanizeTexture($settings['texture'] ?? null, $locale);
// }
// если есть признак квадрата, то меняем значение для shape
if ($settings['square']) {
$settings['shape'] = 'left_menu_square';
}
unset($settings['square']);
$sur = $articleRepo->getSurfaceForArticle((int) $id);
$settings['surface'] = null;
$settings['surfaceIdes'] = [];
foreach ($sur as $k => $item) {
if (!empty($item['surface'])) {
$text = App::trans($item['surface'], $locale);
if ($locale == 'de') {
$text = strHelper::ucWords($text);
} elseif ($k == 0) {
$text = strHelper::ucFirstOnly($text);
} else {
$text = strHelper::toLower($text);
}
if (($settings['material_id'] ?? null) == 28) {
$sTitle = null;
} else {
$sTitle = App::trans($item['surface'] . '_title', $locale);
if ($item['surface'] . '_title' == $sTitle) {
$sTitle = null;
}
}
$settings['surface'][$k] = [
'title' => str_replace(['"', '3d'], ['', '3D'], $sTitle),
'text' => str_replace(['"', '3d'], ['', '3D'], $text),
];
if ($item['surface_id'] == 8 || $item['surface_id'] == 5) {
$settings['surface'][$k]['subTitle'] = str_replace(
'"',
'',
App::trans('article.setting.help.surface.r' . $item['sliding_id'], $locale)
);
$settings['surface'][$k]['subText'] = 'R' . $item['sliding_id'];
}
if (!in_array($item['surface_id'], $settings['surfaceIdes'])) {
$settings['surfaceIdes'][] = $item['surface_id'];
}
if (in_array($item['surface_id'], [11, 12])) {
unset($settings['surface'][$k]['title']);
}
}
}
$motive = $articleRepo->getMotivesForArticle((int) $id);
$motives = [];
$settings['motiveIdes'] = [];
foreach ($motive as $item) {
if (!in_array($item['id'], $settings['motiveIdes'])) {
$settings['motiveIdes'][] = $item['id'];
}
$motives[] = App::trans($item['motive'], $locale);
}
$settings['motive'] = join(', ', $motives);
$styleArr = $articleRepo->getStyleForArticle((int) $id);
$styles = [];
$settings['styleIdes'] = [];
$handMadeStyle = null;
foreach ($styleArr as $item) {
$settings['styleIdes'][] = $item['id'];
// https://te2.remote.team/discus/1BB66374-235D-17D4-9CF6-4756541DF89D
if ($item['style'] === 'left_menu_hand_made') {
$handMadeStyle = [
'title' => str_replace('"', '', App::trans('article.setting.help.hand-made', $locale)),
'text' => StrHelper::toLower(App::trans($item['style'], $locale)),
];
} else {
$styles[] = StrHelper::toLower(App::trans($item['style'], $locale));
}
}
$settings['styleIdes'] = array_unique($settings['styleIdes']);
$settings['style'] = StrHelper::ucFirstOnly(join(', ', $styles));
$styleName = StrHelper::ucFirstOnly(App::trans('left_menu_style', $locale)) . (in_array($locale, ['de', 'fi', 'sv', 'da', 'no', 'pt']) ? ': ' : ' ');
if (!empty($settings['style'])) {
if (!in_array($locale, ['en', 'nl'])) {
$settings['style'] = StrHelper::toLower($settings['style']);
}
}
// просто добавим в конец стиль ручная работа
if (null !== $handMadeStyle) {
if (!empty($settings['style'])) {
$settings['style'] .= ', ';
}
$handMadeStyle['text'] = $styleName . $settings['style'] . $handMadeStyle['text'];
$settings['style'] = $handMadeStyle;
} elseif (!empty($settings['style'])) {
$settings['style'] = $styleName . $settings['style'];
}
$colorArr = $articleRepo->getColorsForArticle((int) $id);
$colors = [];
foreach ($colorArr as $item) {
$colors[] = StrHelper::toLower($item['name']);
}
if (count($colorArr) > 0) {
$settings['color'] = join(', ', $colors);
} else {
unset($settings['color']);
}
$tesseraShapesArr = $articleRepo->getShapesForArticle((int) $id);
$tesseraShapes = [];
foreach ($tesseraShapesArr as $item) {
$tesseraShapes[] = StrHelper::toLower(App::trans($item['alias'], $locale));
}
// если задана форма чипа, то она приоритетнее https://te.remote.team/#/discus/73234C92-5EEE-6A8B-DA9E-4CAB82EEA00A/
if (count($tesseraShapes) > 0) {
$settings['shape'] = StrHelper::ucFirstOnly(join(', ', $tesseraShapes));
}
$ets = $articleRepo->getEdgeTypeForArticle((int) $id);
$etts = [];
foreach ($ets as $et){
if (!empty($et['alias'])) {
$text = App::trans($et['alias'], $locale);
switch ($et['alias']) {
case 'left_menu_no_retified':
$sTitle = 'article.setting.help.non-rectified';
break;
case 'left_menu_retified':
$sTitle = 'article.setting.help.rectified';
break;
case 'left_menu_edge_rustic':
$sTitle = 'article.setting.help.rustic';
break;
case 'Left_menu_oblique':
$sTitle = 'article.setting.help.oblique';
break;
default:
$sTitle = '';
break;
}
$etts[] = [
'title' => str_replace('"', '', App::trans($sTitle, $locale)),
'text' => strHelper::ucFirstOnly($text),
];
}
}
$settings['etts'] = $etts;
if (!empty($settings['descriptionEn'])) {
$settings['description'] = str_replace(
'¶',
' ',
$settings['description'] ?? $settings['descriptionEn']
);
unset($settings['descriptionEn']);
}
if (!empty($settings['durabilityClass'])) {
$settings['durabilityClass'] = App::trans('item_settings.use_class') . ' ' . $settings['durabilityClass'];
}
//Просьба:Свойство "частичного прокрашивания" не отображается в характеристиках артикулов
//https://te2.remote.team/discus/8D7374A5-BD77-E346-E043-1DC4BB177237?goto=true
//https://te2.remote.team/discus/515B8B19-96A2-D301-5E06-464F006ADE86?goto=true
if (!empty($settings['typePainting'])) {
if ($settings['typePainting'] == 'Color-body') {
$settings['typePainting'] = App::trans('item_settings.full_body');
} else {
$settings['typePainting'] = App::trans('item_settings.through_body');
}
}
if (!empty($settings['dyedInMass'])) {
$settings['dyedInMass'] = [
'title' => App::trans('item.setting.base_colored'),
'text' => App::trans('item_settings.full_body')
];
}
if (!empty($settings['draw'])) {
$settings['pictureInTitle'] = [
'title' => App::trans('item.setting.pattern_help'),
'text' => App::trans('item.setting.pattern') . ': ' . $settings['draw']
];
unset($settings['draw']);
}
if ($filter) {
$params = [
// '403' => $settings['type_id'], //type
// '394' => $settings['using_id'], //using
// '397' => $settings['material_id'], //material
// '401' => $settings['surfaceIdes'], //surface
'402' => [$settings['textureIdes'], 'getFacturas'], //texture (effect)
'400' => [$settings['styleIdes'], 'getStyles'], //style
// '421' => $settings['motiveIdes'] //motive
];
if (!in_array($settings['shape_id'], [4, 9])) {
$params['413'] = [$settings['shape_id'], 'shape']; //shape
}
// Получаем выборку по фильтрам
/** @var FilterRepository $repoFilters */
$repoFilters = App::getRepository('WebBundle:FilterEntity');
$filters = $repoFilters->getArrListForSlider(App::getCurLocale(), $params);
foreach ($filters as $f) {
$settings['filters'][] = [
'group' => $f['group.name'],
'name' => $f['name'],
'url' => App::generateUrl('app_catalog', ['key' => $f['url']], 0),
'textLink' => App::trans('filter.more', App::getCurLocale(), [
'%count%' => App::plural($f['count'], $locale, 'pl', 2),
'%cnt%' => $f['count']
]),
];
}
unset($settings['style']);
// unset($settings['texture']);
}
unset($settings['using_id']);
unset($settings['surfaceIdes']);
unset($settings['textureIdes']);
unset($settings['styleIdes']);
unset($settings['motiveIdes']);
// характеристики раковины
if ($settings['type_id'] == 64) {
// есть перелив раковины
$settings['overflowSink'] = App::trans('sink.overflow') . ': ' .
StrHelper::toLower(empty($settings['overflowSink']) ? App::trans('no') : App::trans('yes'));
if (!empty($settings['drainSizeSink'])) {
// Диаметр сливного отверстия
$settings['drainSizeSink'] = App::trans('sink.drain_size') . ': ' .
(LocaleHelper::measureGb()
? (ConversionHelper::convertInch((float) $settings['drainSizeSink']) . '″')
: ($settings['drainSizeSink'] . ' ' . App::trans('left_menu_mm'))
);
} else {
unset($settings['drainSizeSink']);
}
// тип установки
$settings['installationTypeSink'] = App::trans('sink.installation_type') . ': ' .
StrHelper::toLower(App::trans($settings['installationTypeSink']));
// Отверстие под смеситель
$settings['faucetHoleSink'] = App::trans('sink.faucet_hole') . ': ' .
StrHelper::toLower(empty($settings['faucetHoleSink']) ? App::trans('no') : App::trans('yes'));
} else {
unset($settings['overflowSink']);
unset($settings['drainSizeSink']);
unset($settings['faucetHoleSink']);
unset($settings['installationTypeSink']);
}
if (!empty($settings['methLaying'])) {
$settings['methLaying'] = App::trans('item.installation_method') . ': ' .
StrHelper::toLower(App::trans($settings['methLaying']));
}
if (LocaleHelper::getUserMeasure(['country' => $country]) === 'ft'
&& !in_array($settings['measure_id'], [MeasureEnum::UNIT, MeasureEnum::SET, MeasureEnum::BOX])
) {
$settings['packagingCount'] = $settings['packagingCountFt'];
}
unset($settings['packagingCountFt']);
if (!empty($settings['description'])) {
$settings['description'] = self::replaceLinkToReal($settings['description'], $articleRepo);
}
if (!empty($settings['swimmingPool'])) {
$settings['swimmingPool'] = App::trans('swimming_pool', $locale);
} else {
unset($settings['swimmingPool']);
}
if (!empty($settings['module'])) {
$settings['module'] = App::trans('setting_module', $locale);
} else {
unset($settings['module']);
}
$clearSizeTessera = true;
if (!empty($settings['sizeTessera'])) {
$clearSizeTessera = false;
$outVarios = $outDiameter = [];
$sizeTesseraItems = explode('|', StrAdm::toLower($settings['sizeTessera']));
foreach ($sizeTesseraItems as $key => $item) {
if ($item == BiConstant::KEY_TESSERA_CHIP_VARIOS) { // left_menu_chip_various|left_menu_chip_various
$outVarios[] = App::trans($item, $locale);
} elseif ($item == BiConstant::KEY_TESSERA_DIAMETER) {
if (!empty($settings['tesseraSizeX'])) {
$tesseraSizeX = explode('|', $settings['tesseraSizeX']);
$tesseraX = $tesseraSizeX[$key];
if ($inch) {
$outDiameter[] = [
'x' => LocaleHelper::floatSign(
ConversionHelper::convertInch((float) $tesseraX, ConversionHelper::INCH),
-1
) . '″',
];
} else {
$outDiameter[] = [
'x' => LocaleHelper::floatSign($tesseraX, -1),
];
}
}
} else {
$outVarios[] = App::trans($item, $locale);
}
}
$outVarios = array_unique($outVarios);
if ($outVarios) {
$settings['sizeTessera'] = App::trans('article.tessera_size', $locale) . ' ' .
implode('|', $outVarios);
}
if ($outDiameter) {
$st = [];
foreach ($outDiameter as $sizeTessera) {
$st[] = implode(' × ', $sizeTessera) .
(!$inch ? (' ' . App::trans('left_menu_cm', $locale)) : '');
}
$settings['sizeTessera'] = $st ? (App::trans('article.tessera_size', $locale) . ' ⌀ ' . implode(', ', $st)) : '';
}
} else {
// Размер чипа
$tesseraSizeXY = [];
if (!empty($settings['tesseraSizeX']) and !empty($settings['tesseraSizeY'])) {
$tesseraSizeX = $settings['tesseraSizeX']; //2.5|2.6 5.5
$tesseraSizeY = $settings['tesseraSizeY']; //2.5|2.6 11
$tesseraSizeZ = $settings['tesseraSizeZ']; //2.5|2.6 11
$tesseraX = explode('|', $tesseraSizeX);
$tesseraY = explode('|', $tesseraSizeY);
$tesseraZ = explode('|', $tesseraSizeZ);
foreach ($tesseraX as $key => $x) {
$X = $x;
$Y = $tesseraY[$key];
$Z = $tesseraZ[$key]??null;
if ($inch) {
$tesseraSizeXY[$key] = [
'x' => LocaleHelper::floatSign(
ConversionHelper::convertInch((float) $X, ConversionHelper::INCH),
-1
) . '″',
'y' => LocaleHelper::floatSign(
ConversionHelper::convertInch((float) $Y, ConversionHelper::INCH),
-1
) . '″',
];
if($Z){
$tesseraSizeXY[$key]['z'] = LocaleHelper::floatSign(
ConversionHelper::convertInch((float) $Z, ConversionHelper::INCH),
-1
) . '″';
}
} else {
$tesseraSizeXY[$key] = [
'x' => LocaleHelper::floatSign($X, -1),
'y' => LocaleHelper::floatSign($Y, -1),
];
if($Z){
$tesseraSizeXY[$key]['z'] = LocaleHelper::floatSign($Z, -1);
}
}
}
$settings['sizeTessera'] = $tesseraSizeXY;
$clearSizeTessera = false;
}
if (!empty($settings['sizeTessera'])) {
$st = [];
foreach ($settings['sizeTessera'] as $sizeTessera) {
$st[] = implode(' × ', $sizeTessera) . (!$inch ? (' ' . App::trans('left_menu_cm', $locale)) : '');
}
$settings['sizeTessera'] = $st ? (App::trans('article.tessera_size', $locale) . ' ' . implode(', ', $st)) : '';
$clearSizeTessera = false;
}
}
if (
StrAdm::toLower($settings['sizeTessera']) === 'left_menu_diameter'
&& empty($settings['tesseraSizeX'])
&& empty($settings['tesseraSizeY'])
&& empty($settings['tesseraSizeZ'])
) {
unset($settings['sizeTessera']);
}
if (isset($settings['tesseraSizeX'])) {
unset($settings['tesseraSizeX']);
}
if (isset($settings['tesseraSizeY'])) {
unset($settings['tesseraSizeY']);
}
if (isset($settings['tesseraSizeZ'])) {
unset($settings['tesseraSizeZ']);
}
if ($clearSizeTessera) {
unset($settings['sizeTessera']);
}
if (!empty($settings['mosaicEffect'])) {
$settings['type'] = App::trans('left_menu_mosaic_imitation', $locale);
} else {
if (!empty($settings['type'])) {
$settings['type'] = strHelper::ucFirstOnly(App::trans($settings['type'], $locale));
}
}
unset($settings['mosaicEffect']);
if (LocaleHelper::measureGb(['measure' => $measure]) && $settings['measure_id'] == 1) {
$settings['measure'] = 'measure_ft';
} elseif (LocaleHelper::measureGb(['measure' => $measure]) && $settings['measure_id'] == 3) {
$settings['measure'] = 'measure_rft';
}
if (!empty($settings['repeatDrawId'])) {
$text = App::getTranslator()->trans(
$settings['repeatDraw'],
[
'%number%' => $settings['repeatNumber']
],
null,
$locale
);
if ($settings['repeatDrawId'] == 2) {
$settings['repeatDraw'] = [
'title' => str_replace('"', '', App::trans('tooltip_title_no_repeat_item', $locale)),
'text' => $text
];
} else {
$settings['repeatDraw'] = $text;
}
}
if ($id == 493292827) {
unset($settings['shape']);// https://te.remote.team/#/discus/3DF962BC-1164-BC10-FDB4-FAD461E17936/
}
unset($settings['repeatDrawId']);
unset($settings['repeatNumber']);
$measure = App::trans(
TranslitHelper::getCase(
$settings['packagingCount'],
[
$settings['measure'],
$settings['measure'] . 's'
]
),
$locale
);
$str = App::trans('collection_in_package', $locale) . ': ' .
LocaleHelper::floatSign($settings['packagingCount']) . ' ' . $measure;
$settings['packagingCount'] = $str;
if (!in_array($settings['measure_id'], [2, 4, 7])) {
if ($settings['packagingCountPC'] > 0) {
$settings['packagingCount'] .= ' (' . LocaleHelper::floatSign($settings['packagingCountPC'], -1) . ' ' .
App::trans(TranslitHelper::getCase($settings['packagingCountPC'], ['measure_unit', 'measure_units']), $locale) . ')';
}
}
$settings['packagingCount'] = StrHelper::ucFirstOnly($settings['packagingCount']);
unset($settings['packagingCountPC']);
if ($inch) {
$settings['weight'] = LocaleHelper::getFloatFromString(ConversionHelper::convertKgLb((float) $settings['weight']))
. ' '
. App::trans('measure_lb', $locale);
} else {
$settings['weight'] = LocaleHelper::getFloatFromString($settings['weight'] ?? '0')
. ' '
. App::trans('measure_kg', $locale);
}
$settings['weight'] = App::trans('collection_package_weight', $locale) . ': ' . $settings['weight'];
if (!empty($settings['material'])) {
$settings['material'] = App::trans($settings['material'], $locale);
if (App::getCurLocale() == 'de') {
$settings['material'] = strHelper::ucWords($settings['material']);
} else {
$settings['material'] = strHelper::ucFirst($settings['material']);
}
// проверка некоторых материалов и выделение их
if (self::checkIfMaterialNeedMark((int) $settings['material_id'])) {
$settings['material'] = '<b>' . $settings['material'] . '</b>';
}
}
if(!empty($settings['etts'])){
$settings['edgeType'] = $settings['etts'];
}else{
if (!empty($settings['edgeType'])) {
$text = App::trans($settings['edgeType'], $locale);
switch ($settings['edgeType']) {
case 'left_menu_no_retified':
$sTitle = 'article.setting.help.non-rectified';
break;
case 'left_menu_retified':
$sTitle = 'article.setting.help.rectified';
break;
case 'left_menu_edge_rustic':
$sTitle = 'article.setting.help.rustic';
break;
default:
$sTitle = '';
break;
}
$settings['edgeType'] = [
'title' => str_replace('"', '', App::trans($sTitle, $locale)),
'text' => strHelper::ucFirstOnly($text),
];
}
}
unset($settings['etts']);
if ($settings['type_id'] === ArticleTypeEnum::MOSAIC) {
$settings['edgeType'] = null;
}
unset($settings['type_id']);
if (!empty($settings['pei'])) {
$text = strHelper::toUpper($settings['pei']);
$sTitle = App::trans('article.setting.help.pie', $locale);
$subTitle = '';
if ($text == 'PEI I') {
$subTitle = App::trans('article.setting.help.pie.i', $locale);
} elseif ($text == 'PEI II') {
$subTitle = App::trans('article.setting.help.pie.ii', $locale);
} elseif ($text == 'PEI III') {
$subTitle = App::trans('article.setting.help.pie.iii', $locale);
} elseif ($text == 'PEI IV') {
$subTitle = App::trans('article.setting.help.pie.iv', $locale);
} elseif ($text == 'PEI V') {
$subTitle = App::trans('article.setting.help.pie.v', $locale);
}
$settings['pei'] = [
'title' => str_replace('"', '', $sTitle),
'subTitle' => str_replace('"', '', $subTitle),
'text' => $text,
];
}
if (!empty($settings['offShade'])) {
$text = App::trans($settings['offShade'], $locale);
$sTitle = App::trans('article.setting.help.offShade.v', $locale);
$settings['offShade'] = [
'title' => str_replace('"', '', $sTitle),
'text' => $text,
'current' => $settings['offShade_id'],
'variations' => [
'1' => App::trans('article.setting.help.offShade.v1', $locale),
'2' => App::trans('article.setting.help.offShade.v2', $locale),
'3' => App::trans('article.setting.help.offShade.v3', $locale),
'4' => App::trans('article.setting.help.offShade.v4', $locale),
],
];
}
if (!empty($settings['color'])) {
// https://te.remote.team/#/discus/90659538-2D23-A51F-1432-650F7E9AB921/
// $settings['color_brand'] = /* App::trans('left_menu_color', $locale) . ': ' .*/
// StrHelper::toLower($settings['color']);
$settings['color'] = App::trans('left_menu_color', $locale) . ': ' .
StrHelper::toLower($settings['color']);
}
if ($settings['thinGranite'] != false) {
$settings['thinGranite'] = App::trans('left_menu_thin_porcelain_tile', $locale);
} elseif ($settings['thick'] >= 17 && !empty($settings['material_id']) && $settings['material_id'] == 6) {
$settings['thinGranite'] = App::trans('left_menu_thick_porcelain_tile', $locale);
}
if (App::getCurLocale() == 'de') {
$settings['thinGranite'] = strHelper::ucWords($settings['thinGranite']);
} else {
$settings['thinGranite'] = strHelper::ucFirst($settings['thinGranite']);
}
if (!empty($settings['thick'])) {
$thick = App::trans('left_menu_thickness', $locale);
$thick .= ' ' . LocaleHelper::floatSign($settings['thick'], -1) . ' ' .
App::trans('left_menu_mm', $locale);
if ($inch) {
$thick .= ' (~' .
LocaleHelper::floatSign(
ConversionHelper::convertInch((float) $settings['thick'], ConversionHelper::INCH) / 10
) . '″)';
}
$settings['thick'] = $thick;
}
// if (!empty($settings['measurementSize_id'])) {
// if (App::getCurLocale() == 'de') {
// $settings['measurementSize_alias'] = strHelper::ucWords(App::trans($settings['measurementSize_alias'], $locale));
// } else {
// $settings['measurementSize_alias'] = strHelper::ucFirst(App::trans($settings['measurementSize_alias'], $locale));
// }
//
// $settings['measurementSize_alias'] .= (' ' . $settings['measurementSize_id']);
// }
unset($settings['measurementSize_id']);
unset($settings['measurementSize_alias']);
unset($settings['publishDate']);
unset($settings['glazedGranite']);
unset($settings['delivery']);
unset($settings['sliding_id']);
unset($settings['sliding']);
unset($settings['measure']);
unset($settings['measure_id']);
unset($settings['offShade_id']);
$materialId = $settings['material_id'] ?? null;
if ($materialId == '25') {
unset($settings['measure']);
unset($settings['type']);
unset($settings['using']);
unset($settings['surface']);
unset($settings['texture']);
unset($settings['style']);
unset($settings['thinGranite']);
unset($settings['thick']);
unset($settings['edgeType']);
unset($settings['shape']);
unset($settings['offShade']);
unset($settings['color']);
unset($settings['pei']);
unset($settings['delivery']);
unset($settings['sliding']);
}
unset($settings['material_id']);
if ($filter) {
// unset($settings['material']);
// unset($settings['type']);
// unset($settings['surface']);
// unset($settings['texture']);
unset($settings['style']);
if (!in_array($settings['shape_id'], [4, 9])) {
unset($settings['shape']);
}
unset($settings['shape_id']);
// unset($settings['motive']);
// unset($settings['texture']);
}
unset($settings['shape_id']);
return $settings;
}
/**
* Приведение текстуры в человеко читаемый вид
*
* @param array|null $textures
* Массив алиасов(alias) фильтров текстуры. Например: ['left_menu_brick', 'left_menu_wood']
* @param string $locale
* Локаль, в которой надо вернуть результат
* @return string
* @throws Exception
*/
public static function humanizeTexture(?array $textures, string $locale): string
{
if (empty($textures)) {
return '';
}
$result = '';
$hydravlic = '';
foreach ($textures as $item) {
if ($item) {
$texture = App::trans(trim($item), $locale);
if ($locale != 'de') {
$texture = StrHelper::toLower($texture);
} else {
$texture = StrHelper::ucFirstOnly($texture);
}
if ($item == 'left_menu_hydravlic_tile') {
$hydravlic = $texture;
} elseif (empty($result)) {
$result = !empty($item) ? StrHelper::ucFirstOnly($texture) : null;
} elseif (!empty($item)) {
$result .= ', ' . $texture;
}
}
}
if (!empty($result)) {
if (!in_array($locale, ['en', 'nl'])) {
$result = StrHelper::ucFirstOnly(App::trans('left_menu_effect', $locale)) .
(in_array($locale, ['de', 'fi', 'sv', 'da', 'no', 'pt']) ? ': ' : ' ') . StrHelper::toLower($result);
} else {
$result .= ' ' . StrHelper::toLower(App::trans('left_menu_effect', $locale));
}
}
if ($hydravlic != '') {
if (empty($result)) {
$result = $hydravlic;
} else {
$result .= ', ' . $hydravlic;
}
}
return $result;
}
/**
* Решено некоторые материалы выделять - список захардкожен
* https://te2.remote.team/discus/28DC490B-BE6B-5496-9BD5-614F11A796A9
*
* @param int $materialId ид материала
* @return bool true - материал в списке
*/
private static function checkIfMaterialNeedMark(int $materialId): bool
{
return $materialId === 28 // Винил
|| $materialId === 32 // Пробка
|| $materialId === 17 // Агломерат
|| $materialId === 21 // Цемент
|| $materialId === 10 // Стекло
|| $materialId === 1; // Натуральный камень
}
}