public static function validate($post = array()) { if (empty($post)) { $post = $_POST; } self::$post = $post; self::$values = array(); self::$attachments = array(); self::$invalid = array(); self::$columns = array(self::csvfield('RecordID'), self::csvfield('Date'), self::csvfield('IP')); self::$csvValues = array(self::csvfield(self::getRecordID()), self::csvfield(date("Y-m-d H:i:s")), self::csvfield($_SERVER['REMOTE_ADDR'])); self::$serverValidationFields = empty(self::$post['serverValidationFields']) ? array() : explode(',', self::$post['serverValidationFields']); self::$style = 'font-family:Verdana, Arial, Helvetica, sans-serif; font-size : 13px; color:#474747;padding:6px;border:1px solid #cccccc;'; self::$rows = array(); $config = self::getConfig(); $ok = self::validateReCaptcha($post, $config['recaptcha']['secretKey']); if (!$ok) { self::$invalid[] = 'recaptcha'; } foreach ($config['fields'] as $f) { switch ($f['field_type']) { case 'section_break': case 'recaptcha': case 'submit': // are not data fields, ignore them, do nothing break; // creditcard field contains extra fields, have to validate them one by one // creditcard field contains extra fields, have to validate them one by one case 'creditcard': self::_validateCreditcardFields($f); break; default: self::_validateField($f); } } // foreach self::$values['dataTable'] = empty(self::$rows) ? '' : '<table cellspacing="0" cellpadding="0" border="1" bordercolor="#cccccc" style="border:1px solid #cccccc;"><tbody>' . join("\n", self::$rows) . '</table>'; // save form data to file if (self::isValid()) { self::saveRecord(); } // add preset tags self::presetTags(); self::$isValidated = true; // validation checked }