Пример #1
0
 /**
  * Save extra data to session
  *
  * @param string $redirectQ
  *
  * @param string $redirectP
  *
  * @return string
  */
 protected function saveExtra($redirectQ, $redirectP)
 {
     $message = '';
     if (count(filter_input_array(INPUT_POST))) {
         $type = null;
         $extra = array();
         $extraTypes = array('cruise' => 'cruise', 'hotel' => 'hotel', 'tour' => 'tourOperator', 'car' => 'carRental');
         $extraName = filter_input(INPUT_POST, 'extra');
         // Check extra type
         if (isset($extraTypes[$extraName])) {
             $type = $extraTypes[$extraName];
         }
         $errors = false;
         if (!empty($type)) {
             $extraFrom = filter_input(INPUT_POST, $extraName . 'From');
             $extraTo = filter_input(INPUT_POST, $extraName . 'To');
             $extra[$type] = array();
             $extra[$type]['checkIn'] = $extraFrom && strtotime($extraFrom) ? date("Y-m-d", strtotime($extraFrom)) : $extraFrom;
             $extra[$type]['checkOut'] = $extraTo && strtotime($extraTo) ? date("Y-m-d", strtotime($extraTo)) : $extraTo;
             if ($type === 'hotel') {
                 $extra[$type]['numberInParty'] = filter_input(INPUT_POST, 'numberInParty');
                 $extra[$type]['guestName'] = filter_input(INPUT_POST, 'guestName');
                 $extra[$type]['folioRefNumber'] = filter_input(INPUT_POST, 'referenceNumber');
                 $extra[$type]['confirmedReservation'] = !!filter_input(INPUT_POST, 'confirmedReservation') ? 'Y' : 'N';
                 $extra[$type]['dailyRoomRate'] = filter_input(INPUT_POST, 'roomRate');
             }
             $rules = $this->extraInformationRules($type);
             $errors = $this->validate($rules, $extra[$type]);
         }
         // Check collect recipient details
         if ($this->sagepayConfig->getCollectRecipientDetails()) {
             $extra['fiRecipientAcctNumber'] = filter_input(INPUT_POST, 'fiRecipientAcctNumber');
             $extra['fiRecipientDob'] = filter_input(INPUT_POST, 'fiRecipientDob');
             $extra['fiRecipientPostCode'] = filter_input(INPUT_POST, 'fiRecipientPostCode');
             $extra['fiRecipientSurname'] = filter_input(INPUT_POST, 'fiRecipientSurname');
             $fiRecipientRules = $this->recipientDetailsRules();
             $fiRecipientErrors = $this->validate($fiRecipientRules, $extra);
             if ($fiRecipientErrors) {
                 $errors = $errors ? $errors + $fiRecipientErrors : $fiRecipientErrors;
             }
         }
         // Check if extra information was failed
         if (!$errors) {
             HelperCommon::setStore('extra', $extra);
             $this->redirect($redirectQ, $redirectP);
         } else {
             $hMessage = new HelperMessage();
             $message = $hMessage->getAllMessages($errors, array('checkIn' => 'Check In', 'checkOut' => 'Check Out', 'numberInParty' => 'Number In Party', 'guestName' => 'Guest Name', 'folioRefNumber' => 'Reference Number', 'dailyRoomRate' => 'Room Rate', 'fiRecipientAcctNumber' => 'Account number', 'fiRecipientDob' => 'Date of birth', 'fiRecipientPostCode' => 'Post code', 'fiRecipientSurname' => 'Surname'));
             $this->error = true;
             $message = "Sorry, the following problems were found: " . $message;
         }
     }
     return $message;
 }