public static function admin_edit_payment_status_details($form_id, $lead) { //check meta to see if this entry is paypal $payment_gateway = gform_get_meta($lead["id"], "payment_gateway"); $form_action = strtolower(rgpost("save")); if ($payment_gateway != "paypal" || $form_action != "edit") { return; } //get data from entry to pre-populate fields $payment_amount = rgar($lead, "payment_amount"); if (empty($payment_amount)) { $form = RGFormsModel::get_form_meta($form_id); $payment_amount = GFCommon::get_order_total($form, $lead); } $transaction_id = rgar($lead, "transaction_id"); $payment_date = rgar($lead, "payment_date"); if (empty($payment_date)) { $payment_date = gmdate("y-m-d H:i:s"); } //display edit fields ?> <div id="edit_payment_status_details" style="display:block"> <table> <tr> <td colspan="2"><strong>Payment Information</strong></td> </tr> <tr> <td>Date:<?php gform_tooltip("paypal_edit_payment_date"); ?> </td> <td><input type="text" id="payment_date" name="payment_date" value="<?php echo $payment_date; ?> "></td> </tr> <tr> <td>Amount:<?php gform_tooltip("paypal_edit_payment_amount"); ?> </td> <td><input type="text" id="payment_amount" name="payment_amount" value="<?php echo $payment_amount; ?> "></td> </tr> <tr> <td nowrap>Transaction ID:<?php gform_tooltip("paypal_edit_payment_transaction_id"); ?> </td> <td><input type="text" id="paypal_transaction_id" name="paypal_transaction_id" value="<?php echo $transaction_id; ?> "></td> </tr> </table> </div> <?php }
/** * Prepare the value before saving it to the lead. * * @param mixed $form * @param mixed $field * @param mixed $value * @param mixed $input_name * @param mixed $lead_id the current lead ID, used for fields that are processed after other fields have been saved (ie Total, Calculations) * @param mixed $lead passed by the RGFormsModel::create_lead() method, lead ID is not available for leads created by this function */ public static function prepare_value($form, $field, $value, $input_name, $lead_id, $lead = array()) { $form_id = $form["id"]; $input_type = self::get_input_type($field); switch ($input_type) { case "total": $lead = empty($lead) ? RGFormsModel::get_lead($lead_id) : $lead; $value = GFCommon::get_order_total($form, $lead); break; case "calculation": // ignore submitted value and recalculate price in backend list(, , $input_id) = rgexplode("_", $input_name, 3); if ($input_id == 2) { require_once GFCommon::get_base_path() . '/currency.php'; $currency = new RGCurrency(GFCommon::get_currency()); $lead = empty($lead) ? RGFormsModel::get_lead($lead_id) : $lead; $value = $currency->to_money(GFCommon::calculate($field, $form, $lead)); } break; case "phone": if ($field["phoneFormat"] == "standard" && preg_match('/^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$/', $value, $matches)) { $value = sprintf("(%s)%s-%s", $matches[1], $matches[2], $matches[3]); } break; case "time": if (!is_array($value) && !empty($value)) { preg_match('/^(\\d*):(\\d*) ?(.*)$/', $value, $matches); $value = array(); $value[0] = $matches[1]; $value[1] = $matches[2]; $value[2] = rgar($matches, 3); } $hour = empty($value[0]) ? "0" : strip_tags($value[0]); $minute = empty($value[1]) ? "0" : strip_tags($value[1]); $ampm = strip_tags(rgar($value, 2)); if (!empty($ampm)) { $ampm = " {$ampm}"; } if (!(empty($hour) && empty($minute))) { $value = sprintf("%02d:%02d%s", $hour, $minute, $ampm); } else { $value = ""; } break; case "date": $value = self::prepare_date($field["dateFormat"], $value); break; case "post_image": $url = self::get_fileupload_value($form_id, $input_name); $image_title = isset($_POST["{$input_name}_1"]) ? strip_tags($_POST["{$input_name}_1"]) : ""; $image_caption = isset($_POST["{$input_name}_4"]) ? strip_tags($_POST["{$input_name}_4"]) : ""; $image_description = isset($_POST["{$input_name}_7"]) ? strip_tags($_POST["{$input_name}_7"]) : ""; $value = !empty($url) ? $url . "|:|" . $image_title . "|:|" . $image_caption . "|:|" . $image_description : ""; break; case "fileupload": $value = self::get_fileupload_value($form_id, $input_name); break; case "number": $lead = empty($lead) ? RGFormsModel::get_lead($lead_id) : $lead; $value = GFCommon::has_field_calculation($field) ? GFCommon::round_number(GFCommon::calculate($field, $form, $lead), rgar($field, "calculationRounding")) : GFCommon::clean_number($value, rgar($field, "numberFormat")); //return the value as a string when it is zero and a calc so that the "==" comparison done when checking if the field has changed isn't treated as false if (GFCommon::has_field_calculation($field) && $value == 0) { $value = "0"; } break; case "website": if ($value == "http://") { $value = ""; } break; case "list": if (GFCommon::is_empty_array($value)) { $value = ""; } else { $value = self::create_list_array($field, $value); $value = serialize($value); } break; case "radio": if (rgar($field, 'enableOtherChoice') && $value == 'gf_other_choice') { $value = rgpost("input_{$field['id']}_other"); } break; case "multiselect": $value = empty($value) ? "" : implode(",", $value); break; case "creditcard": //saving last 4 digits of credit card list($input_token, $field_id_token, $input_id) = rgexplode("_", $input_name, 3); if ($input_id == "1") { $value = str_replace(" ", "", $value); $card_number_length = strlen($value); $value = substr($value, -4, 4); $value = str_pad($value, $card_number_length, "X", STR_PAD_LEFT); } else { if ($input_id == "4") { $card_number = rgpost("input_{$field_id_token}_1"); $card_type = GFCommon::get_card_type($card_number); $value = $card_type ? $card_type["name"] : ""; } else { $value = ""; } } break; default: //allow HTML for certain field types $allow_html = in_array($field["type"], array("post_custom_field", "post_title", "post_content", "post_excerpt", "post_tags")) || in_array($input_type, array("checkbox", "radio")) ? true : false; $allowable_tags = apply_filters("gform_allowable_tags_{$form_id}", apply_filters("gform_allowable_tags", $allow_html, $field, $form_id), $field, $form_id); if ($allowable_tags !== true) { $value = strip_tags($value, $allowable_tags); } break; } // special format for Post Category fields if ($field['type'] == 'post_category') { $full_values = array(); if (!is_array($value)) { $value = explode(',', $value); } foreach ($value as $cat_id) { $cat = get_term($cat_id, 'category'); $full_values[] = !is_wp_error($cat) && is_object($cat) ? $cat->name . ":" . $cat_id : ""; } $value = implode(',', $full_values); } //do not save price fields with blank price if (rgar($field, "enablePrice")) { $ary = explode("|", $value); $label = count($ary) > 0 ? $ary[0] : ""; $price = count($ary) > 1 ? $ary[1] : ""; $is_empty = strlen(trim($price)) <= 0; if ($is_empty) { $value = ""; } } return $value; }
public static function gf_create_user($entry, $form, $fulfilled = false) { self::log_debug("form #{$form['id']} - starting gf_create_user()."); global $wpdb; // if the entry is marked as spam if (rgar($entry, 'status') == 'spam') { self::log_debug('gf_create_user(): aborting. Entry is marked as spam.'); return; } $config = self::get_active_config($form, $entry); $is_update_feed = rgars($config, 'meta/feed_type') == 'update'; // if there is no registration feed or the feed is not active, abandon ship if (!$config || !$config['is_active']) { self::log_debug('gf_create_user(): aborting. No feed or feed is inactive.'); return; } $user_data = self::get_user_data($entry, $form, $config, $is_update_feed); if (!$user_data) { self::log_debug('gf_create_user(): aborting. user_login or user_email are empty.'); return; } // if PayPal Add-on was used for this entry, integrate $paypal_config = self::get_paypal_config($form["id"], $entry); $delay_paypal_registration = 0; $password = ''; if ($paypal_config) { $order_total = GFCommon::get_order_total($form, $entry); // delay the registration IF: // - the delay registration option is checked // - the order total does NOT equal zero (no delay since there will never be a payment) // - the payment has not already been fulfilled $delay_paypal_registration = $paypal_config['meta']['delay_registration']; if ($paypal_config && $delay_paypal_registration && $order_total != 0 && !$fulfilled) { self::log_debug('gf_create_user(): aborting. Registration delayed by PayPal feed configuration.'); //Saving encrypted password in meta gform_update_meta($entry['id'], 'userregistration_password', self::encrypt($user_data['password'])); return; } else { if ($paypal_config && $delay_paypal_registration && $order_total != 0 && $fulfilled) { //reading encrypted password from meta and removing meta $password = gform_get_meta($entry['id'], 'userregistration_password'); if ($password) { $password = self::decrypt($password); gform_delete_meta($entry['id'], 'userregistration_password'); } } } } // provide filter to allow add-ons to disable registration if needed $disable_registration = apply_filters('gform_disable_registration', false, $form, $entry, $fulfilled); if ($disable_registration) { self::log_debug('gf_create_user(): aborting. gform_disable_registration hook was used.'); return; } $user_activation = rgars($config, 'meta/user_activation'); // if about to create user, check if activation required... only use activation if payment is not fulfilled by payment //if manual activation and paypal set to delay registration and paypal fulfilled, need to put in signups table if (!$is_update_feed && $user_activation && !$fulfilled || !$is_update_feed && $user_activation && $fulfilled && $delay_paypal_registration) { require_once self::get_base_path() . '/includes/signups.php'; GFUserSignups::prep_signups_functionality(); $meta = array('lead_id' => $entry['id'], 'user_login' => $user_data['user_login'], 'email' => $user_data['user_email'], 'password' => self::encrypt($user_data['password'])); $meta = apply_filters('gform_user_registration_signup_meta', $meta, $form, $entry, $config); $meta = apply_filters("gform_user_registration_signup_meta_{$form['id']}", $meta, $form, $entry, $config); $ms_options = rgars($config, 'meta/multisite_options'); // save current user details in wp_signups for future activation if (is_multisite() && rgar($ms_options, 'create_site') && ($site_data = self::get_site_data($entry, $form, $config))) { wpmu_signup_blog($site_data['domain'], $site_data['path'], $site_data['title'], $user_data['user_login'], $user_data['user_email'], $meta); } else { // wpmu_signup_user() does the following sanitization of the user_login before saving it to the database, // we can run this same code here to allow successful retrievel of the activation_key without actually // changing the user name when it is activated. 'd smith' => 'dsmith', but when activated, username is 'd smith'. $user_data['user_login'] = preg_replace('/\\s+/', '', sanitize_user($user_data['user_login'], true)); self::log_debug("Calling wpmu_signup_user (sends email with activation link) with login: "******" email: " . $user_data['user_email'] . " meta: " . print_r($meta, true)); wpmu_signup_user($user_data['user_login'], $user_data['user_email'], $meta); self::log_debug("Done with wpmu_signup_user"); } $activation_key = $wpdb->get_var($wpdb->prepare("SELECT activation_key FROM {$wpdb->signups} WHERE user_login = %s ORDER BY registered DESC LIMIT 1", $user_data['user_login'])); // used for filtering on activation listing UI GFUserSignups::add_signup_meta($entry['id'], $activation_key); // abort current sign up, user must activate return; } if ($is_update_feed) { self::update_user($entry, $form, $config); } else { //only run create_user when manual/email activation NOT set if (!$user_activation) { self::log_debug("in gf_create_user - calling create_user"); self::create_user($entry, $form, $config, $password); } } }
public function admin_edit_payment_amount($payment_amount, $form, $entry) { if ($this->payment_details_editing_disabled($entry)) { return $payment_amount; } if (empty($payment_amount)) { $payment_amount = GFCommon::get_order_total($form, $entry); } $input = '<input type="text" id="payment_amount" name="payment_amount" class="gform_currency" value="' . $payment_amount . '">'; return $input; }
private static function get_donation_query_string($form, $entry) { $fields = ""; //getting all donation fields $donations = GFCommon::get_fields_by_type($form, array("donation")); $total = 0; $purpose = ""; foreach ($donations as $donation) { $value = RGFormsModel::get_lead_field_value($entry, $donation); list($name, $price) = explode("|", $value); if (empty($price)) { $price = $name; $name = $donation["label"]; } $purpose .= $name . ", "; $price = GFCommon::to_number($price); $total += $price; } //using product fields for donation if there aren't any legacy donation fields in the form if ($total == 0) { //getting all product fields $products = GFCommon::get_product_fields($form, $entry, true); foreach ($products["products"] as $product) { $options = ""; if (is_array($product["options"]) && !empty($product["options"])) { $options = " ("; foreach ($product["options"] as $option) { $options .= $option["option_name"] . ", "; } $options = substr($options, 0, strlen($options) - 2) . ")"; } $quantity = GFCommon::to_number($product["quantity"]); $quantity_label = $quantity > 1 ? $quantity . " " : ""; $purpose .= $quantity_label . $product["name"] . $options . ", "; } $total = GFCommon::get_order_total($form, $entry); } if (!empty($purpose)) { $purpose = substr($purpose, 0, strlen($purpose) - 2); } $purpose = urlencode($purpose); //truncating to maximum length allowed by PayPal if (strlen($purpose) > 127) { $purpose = substr($purpose, 0, 124) . "..."; } $fields = "&amount={$total}&item_name={$purpose}&cmd=_donations"; return $total > 0 ? $fields : false; }
public function get_value_save_entry($value, $form, $input_name, $lead_id, $lead) { $lead = empty($lead) ? RGFormsModel::get_lead($lead_id) : $lead; $value = GFCommon::get_order_total($form, $lead); return $value; }
public function admin_edit_payment_status_details($form_id, $lead) { $form_action = strtolower(rgpost('save')); if (!$this->is_payment_gateway($lead['id']) || $form_action != 'edit') { return; } //get data from entry to pre-populate fields $payment_amount = rgar($lead, 'payment_amount'); if (empty($payment_amount)) { $form = GFFormsModel::get_form_meta($form_id); $payment_amount = GFCommon::get_order_total($form, $lead); } $transaction_id = rgar($lead, 'transaction_id'); $payment_date = rgar($lead, 'payment_date'); if (empty($payment_date)) { $payment_date = gmdate('y-m-d H:i:s'); } //display edit fields ?> <div id="edit_payment_status_details" style="display:block"> <table> <tr> <td colspan="2"><strong>Payment Information</strong></td> </tr> <tr> <td>Date:<?php gform_tooltip('paypal_edit_payment_date'); ?> </td> <td> <input type="text" id="payment_date" name="payment_date" value="<?php echo $payment_date; ?> "> </td> </tr> <tr> <td>Amount:<?php gform_tooltip('paypal_edit_payment_amount'); ?> </td> <td> <input type="text" id="payment_amount" name="payment_amount" class="gform_currency" value="<?php echo $payment_amount; ?> "> </td> </tr> <tr> <td nowrap>Transaction ID:<?php gform_tooltip('paypal_edit_payment_transaction_id'); ?> </td> <td> <input type="text" id="paypal_transaction_id" name="paypal_transaction_id" value="<?php echo $transaction_id; ?> "> </td> </tr> </table> </div> <?php }
/** * Prepare the value before saving it to the lead. * * @param mixed $form * @param mixed $field * @param mixed $value * @param mixed $input_name * @param mixed $lead_id the current lead ID, used for fields that are processed after other fields have been saved (ie Total, Calculations) * @param mixed $lead passed by the RGFormsModel::create_lead() method, lead ID is not available for leads created by this function */ public static function prepare_value($form, $field, $value, $input_name, $lead_id, $lead = array()) { $form_id = $form["id"]; $input_type = self::get_input_type($field); switch ($input_type) { case "total": $lead = empty($lead) ? RGFormsModel::get_lead($lead_id) : $lead; $value = GFCommon::get_order_total($form, $lead); break; case "calculation": // ignore submitted value and recalculate price in backend list(, , $input_id) = rgexplode("_", $input_name, 3); if ($input_id == 2) { require_once GFCommon::get_base_path() . '/currency.php'; $currency = new RGCurrency(GFCommon::get_currency()); $lead = empty($lead) ? RGFormsModel::get_lead($lead_id) : $lead; $value = $currency->to_money(GFCommon::calculate($field, $form, $lead)); } break; case "phone": if ($field["phoneFormat"] == "standard" && preg_match('/^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$/', $value, $matches)) { $value = sprintf("(%s)%s-%s", $matches[1], $matches[2], $matches[3]); } break; case "time": if (!is_array($value) && !empty($value)) { preg_match('/^(\\d*):(\\d*) ?(.*)$/', $value, $matches); $value = array(); $value[0] = $matches[1]; $value[1] = $matches[2]; $value[2] = rgar($matches, 3); } $hour = empty($value[0]) ? "0" : strip_tags($value[0]); $minute = empty($value[1]) ? "0" : strip_tags($value[1]); $ampm = strip_tags(rgar($value, 2)); if (!empty($ampm)) { $ampm = " {$ampm}"; } if (!(empty($hour) && empty($minute))) { $value = sprintf("%02d:%02d%s", $hour, $minute, $ampm); } else { $value = ""; } break; case "date": $value = self::prepare_date(rgar($field, 'dateFormat'), $value); break; case "post_image": $url = self::get_fileupload_value($form_id, $input_name); $image_title = isset($_POST["{$input_name}_1"]) ? strip_tags($_POST["{$input_name}_1"]) : ""; $image_caption = isset($_POST["{$input_name}_4"]) ? strip_tags($_POST["{$input_name}_4"]) : ""; $image_description = isset($_POST["{$input_name}_7"]) ? strip_tags($_POST["{$input_name}_7"]) : ""; $value = !empty($url) ? $url . "|:|" . $image_title . "|:|" . $image_caption . "|:|" . $image_description : ""; break; case "fileupload": if (rgar($field, "multipleFiles")) { global $_gf_uploaded_files; if (isset($_gf_uploaded_files[$input_name])) { $value = $_gf_uploaded_files[$input_name]; } else { if (isset(GFFormsModel::$uploaded_files[$form_id][$input_name])) { $uploaded_temp_files = GFFormsModel::$uploaded_files[$form_id][$input_name]; $uploaded_files = array(); foreach ($uploaded_temp_files as $i => $file_info) { $temp_filepath = self::get_upload_path($form_id) . '/tmp/' . $file_info['temp_filename']; if ($file_info && file_exists($temp_filepath)) { $uploaded_files[$i] = self::move_temp_file($form_id, $file_info); } } if (!empty($value)) { // merge with existing files (admin edit entry) $value = json_decode($value, true); $value = array_merge($value, $uploaded_files); $value = json_encode($value); } else { $value = json_encode($uploaded_files); } } else { $value = ''; } $_gf_uploaded_files[$input_name] = $value; } } else { $value = self::get_fileupload_value($form_id, $input_name); } break; case "number": $value = GFCommon::maybe_add_leading_zero($value); $is_hidden = RGFormsModel::is_field_hidden($form, $field, array()); $lead = empty($lead) ? RGFormsModel::get_lead($lead_id) : $lead; $value = GFCommon::has_field_calculation($field) ? GFCommon::round_number(GFCommon::calculate($field, $form, $lead), rgar($field, "calculationRounding")) : GFCommon::clean_number($value, rgar($field, "numberFormat")); //return the value as a string when it is zero and a calc so that the "==" comparison done when checking if the field has changed isn't treated as false if (GFCommon::has_field_calculation($field) && $value == 0) { $value = "0"; } break; case "website": if ($value == "http://") { $value = ""; } break; case "list": if (rgar($field, "adminOnly") && rgar($field, "allowsPrepopulate")) { $value = json_decode($value); } if (GFCommon::is_empty_array($value)) { $value = ""; } else { foreach ($value as &$val) { $val = self::sanitize_entry_value($field, $val, $input_type, $form_id); } $value = self::create_list_array($field, $value); $value = serialize($value); } break; case "radio": if (rgar($field, 'enableOtherChoice') && $value == 'gf_other_choice') { $value = rgpost("input_{$field['id']}_other"); } $value = self::sanitize_entry_value($field, $value, $input_type, $form_id); break; case "multiselect": $value = empty($value) ? "" : is_array($value) ? implode(",", $value) : $value; $value = self::sanitize_entry_value($field, $value, $input_type, $form_id); break; case "creditcard": //saving last 4 digits of credit card list($input_token, $field_id_token, $input_id) = rgexplode("_", $input_name, 3); if ($input_id == "1") { $value = str_replace(" ", "", $value); $card_number_length = strlen($value); $value = substr($value, -4, 4); $value = str_pad($value, $card_number_length, "X", STR_PAD_LEFT); } else { if ($input_id == '4') { $value = rgpost("input_{$field_id_token}_4"); if (!$value) { $card_number = rgpost("input_{$field_id_token}_1"); $card_type = GFCommon::get_card_type($card_number); $value = $card_type ? $card_type['name'] : ''; } } else { $value = ""; } } break; case 'password': $encrypt_password = apply_filters('gform_encrypt_password', false, $field, $form); if ($encrypt_password) { $value = GFCommon::encrypt($value); self::set_encrypted_fields($lead_id, $field['id']); } break; default: // only filter HTML on non-array based values if (!is_array($value)) { $value = self::sanitize_entry_value($field, $value, $input_type, $form_id); } break; } // special format for Post Category fields if ($field['type'] == 'post_category') { $full_values = array(); if (!is_array($value)) { $value = explode(',', $value); } foreach ($value as $cat_id) { $cat = get_term($cat_id, 'category'); $full_values[] = !is_wp_error($cat) && is_object($cat) ? $cat->name . ":" . $cat_id : ""; } $value = implode(',', $full_values); } //do not save price fields with blank price if (rgar($field, "enablePrice")) { $ary = explode("|", $value); $label = count($ary) > 0 ? $ary[0] : ""; $price = count($ary) > 1 ? $ary[1] : ""; $is_empty = strlen(trim($price)) <= 0; if ($is_empty) { $value = ""; } } return $value; }
public static function gf_create_user($entry, $form, $fulfilled = false) { // if the entry is marked as spam if (rgar($entry, 'status') == 'spam') { return; } $config = self::get_config($form['id']); $meta = rgar($config, 'meta'); // if there is no registration feed or the registration condition is not met or the feed is not active, abandon ship if (!$config || !self::registration_condition_met($form, $config, $entry) || !$config['is_active']) { return; } // if PayPal Add-on was used for this entry, integrate $paypal_config = self::get_paypal_config($form["id"], $entry); if ($paypal_config) { //$paypal_config = self::get_paypal_config($form["id"], $entry); $order_total = GFCommon::get_order_total($form, $entry); // delay the registration IF: // - the delay registration option is checked // - the order total does NOT equal zero (no delay since there will never be a payment) // - the payment has not already been fulfilled if ($paypal_config && $paypal_config['meta']['delay_registration'] && $order_total != 0 && $fulfilled != true) { return; } } $user_name = apply_filters("gform_username_{$form['id']}", apply_filters('gform_username', self::get_meta_value('username', $config, $form, $entry), $config, $form, $entry), $config, $form, $entry); $user_email = self::get_meta_value('email', $config, $form, $entry); $user_pass = self::get_meta_value('password', $config, $form, $entry); if (empty($user_name) || empty($user_email)) { return; } if (!function_exists('username_exists')) { require_once ABSPATH . WPINC . "/registration.php"; } $user_id = username_exists($user_name); // create the user and password, then add user meta if (!$user_id && empty($user_pass)) { $user_pass = wp_generate_password(); $user_id = wp_create_user($user_name, $user_pass, $user_email); if (is_wp_error($user_id)) { return; } update_user_option($user_id, 'default_password_nag', true, false); self::add_user_meta($user_id, $config, $form, $entry, array()); } else { if (!$user_id) { $user_id = wp_create_user($user_name, $user_pass, $user_email); if (is_wp_error($user_id)) { return; } GFUserData::remove_password($form['id'], $entry['id'], rgar($meta, 'password')); self::add_user_meta($user_id, $config, $form, $entry, array()); } else { // if user with this username already exists, abort user registration return; } } if (rgar($meta, 'role')) { $user = new WP_User($user_id); $user->set_role(rgar($meta, 'role')); } // set post author if (!empty($entry['post_id']) && rgar($meta, 'set_post_author')) { self::attribute_post_author($user_id, $entry['post_id']); } // send user/admin notifications if (rgar($meta, 'notification')) { wp_new_user_notification($user_id, $user_pass); } else { wp_new_user_notification($user_id, ""); // sending a blank password only sends notification to admin } do_action('gform_user_registered', $user_id, $config, $entry, $user_pass); }
/** * Maybe delay user registration */ public function maybe_delay_user_registration($disable_registration, $form, $entry, $fulfilled) { if ($this->is_processing($form)) { $order_total = GFCommon::get_order_total($form, $entry); // delay the registration IF: // - the delay registration option is checked // - the order total does NOT equal zero (no delay since there will never be a payment) // - the payment has not already been fulfilled $disable_registration = $this->feed->delay_user_registration && 0 !== $order_total && !$fulfilled; } return $disable_registration; }
public static function handle_form_submission($entry, $form) { if (class_exists('GFPayPal')) { $paypal_config = GFPayPal::get_config($form['id']); //don't send SMS if PayPal delay twilio setting is ON if (rgget('delay_twilio', $paypal_config['meta'])) { $order_total = GFCommon::get_order_total($form, $entry); if ($order_total != 0) { return; } } } self::export($entry, $form); }
private static function prepare_value($form, $field, $value, $input_name, $lead_id) { $form_id = $form["id"]; $input_type = self::get_input_type($field); switch ($input_type) { case "total": $lead = RGFormsModel::get_lead($lead_id); $value = GFCommon::get_order_total($form, $lead); break; case "post_category": $cat = get_category($value); $value = !empty($cat) ? $cat->name . ":" . $value : ""; break; case "phone": if ($field["phoneFormat"] == "standard" && preg_match('/^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$/', $value, $matches)) { $value = sprintf("(%s)%s-%s", $matches[1], $matches[2], $matches[3]); } break; case "time": if (!is_array($value) && !empty($value)) { preg_match('/^(\\d*):(\\d*) ?(.*)$/', $value, $matches); $value = array(); $value[0] = $matches[1]; $value[1] = $matches[2]; $value[2] = rgar($matches, 3); } $hour = empty($value[0]) ? "0" : strip_tags($value[0]); $minute = empty($value[1]) ? "0" : strip_tags($value[1]); $ampm = strip_tags(rgar($value, 2)); if (!empty($ampm)) { $ampm = " {$ampm}"; } if (!(empty($hour) && empty($minute))) { $value = sprintf("%02d:%02d%s", $hour, $minute, $ampm); } else { $value = ""; } break; case "date": $format = empty($field["dateFormat"]) ? "mdy" : $field["dateFormat"]; $date_info = GFCommon::parse_date($value, $format); if (!empty($date_info)) { $value = sprintf("%d-%02d-%02d", $date_info["year"], $date_info["month"], $date_info["day"]); } else { $value = ""; } break; case "post_image": $url = self::get_fileupload_value($form_id, $input_name); $image_title = isset($_POST["{$input_name}_1"]) ? strip_tags($_POST["{$input_name}_1"]) : ""; $image_caption = isset($_POST["{$input_name}_4"]) ? strip_tags($_POST["{$input_name}_4"]) : ""; $image_description = isset($_POST["{$input_name}_7"]) ? strip_tags($_POST["{$input_name}_7"]) : ""; $value = !empty($url) ? $url . "|:|" . $image_title . "|:|" . $image_caption . "|:|" . $image_description : ""; break; case "fileupload": $value = self::get_fileupload_value($form_id, $input_name); break; case "number": $value = GFCommon::clean_number($value, rgar($field, "numberFormat")); break; case "website": if ($value == "http://") { $value = ""; } break; case "list": if (GFCommon::is_empty_array($value)) { $value = ""; } else { $value = self::create_list_array($field, $value); $value = serialize($value); } break; case "radio": if (rgar($field, 'enableOtherChoice') && $value == 'gf_other_choice') { $value = rgpost("input_{$field['id']}_other"); } break; case "multiselect": $value = empty($value) ? "" : implode(",", $value); break; case "creditcard": //saving last 4 digits of credit card list($input_token, $field_id_token, $input_id) = rgexplode("_", $input_name, 3); if ($input_id == "1") { $value = str_replace(" ", "", $value); $card_number_length = strlen($value); $value = substr($value, -4, 4); $value = str_pad($value, $card_number_length, "X", STR_PAD_LEFT); } else { if ($input_id == "4") { $card_number = rgpost("input_{$field_id_token}_1"); $card_type = GFCommon::get_card_type($card_number); $value = $card_type ? $card_type["name"] : ""; } else { $value = ""; } } break; default: //allow HTML for certain field types $allow_html = in_array($field["type"], array("post_custom_field", "post_title", "post_content", "post_excerpt", "post_tags")) || in_array($input_type, array("checkbox", "radio")) ? true : false; $allowable_tags = apply_filters("gform_allowable_tags_{$form_id}", apply_filters("gform_allowable_tags", $allow_html, $field, $form_id), $field, $form_id); if ($allowable_tags !== true) { $value = strip_tags($value, $allowable_tags); } break; } //do not save price fields with blank price if (rgar($field, "enablePrice")) { $ary = explode("|", $value); $label = count($ary) > 0 ? $ary[0] : ""; $price = count($ary) > 1 ? $ary[1] : ""; $is_empty = strlen(trim($price)) <= 0; if ($is_empty) { $value = ""; } } return $value; }
public static function confirmation_page($config, $billing_data, $entry, $form) { //compiling products that will be used for the recurring calculation $recurring_products = array(); $recurring_amount = 0; foreach ($billing_data["products"]["products"] as $product_id => $product) { if (self::include_in_total($product_id, $config)) { $recurring_products[] = $product; $recurring_amount += self::get_product_price($product); } } if ($config["meta"]["type"] == "product") { $recurring_amount = 0; } self::get_interval_unit($config["meta"]["billing_cycle_type"]); $recurring_label = self::get_recurring_label($config); $setup_fee = self::get_setup_fee($config, $billing_data); $trial_data = self::get_trial_data($config, $billing_data); $trial_label = sprintf(__("%s %s trial", "gravityformspaypalpro"), $trial_data["frequency"], $trial_data["period"]); $total_label = $config["meta"]["type"] == "product" ? __("Total", "gravityformspaypalpro") : __("Today's Payment", "gravityformspaypalpro"); $todays_payment = $trial_data ? $trial_data["amount"] : $setup_fee + $recurring_amount; $total = $config["meta"]["type"] == "product" ? GFCommon::get_order_total($form, $entry) : $todays_payment; $output = self::load_template("payment_confirmation.php", array("setup_fee" => self::get_setup_fee($config, $billing_data), "trial_data" => self::get_trial_data($config, $billing_data), "trial_label" => $trial_label, "recurring_products" => $recurring_products, "recurring_amount" => $recurring_amount, "recurring_label" => $recurring_label, "total_label" => $total_label, "total_amount" => $total, "entry" => $entry, "form" => $form, "products" => $billing_data["products"])); return $output; }
public static function getPrice($entry_id) { $price = null; if (class_exists('GFCommon')) { $form_id = self::getGravityFormIdForEntry($entry_id); $form = RGFormsModel::get_form_meta($form_id); $lead = RGFormsModel::get_lead($entry_id); $price = GFCommon::get_order_total($form, $lead); } Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Gravity Forms Product Price: {$price} :: Form id: {$form_id} :: Entry id: {$entry_id}"); return $price; }