Index: trunk/core/kernel/db/db_tag_processor.php =================================================================== diff -u -N -r3038 -r3086 --- trunk/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 3038) +++ trunk/core/kernel/db/db_tag_processor.php (.../db_tag_processor.php) (revision 3086) @@ -591,10 +591,18 @@ { if ($params['field'] == 'any') { $object =& $this->Application->recallObject($this->getPrefixSpecial()); - return $object->HasErrors(); + return $object->HasErrors($params); } else { - return $this->Error($params) != ''; + $fields = $this->SelectParam($params, 'field,fields'); + $fields = explode(',', $fields); + $res = false; + foreach($fields as $field) + { + $params['field'] = $field; + $res = $res || ($this->Error($params) != ''); + } + return $res; } } Index: trunk/core/kernel/db/dbitem.php =================================================================== diff -u -N -r3084 -r3086 --- trunk/core/kernel/db/dbitem.php (.../dbitem.php) (revision 3084) +++ trunk/core/kernel/db/dbitem.php (.../dbitem.php) (revision 3086) @@ -427,12 +427,17 @@ return true; } - function HasErrors() + function HasErrors($params = Array()) { $global_res = false; - foreach ($this->Fields as $field => $params) { + if($skip_fields = getArrayValue($params, 'except')) + { + if(!is_array($skip_fields)) $skip_fields = explode(',', $skip_fields); + } + foreach ($this->Fields as $field => $field_params) { // If Formatter has set some error messages during values parsing - if (isset($this->FieldErrors[$field]['pseudo']) && $this->FieldErrors[$field] != '') { + if ( !(is_array($skip_fields) && in_array($field, $skip_fields) ) && + isset($this->FieldErrors[$field]['pseudo']) && $this->FieldErrors[$field] != '') { $global_res = true; } } Index: trunk/kernel/units/users/users_tag_processor.php =================================================================== diff -u -N -r2728 -r3086 --- trunk/kernel/units/users/users_tag_processor.php (.../users_tag_processor.php) (revision 2728) +++ trunk/kernel/units/users/users_tag_processor.php (.../users_tag_processor.php) (revision 3086) @@ -155,8 +155,12 @@ function HasError($params) { - $res = parent::HasError($params) || $this->Application->GetVar('MustAgreeToTerms'); - $res = $res || $this->Application->GetVar('SSNRequiredError'); + $res = parent::HasError($params); + if($this->SelectParam($params,'field,fields') == 'any') + { + $res = $res || $this->Application->GetVar('MustAgreeToTerms'); + $res = $res || $this->Application->GetVar('SSNRequiredError'); + } return $res; } Index: trunk/core/units/users/users_tag_processor.php =================================================================== diff -u -N -r2728 -r3086 --- trunk/core/units/users/users_tag_processor.php (.../users_tag_processor.php) (revision 2728) +++ trunk/core/units/users/users_tag_processor.php (.../users_tag_processor.php) (revision 3086) @@ -155,8 +155,12 @@ function HasError($params) { - $res = parent::HasError($params) || $this->Application->GetVar('MustAgreeToTerms'); - $res = $res || $this->Application->GetVar('SSNRequiredError'); + $res = parent::HasError($params); + if($this->SelectParam($params,'field,fields') == 'any') + { + $res = $res || $this->Application->GetVar('MustAgreeToTerms'); + $res = $res || $this->Application->GetVar('SSNRequiredError'); + } return $res; }