[*] BO : #PSCFV-3831 : check each field which are required in databases

This commit is contained in:
lLefevre
2012-08-30 16:06:09 +00:00
parent 7fa7171796
commit f0765d10b5
5 changed files with 37 additions and 0 deletions
+22
View File
@@ -1058,6 +1058,28 @@ abstract class ObjectModelCore
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
}
public function validateFieldsRequiredDatabase($htmlentities = true)
{
$errors = array();
$required_fields = (isset(self::$fieldsRequiredDatabase[get_class($this)])) ? self::$fieldsRequiredDatabase[get_class($this)] : array();
foreach ($this->def['fields'] as $field => $data)
{
if (!in_array($field, $required_fields))
continue;
if (!method_exists('Validate', $data['validate']))
throw new PrestaShopException('Validation function not found. '.$data['validate']);
$value = Tools::getValue($field);
if (empty($value))
$errors[] = sprintf(Tools::displayError('The field %s is required.'), self::displayFieldName($field, get_class($this), $htmlentities));
}
return $errors;
}
public function getFieldsRequiredDatabase($all = false)
{
return Db::getInstance()->executeS('
@@ -370,6 +370,10 @@ class AdminAddressesControllerCore extends AdminController
$_POST['id_address'] = '';
}
// Check the requires fields which are settings in the BO
$address = new Address();
$this->errors = array_merge($this->errors, $address->validateFieldsRequiredDatabase());
if (empty($this->errors))
return parent::processSave();
else
@@ -769,6 +769,10 @@ class AdminCustomersControllerCore extends AdminController
if (!is_array(Tools::getValue('groupBox')) || !in_array(Tools::getValue('id_default_group'), Tools::getValue('groupBox')))
$this->errors[] = Tools::displayError('Default customer group must be selected in group box.');
// Check the requires fields which are settings in the BO
$customer = new Customer();
$this->errors = array_merge($this->errors, $customer->validateFieldsRequiredDatabase());
return parent::processSave();
}
+3
View File
@@ -182,6 +182,9 @@ class AddressControllerCore extends FrontController
AND deleted = 0') > 0)
$this->errors[] = sprintf(Tools::displayError('The alias "%s" is already used, please chose another one.'), Tools::safeOutput($_POST['alias']));
// Check the requires fields which are settings in the BO
$this->errors = array_merge($this->errors, $address->validateFieldsRequiredDatabase());
// Don't continue this process if we have errors !
if ($this->errors && !$this->ajax)
return;
+4
View File
@@ -394,6 +394,10 @@ class AuthControllerCore extends FrontController
if (!Tools::getValue('phone') && !Tools::getValue('phone_mobile') && Configuration::get('PS_REGISTRATION_PROCESS_TYPE'))
$this->errors[] = Tools::displayError('You must register at least one phone number');
$this->errors = array_unique(array_merge($this->errors, $customer->validateController()));
// Check the requires fields which are settings in the BO
$this->errors = array_merge($this->errors, $customer->validateFieldsRequiredDatabase());
if (!Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && !$this->ajax && !Tools::isSubmit('submitGuestAccount'))
{
if (!count($this->errors))