From 5cf2674489f466905c87d9607f9209edf4a6a29c Mon Sep 17 00:00:00 2001 From: Michael Hurley Date: Wed, 29 Jan 2014 18:40:19 -0500 Subject: [PATCH] wysiwyg_filter issue [744970] wysiwyg_filter.admin.inc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @see drupal.org/node/744970 — applied status check to all functions that needed &form_state as a param --- .../wysiwyg_filter/wysiwyg_filter.admin.inc | 114 +++++++++++---------- 1 file changed, 60 insertions(+), 54 deletions(-) diff --git a/wysiwyg_filter.admin.inc b/wysiwyg_filter.admin.inc index 4fa4031..804707d 100644 --- a/wysiwyg_filter.admin.inc +++ b/wysiwyg_filter.admin.inc @@ -234,48 +234,51 @@ function _wysiwyg_filter_clear_messages() { * @ingroup forms */ function wysiwyg_filter_filter_wysiwyg_settings_validate($form, &$form_state) { - $values =& $form_state['values']['filters']['wysiwyg']['settings']; - - // *** validate valid_elements *** - // Check elements against hardcoded backlist. - $elements_blacklist = wysiwyg_filter_get_elements_blacklist(); - $valid_elements = trim($values['valid_elements']); - $valid_elements = wysiwyg_filter_parse_valid_elements($valid_elements); - $forbidden_elements = array(); - foreach (array_keys($valid_elements) as $element) { - if (in_array($element, $elements_blacklist)) { - $forbidden_elements[] = $element; - } - } - if (!empty($forbidden_elements)) { - form_set_error('valid_elements', t('The following elements cannot be allowed: %elements.', array('%elements' => implode(', ', $forbidden_elements)))); - } - - // *** validate nofollow_domains *** - foreach (wysiwyg_filter_get_advanced_rules() as $rule_key => $rule_info) { - $field_name = "rule_$rule_key"; - $expressions = array_filter(explode(',', preg_replace('#\s+#', ',', trim($values[$field_name])))); // form2db - $errors = array(); - foreach ($expressions as $expression) { - if (preg_match('`[*?]\*|\*\?`', $expression)) { - $errors[] = t('Invalid expression %expression. Please, do not use more than one consecutive asterisk (**) or one that is next to a question mark wildcard (?* or *?).', array('%expression' => $expression)); - } - if (!preg_match($rule_info['validate_regexp'], $expression)) { - $errors[] = t('Invalid expression %expression. Please, check the syntax of the %field field.', array('%expression' => $expression, '%field' => $rule_info['title'])); - } - } - if (!empty($errors)) { - form_set_error($field_name, implode('
', $errors)); - } - } - - // *** validate nofollow_domains *** - $nofollow_domains = array_filter(explode(',', preg_replace('#\s+#', ',', $values['nofollow_domains']))); // form2db - foreach ($nofollow_domains as $nofollow_domain) { - if (!preg_match('#^([a-z0-9]([-a-z0-9]*)?\.)+([a-z]+)$#i', $nofollow_domain)) { - form_set_error('nofollow_domains', t('Invalid domain %domain. Please, enter a comma separated list of valid domain names.', array('%domain' => $nofollow_domain))); - } - } + $status =& $form_state['values']['filters']['wysiwyg']['status']; + if($status == 1){ // check that we're allowed to validate first + $values =& $form_state['values']['filters']['wysiwyg']['settings']; + + // *** validate valid_elements *** + // Check elements against hardcoded backlist. + $elements_blacklist = wysiwyg_filter_get_elements_blacklist(); + $valid_elements = trim($values['valid_elements']); + $valid_elements = wysiwyg_filter_parse_valid_elements($valid_elements); + $forbidden_elements = array(); + foreach (array_keys($valid_elements) as $element) { + if (in_array($element, $elements_blacklist)) { + $forbidden_elements[] = $element; + } + } + if (!empty($forbidden_elements)) { + form_set_error('valid_elements', t('The following elements cannot be allowed: %elements.', array('%elements' => implode(', ', $forbidden_elements)))); + } + + // *** validate nofollow_domains *** + foreach (wysiwyg_filter_get_advanced_rules() as $rule_key => $rule_info) { + $field_name = "rule_$rule_key"; + $expressions = array_filter(explode(',', preg_replace('#\s+#', ',', trim($values[$field_name])))); // form2db + $errors = array(); + foreach ($expressions as $expression) { + if (preg_match('`[*?]\*|\*\?`', $expression)) { + $errors[] = t('Invalid expression %expression. Please, do not use more than one consecutive asterisk (**) or one that is next to a question mark wildcard (?* or *?).', array('%expression' => $expression)); + } + if (!preg_match($rule_info['validate_regexp'], $expression)) { + $errors[] = t('Invalid expression %expression. Please, check the syntax of the %field field.', array('%expression' => $expression, '%field' => $rule_info['title'])); + } + } + if (!empty($errors)) { + form_set_error($field_name, implode('
', $errors)); + } + } + + // *** validate nofollow_domains *** + $nofollow_domains = array_filter(explode(',', preg_replace('#\s+#', ',', $values['nofollow_domains']))); // form2db + foreach ($nofollow_domains as $nofollow_domain) { + if (!preg_match('#^([a-z0-9]([-a-z0-9]*)?\.)+([a-z]+)$#i', $nofollow_domain)) { + form_set_error('nofollow_domains', t('Invalid domain %domain. Please, enter a comma separated list of valid domain names.', array('%domain' => $nofollow_domain))); + } + } + } } /** @@ -287,19 +290,22 @@ function wysiwyg_filter_filter_wysiwyg_settings_validate($form, &$form_state) { * @ingroup forms */ function wysiwyg_filter_filter_wysiwyg_settings_submit($form, &$form_state) { - $values =& $form_state['values']['filters']['wysiwyg']['settings']; - - // *** prepare valid_elements - just trim *** - $values['valid_elements'] = trim($values['valid_elements']); - - // *** prepare rules - csv2array *** - foreach (array_keys(wysiwyg_filter_get_advanced_rules()) as $rule_key) { - $field_name = "rule_$rule_key"; - $values[$field_name] = wysiwyg_filter_csv2array($values[$field_name]); + $status =& $form_state['values']['filters']['wysiwyg']['status']; + if($status == 1){ // check that we're allowed to validate first + $values =& $form_state['values']['filters']['wysiwyg']['settings']; + + // *** prepare valid_elements - just trim *** + $values['valid_elements'] = trim($values['valid_elements']); + + // *** prepare rules - csv2array *** + foreach (array_keys(wysiwyg_filter_get_advanced_rules()) as $rule_key) { + $field_name = "rule_$rule_key"; + $values[$field_name] = wysiwyg_filter_csv2array($values[$field_name]); + } + + // *** prepare nofollow_domains - csv2array *** + $values['nofollow_domains'] = wysiwyg_filter_csv2array($values['nofollow_domains']); } - - // *** prepare nofollow_domains - csv2array *** - $values['nofollow_domains'] = wysiwyg_filter_csv2array($values['nofollow_domains']); } /* -- 1.8.3.4 (Apple Git-47)