protected function has_feed($form_id, $meets_conditional_logic = null) { $feeds = $this->get_feeds($form_id); if (!$feeds) { return false; } if ($meets_conditional_logic) { $form = GFFormsModel::get_form_meta($form_id); $entry = GFFormsModel::create_lead($form); foreach ($feeds as $feed) { if ($this->is_feed_condition_met($feed, $form, $entry)) { return true; } } //no active feed found, return false return false; } //does not require that feed meets conditional logic. return true since there are feeds return true; }
public static function update_confirmation($form, $lead = null, $event = '') { if (!is_array(rgar($form, 'confirmations'))) { return $form; } if (!empty($event)) { $confirmations = wp_filter_object_list($form['confirmations'], array('event' => $event)); } else { $confirmations = $form['confirmations']; } // if there is only one confirmation, don't bother with the conditional logic, just return it // this is here mostly to avoid the semi-costly GFFormsModel::create_lead() function unless we really need it if (is_array($form['confirmations']) && count($confirmations) <= 1) { $form['confirmation'] = reset($confirmations); return $form; } if (empty($lead)) { $lead = GFFormsModel::create_lead($form); } foreach ($confirmations as $confirmation) { if (rgar($confirmation, 'event') != $event) { continue; } if (rgar($confirmation, 'isDefault')) { continue; } if (isset($confirmation['isActive']) && !$confirmation['isActive']) { continue; } $logic = rgar($confirmation, 'conditionalLogic'); if (GFCommon::evaluate_conditional_logic($logic, $form, $lead)) { $form['confirmation'] = $confirmation; return $form; } } $filtered_list = wp_filter_object_list($form['confirmations'], array('isDefault' => true)); $form['confirmation'] = reset($filtered_list); return $form; }
public function validation($validation_result) { if (!$validation_result['is_valid'] || !GFFormDisplay::is_last_page($validation_result['form'])) { return $validation_result; } $form = $validation_result['form']; $entry = GFFormsModel::create_lead($form); $feed = $this->get_payment_feed($entry, $form); if (!$feed) { return $validation_result; } $submission_data = $this->get_submission_data($feed, $form, $entry); //Do not process payment if payment amount is 0 if (floatval($submission_data['payment_amount']) <= 0) { $this->log_debug(__METHOD__ . '(): Payment amount is $0.00 or less. Not sending to payment gateway.'); return $validation_result; } $this->is_payment_gateway = true; $this->current_feed = $this->_single_submission_feed = $feed; $this->current_submission_data = $submission_data; $performed_authorization = false; $is_subscription = $feed['meta']['transactionType'] == 'subscription'; if ($this->payment_method_is_overridden('authorize') && !$is_subscription) { //Running an authorization only transaction if function is implemented and this is a single payment $this->authorization = $this->authorize($feed, $submission_data, $form, $entry); $performed_authorization = true; } elseif ($this->payment_method_is_overridden('subscribe') && $is_subscription) { $subscription = $this->subscribe($feed, $submission_data, $form, $entry); $this->authorization['is_authorized'] = $subscription['is_success']; $this->authorization['error_message'] = rgar($subscription, 'error_message'); $this->authorization['subscription'] = $subscription; $performed_authorization = true; } if ($performed_authorization) { $this->log_debug(__METHOD__ . "(): Authorization result for form #{$form['id']} submission => " . print_r($this->authorization, 1)); } if ($performed_authorization && !$this->authorization['is_authorized']) { $validation_result = $this->get_validation_result($validation_result, $this->authorization); //Setting up current page to point to the credit card page since that will be the highlighted field GFFormDisplay::set_current_page($validation_result['form']['id'], $validation_result['credit_card_page']); } return $validation_result; }
/** * Retrieves $lead object from class if it has already been created; otherwise creates a new $lead object. */ public static function create_lead($form) { if (empty(self::$lead)) { self::$lead = GFFormsModel::create_lead($form); self::clear_field_value_cache($form); } return self::$lead; }
public function has_feed($form_id, $meets_conditional_logic = null) { $feeds = $this->get_feeds($form_id); if (!$feeds) { return false; } $has_active_feed = false; if ($meets_conditional_logic) { $form = GFFormsModel::get_form_meta($form_id); $entry = GFFormsModel::create_lead($form); } foreach ($feeds as $feed) { if (!$has_active_feed && $feed['is_active']) { $has_active_feed = true; } if ($meets_conditional_logic && $feed['is_active'] && $this->is_feed_condition_met($feed, $form, $entry)) { return true; } } return $meets_conditional_logic ? false : $has_active_feed; }
public static function update_confirmation($form, $lead = null) { if (!is_array(rgar($form, "confirmations"))) { return $form; } // if there is only one confirmation, don't bother with the conditional logic, just return it // this is here mostly to avoid the semi-costly GFFormsModel::create_lead() function unless we really need it if (is_array($form["confirmations"]) && count($form['confirmations']) <= 1) { $form['confirmation'] = reset($form['confirmations']); return $form; } if (empty($lead)) { $lead = GFFormsModel::create_lead($form); } foreach ($form['confirmations'] as $confirmation) { if ($confirmation['isDefault']) { continue; } $logic = rgar($confirmation, "conditionalLogic"); if (GFCommon::evaluate_conditional_logic($logic, $form, $lead)) { $form['confirmation'] = $confirmation; return $form; } } $form['confirmation'] = reset(wp_filter_object_list($form['confirmations'], array('isDefault' => true))); return $form; }
public function validation($validation_result) { if (!GFFormDisplay::is_last_page($validation_result['form'])) { return $validation_result; } $has_authorize = $this->payment_method_is_overridden('authorize'); $has_subscribe = $this->payment_method_is_overridden('subscribe'); if (!$has_authorize && !$has_subscribe) { return $validation_result; } //Getting submission data $form = $validation_result["form"]; $entry = GFFormsModel::create_lead($form); $feed = $this->get_payment_feed($entry, $form); if (!$feed) { return $validation_result; } $do_authorization = $has_authorize && $feed["meta"]["transactionType"] == "product"; $do_subscription = $has_subscribe && $feed["meta"]["transactionType"] == "subscription"; if (!$do_authorization && !$do_subscription) { return $validation_result; } $submission_data = $this->get_submission_data($feed, $form, $entry); //Running an authorization only transaction if function is implemented and this is a single payment if ($do_authorization) { $this->authorization = $this->authorize($feed, $submission_data, $form, $entry); } else { if ($do_subscription) { $subscription = $this->subscribe($feed, $submission_data, $form, $entry); $this->authorization["is_authorized"] = $subscription["is_success"]; $this->authorization["error_message"] = rgar($subscription, "error_message"); $this->authorization["subscription"] = $subscription; } } $this->authorization["feed"] = $feed; $this->authorization["submission_data"] = $submission_data; if (!$this->authorization["is_authorized"]) { $validation_result = $this->get_validation_result($validation_result, $this->authorization); //Setting up current page to point to the credit card page since that will be the highlighted field GFFormDisplay::set_current_page($validation_result["form"]["id"], $validation_result["credit_card_page"]); } return $validation_result; }
public function hasPayment($validation_result) { $form = $validation_result['form']; $entry = GFFormsModel::create_lead($form); $feed = $this->get_payment_feed($entry, $form); if (!$feed) { return false; } $submission_data = $this->get_submission_data($feed, $form, $entry); //Do not process payment if payment amount is 0 or less return floatval($submission_data['payment_amount']) > 0; }
/** * Retrieves $entry object from class if it has already been created; otherwise creates a new $entry object. */ public static function create_lead($form) { if (empty(self::$entry)) { if (isset($_GET['gf_token'])) { $incomplete_submission_info = GFFormsModel::get_incomplete_submission_values($_GET['gf_token']); if ($incomplete_submission_info['form_id'] == $form['id']) { $submission_details_json = $incomplete_submission_info['submission']; $submission_details = json_decode($submission_details_json, true); $entry = $submission_details['partial_entry']; } } self::$entry = isset($entry) ? $entry : GFFormsModel::create_lead($form); self::clear_field_value_cache($form); foreach ($form['fields'] as $field) { $input_type = GFFormsModel::get_input_type($field); switch ($input_type) { case 'signature': if (empty(self::$entry[$field['id']])) { self::$entry[$field['id']] = rgpost("input_{$form['id']}_{$field['id']}_signature_filename"); } break; } } } return self::$entry; }