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/sproduction.datasync/lib/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/sproduction.datasync/lib/settingsiblocksprofiles.php
<?php
/**
 *    Iblocks List Settings
 *
 * @mail support@s-production.online
 * @link s-production.online
 */

namespace SProduction\Datasync;

\Bitrix\Main\Loader::includeModule('catalog');

use Bitrix\Main,
	Bitrix\Main\DB\Exception,
	Bitrix\Main\Config\Option;

class SettingsIblocksProfiles
{
	const BLOCK_MAIN = 'main';
	const BLOCK_BASE = 'base';
	const BLOCK_PROPS = 'props';
	const BLOCK_CATALOG = 'catalog';
	const BLOCK_OTHER = 'other';
	const BLOCK_SYNC = 'sync';
	const BLOCK_SYNC_PROCESS = 'sync_process';

	/**
	 * Get list of iblocks profiles
	 */
	public static function getList($offers=false, $onlyActive=false) {
		$list = [];
		$iblocks_list = StoreProducts::getIblocks($offers);
		foreach ($iblocks_list as $iblock) {
			$iblock_id = $iblock['ID'];
			if (!$onlyActive || self::isActive($iblock_id)) {
				$profile = self::get($iblock_id);
				$list[] = [
					'id' => $profile['main']['store_iblock_id'],
					'name' => $profile['main']['name'],
					'active' => $profile['main']['active'],
				];
			}
		}
		return $list;
	}

	/**
	 * Get default settings of iblock profile
	 */
	protected static function getDefault($iblock_id, $crm_iblock_id=false) {
		$params = [
			self::BLOCK_MAIN => [
				'active' => false,
				'sort' => 0,
				'name' => '',
				'store_iblock_id' => $iblock_id,
				'crm_iblock_id' => 0,
			],
			self::BLOCK_BASE => [],
			self::BLOCK_PROPS => [],
			self::BLOCK_CATALOG => [],
			self::BLOCK_OTHER => [],
			self::BLOCK_SYNC => [
				'man_sync_steps' => [true, true, true, true, true]
			],
			self::BLOCK_SYNC_PROCESS => [],
		];
		// Default parameters
		$iblock = \Bitrix\Iblock\IblockTable::getById($iblock_id)->fetch();
		if ($iblock) {
			$params[self::BLOCK_MAIN]['name'] = $iblock['NAME'];
			// Default values of crm fields
			if ($crm_iblock_id) {
				$fields = SettingsIblocksProfilesInfo::getCrmFields($crm_iblock_id);
				$fields = SettingsIblocksProfilesInfo::addOptions($fields, $iblock_id);
				foreach ($params as $b_code => $b_fields) {
					if (isset($fields[$b_code])) {
						foreach ($fields[$b_code]['items'] as $field) {
							$params[$b_code]['comp_table'][$field['id']] = [
								'direction' => $field[SettingsIblocksProfilesInfo::FIELD_OPTION_DIRECTION],
								'value'     => $field[SettingsIblocksProfilesInfo::FIELD_OPTION_DEFAULT],
							];
						}
					}
				}
			}
		}
		return $params;
	}

	/**
	 * Get the iblock profile
	 */
	public static function get($iblock_id) {
		$profile_params = IblocksProfilesTable::getByIblockId($iblock_id);
		$params = self::getDefault($iblock_id, $profile_params['crm_iblock_id'] ?? false);
		if ($profile_params) {
			$params[self::BLOCK_MAIN]['active'] = $profile_params['active'];
			$params[self::BLOCK_MAIN]['crm_iblock_id'] = $profile_params['crm_iblock_id'];
			$params[self::BLOCK_MAIN] = array_replace_recursive($params[self::BLOCK_MAIN], $profile_params['options']);
			$params[self::BLOCK_BASE] = array_replace_recursive($params[self::BLOCK_BASE], $profile_params[self::BLOCK_BASE]);
			$params[self::BLOCK_PROPS] = array_replace_recursive($params[self::BLOCK_PROPS], $profile_params[self::BLOCK_PROPS]);
			$params[self::BLOCK_CATALOG] = array_replace_recursive($params[self::BLOCK_CATALOG], $profile_params[self::BLOCK_CATALOG]);
			$params[self::BLOCK_OTHER] = array_replace_recursive($params[self::BLOCK_OTHER], $profile_params[self::BLOCK_OTHER]);
			$params[self::BLOCK_SYNC] = array_replace_recursive($params[self::BLOCK_SYNC], $profile_params[self::BLOCK_SYNC]);
			$params[self::BLOCK_SYNC_PROCESS] = array_replace_recursive($params[self::BLOCK_SYNC_PROCESS], $profile_params[self::BLOCK_SYNC_PROCESS]);
		}
		if ( ! \SProdDatasync::isUtf()) {
			$params = \Bitrix\Main\Text\Encoding::convertEncoding($params, 'UTF-8', 'Windows-1251');
		}
		return $params;
	}

	/**
	 * Get crm iblock id
	 */
	public static function isActive($iblock_id) {
		$profile = self::get($iblock_id);
		$active_value = $profile[self::BLOCK_MAIN]['active'] ?? '';
		return $active_value == 'Y';
	}

	/**
	 * Get crm iblock id
	 */
	public static function getCrmIblockId($iblock_id) {
		$crm_iblock_id = 0;
		$profile = self::get($iblock_id);
		if ($profile[self::BLOCK_MAIN]['crm_iblock_id']) {
			$crm_iblock_id = $profile[self::BLOCK_MAIN]['crm_iblock_id'];
		}
		return $crm_iblock_id;
	}

	/**
	 * Get search field of Store
	 */
	public static function getStoreSearchField($iblock_id) {
		$profile = self::get($iblock_id);
		return $profile[self::BLOCK_MAIN]['store_search_field'] ?? false;
	}

	/**
	 * Get search field of CRM
	 */
	public static function getCrmSearchField($iblock_id) {
		$profile = self::get($iblock_id);
		return $profile[self::BLOCK_MAIN]['crm_search_field'] ?? false;
	}

	/**
	 * Update the iblock profile
	 */
	public static function save($iblock_id, $block_code, $inp_fields) {
		// Old values of params
		$params_old = SettingsIblocksProfiles::get($iblock_id);
		// Get params
		$params = [];
		if ($block_code == self::BLOCK_MAIN) {
			if ( ! empty($inp_fields)) {
				foreach ($inp_fields as $name => $value) {
					switch ($name) {
						case 'active':
						case 'crm_iblock_id':
							$params[$name] = $value;
							break;
						default:
							$params['options'][$name] = $value;
					}
				}
			}
		} else {
			$params[$block_code] = $inp_fields;
		}
		// Try to get
		$profile = IblocksProfilesTable::getByIblockId($iblock_id);
		// Create if not exist
		if (empty($profile)) {
			$params['store_iblock_id'] = $iblock_id;
			$result = IblocksProfilesTable::add($params);
		}
		// Update existed
		else {
			FileLog::put('(SettingsIblocksProfiles::save) profile_id ' . $profile['id']);
			FileLog::put('(SettingsIblocksProfiles::save) params ' . print_r($params, 1));
			$result = IblocksProfilesTable::update($profile['id'], $params);
		}
		// Set agent
		if ($block_code == self::BLOCK_SYNC) {
			if ($params[$block_code]['add_sync_schedule'] != $params_old[$block_code]['add_sync_schedule']) {
				IblockProfilesAddSync::set($iblock_id);
			}
		}
		return $result;
	}

	/**
	 * Update the iblock profile
	 */
	public static function saveParam($iblock_id, $block_code, $field_param, $value) {
		$profile = self::get($iblock_id);
		if (isset($profile[$block_code]) && is_array($profile[$block_code])) {
			$profile[$block_code][$field_param] = $value;
			self::save($iblock_id, $block_code, $profile[$block_code]);
		}
	}

	/**
	 * Update the iblock profile
	 */
	public static function getParam($iblock_id, $block_code, $field_param) {
		$value = false;
		$profile = self::get($iblock_id);
		if (isset($profile[$block_code]) && is_array($profile[$block_code])) {
			$value = $profile[$block_code][$field_param] ?? false;
		}
		return $value;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit