if (!$isPost && $currentAction == 'edit') { $arField = $arSelectField; } if ($isPost && $currentAction == 'edit') { $arField['code'] = $arSelectField['code']; $arField['type'] = $arSelectField['type']; } // Получаем все типы полей, имеющиеся в БД. $arFieldsTypes = $main->getFieldsTypes(); Arr::set($arResult, 'fieldsTypes', $arFieldsTypes); if (!isset($arFieldsTypes[$arField['type']])) { Arr::set($arResult, 'error', true); Arr::set($arResult, 'errors.fieldsTypes', 'Указан несуществующий тип поля'); } // Фильтруем код поля для занесения в БД $arField['code'] = $main->leffersFilter($arField['code']); // Выведем ошибку, если код поля некорректен if ($arField['code'] == '' && isset($arField['complete'])) { Arr::set($arResult, 'error', true); Arr::set($arResult, 'errors.code', 'Код допполя не указан или содержит недопустимые символы'); } $isFieldExists = $main->db->getOne('SELECT id FROM ?n WHERE component_id = ?i AND code = ?s', PREFIX . '_components_fields_list', $arComponent['id'], $arField['code']); if ($isFieldExists && $currentAction == 'add') { Arr::set($arResult, 'error', true); Arr::set($arResult, 'errors.code', 'Дополнительное поле с таким кодом уже существует в этом компоненте'); } // Запишем массив для передачи в шаблонизатор Arr::set($arResult, 'arField', $arField); Arr::set($arResult, 'complete', false); // Если ошибок нет — запишем даные в БД if (isset($arField['complete']) && !Arr::get($arResult, 'error')) {
$postName = $isEdit ? $arElement['name'] : ''; // Обрабатываем название элемента $postName = trim($_POST['name']); if (strlen($postName) == 0) { $arElementPost['error'] = true; $arElementPost['errors']['name'] = 'Не задано название элемента'; } else { $arExistElement = $main->db->getOne('SELECT id FROM ?n WHERE name = ?s', PREFIX . '_component_' . $component['name'], $postName); if ($arExistElement) { $arElementPost['error'] = true; $arElementPost['errors']['main'] = 'Элемент с таким именем уже существует'; } } $arElementPost['name'] = $postName; if (isset($_POST['alt_name']) && strlen(trim($_POST['alt_name'])) > 0) { $arElementPost['alt_name'] = $main->leffersFilter($_POST['alt_name']); } else { $arElementPost['alt_name'] = $main->slug($arElementPost['name']); } if (isset($_POST['sort_index']) && (int) $_POST['sort_index'] > 0) { $arElementPost['sort_index'] = (int) $_POST['sort_index']; } if (isset($_POST['text']) && strlen(trim($_POST['text'])) > 0) { $arElementPost['text'] = htmlspecialchars(strip_tags(trim($_POST['text']))); } if (!$arElementPost['error']) { if ($isEdit) { // Формируем запрос на обновление элемента $editComponentQuery = 'UPDATE ?n SET sort_index = ?i, read_access = ?s, write_access = ?s, description = ?s WHERE id = ?i'; $main->db->query($editComponentQuery, PREFIX . '_components', $arElementPost['sort_index'], $arElementPost['read_access'], $arElementPost['write_access'], $arElementPost['description'], $arElement['id']); // Очищаем кеш