403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/zverushki.seofilter/lib/cpu/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/zverushki.seofilter/lib/cpu/base.php
<?
namespace Zverushki\Seofilter\Cpu;

use Bitrix\Main,
	Bitrix\Main\Application,
	Bitrix\Main\Loader,
	Zverushki\Seofilter\configuration,
	Zverushki\Seofilter\Filter\variable,
	Zverushki\Seofilter\Internals,
	Zverushki\Seofilter\Sections\Section;

Loader::includeModule('iblock');

/**
* class Base
*
*
* @package Zverushki\Seofilter
*/
class Base
{
	protected $siteId = false;
	protected $languageId = false;
	protected $lifeTime = 10800;
	protected $cacheTag = "zverushki_seofilter_cpu_";
	protected $listFilter = [];

	protected function __construct ($siteId, $langId = false) {
		$this->siteId = $siteId ? $siteId : SITE_ID;
		$this->languageId = $langId ? $langId : LANGUAGE_ID;
	}

	/**
	 * Убираем все ссылки которые не подходят по маске
	 * @param  string $sUrl
	 * @param  array &$arr
	 * @return array $arr
	 */
	protected function wildcardSelection($sUrl, &$arr){
		foreach ($arr as $key => $item) {
			$urlCpu = str_replace('/', '\/', preg_replace('/\#PROP_(.+?)\#/i', '(.+)', $item['URL_CPU']));
			if(!preg_match('/'.$urlCpu.'/', $sUrl, $cpu))
				unset($arr[$key]);
		}

		return $arr;
	}

	/**
	 * Ищем все варинты для переменных в ссылке
	 * @param  array &$arr
	 * @return array $arr
	 */
	protected function propsSelection(&$arr){
		$listSection = array();
		if($arr)
			foreach ($arr as $key => $item) {
				$listSection[$item['IBLOCK_ID'].'_'.$item['SECTION_ID']] = ['IBLOCK_ID' => $item['IBLOCK_ID'], 'SECTION_ID' => $item['SECTION_ID']];
			}

		if($listSection)
			foreach ($listSection as $key => $item) {
				if(!empty($this->listFilter[$key]))
					continue;

				$variable = new variable();
				$variable->setIblockId($item['IBLOCK_ID']);

				$variable->setSectionId($item['SECTION_ID']);
				$this->listFilter[$key] = $variable->getVariable();
			}
		// mp($this->listFilter);

		unset($listSection);

		if($arr)
			foreach ($arr as $key => &$item) {
				$item['IN_CODE'] = [];
				$item['AR_CODE'] = [];
				$l = $this->listFilter[$item['IBLOCK_ID'].'_'.$item['SECTION_ID']];
				if(!empty($l) && (!empty($l['PROPERTY_ID_LIST']) || !empty($l['SKU_PROPERTY_ID_LIST']))){
					if(preg_match_all('/\#PROP_(.+?)\#/i', $item['URL_CPU'], $chp)){
						if($chp[1])
							foreach ($chp[1] as $code) {
								$item['IN_CODE'][$code]++;
								$item['AR_CODE'][] = $code;
							}
						$propCodeT = array_unique($chp[1]);
						$propCode = array();
						if($propCodeT)
							foreach ($propCodeT as $code)
								$propCode[$code] = $code;

						unset($propCodeT, $chp, $code);

						if(empty($propCode))
							$propCode;
						if($l['ITEMS'])
							foreach ($l['ITEMS'] as $pId => $prop) {
								if(!$propCode[$prop['CODE']] && $pitem['PROPERTY_TYPE'] != "L" && $pitem['PROPERTY_TYPE'] != "E")
									continue;

								$prefix = $prop['VALUES'][key($prop['VALUES'])]['CONTROL_NAME_ALT'];

								$all = true;
								if($item['PARAMS'])
									foreach ($item['PARAMS'] as $code => $v) {
										if(preg_match('/'.$prefix.'/', $code)){
											$all = false;
											break;
										}
									}
								if($all){
									if($prop['VALUES'])
										foreach ($prop['VALUES'] as $vId=> $val) {
											$item['FRES'][$prop['CODE']][$vId] = array(
																					'CONTROL_ID' => $val['CONTROL_ID'],
																					'HTML_VALUE' => $val['HTML_VALUE'],
																					'VALUE' => $val['VALUE'],
																					'TVALUE' => configuration::getTranslit($val['VALUE']),
																				);
										}
								}else{
									if($prop['VALUES'])
										foreach ($prop['VALUES'] as $vId=> $val) {
											if($item['PARAMS'][$val['CONTROL_ID']]){
												$item['FRES'][$prop['CODE']][$vId] = array(
																					'CONTROL_ID' => $val['CONTROL_ID'],
																					'HTML_VALUE' => $val['HTML_VALUE'],
																					'VALUE' => $val['VALUE'],
																					'TVALUE' => configuration::getTranslit($val['VALUE']),
																				);
												unset($item['PARAMS'][$val['CONTROL_ID']]);
											}
										}
								}
								unset($code, $prefix, $val);
							}
					}
				}
				unset($l);
			}
		unset($item);

		return $arr;
	}

	/**
	 * Список всех ссылок с шаблонами
	 * @param  int $siteId [description]
	 * @return array $arParams [description]
	 */
	protected function getFilterMask($siteId, $par = array()){
		$par["URL_CPU"] = ["%#PROP_%", "%#SECTION_%"];
		$arParams = $this->getFilterId($siteId, $par);

		return $arParams;
	}
	/**
	 * Список всех ссылок с шаблонами
	 * @param  int $siteId [description]
	 * @return array $arParams [description]
	 */
	public function getFilterId($siteId, $par = array()){
		$arParams = array();

		$cache_id = md5(serialize(array($this->lifeTime, $siteId, $par)));
		$url = '/'.$this->cacheTag.$siteId.'/'.$cache_id.'/';
		$сache = Main\Data\Cache::createInstance();

		$cacheManager = Application::getInstance()
							->getTaggedCache();

		if ($сache->initCache($this->lifeTime, $cache_id, $url)){
			$arParams = $сache->getVars();
		}elseif ($сache->startDataCache()){
			$cacheManager->startTagCache($url);

			$params = array();
			$filter = array("ACTIVE" => "Y", 'SITE_ID.SITE_ID' => $siteId);
			if(!empty($par))
				$filter = array_merge($filter, $par);

			$dbRes = Internals\SettingsTable::getList(array(
				'order' => array("SORT" => "ASC", "ID" => "DESC"),
				'filter' => $filter,
				'select' => array('ID', 'IBLOCK_ID', 'SECTION_ID', 'TIMESTAMP_X', 'ACTIVE', 'DESCRIPTION', 'URL_CPU', 'URL_FILTER', 'PARAMS')
			));
			while ($params = $dbRes->fetch()){
				Section::replace($params);
				$arParams[$params['ID']] = $params;

				$cacheManager->registerTag($this->cacheTag.$params['ID']);
			}
			$cacheManager->registerTag($this->cacheTag.$siteId);
			$cacheManager->registerTag($this->cacheTag.'all');

			$cacheManager->endTagCache();

			$сache->endDataCache($arParams);
		}

		return $arParams;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit