// Fix fields validation in preferences on fix with no visibility (for multishop) #PSTEST-267

This commit is contained in:
rMalie
2012-01-03 10:35:21 +00:00
parent f062081c68
commit 2bb40c0727
+13 -6
View File
@@ -847,7 +847,7 @@ class AdminControllerCore extends Controller
$languages = Language::getLanguages(false); $languages = Language::getLanguages(false);
foreach ($this->options as $category => $category_data) foreach ($this->options as $category_data)
{ {
if (!isset($category_data['fields'])) if (!isset($category_data['fields']))
continue; continue;
@@ -855,6 +855,7 @@ class AdminControllerCore extends Controller
$fields = $category_data['fields']; $fields = $category_data['fields'];
foreach ($fields as $field => $values) foreach ($fields as $field => $values)
{
if (isset($values['type']) && $values['type'] == 'selectLang') if (isset($values['type']) && $values['type'] == 'selectLang')
{ {
foreach ($languages as $lang) foreach ($languages as $lang)
@@ -866,9 +867,16 @@ class AdminControllerCore extends Controller
'list' => $values['list'] 'list' => $values['list']
); );
} }
}
/* Check required fields */ // Validate fields
foreach ($fields as $field => $values) foreach ($fields as $field => $values)
{
// We don't validate fields with no visibility
if (Shop::isFeatureActive() && isset($values['visibility']) && ($values['visibility'] > Context::getContext()->shop->getContextType()))
continue;
// Check if field is required
if (isset($values['required']) && $values['required'] && !isset($_POST['configUseDefault'][$field])) if (isset($values['required']) && $values['required'] && !isset($_POST['configUseDefault'][$field]))
if (isset($values['type']) && $values['type'] == 'textLang') if (isset($values['type']) && $values['type'] == 'textLang')
{ {
@@ -879,8 +887,7 @@ class AdminControllerCore extends Controller
else if (($value = Tools::getValue($field)) == false && (string)$value != '0') else if (($value = Tools::getValue($field)) == false && (string)$value != '0')
$this->_errors[] = Tools::displayError('field').' <b>'.$values['title'].'</b> '.Tools::displayError('is required.'); $this->_errors[] = Tools::displayError('field').' <b>'.$values['title'].'</b> '.Tools::displayError('is required.');
/* Check fields validity */ // Check field validator
foreach ($fields as $field => $values)
if (isset($values['type']) && $values['type'] == 'textLang') if (isset($values['type']) && $values['type'] == 'textLang')
{ {
foreach ($languages as $language) foreach ($languages as $language)
@@ -892,10 +899,10 @@ class AdminControllerCore extends Controller
if (!Validate::$values['validation'](Tools::getValue($field))) if (!Validate::$values['validation'](Tools::getValue($field)))
$this->_errors[] = Tools::displayError('field').' <b>'.$values['title'].'</b> '.Tools::displayError('is invalid.'); $this->_errors[] = Tools::displayError('field').' <b>'.$values['title'].'</b> '.Tools::displayError('is invalid.');
/* Default value if null */ // Set default value
foreach ($fields as $field => $values)
if (!Tools::getValue($field) && isset($values['default'])) if (!Tools::getValue($field) && isset($values['default']))
$_POST[$field] = $values['default']; $_POST[$field] = $values['default'];
}
if (!count($this->_errors)) if (!count($this->_errors))
{ {