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; }