Commit 544e36a4 by Scott

Update validation for answers/comments/profile

parent ea166e4b
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
$inprofile=array(); $inprofile=array();
foreach ($userfields as $userfield) foreach ($userfields as $userfield)
$inprofile[$userfield['fieldid']] = qa_post_text('field_' . $userfield['fieldid']); $inprofile[$userfield['fieldid']] = qa_post_text('field_' . $userfield['fieldid']);
if (!qa_check_form_security_code('account', qa_post_text('code'))) if (!qa_check_form_security_code('account', qa_post_text('code')))
$errors['page'] = qa_lang_html('misc/form_security_again'); $errors['page'] = qa_lang_html('misc/form_security_again');
......
...@@ -90,22 +90,23 @@ class qa_filter_basic ...@@ -90,22 +90,23 @@ class qa_filter_basic
public function filter_answer(&$answer, &$errors, $question, $oldanswer) public function filter_answer(&$answer, &$errors, $question, $oldanswer)
{ {
$this->validate_length($errors, 'content', @$answer['content'], 0, QA_DB_MAX_CONTENT_LENGTH); // for storage $this->validate_field_length($errors, $answer, 'content', 0, QA_DB_MAX_CONTENT_LENGTH); // for storage
$this->validate_length($errors, 'content', @$answer['text'], qa_opt('min_len_a_content'), null); // for display $this->validate_field_length($errors, $answer, 'text', qa_opt('min_len_a_content'), null, 'content'); // for display
$this->validate_post_email($errors, $answer); $this->validate_post_email($errors, $answer);
} }
public function filter_comment(&$comment, &$errors, $question, $parent, $oldcomment) public function filter_comment(&$comment, &$errors, $question, $parent, $oldcomment)
{ {
$this->validate_length($errors, 'content', @$comment['content'], 0, QA_DB_MAX_CONTENT_LENGTH); // for storage $this->validate_field_length($errors, $comment, 'content', 0, QA_DB_MAX_CONTENT_LENGTH); // for storage
$this->validate_length($errors, 'content', @$comment['text'], qa_opt('min_len_c_content'), null); // for display $this->validate_field_length($errors, $comment, 'text', qa_opt('min_len_a_content'), null, 'content'); // for display
$this->validate_post_email($errors, $comment); $this->validate_post_email($errors, $comment);
} }
public function filter_profile(&$profile, &$errors, $user, $oldprofile) public function filter_profile(&$profile, &$errors, $user, $oldprofile)
{ {
foreach ($profile as $field => $value) foreach ($profile as $field => $value) {
$this->validate_length($errors, $field, $value, 0, QA_DB_MAX_PROFILE_CONTENT_LENGTH); $this->validate_field_length($errors, $profile, $field, 0, QA_DB_MAX_CONTENT_LENGTH);
}
} }
...@@ -136,17 +137,21 @@ class qa_filter_basic ...@@ -136,17 +137,21 @@ class qa_filter_basic
* @param int $minlength * @param int $minlength
* @param int $maxlength * @param int $maxlength
*/ */
private function validate_field_length(&$errors, &$post, $key, $minlength, $maxlength) private function validate_field_length(&$errors, &$post, $key, $minlength, $maxlength, $errorKey=null)
{ {
if (!$errorKey) {
$errorKey = $key;
}
// skip the field is key not set (for example, 'title' when recategorizing questions) // skip the field is key not set (for example, 'title' when recategorizing questions)
if (array_key_exists($key, $post)) { if (array_key_exists($key, $post)) {
$length = qa_strlen($post[$key]); $length = qa_strlen($post[$key]);
if ($length < $minlength) { if ($length < $minlength) {
$errors[$key] = $minlength == 1 ? qa_lang('main/field_required') : qa_lang_sub('main/min_length_x', $minlength); $errors[$errorKey] = $minlength == 1 ? qa_lang('main/field_required') : qa_lang_sub('main/min_length_x', $minlength);
} }
else if (isset($maxlength) && ($length > $maxlength)) { else if (isset($maxlength) && ($length > $maxlength)) {
$errors[$key] = qa_lang_sub('main/max_length_x', $maxlength); $errors[$errorKey] = qa_lang_sub('main/max_length_x', $maxlength);
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment