コード例 #1
0
 public static function handleContactRequest()
 {
     // get optional subform name
     $subform = static::shiftPath();
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         // validate
         $Validator = new RecordValidator($_REQUEST);
         foreach (static::$validators as $validatorConfig) {
             // execute callable validator
             if (is_callable($validatorConfig)) {
                 $validatorConfig($Validator, $subform);
             } else {
                 if (!empty($validatorConfig['subforms']) && is_array($validatorConfig['subforms']) && (!$subform || !in_array($subform, $validatorConfig['subforms']))) {
                     // skip if validator specific to other subforms
                     continue;
                 }
                 $Validator->validate($validatorConfig);
             }
         }
         if (!$Validator->hasErrors()) {
             // save to database
             $Submission = new ContactSubmission::$defaultClass();
             $Submission->Data = array_diff_key($_REQUEST, array_flip(static::$excludeFields));
             $Submission->Subform = $subform;
             $Submission->save();
             // generate email report
             if (!empty(static::$emailTo)) {
                 $headers = array();
                 if (!empty($_REQUEST['Email']) && Validators::email($_REQUEST['Email'])) {
                     $headers['Reply-To'] = $_REQUEST['Email'];
                 }
                 Emergence\Mailer\Mailer::sendFromTemplate(static::$emailTo, 'staffNotice', array('Submission' => $Submission, 'formatters' => static::$formatters), array('Headers' => $headers));
             }
             // respond success
             return static::respond('contactSubmitted', array('success' => true, 'subform' => $subform));
         }
     }
     return static::respond('contact', array('validationErrors' => isset($Validator) ? $Validator->getErrors() : array(), 'subform' => $subform));
 }