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/rospirotorg.ru/bitrix/modules/yandex.market/lib/component/options/ |
Upload File : |
<?php namespace Yandex\Market\Component\Options; use Yandex\Market; use Bitrix\Main; class EditForm extends Market\Component\Plain\EditForm { public function load($primary, array $select = [], $isCopy = false) { $result = []; foreach ($this->getFields($select) as $name => $field) { $value = $this->getOptionValue($name); if ($value === null) { $value = $this->getDefaultValue($field); } $result[$name] = $this->convertOptionToFieldValue($field, $value); } return $result; } public function getFields(array $select = [], array $item = null) { $result = parent::getFields($select, $item); if (in_array('PERMISSIONS', $select, true)) { $result += $this->extendFields([ 'PERMISSIONS' => [ 'TYPE' => 'string', 'NAME' => 'PERMISSIONS' ], ]); } return $result; } public function add(array $data) { throw new Main\NotSupportedException(); } public function update($primary, array $data) { $this->saveOptions($data); $this->savePermissions(); return new Main\Entity\UpdateResult(); } protected function saveOptions($values) { $changes = []; foreach ($values as $name => $value) { $field = $this->getField($name); if ($field === null) { continue; } $currentValue = $this->getOptionValue($name); $optionValue = $this->convertFieldToOptionValue($field, $value); $optionValueString = (string)$optionValue; if ($optionValueString === '' || (string)$this->getDefaultValue($field) === $optionValueString) { if ($currentValue === null) { continue; } Market\Config::removeOption($name); } else { if ((string)$currentValue === $optionValueString) { continue; } Market\Config::setOption($name, $optionValue); } $changes[$name] = $optionValue; } $this->applyOptionsChanges($changes); } protected function applyOptionsChanges(array $changes) { foreach ($changes as $name => $value) { if ($name === 'export_writer_index') { $this->applyWriterIndexChange($value); } } } protected function applyWriterIndexChange($value) { if ($value === 'Y') { return; } Market\Export\Run\Writer\IndexFacade::resetAll(); } /** * @noinspection PhpUnusedLocalVariableInspection * @noinspection PhpIncludeInspection */ protected function savePermissions() { global $APPLICATION; global $USER; global $GROUPS; global $RIGHTS; global $SITES; global $REQUEST_METHOD; ob_start(); $module_id = Market\Config::getModuleName(); $Update = '1'; // need inside main module require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/admin/group_rights.php'; echo '</table>'; ob_end_clean(); } protected function getOptionValue($name) { $option = (string)Market\Config::getOption($name); $result = null; if ($option !== '') { $result = $option; } return $result; } protected function getDefaultValue($field) { $result = null; if (isset($field['SETTINGS']['DEFAULT_VALUE'])) { $result = $field['SETTINGS']['DEFAULT_VALUE']; } return $result; } /** @return mixed */ protected function convertFieldToOptionValue($field, $value) { if ($field['TYPE'] === 'boolean' && (string)$value !== '') { return ((string)$value === '1' ? 'Y' : 'N'); } return $value; } protected function convertOptionToFieldValue($field, $value) { $result = $value; if ($value !== null && $field['TYPE'] === 'boolean') { $result = ($value === 'Y' ? '1' : '0'); } return $result; } protected function getField($name) { return isset($this->fields[$name]) ? $this->fields[$name] : null; } }