From 7cde72c1034afe2b8db247f33d481ea2ea9a42f2 Mon Sep 17 00:00:00 2001 From: aKorczak Date: Tue, 7 Feb 2012 17:26:39 +0000 Subject: [PATCH] [*] WS : Fix, Webservice use definitions property instead of fieldsValidate, fieldsRequired, etc.. --- classes/ObjectModel.php | 118 ++++++++++++---------------------------- 1 file changed, 35 insertions(+), 83 deletions(-) diff --git a/classes/ObjectModel.php b/classes/ObjectModel.php index 74869a144..81232de87 100644 --- a/classes/ObjectModel.php +++ b/classes/ObjectModel.php @@ -849,98 +849,50 @@ abstract class ObjectModelCore unset($default_resource_parameters['retrieveData']['retrieveMethod']); $resource_parameters = array_merge_recursive($default_resource_parameters, $this->{$ws_params_attribute_name}); - if (isset($this->fieldsSize)) - foreach ($this->fieldsSize as $field_name => $max_size) - { - if (!isset($resource_parameters['fields'][$field_name])) - $resource_parameters['fields'][$field_name] = array('required' => false); - $resource_parameters['fields'][$field_name] = array_merge( - $resource_parameters['fields'][$field_name], - $resource_parameters['fields'][$field_name] = array('sqlId' => $field_name, 'maxSize' => $max_size, 'i18n' => false) - ); - } - if (isset($this->fieldsValidate)) - foreach ($this->fieldsValidate as $field_name => $validate_method) - { - if (!isset($resource_parameters['fields'][$field_name])) - $resource_parameters['fields'][$field_name] = array('required' => false); - $resource_parameters['fields'][$field_name] = array_merge( - $resource_parameters['fields'][$field_name], - $resource_parameters['fields'][$field_name] = array( - 'sqlId' => $field_name, - 'validateMethod' => ( - array_key_exists('validateMethod', $resource_parameters['fields'][$field_name]) ? - array_merge($resource_parameters['fields'][$field_name]['validateMethod'], array($validate_method)) : - array($validate_method) - ), - 'i18n' => false - ) - ); - } - if (isset($this->fieldsRequired)) + $definition = ObjectModel::getDefinition($this); + + $required_fields = (isset(self::$fieldsRequiredDatabase[get_class($this)]) ? self::$fieldsRequiredDatabase[get_class($this)] : array()); + foreach ($definition['fields'] as $field_name => $details) { - $fieldsRequired = array_merge( - $this->fieldsRequired, - (isset(self::$fieldsRequiredDatabase[get_class($this)]) ? self::$fieldsRequiredDatabase[get_class($this)] : array()) - ); - foreach ($fieldsRequired as $field_required) + if (!isset($resource_parameters['fields'][$field_name])) + $resource_parameters['fields'][$field_name] = array(); + $current_field = array(); + $current_field['sqlId'] = $field_name; + + if (isset($details['size'])) + $current_field['maxSize'] = $details['size']; + + if (isset($details['lang'])) + $current_field['i18n'] = $details['lang']; + else + $current_field['i18n'] = false; + + + if ((isset($details['required']) && $details['required'] === true) || in_array($field_name, $required_fields)) + $current_field['required'] = true; + else + $current_field['required'] = false; + + + if (isset($details['validate'])) { - if (!isset($resource_parameters['fields'][$field_required])) - $resource_parameters['fields'][$field_required] = array(); - $resource_parameters['fields'][$field_required] = array_merge( - $resource_parameters['fields'][$field_required], - $resource_parameters['fields'][$field_required] = array('sqlId' => $field_required, 'required' => true, 'i18n' => false) - ); + $current_field['validateMethod'] = ( + array_key_exists('validateMethod', $resource_parameters['fields'][$field_name]) ? + array_merge($resource_parameters['fields'][$field_name]['validateMethod'], array($details['validate'])) : + array($details['validate']) + ); } + $resource_parameters['fields'][$field_name] = array_merge($resource_parameters['fields'][$field_name], $current_field); } - if (isset($this->fieldsSizeLang)) - foreach ($this->fieldsSizeLang as $field_name => $max_size) - { - if (!isset($resource_parameters['fields'][$field_name])) - $resource_parameters['fields'][$field_name] = array('required' => false); - $resource_parameters['fields'][$field_name] = array_merge( - $resource_parameters['fields'][$field_name], - $resource_parameters['fields'][$field_name] = array('sqlId' => $field_name, 'maxSize' => $max_size, 'i18n' => true) - ); - } - if (isset($this->fieldsValidateLang)) - foreach ($this->fieldsValidateLang as $field_name => $validate_method) - { - if (!isset($resource_parameters['fields'][$field_name])) - $resource_parameters['fields'][$field_name] = array('required' => false); - $resource_parameters['fields'][$field_name] = array_merge( - $resource_parameters['fields'][$field_name], - $resource_parameters['fields'][$field_name] = array( - 'sqlId' => $field_name, - 'validateMethod' => ( - array_key_exists('validateMethod', $resource_parameters['fields'][$field_name]) ? - array_merge($resource_parameters['fields'][$field_name]['validateMethod'], array($validate_method)) : - array($validate_method) - ), - 'i18n' => true - ) - ); - } - - if (isset($this->fieldsRequiredLang)) - foreach ($this->fieldsRequiredLang as $field) - { - if (!isset($resource_parameters['fields'][$field])) - $resource_parameters['fields'][$field] = array(); - $resource_parameters['fields'][$field] = array_merge( - $resource_parameters['fields'][$field], - $resource_parameters['fields'][$field] = array('sqlId' => $field, 'required' => true, 'i18n' => true) - ); - } - if (isset($this->date_add)) $resource_parameters['fields']['date_add']['setter'] = false; if (isset($this->date_upd)) $resource_parameters['fields']['date_upd']['setter'] = false; - - foreach ($resource_parameters['fields'] as $key => &$resource_parameters_field) + + + foreach ($resource_parameters['fields'] as $key => $resource_parameters_field) if (!isset($resource_parameters_field['sqlId'])) - $resource_parameters['sqlId'] = $key; + $resource_parameters['fields'][$key]['sqlId'] = $key; return $resource_parameters; }