Files
ave-cms-alt/fields/single_line_numeric_three/field.php

160 lines
4.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
// Однострочное числовое (Три значения)
function get_field_single_line_numeric_three($field_value, $action, $field_id = 0, $tpl = '', $tpl_empty = 0, &$maxlength = null, $document_fields = array(), $rubric_id = 0, $default = null, $_tpl=null)
{
global $AVE_Template;
$fld_dir = dirname(__FILE__) . '/'; // Убрал невидимый пробел
$tpl_dir = $fld_dir . 'tpl/';
$fld_name = basename($fld_dir);
$lang_file = $fld_dir . 'lang/' . (defined('ACP') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
$AVE_Template->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 как массив с 3-мя пустыми строками по умолчанию.
$safe_values = ['', '', ''];
if (! empty($field_value))
{
// Если значение не пусто, разделяем его на элементы
$values = explode('|', $field_value);
// Гарантируем, что массив содержит минимум 3 элемента, используя безопасный доступ (?? '')
$safe_values = [
$values[0] ?? '',
$values[1] ?? '',
$values[2] ?? ''
];
}
$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] ?? '');
$value_2 = preg_replace('/[^\d.]/','', $field_value[2] ?? '');
$save = [$value_0, $value_1, $value_2];
}
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;
}
}
?>