1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-30 19:30:25 +02:00

Fixes #4484 - Modification of extended field of type EUF_ADDON causes corrupted data.

This commit is contained in:
Cameron
2021-04-13 11:28:25 -07:00
parent 7e6c077462
commit b06e0e16fb

View File

@@ -356,7 +356,7 @@ e107::js('footer-inline', js());
'user_extended_struct_id' => array ( 'title' => LAN_ID, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_name' => array ( 'title' => LAN_NAME, 'type' => 'method', 'data' => 'str', 'readonly'=>true, 'width' => '350px', 'help' => '', 'readParms' => '', 'writeParms' => array('tdClassRight' => 'form-inline', 'pre' => 'user_ ', 'required'=>true), 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_text' => array ( 'title' => EXTLAN_79, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'inline' => true, 'help' => '', 'readParms' => 'constant=1', 'writeParms' => array('required'=>true), 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_type' => array ( 'title' => EXTLAN_2, 'type' => 'method', 'data' => 'int', 'width' => 'auto', 'batch' => true, 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_type' => array ( 'title' => LAN_PREVIEW, 'type' => 'method', 'data' => 'int', 'width' => 'auto', 'batch' => true, 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_values' => array ( 'title' => EXTLAN_82, 'type' => 'method', 'nolist'=>true, 'data' => 'str', 'width' => 'auto', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_default' => array ( 'title' => EXTLAN_16, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_parent' => array ( 'title' => LAN_CATEGORY, 'type' => 'dropdown', 'tab'=>1, 'data' => 'int', 'width' => 'auto', 'batch' => true, 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => array('size'=>'xxlarge'), 'class' => 'left', 'thclass' => 'left', ),
@@ -395,7 +395,9 @@ e107::js('footer-inline', js());
{
parent::EditObserver();
$parms = e107::getDb()->retrieve('user_extended_struct', 'user_extended_struct_parms',"user_extended_struct_id = ".intval($_GET['id']));
$row = e107::getDb()->retrieve('user_extended_struct', 'user_extended_struct_type,user_extended_struct_parms',"user_extended_struct_id = ".intval($_GET['id']));
$parms = $row['user_extended_struct_parms'];
$tmp = explode('^,^', $parms);
$this->fields['field_include']['writeParms']['default'] = $tmp[0];
@@ -405,6 +407,20 @@ e107::js('footer-inline', js());
$this->fields['field_placeholder']['writeParms']['default'] = $tmp[4];
$this->fields['field_helptip']['writeParms']['default'] = $tmp[5];
if((int) $row['user_extended_struct_type'] === 12) // EUF_ADDON
{
unset(
$this->fields['field_include'],
$this->fields['field_regex'],
$this->fields['field_regexfail'],
$this->fields['field_userhide'],
$this->fields['field_placeholder'],
$this->fields['field_helptip'],
$this->fields['user_extended_struct_default']
);
}
}
@@ -569,7 +585,8 @@ e107::js('footer-inline', js());
if ($ue->user_extended_field_exist($new_data['user_extended_struct_name']))
{
$field_info = $ue->user_extended_type_text($new_data['user_extended_struct_type'], $new_data['user_extended_struct_default']);
$type = isset($new_data['user_extended_struct_type']) ? $new_data['user_extended_struct_type'] : $old_data['user_extended_struct_type'];
$field_info = $ue->user_extended_type_text($type, $new_data['user_extended_struct_default']);
if(false === $field_info) // wrong type
{
@@ -846,11 +863,9 @@ e107::js('footer-inline', js());
{
case 'read': // List Page
$ext = $this->getController()->getListModel()->getData();
// return print_a($ext,true);
$ext['user_extended_struct_required'] = 0; // so the form can be posted.
return e107::getUserExt()->user_extended_edit($ext,$ext['user_extended_struct_default']);
return e107::getUserExt()->renderElement($ext,$ext['user_extended_struct_default']);
// reutrn e107::getParser()>toHTML(deftrue($ext['user_extended_struct_text'], $ext['user_extended_struct_text']), FALSE, "defs")
break;
@@ -863,6 +878,11 @@ e107::js('footer-inline', js());
$types = e107::getUserExt()->getFieldTypes();
if($curVal == EUF_ADDON)
{
return LAN_PLUGIN;
}
return $this->select('user_extended_struct_type', $types, $curVal, array('class'=>'tbox e-select'));
}
@@ -953,6 +973,11 @@ e107::js('footer-inline', js());
$type = (int) varset($current['user_extended_struct_type']);
if($type === EUF_ADDON)
{
return '-';
}
$val_hide = ($type !== EUF_DB_FIELD && $type !== EUF_TEXT && $type !== EUF_COUNTRY ) ? "visible" : "none";
if($type == 0)