config_load($lang_file, 'lang'); $AVE_Template->assign('config_vars', $AVE_Template->get_config_vars()); $AVE_Template->config_load($lang_file, 'admin'); switch ($action) { case 'edit': // Инициализируем $field_value как массив с 2-мя пустыми строками по умолчанию. $safe_values = ['', '']; if (! empty($field_value)) { // Если значение не пусто, разделяем его на элементы $values = explode('|', $field_value); // Гарантируем, что массив содержит минимум 2 элемента, используя безопасный доступ $safe_values = [ $values[0] ?? '', $values[1] ?? '' ]; } $AVE_Template->assign('field_dir', $fld_name); $AVE_Template->assign('field_id', $field_id); $AVE_Template->assign('field_value', $safe_values); // Присваиваем гарантированный массив $tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl); return $AVE_Template->fetch($tpl_file); break; case 'doc': if ($tpl_empty) { $value = array(); if (! empty($field_value)) { $value = array_diff(explode('|', $field_value), array('')); $value = array_map('clean_php', $value); } } else { $field_param = explode('|', $field_value); $field_value = preg_replace_callback( '/\[tag:parametr:(\d+)\]/i', function($data) use($field_param) { return $field_param[(int)$data[1]]; }, $tpl ); } $tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc', $_tpl); if ($tpl_empty && $tpl_file) { $AVE_Template->assign('field_value', $value); return $AVE_Template->fetch($tpl_file); } return $field_value; break; case 'req': if ($tpl_empty) { $value = array(); if (! empty($field_value)) { $value = explode('|', $field_value); $value = array_map('clean_php', $value); } } else { $field_param = explode('|', $field_value); $field_value = preg_replace_callback( '/\[tag:parametr:(\d+)\]/i', function($data) use($field_param) { return $field_param[(int)$data[1]]; }, $tpl ); } $tpl_file = get_field_tpl($tpl_dir, $field_id, 'req', $_tpl); if ($tpl_empty && $tpl_file) { $AVE_Template->assign('field_value', $value); return $AVE_Template->fetch($tpl_file); } return $field_value; break; case 'save': // Обрабатываем массив из двух значений, очищаем и собираем в строку '|' $save = array(); if (is_array($field_value)) { // Очищаем каждое из двух значений и сохраняем $value_0 = preg_replace('/[^\d.]/','', $field_value[0] ?? ''); $value_1 = preg_replace('/[^\d.]/','', $field_value[1] ?? ''); $save = [$value_0, $value_1]; } // Если пришла не строка, но не массив, возвращаем то, что есть (для совместимости) elseif (!empty($field_value)) { $save[] = preg_replace('/[^\d.]/','', $field_value); } return empty($save) ? '' : implode('|', $save); case 'api': if (! empty($field_value)) $field_value = explode('|', $field_value); return $field_value; case 'name': return $AVE_Template->get_config_vars('name'); default: return $field_value; } } ?>