From 5cf2674489f466905c87d9607f9209edf4a6a29c Mon Sep 17 00:00:00 2001
From: Michael Hurley <studio12desgins@gmail.com>
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('<br />', $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('<br />', $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)

