public static function get_instance()
 {
     if (!isset(self::$instance) && !self::$instance instanceof RM_DBManager) {
         self::$instance = new RM_DBManager();
     }
     return self::$instance;
 }
 public function get_fields($form_id)
 {
     $where = array("form_id" => $form_id);
     $data_specifier = array("%s", "%d");
     $email_fields = RM_DBManager::get(RM_Fields::get_identifier(), $where, $data_specifier, $result_type = 'results', $offset = 0, $limit = 1000, $column = '*', $sort_by = null, $descending = false);
     $fields = array();
     foreach ($email_fields as $field) {
         if ($field->field_type != 'Price' && $field->field_type != 'HTMLH' && $field->field_type != 'File' && $field->field_type != 'HTMLP' && $field->field_type != 'Terms') {
             $fields[] = $field;
         }
     }
     return $fields;
 }
 public function get_browser_usage($form_id)
 {
     $browsers['Chrome'] = (object) array("visits" => 0, "submissions" => 0);
     $browsers['Safari'] = (object) array("visits" => 0, "submissions" => 0);
     $browsers['Internet Explorer'] = (object) array("visits" => 0, "submissions" => 0);
     $browsers['Opera'] = (object) array("visits" => 0, "submissions" => 0);
     $browsers['Android'] = (object) array("visits" => 0, "submissions" => 0);
     $browsers['iPhone'] = (object) array("visits" => 0, "submissions" => 0);
     $browsers['Firefox'] = (object) array("visits" => 0, "submissions" => 0);
     $browsers['BlackBerry'] = (object) array("visits" => 0, "submissions" => 0);
     $browsers['Other'] = (object) array("visits" => 0, "submissions" => 0);
     $temp = RM_DBManager::count_multiple('STATS', "browser_name", array('form_id' => $form_id), array('browser_name' => 'Chrome,Safari,Opera,Internet Explorer,Firefox,iPhone,Android,BlackBerry'));
     $known_browser_visits = array();
     $total_known_browser_visits = 0;
     if (is_array($temp) || is_object($temp)) {
         foreach ($temp as $stat) {
             $known_browser_visits[$stat->browser_name] = (int) $stat->count;
             $browsers[$stat->browser_name]->visits = (int) $stat->count;
             $total_known_browser_visits += $known_browser_visits[$stat->browser_name];
         }
     }
     $browsers['Other']->visits = (int) $total_known_browser_visits;
     $temp = RM_DBManager::count_multiple('STATS', "browser_name", array('form_id' => $form_id, 'submitted_on' => 'not null'), array('browser_name' => 'Chrome,Safari,Opera,Internet Explorer,Firefox,iPhone,Android,BlackBerry'));
     $known_browser_submissions = array();
     $total_known_browser_submissions = 0;
     //echo "<pre>",var_dump($browsers),"</pre>";
     if (is_array($temp) || is_object($temp)) {
         foreach ($temp as $stat) {
             $known_browser_submissions[$stat->browser_name] = (int) $stat->count;
             $browsers[$stat->browser_name]->submissions = (int) $stat->count;
             $total_known_browser_submissions += $known_browser_submissions[$stat->browser_name];
         }
     }
     $browsers['Other']->submissions = (int) $total_known_browser_submissions;
     //    echo "<pre>",var_dump($browsers),"</pre>";
     $usage = new stdClass();
     $usage->browser_submission = $known_browser_submissions;
     $usage->total_known_browser_submission = $total_known_browser_submissions;
     $usage->browser_usage = $known_browser_visits;
     $usage->total_known_browser_usage = $total_known_browser_visits;
     $usage->browsers = $browsers;
     return $usage;
 }
 public function manage($model, $service, $request, $params)
 {
     $data = new stdClass();
     if (isset($request->req['rm_field_to_search']) && isset($request->req['rm_value_to_serach']) && (int) $request->req['rm_field_to_search']) {
         $field_id = $request->req['rm_field_to_search'];
         $field_value = $request->req['rm_value_to_serach'];
     } else {
         $field_id = null;
         $field_value = null;
     }
     if (isset($request->req['rm_form_id'])) {
         $form_id = $request->req['rm_form_id'];
     } else {
         $form_id = $service->get('FORMS', 1, array('%d'), 'var', 0, 15, $column = 'form_id', null, true);
     }
     if ((int) $field_id) {
         $data->searched = true;
     } else {
         $data->searched = false;
     }
     $data->to_search = new stdClass();
     $data->to_search->id = $field_id;
     $data->to_search->value = $field_value;
     $data->form_id = $form_id;
     $data->forms = RM_Utilities::get_forms_dropdown($service);
     $data->fields = $service->get_all_form_fields($form_id);
     //$data->submissions = $service->get('SUBMISSIONS', array('form_id' => $form_id), array('%d'), 'results', 0, 100, '*', $sort_by = null, $descending = true);
     $data->interval = isset($request->req['rm_interval']) ? $request->req['rm_interval'] : 'all';
     $data->total_entries = count(RM_DBManager::get_results_for_last($data->interval, $form_id, $field_id, $field_value));
     //echo "<pre>",var_dump($data->x), die;
     $data->rm_slug = $request->req['page'];
     //Pagination
     $entries_per_page = 10;
     $req_page = isset($request->req['rm_reqpage']) && $request->req['rm_reqpage'] > 0 ? $request->req['rm_reqpage'] : 1;
     $offset = ($req_page - 1) * $entries_per_page;
     $total_entries = $data->total_entries;
     $data->total_pages = (int) ($total_entries / $entries_per_page) + ($total_entries % $entries_per_page == 0 ? 0 : 1);
     $data->curr_page = $req_page;
     $data->submissions = RM_DBManager::get_results_for_last($data->interval, $form_id, $field_id, $field_value, $offset, $entries_per_page, 'submission_id', true);
     $view = $this->mv_handler->setView('submissions_manager');
     $view->render($data);
 }
 /**
  * This function is used to get all the attachment ids from the submissions
  * 
  * @param int $form_id
  * @return boolean
  */
 public function get_all_form_attachments($form_id)
 {
     $attachments = RM_DBManager::get_all_form_attachments($form_id);
     if ($attachments) {
         $all_attachments = array();
         foreach ($attachments as $key => $attachment) {
             $attachment = maybe_unserialize($attachment);
             if (is_array($attachment)) {
                 foreach ($attachment as $att) {
                     if (wp_get_attachment_url($att)) {
                         $all_attachments[] = $att;
                     }
                 }
             }
         }
     } else {
         return false;
     }
     return $all_attachments;
 }
 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 cron()
 {
     RM_DBManager::delete_front_user(1, 'h');
 }
 public function remove_from_db()
 {
     return RM_DBManager::remove_row('SUBMISSION_FIELDS', $this->sub_field_id);
 }
 public function remove_from_db()
 {
     return RM_DBManager::remove_row('NOTES', $this->note_id);
 }
 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();
 }
 public function get_submission_count($user_email)
 {
     return RM_DBManager::count('SUBMISSIONS', array('user_email' => $user_email));
 }
 public function remove_submission_notes($sub_id)
 {
     if (is_array($sub_id)) {
         foreach ($sub_id as $sub_id_) {
             RM_DBManager::delete_rows('NOTES', array('submission_id' => $sub_id_));
         }
     } elseif ((int) $sub_id) {
         RM_DBManager::delete_rows('NOTES', array('submission_id' => $sub_id));
     } else {
         throw new InvalidArgumentException("Invalid Submission ID '{$sub_id}'.");
     }
 }
 public function manage_form_page($action, $form_id, $page_no = null, $new_page_name = null)
 {
     $form = new RM_Forms();
     $form->load_from_db($form_id);
     $fopts = $form->get_form_options();
     $form_pages = $fopts->form_pages;
     switch ($action) {
         case 'add_page':
             if ($form_pages == null) {
                 $form_pages = array('Page 1', 'Page 2');
             } else {
                 $total_page = count($form_pages);
                 $new_page_no = $total_page + 1;
                 $form_pages[] = 'Page ' . $new_page_no;
             }
             break;
         case 'delete_page':
             if ($form_pages == null || !$page_no) {
                 return;
             } else {
                 if ($page_no == 1) {
                     return;
                 }
                 //can't delete first page.
                 if (isset($form_pages[$page_no - 1])) {
                     RM_DBManager::remove_fields_for_page($page_no, $form_id);
                     unset($form_pages[$page_no - 1]);
                 }
             }
             break;
         case 'rename_page':
             if ($form_pages == null || !$page_no || !$new_page_name) {
                 return;
             } else {
                 if (isset($form_pages[$page_no - 1])) {
                     $form_pages[$page_no - 1] = $new_page_name;
                 }
             }
             break;
     }
     $x = (object) array('form_pages' => $form_pages);
     $form->set_form_options($x);
     $form->update_into_db();
     return count($form_pages);
 }
 public function add($model, $service, $request, $params)
 {
     $valid = $is_checked = false;
     if ($this->mv_handler->validateForm("rm_form_add")) {
         $model->set($request->req);
         $valid = $model->validate_model();
         $is_checked = true;
     }
     if ($valid) {
         if (isset($request->req['form_id'])) {
             $valid = $service->update($request->req['form_id']);
         } else {
             $service->add_user_form();
         }
         RM_Utilities::redirect(admin_url('/admin.php?page=' . $params['xml_loader']->request_tree->success));
     } else {
         $data = new stdClass();
         /*
          * Loading all fields related this form
          */
         $data->all_fields = array("_0" => RM_UI_Strings::get('SELECT_DEFAULT_OPTION'));
         $data->email_fields = array("_0" => RM_UI_Strings::get('SELECT_DEFAULT_OPTION'));
         // Edit for request
         if (isset($request->req['rm_form_id'])) {
             if (!$is_checked) {
                 $model->load_from_db($request->req['rm_form_id']);
             }
             $all_field_objects = $service->get_all_form_fields($request->req['rm_form_id']);
             if (is_array($all_field_objects) || is_object($all_field_objects)) {
                 foreach ($all_field_objects as $obj) {
                     $data->all_fields[$obj->field_type . '_' . $obj->field_id] = $obj->field_label;
                 }
             }
             $data_specifier = array("%s", "%d");
             $where = array("field_type" => "Email", "form_id" => $request->req['rm_form_id']);
             $email_fields = RM_DBManager::get(RM_Fields::get_identifier(), $where, $data_specifier, $result_type = 'results', $offset = 0, $limit = 1000, $column = '*', $sort_by = null, $descending = false);
             if (is_array($email_fields) || is_object($email_fields)) {
                 foreach ($email_fields as $field) {
                     $data->email_fields[$field->field_type . '_' . $field->field_id] = $field->field_label;
                 }
             }
         }
         $data->model = $model;
         //By default make it registration type
         if (!isset($request->req['rm_form_id'])) {
             $data->model->set_form_type(1);
         }
         $user_roles_dd = RM_Utilities::user_role_dropdown(true);
         $data->roles = array('subscriber' => $user_roles_dd['subscriber']);
         $data->wp_pages = RM_Utilities::wp_pages_dropdown();
         if ($service->get_setting('enable_mailchimp') == 'yes') {
             $data->mailchimp_list = $service->get_mailchimp_list();
         } else {
             $data->mailchimp_list = array();
         }
         //echo "<pre>",var_dump($data->model);//die;
         $view = $this->mv_handler->setView("form_add");
         $view->render($data);
     }
 }
 public function remove_from_db()
 {
     return RM_DBManager::remove_row('SUBMISSIONS', $this->submission_id);
 }
 public function remove_from_db()
 {
     return RM_DBManager::remove_row('FIELDS', $this->field_id);
 }
 public function remove_from_db()
 {
     return RM_DBManager::remove_row('FORMS', $this->form_id);
 }
 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 get_primary_email_fields($form_id)
 {
     $primary_fields = RM_DBManager::get_primary_fields_by_type($form_id, 'Email');
     // print_r($primary_fields); die;
     if (is_array($primary_fields['emails'])) {
         $email_fields = $primary_fields['emails'];
     } else {
         $email_fields = array();
     }
     return $email_fields;
 }