public static function add_job($form_id, array $mail_packet, $mails_in_one_go = 20, $optional_callback = null) { $job_batch = get_option("rm_option_jobman_job", null); if ($job_batch == null) { $job_batch = array(); } $test = RM_DBManager::count('SUBMISSIONS', array('form_id' => $form_id, 'user_email' => 'not null')); //Test if there is an 'user_email' entry for the given form if ($test === false || $test === 0) { return false; } $job = new stdClass(); $job->form_id = $form_id; $job->job_size = $mails_in_one_go; $job->callback = $optional_callback; $job->offset = 0; $job->mail_packet = $mail_packet; $job->total = (int) RM_DBManager::count('SUBMISSIONS', array('form_id' => $form_id)); $job->started_on = RM_Utilities::get_current_time(); $form_fields = array(); $fields = self::get_fields($form_id); if ($fields) { foreach ($fields as $field) { $form_fields[] = $field->field_type . "_" . $field->field_id; } } $job->form_fields = $form_fields; $job_batch["_" . $form_id] = $job; //error_log('job added'); // self::log_var_dump($job_batch); update_option("rm_option_jobman_job", $job_batch); //error_log('exiting from add_job'); return true; }
public function charge($data, $pricing_details) { $curr_date = RM_Utilities::get_current_time(); $stripe_api_key = $this->options->get_value_of('stripe_api_key'); if ($stripe_api_key == null) { return false; } if ($pricing_details->total_price <= 0.0) { return true; } //Zero amount case. $global_options = new RM_Options(); // Get the credit card details submitted by the form $error = ''; $success = ''; // Create the charge on Stripe's servers - this will charge the user's card $items = array(); foreach ($pricing_details->billing as $detail) { $items[] = $detail->label; } $response = ''; $items_str = implode(',', $items); try { \Stripe\Stripe::setApiKey($stripe_api_key); //sk_test_GsT4d690JZzbFk48w0GhsrIX $charge = \Stripe\Charge::create(array("amount" => $pricing_details->total_price * 100, "currency" => strtolower($this->currency), "source" => $data->stripeToken, "description" => $items_str)); $response = $charge->getLastResponse(); $response_body = json_decode($response->body); } catch (Stripe_InvalidRequestError $e) { return false; } catch (\Stripe\Error\Card $e) { //echo 'test'; die; $log_entry_id = RM_DBManager::insert_row('PAYPAL_LOGS', array('submission_id' => $data->submission_id, 'form_id' => $data->form_id, 'txn_id' => '', 'status' => 'Card Declined', 'total_amount' => $pricing_details->total_price, 'currency' => $this->currency, 'posted_date' => $curr_date), array('%d', '%d', '%s', '%s', '%f', '%s', '%s')); return false; } if ($response->code == "200") { $log_entry_id = RM_DBManager::insert_row('PAYPAL_LOGS', array('submission_id' => $data->submission_id, 'form_id' => $data->form_id, 'txn_id' => $response_body->balance_transaction, 'status' => $response_body->status, 'total_amount' => $pricing_details->total_price, 'currency' => $this->currency, 'posted_date' => $curr_date), array('%d', '%d', '%s', '%s', '%f', '%s', '%s')); return true; } return false; }
public function charge($data, $pricing_details) { $form_id = $data->form_id; $this_script = get_permalink(); if (false == $this_script) { $this_script = admin_url('admin-ajax.php?action=registrationmagic_embedform&form_id=' . $data->form_id); } $sign = strpos($this_script, '?') ? '&' : '?'; $i = 1; foreach ($pricing_details->billing as $item) { $this->paypal->add_field('item_name_' . $i, $item->label); $i++; } $i = 1; $total_amount = 0.0; foreach ($pricing_details->billing as $item) { $this->paypal->add_field('amount_' . $i, $item->price); $total_amount += floatval($item->price); $i++; } $invoice = (string) date("His") . rand(1234, 9632); $this->paypal->add_field('business', $this->paypal_email); // Call the facilitator eaccount $this->paypal->add_field('cmd', '_cart'); // cmd should be _cart for cart checkout $this->paypal->add_field('upload', '1'); $this->paypal->add_field('return', $this_script . $sign . 'rm_pproc=success&rm_pproc_id=0'); // return URL after the transaction got over $this->paypal->add_field('cancel_return', $this_script . $sign . 'rm_pproc=cancel&rm_pproc_id=0'); // cancel URL if the trasaction was cancelled during half of the transaction $this->paypal->add_field('notify_url', $this_script . $sign . 'rm_pproc=ipn&rm_pproc_id=0'); // Notify URL which received IPN (Instant Payment Notification) $this->paypal->add_field('currency_code', $this->currency); $this->paypal->add_field('invoice', $invoice); $this->paypal->add_field('page_style', $this->paypal_page_style); //Insert into PayPal log table $curr_date = RM_Utilities::get_current_time(); //date_i18n(get_option('date_format')); if ($total_amount <= 0.0) { $log_entry_id = RM_DBManager::insert_row('PAYPAL_LOGS', array('submission_id' => $data->submission_id, 'form_id' => $form_id, 'invoice' => $invoice, 'status' => 'Completed', 'total_amount' => $total_amount, 'currency' => $this->currency, 'posted_date' => $curr_date), array('%d', '%d', '%s', '%s', '%f', '%s', '%s')); return true; } else { $log_entry_id = RM_DBManager::insert_row('PAYPAL_LOGS', array('submission_id' => $data->submission_id, 'form_id' => $form_id, 'invoice' => $invoice, 'status' => 'Pending', 'total_amount' => $total_amount, 'currency' => $this->currency, 'posted_date' => $curr_date), array('%d', '%d', '%s', '%s', '%f', '%s', '%s')); } if (isset($data->user_id)) { $cstm_data = $log_entry_id . "|" . $data->user_id; } else { $cstm_data = $log_entry_id . "|0"; } $this->paypal->add_field('custom', $cstm_data); $this->paypal->add_field('return', $this_script . $sign . 'rm_pproc=success&rm_pproc_id=' . $log_entry_id); // return URL after the transaction got over $this->paypal->add_field('cancel_return', $this_script . $sign . 'rm_pproc=cancel&rm_pproc_id=' . $log_entry_id); // cancel URL if the trasaction was cancelled during half of the transaction $this->paypal->add_field('notify_url', $this_script . $sign . 'rm_pproc=ipn&rm_pproc_id=' . $log_entry_id); // Notify URL which received IPN (Instant Payment Notification) $this->paypal->submit_paypal_post(); // POST it to paypal return 'do_not_redirect'; //We do not want form redirect to work in case paypal processing is going on. }
public function migrate_submissions($offset = 0, $limit = 9999999) { global $wpdb; $qry = ""; $fields = array(); $pfields = array(); $plogs = array(); $form_field = array(); $data_mapping = $this->value_map['submissions']; $dst_data = array(); $dst_data_sub = array(); $users = array(); $emails = array(); $dbcolumns = array('sub_field_id', 'submission_id', 'field_id', 'form_id', 'value'); $dbcolumns_sub = array('submission_id', 'form_id', 'data', 'user_email', 'submitted_on', 'unique_token'); //$dbcolumns_sub_ph = array('%d', '%d', '%s', '%s', '%s', '%s'); //$dbcolumns_ph = array('%d', '%d', '%d', '%d', '%s'); $dbcolumns_sub_ph = "(%d,%d,%s,%s,%s,%s)"; $dbcolumns_ph = "(%d,%d,%d,%d,%s)"; $all_sub = array(); $all_sub_fields = array(); $table_name_fields = $wpdb->prefix . 'crf_fields'; $table_name_pfields = $wpdb->prefix . 'crf_fields'; $table_name_plogs = $wpdb->prefix . 'crf_paypal_log'; $table_name_src = $wpdb->prefix . 'crf_submissions'; $table_name_dst = $wpdb->prefix . 'rm_submission_fields'; $table_name_dst_sub = $wpdb->prefix . 'rm_submissions'; $table_name_fields_rm = $wpdb->prefix . 'rm_fields'; $options = new RM_Options(); $srcdata = $wpdb->get_results("SELECT * FROM {$table_name_src} WHERE 1 LIMIT {$offset}, {$limit}"); $fieldsdata = $wpdb->get_results("SELECT * FROM {$table_name_fields} WHERE 1"); $pfieldsdata = $wpdb->get_results("SELECT * FROM {$table_name_pfields} WHERE 1"); $plogsdata = $wpdb->get_results("SELECT * FROM {$table_name_plogs} WHERE 1"); if (is_array($fieldsdata)) { foreach ($fieldsdata as $f_data) { $fields[$f_data->Id] = $f_data; if (!isset($form_field[$f_data->Form_Id])) { $form_field[$f_data->Form_Id] = array(); } if (!isset($form_field[$f_data->Form_Id][$f_data->Type])) { $form_field[$f_data->Form_Id][$f_data->Type] = $f_data->Id; } } unset($fieldsdata); if (is_array($plogsdata)) { foreach ($plogsdata as $p_data) { $log = maybe_unserialize($p_data->log); $plogs[$log['custom']] = $log['mc_currency']; } } unset($plogsdata); if (is_array($pfieldsdata)) { foreach ($pfieldsdata as $p_data) { $pfields[$p_data->Id] = $p_data; } } unset($pfieldsdata); $i = 0; if ($srcdata && is_array($srcdata)) { foreach ($srcdata as $s) { $dst_data[$i] = array(); $is_row_valid = true; if (isset($form_field[$s->form_id]['email'])) { $ef_id = $form_field[$s->form_id]['email']; } else { $ef_id = 0; } if (!isset($dst_data_sub[$s->submission_id])) { $dst_data_sub[$s->submission_id] = array(); foreach ($dbcolumns_sub as $index) { $dst_data_sub[$s->submission_id][$index] = null; } $dst_data_sub[$s->submission_id]['submission_id'] = $s->submission_id; $dst_data_sub[$s->submission_id]['form_id'] = $s->form_id; $dst_data_sub[$s->submission_id]['data'] = array(); } foreach ($data_mapping as $a => $b) { $value = $s->{$a}; if ($a === 'field') { switch ($s->{$a}) { case 'first_name': if (isset($form_field[$s->form_id]['first_name'])) { $f_id = $form_field[$s->form_id]['first_name']; $value = $fields[$f_id]->Id; $dst_data_sub[$s->submission_id]['data'][$value] = new stdClass(); $dst_data_sub[$s->submission_id]['data'][$value]->label = stripslashes($fields[$f_id]->Name); $dst_data_sub[$s->submission_id]['data'][$value]->value = stripslashes($s->value); } else { $dst_data_sub[$s->submission_id]['data']['first_name'] = new stdClass(); $dst_data_sub[$s->submission_id]['data']['first_name']->label = 'first_name'; $dst_data_sub[$s->submission_id]['data']['first_name']->value = stripslashes($s->value); } if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['first_name'] = $s->value; break; case 'last_name': if (isset($form_field[$s->form_id]['last_name'])) { $f_id = $form_field[$s->form_id]['last_name']; $value = $fields[$f_id]->Id; $dst_data_sub[$s->submission_id]['data'][$value] = new stdClass(); $dst_data_sub[$s->submission_id]['data'][$value]->label = stripslashes($fields[$f_id]->Name); $dst_data_sub[$s->submission_id]['data'][$value]->value = stripslashes($s->value); } else { $dst_data_sub[$s->submission_id]['data']['last_name'] = new stdClass(); $dst_data_sub[$s->submission_id]['data']['last_name']->label = 'last_name'; $dst_data_sub[$s->submission_id]['data']['last_name']->value = stripslashes($s->value); } if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['last_name'] = $s->value; break; case 'description': if (isset($form_field[$s->form_id]['description'])) { $f_id = $form_field[$s->form_id]['description']; $value = $fields[$f_id]->Id; $dst_data_sub[$s->submission_id]['data'][$value] = new stdClass(); $dst_data_sub[$s->submission_id]['data'][$value]->label = stripslashes($fields[$f_id]->Name); $dst_data_sub[$s->submission_id]['data'][$value]->value = stripslashes($s->value); } else { $dst_data_sub[$s->submission_id]['data']['description'] = new stdClass(); $dst_data_sub[$s->submission_id]['data']['description']->label = 'description'; $dst_data_sub[$s->submission_id]['data']['description']->value = stripslashes($s->value); } if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['bio'] = $s->value; break; case 'token': $dst_data_sub[$s->submission_id]['unique_token'] = $s->value; $is_row_valid = false; break; case 'entry_time': $dst_data_sub[$s->submission_id]['submitted_on'] = RM_Utilities::get_current_time($s->value); $is_row_valid = false; break; case 'user_email': $dst_data_sub[$s->submission_id]['user_email'] = $s->value; $dst_data_sub[$s->submission_id]['data']['user_email'] = new stdClass(); $dst_data_sub[$s->submission_id]['data']['user_email']->label = 'user_email'; $dst_data_sub[$s->submission_id]['data']['user_email']->value = stripslashes($s->value); if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['user_email'] = $s->value; break; case 'form_type': $is_row_valid = false; if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['form_type'] = $s->value; break; case 'user_approval': $is_row_valid = false; if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['user_approval'] = $s->value; break; case 'role': $is_row_valid = false; if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['role'] = $s->value; break; case 'payment_status': $is_row_valid = false; if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['payment_status'] = $s->value; break; case 'user_name': $is_row_valid = false; if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['user_name'] = $s->value; break; case 'user_pass': $is_row_valid = false; if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['user_pass'] = $s->value; break; case 'pass_encrypt': $is_row_valid = false; if (!isset($users[$s->submission_id])) { $users[$s->submission_id] = array(); } $users[$s->submission_id]['pass_encrypt'] = $s->value; break; default: $tmp = explode('_', $s->{$a}); $f_id = array_pop($tmp); if (is_numeric($f_id)) { $label = implode('_', $tmp); $value = $f_id; if (isset($fields[$f_id]) && $fields[$f_id]->Name === $label) { switch ($fields[$f_id]->Type) { case 'checkbox': case 'repeatable_text': $s->value = maybe_serialize(explode(',', $s->value)); break; case 'DatePicker': $x = explode('-', $s->value); $s->value = $x[1] . '/' . $x[2] . '/' . $x[0]; break; case 'file': $x = explode(',', $s->value); $x['rm_field_type'] = 'File'; $s->value = maybe_serialize($x); break; case 'pricing': if (isset($plogs[$s->submission_id])) { $curr = $plogs[$s->submission_id]; } else { $curr = get_option('crf_currency'); } if (!$curr) { $curr = 'USD'; } if ($pfields[$fields[$f_id]->Value]->Type === 'checkbox') { $v = array(); $ab = explode(',', $s->value); foreach ($ab as $ba) { $ac = explode('_', $ba); $pr = array_pop($ac); $pr_name = implode('_', $ac); $v[] = $pr_name . '(' . $options->get_formatted_amount($pr, $curr) . ')'; } $s->value = maybe_serialize($v); } elseif ($pfields[$fields[$f_id]->Value]->Type === 'checkbox') { $ac = explode('_', $ba); $pr = array_pop($ac); $pr_name = implode('_', $ac); $s->value = $pr_name . '(' . $options->get_formatted_amount($pr, $curr) . ')'; } else { $s->value = $options->get_formatted_amount($s->value, $curr); } break; } if ($ef_id === $f_id && !isset($emails[$s->submission_id])) { $emails[$s->submission_id] = new stdClass(); $emails[$s->submission_id]->id = $ef_id; $emails[$s->submission_id]->value = $s->value; } $dst_data_sub[$s->submission_id]['data'][$f_id] = new stdClass(); $dst_data_sub[$s->submission_id]['data'][$f_id]->label = stripslashes($fields[$f_id]->Name); $dst_data_sub[$s->submission_id]['data'][$f_id]->value = maybe_unserialize($s->value); } else { $dst_data_sub[$s->submission_id]['data'][$f_id] = new stdClass(); $dst_data_sub[$s->submission_id]['data'][$f_id]->label = stripslashes($label); $dst_data_sub[$s->submission_id]['data'][$f_id]->value = maybe_unserialize($s->value); } } else { $is_row_valid = false; } break; } } if ($is_row_valid) { if (isset($s->{$a}) && $value !== null) { $dst_data[$i][$b] = $value; } else { $dst_data[$i][$b] = null; } } } if ($is_row_valid) { $i++; } else { $dst_data[$i] = array(); } } if ($dst_data && count($dst_data) !== 0) { $qry .= "INSERT INTO {$table_name_dst} (`" . implode('`,`', $dbcolumns) . "`) values "; $i = 0; foreach ($dst_data as $d) { if (is_array($d) && count($d) !== 0) { foreach ($d as $d_single) { $all_sub_fields[] = $d_single; } if ($i === 0) { $qry .= $dbcolumns_ph; } else { $qry .= ", " . $dbcolumns_ph; } $i++; } } $qry_sub = "INSERT INTO {$table_name_dst_sub} (`" . implode('`,`', $dbcolumns_sub) . "`) values "; $i = 0; foreach ($dst_data_sub as $sub_id => $d_sub) { if (!isset($d_sub['user_email'])) { if (isset($emails[$sub_id])) { $dst_data_sub[$sub_id] = $emails[$sub_id]->value; $this->created[] = $d_sub['form_id']; $wpdb->update($table_name_fields_rm, array('is_field_primary' => 1), array('field_id' => $emails[$sub_id]->id), '%d', '%d'); } else { $dst_data_sub[$sub_id] = null; } } if (isset($d_sub['data'])) { $d_sub['data'] = maybe_serialize($d_sub['data']); } if (is_array($d_sub) && count($d_sub) !== 0) { foreach ($d_sub as $d_sub_single) { $all_sub[] = $d_sub_single; } if ($i === 0) { $qry_sub .= $dbcolumns_sub_ph; } else { $qry_sub .= ", " . $dbcolumns_sub_ph; } $i++; } } } else { error_log('no_data_sub_fields'); } if (count($users) !== 0) { foreach ($users as $user) { if ($user['form_type'] === 'reg_form' && (isset($user['user_approval']) && $user['user_approval'] != 'yes' || isset($user['payment_status']) && $user['payment_status'] === 'pending') && isset($user['user_email']) && is_email($user['user_email']) && !email_exists($user['user_email']) && isset($user['user_pass']) && isset($user['user_name'])) { $password = null; if (isset($user['pass_encrypt']) && $user['pass_encrypt'] == 1) { $password = $this->crf_encrypt_decrypt_pass('decrypt', $user['user_pass']); $password = $this->enc_str($password); } else { $password = $user['user_pass']; } $user_id = wp_create_user($user['user_name'], $password, $user['user_email']); update_user_meta($user_id, 'rm_user_status', 1); if (isset($user['first_name']) && $user['first_name']) { update_user_meta($user_id, 'first_name', 1); } if (isset($user['last_name']) && $user['last_name']) { update_user_meta($user_id, 'last_name', 1); } if (isset($user['bio']) && $user['bio']) { update_user_meta($user_id, 'description', 1); } } } } //$qry = esc_sql($qry); //error_log("Query: ".$qry); $result = $wpdb->query($wpdb->prepare($qry, $all_sub_fields)); if (!$result) { error_log('submission_fields_not_migrated'); } $result_sub = $wpdb->query($wpdb->prepare($qry_sub, $all_sub)); if (!$result_sub) { error_log('submissions_not_migrated'); } return; } } return false; }
public function update_into_db() { if (!$this->initialized) { return false; } if (!$this->id) { return false; } $data = array('email' => $this->email, 'otp_code' => $this->otp_code, 'last_activity_time' => RM_Utilities::get_current_time()); $data_specifiers = array('%s', '%s', '%s'); $result = RM_DBManager::update_row('FRONT_USERS', $this->field_id, $data, $data_specifiers); if (!$result) { return false; } return true; }
public static function update_last_activity() { global $wpdb; $table_name = RM_Table_Tech::get_table_name_for('FRONT_USERS'); return $wpdb->query("UPDATE {$table_name} set `last_activity_time`= '" . RM_Utilities::get_current_time() . "'"); }
public function update_into_db() { if (!$this->initialized) { return false; } if (!$this->note_id) { return false; } $data = array('submission_id' => $this->submission_id, 'notes' => $this->notes, 'status' => $this->status, 'last_edit_date' => RM_Utilities::get_current_time(), 'last_edited_by' => get_current_user_id(), 'note_options' => maybe_serialize($this->note_options)); $data_specifiers = array('%d', '%s', '%s', '%s', '%s', '%s'); $result = RM_DBManager::update_row('NOTES', $this->note_id, $data, $data_specifiers); if (!$result) { return false; } return true; }
public function process_payment($form_id, $reg_data, $service, $request) { //echo "<pre>"; var_dump($_GET); die; $payment_fields = array(); foreach ($request->req as $field_name => $field_value) { if (substr($field_name, 0, 5) === 'Price') { $payment_fields[$field_name] = $field_value; } } //echo "<br>id= ".explode("_", $field_name)[2]; //var_dump($payment_fields); //die; $sandbox = parent::get_setting('paypal_test_mode'); $paypal_email = parent::get_setting('paypal_email'); $currency = parent::get_setting('currency'); $paypal_page_style = parent::get_setting('paypal_page_style'); require_once plugin_dir_path(plugin_dir_path(__FILE__)) . 'external/PayPal/paypal.php'; $p = new paypal_class(); // paypal class if ($sandbox == 'yes') { $p->toggle_sandbox(true); } else { $p->toggle_sandbox(false); } $p->admin_mail = get_option('admin_email'); // set notification email if (isset($request->req['rm_pproc'])) { switch ($request->req['rm_pproc']) { case 'success': if (isset($request->req['rm_pproc_id'])) { $log_id = $request->req['rm_pproc_id']; $log = RM_DBManager::get_row('PAYPAL_LOGS', $log_id); if ($log) { if ($log->log) { $paypal_log = maybe_unserialize($log->log); $payment_status = $paypal_log['payment_status']; if ($payment_status == 'Completed') { echo '<div id="rmform">'; echo "<div class='rminfotextfront'>" . RM_UI_Strings::get("MSG_PAYMENT_SUCCESS") . "</br>"; echo '</div></div>'; return 'success'; } else { if ($payment_status == 'Denied' || $payment_status == 'Failed' || $payment_status == 'Refunded' || $payment_status == 'Reversed' || $payment_status == 'Voided') { echo '<div id="rmform">'; echo "<div class='rminfotextfront'>" . RM_UI_Strings::get("MSG_PAYMENT_FAILED") . "</br>"; echo '</div></div>'; return 'failed'; } else { if ($payment_status == 'In-Progress' || $payment_status == 'Pending' || $payment_status == 'Processed') { echo '<div id="rmform">'; echo "<div class='rminfotextfront'>" . RM_UI_Strings::get("MSG_PAYMENT_PENDING") . "</br>"; echo '</div></div>'; return 'pending'; } else { if ($payment_status == 'Canceled_Reversal') { return 'canceled_reversal'; } } } } } } } return false; case 'cancel': echo '<div id="rmform">'; echo "<div class='rminfotextfront'>" . RM_UI_Strings::get("MSG_PAYMENT_CANCEL") . "</br>"; echo '</div></div>'; return; case 'ipn': $trasaction_id = $_POST["txn_id"]; $payment_status = $_POST["payment_status"]; $cstm = $_POST["custom"]; $abcd = explode("|", $cstm); $user_id = (int) $abcd[1]; $acbd = explode("|", $cstm); $log_entry_id = (int) $acbd[0]; //$_POST["custom"]; $log_array = maybe_serialize($_POST); $curr_date = RM_Utilities::get_current_time(); // date_i18n(get_option('date_format')); RM_DBManager::update_row('PAYPAL_LOGS', $log_entry_id, array('status' => $payment_status, 'txn_id' => $trasaction_id, 'posted_date' => $curr_date, 'log' => $log_array), array('%s', '%s', '%s', '%s')); if ($p->validate_ipn()) { //IPN is valid, check payment status and process logic if ($payment_status == 'Completed') { if ($user_id) { $gopt = new RM_Options(); $this->user_service->activate_user_by_id($user_id); } return 'success'; } else { if ($payment_status == 'Denied' || $payment_status == 'Failed' || $payment_status == 'Refunded' || $payment_status == 'Reversed' || $payment_status == 'Voided') { return 'failed'; } else { if ($payment_status == 'In-Progress' || $payment_status == 'Pending' || $payment_status == 'Processed') { return 'pending'; } else { if ($payment_status == 'Canceled_Reversal') { return 'canceled_reversal'; } } } } //Send mail notifications about payment success. /* $recipients = parent::get_setting('admin_email'); if ($recipients) { $recipients = explode(',', $recipients); foreach ($recipients as $recipient) { $p->send_report($recipient); } } */ return 'unknown'; } return 'invalid_ipn'; } //return; } $paypal_field = new RM_PayPal_Fields(); $prices = array(); $item_names = array(); foreach ($payment_fields as $pf_name => $pf_value) { $abe = explode("_", $pf_name); $paypal_field->load_from_db((int) $abe[2]); switch ($paypal_field->get_type()) { case "fixed": $prices[] = $paypal_field->get_value(); $item_names[] = $paypal_field->get_name(); break; case "userdef": if ($pf_value == "") { break; } $prices[] = $pf_value; $item_names[] = $paypal_field->get_name(); break; case "multisel": $tmp_v = maybe_unserialize($paypal_field->get_option_price()); $tmp_l = maybe_unserialize($paypal_field->get_option_label()); foreach ($pf_value as $pf_single_val) { $index = (int) substr($pf_single_val, 1); if (!isset($tmp_v[$index])) { continue; } $prices[] = $tmp_v[$index]; $item_names[] = $tmp_l[$index]; } break; case "dropdown": $tmp_v = maybe_unserialize($paypal_field->get_option_price()); $tmp_l = maybe_unserialize($paypal_field->get_option_label()); //Check whether dropdown was not submitted if (!$pf_value) { break; } $index = (int) substr($pf_value, 1); if (!isset($tmp_v[$index])) { break; } $prices[] = $tmp_v[$index]; $item_names[] = $tmp_l[$index]; break; } } /* echo "<br><br>======== names =============<br><br>"; var_dump($item_names); echo "<br><br>======== prices =============<br><br>"; var_dump($prices); die; */ $this_script = get_permalink(); $sign = strpos($this_script, '?') ? '&' : '?'; $i = 1; foreach ($item_names as $item_name) { $p->add_field('item_name_' . $i, $item_name); $i++; } $i = 1; $total_amount = 0.0; foreach ($prices as $price) { $p->add_field('amount_' . $i, $price); $total_amount += floatval($price); $i++; } $invoice = (string) date("His") . rand(1234, 9632); $p->add_field('business', $paypal_email); // Call the facilitator eaccount $p->add_field('cmd', '_cart'); // cmd should be _cart for cart checkout $p->add_field('upload', '1'); $p->add_field('return', $this_script . $sign . 'rm_pproc=success&rm_pproc_id='); // return URL after the transaction got over $p->add_field('cancel_return', $this_script . $sign . 'rm_pproc=cancel'); // cancel URL if the trasaction was cancelled during half of the transaction $p->add_field('notify_url', $this_script . $sign . 'rm_pproc=ipn'); // Notify URL which received IPN (Instant Payment Notification) $p->add_field('currency_code', $currency); $p->add_field('invoice', $invoice); $p->add_field('page_style', $paypal_page_style); //Insert into PayPal log table $curr_date = RM_Utilities::get_current_time(); //date_i18n(get_option('date_format')); if ($total_amount <= 0.0) { $log_entry_id = RM_DBManager::insert_row('PAYPAL_LOGS', array('submission_id' => $reg_data->submission_id, 'form_id' => $form_id, 'invoice' => $invoice, 'status' => 'Completed', 'total_amount' => $total_amount, 'currency' => $currency, 'posted_date' => $curr_date), array('%d', '%d', '%s', '%s', '%f', '%s', '%s')); return 'zero_amount'; } else { $log_entry_id = RM_DBManager::insert_row('PAYPAL_LOGS', array('submission_id' => $reg_data->submission_id, 'form_id' => $form_id, 'invoice' => $invoice, 'status' => 'Pending', 'total_amount' => $total_amount, 'currency' => $currency, 'posted_date' => $curr_date), array('%d', '%d', '%s', '%s', '%f', '%s', '%s')); } $p->add_field('custom', $log_entry_id . "|" . $reg_data->user_id); $p->add_field('return', $this_script . $sign . 'rm_pproc=success&rm_pproc_id=' . $log_entry_id); // return URL after the transaction got over $p->add_field('cancel_return', $this_script . $sign . 'rm_pproc=cancel&rm_pproc_id=' . $log_entry_id); // cancel URL if the trasaction was cancelled during half of the transaction $p->add_field('notify_url', $this_script . $sign . 'rm_pproc=ipn'); // Notify URL which received IPN (Instant Payment Notification) $p->submit_paypal_post(); // POST it to paypal //$p->dump_fields(); }