FIX #6867 - Rewrite code to solve regression (not mixing array/string

type and solve php warnings). Also restore $langs as a global var.
This commit is contained in:
Laurent Destailleur 2017-05-19 16:57:38 +02:00
parent 2a0a0f12f3
commit f65b29c135

View File

@ -581,12 +581,6 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
$listfieldmodify=explode(',',$tabfieldinsert[$id]); $listfieldmodify=explode(',',$tabfieldinsert[$id]);
$listfieldvalue=explode(',',$tabfieldvalue[$id]); $listfieldvalue=explode(',',$tabfieldvalue[$id]);
if (GETPOST('actionmodify') && $tabname[$id] == MAIN_DB_PREFIX . "c_actioncomm" && isset($_POST["type"]) && in_array($_POST["type"],array('system','systemauto'))) {
$listfield=explode(',','color,position');
$listfieldmodify=explode(',','color,position');
$listfieldvalue=explode(',','color,position');
}
// Check that all fields are filled // Check that all fields are filled
$ok=1; $ok=1;
foreach ($listfield as $f => $value) foreach ($listfield as $f => $value)
@ -1110,7 +1104,7 @@ if ($id)
if (empty($reshook)) if (empty($reshook))
{ {
fieldList($fieldlist,$langs,$obj,$tabname[$id],'add'); fieldList($fieldlist, $obj, $tabname[$id], 'add');
} }
if ($id == 4) print '<td></td>'; if ($id == 4) print '<td></td>';
@ -1310,13 +1304,7 @@ if ($id)
$error=$hookmanager->error; $errors=$hookmanager->errors; $error=$hookmanager->error; $errors=$hookmanager->errors;
// Show fields // Show fields
if (empty($reshook)) { if (empty($reshook)) fieldList($fieldlist, $obj, $tabname[$id], 'edit');
$fieldl = $fieldlist;
if ($tabname[$id] == MAIN_DB_PREFIX . "c_actioncomm" && in_array($obj->type, array('system', 'systemauto'))) {
$fieldl=array(array('code'),array('libelle'),array('type'),'color','position');
}
fieldList($fieldl, $langs, $obj, $tabname[$id], 'edit');
}
print '<td colspan="3" align="center">'; print '<td colspan="3" align="center">';
print '<div name="'.(! empty($obj->rowid)?$obj->rowid:$obj->code).'"></div>'; print '<div name="'.(! empty($obj->rowid)?$obj->rowid:$obj->code).'"></div>';
@ -1657,15 +1645,14 @@ $db->close();
* Show fields in insert/edit mode * Show fields in insert/edit mode
* *
* @param array $fieldlist Array of fields * @param array $fieldlist Array of fields
* @param Translate $langs Translate class
* @param Object $obj If we show a particular record, obj is filled with record fields * @param Object $obj If we show a particular record, obj is filled with record fields
* @param string $tabname Name of SQL table * @param string $tabname Name of SQL table
* @param string $context 'add'=Output field for the "add form", 'edit'=Output field for the "edit form", 'hide'=Output field for the "add form" but we dont want it to be rendered * @param string $context 'add'=Output field for the "add form", 'edit'=Output field for the "edit form", 'hide'=Output field for the "add form" but we dont want it to be rendered
* @return void * @return void
*/ */
function fieldList($fieldlist, $langs, $obj='', $tabname='', $context='') function fieldList($fieldlist, $obj='', $tabname='', $context='')
{ {
global $conf,$db; global $conf,$langs,$db;
global $form; global $form;
global $region_id; global $region_id;
global $elementList,$sourceList,$localtax_typeList; global $elementList,$sourceList,$localtax_typeList;
@ -1677,7 +1664,15 @@ function fieldList($fieldlist, $langs, $obj='', $tabname='', $context='')
foreach ($fieldlist as $field => $value) foreach ($fieldlist as $field => $value)
{ {
if ($fieldlist[$field] == 'country') if (in_array($fieldlist[$field], array('code', 'libelle', 'type')) && $tabname == MAIN_DB_PREFIX."c_actioncomm" && in_array($obj->type, array('system','systemauto')))
{
$hidden = (! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:'');
print '<td>';
print '<input type="hidden" name="'.$fieldlist[$field].'" value="'.$hidden.'">';
print $langs->trans($hidden);
print '</td>';
}
elseif ($fieldlist[$field] == 'country')
{ {
if (in_array('region_id',$fieldlist)) if (in_array('region_id',$fieldlist))
{ {
@ -1823,14 +1818,6 @@ function fieldList($fieldlist, $langs, $obj='', $tabname='', $context='')
} }
print '</td>'; print '</td>';
} }
elseif (is_array($fieldlist[$field]))
{
$hidden = (! empty($obj->{$fieldlist[$field][0]})?$obj->{$fieldlist[$field][0]}:'');
print '<td>';
print '<input type="hidden" name="'.$fieldlist[$field][0].'" value="'.$hidden.'">';
print $langs->trans($hidden);
print '</td>';
}
else else
{ {
$classtd=''; $class=''; $classtd=''; $class='';