validate Mailer Settings admin form
authorAndrew Hunt <andrew@aghstrategies.com>
Thu, 28 Mar 2013 19:41:44 +0000 (15:41 -0400)
committerAndrew Hunt <andrew@aghstrategies.com>
Thu, 28 Mar 2013 19:41:44 +0000 (15:41 -0400)
CRM/Admin/Form/Setting/Mail.php

index 6440da05c933ce6621778f3432b3f6918510b0da..40f7aa0c303309b00b7ccbfde6925b532d82c35f 100644 (file)
@@ -57,8 +57,31 @@ class CRM_Admin_Form_Setting_Mail extends CRM_Admin_Form_Setting {
     // redirect to Administer Section After hitting either Save or Cancel button.
     $session = CRM_Core_Session::singleton();
     $session->pushUserContext(CRM_Utils_System::url('civicrm/admin', 'reset=1'));
+    
+    $this->addFormRule(array('CRM_Admin_Form_Setting_Mail', 'formRule'));
+    $this->addRule('mailerBatchLimit', ts('Must be an integer'), 'integer');
+    $this->addRule('mailThrottleTime', ts('Must be an integer'), 'integer');
+    $this->addRule('mailerJobSize', ts('Must be an integer'), 'integer');
+    $this->addRule('mailerJobsMax', ts('Must be an integer'), 'integer');            
 
     parent::buildQuickForm($check);
   }
+  
+  static function formRule($fields) {
+    $errors = array();
+
+    if (CRM_Utils_Array::value('mailerJobSize', $fields) < 1000
+      && CRM_Utils_Array::value('mailerJobSize', $fields) > 0) {
+      $errors['mailerJobSize'] = ts('The job size must be at least 1000 or set to 0 (unlimited).');
+    }
+    elseif (CRM_Utils_Array::value('mailerJobSize', $fields) <
+      CRM_Utils_Array::value('mailerBatchLimit', $fields)
+      && CRM_Utils_Array::value('mailerBatchLimit', $fields) > 0
+      && CRM_Utils_Array::value('mailerJobSize', $fields) > 0) {
+      $errors['mailerJobSize'] = ts('A job size smaller than the batch limit will negate the effect of the batch limit.');
+    }
+    
+    return empty($errors) ? TRUE : $errors;
+  }
 }