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 view($model, RM_Services $service, $request, $params)
 {
     if (isset($request->req['rm_submission_id'])) {
         if (!$model->load_from_db($request->req['rm_submission_id'])) {
             $view = $this->mv_handler->setView('show_notice');
             $data = RM_UI_Strings::get('MSG_DO_NOT_HAVE_ACCESS');
             $view->render($data);
         } else {
             if (isset($request->req['rm_action']) && $request->req['rm_action'] == 'delete') {
                 $request->req['rm_form_id'] = $model->get_form_id();
                 $request->req['rm_selected'] = $request->req['rm_submission_id'];
                 $this->remove($model, $service, $request, $params);
                 unset($request->req['rm_selected']);
             } else {
                 $settings = new RM_Options();
                 $data = new stdClass();
                 $data->submission = $model;
                 $data->payment = $service->get('PAYPAL_LOGS', array('submission_id' => $model->get_submission_id()), array('%d'), 'row', 0, 99999);
                 if ($data->payment != null) {
                     $data->payment->total_amount = $settings->get_formatted_amount($data->payment->total_amount, $data->payment->currency);
                     if ($data->payment->log) {
                         $data->payment->log = maybe_unserialize($data->payment->log);
                     }
                 }
                 $data->notes = $service->get('NOTES', array('submission_id' => $model->get_submission_id()), array('%d'), 'results', 0, 99999, '*', null, true);
                 $i = 0;
                 if (is_array($data->notes)) {
                     foreach ($data->notes as $note) {
                         $data->notes[$i]->author = get_userdata($note->published_by)->display_name;
                         if ($note->last_edited_by) {
                             $data->notes[$i++]->editor = get_userdata($note->last_edited_by)->display_name;
                         } else {
                             $data->notes[$i++]->editor = null;
                         }
                     }
                 }
                 /*
                  * Check submission type
                  */
                 $form = new RM_Forms();
                 $form->load_from_db($model->get_form_id());
                 $form_type = $form->get_form_type() == "1" ? "Registration" : "Contact";
                 $data->form_type = $form_type;
                 $data->form_type_status = $form->get_form_type();
                 //$data->form_name = $form->get_form_name();
                 $data->form_is_unique_token = $form->get_form_is_unique_token();
                 /*
                  * User details if form is registration type
                  */
                 if ($form->get_form_type() == "1") {
                     $email = $model->get_user_email();
                     if ($email != "") {
                         $user = get_user_by('email', $email);
                         $data->user = $user;
                     }
                 }
                 $view = $this->mv_handler->setView('view_submission');
                 $view->render($data);
             }
         }
     } else {
         throw new InvalidArgumentException(RM_UI_Strings::get('MSG_INVALID_SUBMISSION_ID'));
     }
 }
 public function submissions($model, RM_Front_Service $service, $request, $params)
 {
     $i = 0;
     $user_email = $service->get_user_email();
     //var_dump($user_email);die;
     if (null != $user_email) {
         if (isset($request->req['submission_id'])) {
             $submission = new RM_Submissions();
             $submission->load_from_db($request->req['submission_id']);
             if ($submission->get_user_email() == $user_email) {
                 $view = $this->mv_handler->setView('front_submission_data', true);
                 $data = new stdClass();
                 $settings = new RM_Options();
                 $data->is_authorized = true;
                 $data->submission = $submission;
                 $data->payment = $service->get('PAYPAL_LOGS', array('submission_id' => $submission->get_submission_id()), array('%d'), 'row', 0, 99999);
                 if ($data->payment != null) {
                     $data->payment->total_amount = $settings->get_formatted_amount($data->payment->total_amount, $data->payment->currency);
                     if ($data->payment->log) {
                         $data->payment->log = maybe_unserialize($data->payment->log);
                     }
                 }
                 $data->notes = $service->get('NOTES', array('submission_id' => $submission->get_submission_id(), 'status' => 'publish'), array('%d', '%s'), 'results', 0, 99999, '*', null, true);
                 $i = 0;
                 if (is_array($data->notes)) {
                     foreach ($data->notes as $note) {
                         $data->notes[$i]->author = get_userdata($note->published_by)->display_name;
                         if ($note->last_edited_by) {
                             $data->notes[$i++]->editor = get_userdata($note->last_edited_by)->display_name;
                         } else {
                             $data->notes[$i++]->editor = null;
                         }
                     }
                 }
                 /*
                  * Check submission type
                  */
                 $form = new RM_Forms();
                 $form->load_from_db($submission->get_form_id());
                 $form_type = $form->get_form_type() == "1" ? "Registration" : "Contact";
                 $data->form_type = $form_type;
                 $data->form_type_status = $form->get_form_type();
                 $data->form_name = $form->get_form_name();
                 $data->form_is_unique_token = $form->get_form_is_unique_token();
                 /*
                  * User details if form is registration type
                  */
                 if ($form->get_form_type() == "1") {
                     $email = $submission->get_user_email();
                     if ($email != "") {
                         $user = get_user_by('email', $email);
                         $data->user = $user;
                     }
                 }
                 return $view->read($data);
             } else {
                 $view = $this->mv_handler->setView('not_authorized', true);
             }
             $msg = RM_UI_Strings::get('MSG_INVALID_SUBMISSION_ID_FOR_EMAIL');
             return $view->read($msg);
         } else {
             $data = new stdClass();
             $data->is_authorized = true;
             $data->submissions = array();
             $data->form_names = array();
             $data->submission_exists = false;
             //data for user page
             $user = get_user_by('email', $user_email);
             if ($user instanceof WP_User) {
                 $data->is_user = true;
                 $data->user = $user;
                 $data->custom_fields = $service->get_custom_fields($user_email);
             } else {
                 $data->is_user = false;
             }
             //For pagination of submissions
             $entries_per_page_sub = 20;
             $req_page_sub = isset($request->req['rm_reqpage_sub']) && $request->req['rm_reqpage_sub'] > 0 ? $request->req['rm_reqpage_sub'] : 1;
             $offset_sub = ($req_page_sub - 1) * $entries_per_page_sub;
             $total_entries_sub = $service->get_submission_count($user_email);
             $submissions = $service->get_submissions_by_email($user_email, $entries_per_page_sub, $offset_sub);
             $submission_ids = array();
             if ($submissions) {
                 $data->submission_exists = true;
                 foreach ($submissions as $submission) {
                     $form_name = $service->get('FORMS', array('form_id' => $submission->form_id), array('%d'), 'var', 0, 1, 'form_name');
                     $data->submissions[$i] = new stdClass();
                     $data->submissions[$i]->submission_ids = array();
                     $data->submissions[$i]->submission_id = $submission->submission_id;
                     $submission_ids[$i] = $submission->submission_id;
                     $data->submissions[$i]->submitted_on = $submission->submitted_on;
                     $data->submissions[$i]->form_name = $form_name;
                     $data->form_names[$submission->submission_id] = $form_name;
                     $i++;
                 }
                 $settings = new RM_Options();
                 $data->date_format = get_option('date_format');
                 $data->payments = $service->get_payments_by_submission_id($submission_ids, 999999, 0, null, true);
                 $i = 0;
                 if ($data->payments) {
                     foreach ($data->payments as $p) {
                         $data->payments[$i]->total_amount = $settings->get_formatted_amount($data->payments[$i]->total_amount, $data->payments[$i]->currency);
                         $i++;
                     }
                 }
                 //For pagination of payments
                 $entries_per_page_pay = 20;
                 $req_page_pay = isset($request->req['rm_reqpage_pay']) && $request->req['rm_reqpage_pay'] > 0 ? $request->req['rm_reqpage_pay'] : 1;
                 $data->offset_pay = $offset_pay = ($req_page_pay - 1) * $entries_per_page_pay;
                 $total_entries_pay = $i;
                 $data->total_pages_pay = (int) ($total_entries_pay / $entries_per_page_pay) + ($total_entries_pay % $entries_per_page_pay == 0 ? 0 : 1);
                 $data->curr_page_pay = $req_page_pay;
                 $data->starting_serial_number_pay = $offset_pay + 1;
                 $data->end_offset_this_page = $data->curr_page_pay < $data->total_pages_pay ? $data->offset_pay + $entries_per_page_pay : $total_entries_pay;
                 //Pagination Ends payments
                 //$data->rm_slug = $request->req['page'];
                 //$data->stat_data = $service->get_form_stats($data->current_form_id, $offset, $entries_per_page);
                 $data->total_pages_sub = (int) ($total_entries_sub / $entries_per_page_sub) + ($total_entries_sub % $entries_per_page_sub == 0 ? 0 : 1);
                 $data->curr_page_sub = $req_page_sub;
                 $data->starting_serial_number_sub = $offset_sub + 1;
                 //Pagination Ends submissions
                 $data->active_tab_index = isset($request->req['rm_tab']) ? (int) $request->req['rm_tab'] : 0;
                 $view = $this->mv_handler->setView('front_submissions', true);
                 return $view->read($data);
             } elseif ($data->is_user === true) {
                 $data->payments = false;
                 $data->submissions = false;
                 $view = $this->mv_handler->setView('front_submissions', true);
                 return $view->read($data);
             } else {
                 $view = $this->mv_handler->setView('not_authorized', true);
                 $msg = RM_UI_Strings::get('MSG_NO_SUBMISSION_FRONT');
                 return $view->read($msg);
             }
         }
     } else {
         $view = $this->mv_handler->setView('not_authorized', true);
         $msg = RM_UI_Strings::get('MSG_NOT_AUTHORIZED');
         return $view->read($msg);
     }
 }
 public function get_submissions_to_export($form_id, $is_searched = false, $search = null)
 {
     $export_data = array();
     $is_payment = false;
     $option = new RM_Options();
     if (!(int) $form_id) {
         return false;
     }
     $fields = $this->get_all_form_fields($form_id);
     if (!$fields) {
         return false;
     }
     $field_ids = array();
     foreach ($fields as $field) {
         if ($field->field_type != 'Price' && $field->field_type != 'HTMLH' && $field->field_type != 'HTMLP') {
             $field_ids[] = $field->field_id;
             $export_data[0][$field->field_id] = $field->field_label;
         }
         $i = 0;
         if ($field->field_type == 'price' && $i == 0) {
             $is_payment = true;
             $export_data[0]['invoice'] = 'Payment Invoice';
             $export_data[0]['txn_id'] = 'Payment TXN Id';
             $export_data[0]['status'] = 'Payment Status';
             $export_data[0]['total_amount'] = 'Paid Amount';
             $export_data[0]['date'] = 'Date of Payment';
             $i++;
         }
     }
     if (!$is_searched && !$search instanceof stdClass) {
         $submission_ids = $this->get('SUBMISSIONS', array('form_id' => $form_id), array('%d'), 'col', 0, 999999, 'submission_id', null, true);
         if (!$submission_ids) {
             return false;
         }
         $submissions = RM_DBManager::get_results_for_array('SUBMISSION_FIELDS', 'field_id', $field_ids);
     } else {
         $submission_ids = RM_DBManager::get_results_for_last_col($search->interval, $form_id, $search->id, $search->value);
         if (!$submission_ids) {
             return false;
         }
         $submissions = RM_DBManager::get_sub_fields_for_array('SUBMISSION_FIELDS', 'field_id', $field_ids, 'submission_id', $submission_ids);
     }
     foreach ($submission_ids as $s_id) {
         $export_data[$s_id] = array();
         $payment = $this->get('PAYPAL_LOGS', array('submission_id' => $s_id), array('%d'), 'row', 0, 10, '*', null, true);
         foreach ($field_ids as $f_id) {
             $export_data[$s_id][$f_id] = null;
         }
         if ($is_payment) {
             $export_data[$s_id]['invoice'] = isset($payment->invoice) ?: null;
             $export_data[$s_id]['txn_id'] = isset($payment->txn_id) ?: null;
             $export_data[$s_id]['status'] = isset($payment->status) ?: null;
             $export_data[$s_id]['total_amount'] = isset($payment->total_amount) ? $option->get_formatted_amount($payment->total_amount, $payment->currency) : null;
             $export_data[$s_id]['date'] = isset($payment->posted_date) ? RM_Utilities::localize_time($payment->posted_date, get_option('date_format')) : null;
         }
     }
     foreach ($submissions as $submission) {
         $value = maybe_unserialize($submission->value);
         if (is_array($value)) {
             if (isset($value['rm_field_type']) && $value['rm_field_type'] == 'File') {
                 unset($value['rm_field_type']);
                 if (count($value) == 0) {
                     $value = null;
                 } else {
                     $file = array();
                     foreach ($value as $a) {
                         $file[] = wp_get_attachment_url($a);
                     }
                     $value = implode(',', $file);
                 }
             } else {
                 $value = implode(',', $value);
             }
         }
         if (array_key_exists($submission->submission_id, $export_data)) {
             $export_data[$submission->submission_id][$submission->field_id] = stripslashes($value);
         }
     }
     return $export_data;
 }
 public function save_form($request, $params, $register_user = true, $redirect_as_well = true)
 {
     if (isset($params['is_payment_form']) && $params['is_payment_done']) {
         //user already activated in 'ipn' case, do nothing.
         //register user if it was a 'zero_amount case'.
         if (isset($params['za_user_id']) && $params['za_user_id']) {
             $gopt = new RM_Options();
             $this->user_service->activate_user_by_id($params['za_user_id']);
         }
         $this->after_submission_proc($params);
         return;
     }
     $user_error = false;
     $form_fields = parent::get_all_form_fields($params['form']->form_id);
     $valid_field_ids = $profile_field_id = array();
     $form_type = $params['form']->form_type;
     $is_auto_generate = parent::get_setting('auto_generated_password');
     $email = null;
     $profile = array();
     $reg_data = new stdClass();
     $reg_data->submission_id = null;
     $reg_data->user_id = null;
     foreach ($form_fields as $form_field) {
         $valid_field_ids[] = $form_field->field_id;
         if ($form_field->field_type === 'Email' && $form_field->is_field_primary == 1) {
             $profile_field_id['email'] = $form_field->field_id;
         }
         if ($form_type == 1) {
             if ($form_field->field_type === 'Textbox' && $form_field->is_field_primary == 1) {
                 $profile_field_id['username'] = $form_field->field_id;
             }
             if ($form_field->field_type === 'Password' && $form_field->is_field_primary == 1) {
                 $profile_field_id['password'] = $form_field->field_id;
             }
         }
     }
     $submissions_data = array();
     $attachment = new RM_Attachment_Service();
     $att_ids = $attachment->attach();
     //var_dump($att_ids);
     foreach ($request->req as $key => $value) {
         $key_parts = explode('_', $key);
         $count_parts = count($key_parts);
         if (($count_parts === 2 || $count_parts === 3) && in_array($key_parts[1], $valid_field_ids, true)) {
             $field = new RM_Fields();
             $field->load_from_db($key_parts[1]);
             if ($field->field_type === $key_parts[0]) {
                 if ($field->field_type === "Password") {
                     if ($is_auto_generate === 'yes') {
                         $value = wp_generate_password(8, false);
                     }
                     //$value = md5($value);
                 } elseif ($field->field_type === "Fname" || $field->field_type === "Lname" || $field->field_type === "BInfo") {
                     $profile[$field->field_type] = $value;
                 } else {
                     if ($field->field_type === "File") {
                         $value = null;
                         foreach ($att_ids as $field_name => $att_id) {
                             $value = array();
                             if ($field_name == $key) {
                                 $value['rm_field_type'] = 'File';
                                 if (is_array($att_id)) {
                                     foreach ($att_id as $abc) {
                                         $value[] = $abc;
                                     }
                                 } else {
                                     $value[] = $att_id;
                                 }
                             }
                         }
                     }
                 }
                 if ($field->field_type === "Price") {
                     $paypal_field = new RM_PayPal_Fields();
                     $prices = array();
                     $item_names = array();
                     $paypal_field->load_from_db((int) $key_parts[2]);
                     switch ($paypal_field->get_type()) {
                         case "fixed":
                         case "userdef":
                             $submission_field_rows[] = array('field_id' => $key_parts[1], 'value' => $value, 'form_id' => $params['form']->form_id);
                             $submissions_data[$field->field_id] = new stdClass();
                             $submissions_data[$field->field_id]->label = $field->field_label;
                             $submissions_data[$field->field_id]->value = $value;
                             break;
                         case "multisel":
                             $tmp_v = maybe_unserialize($paypal_field->get_option_price());
                             $tmp_l = maybe_unserialize($paypal_field->get_option_label());
                             $gopt = new RM_Options();
                             $val_arr = array();
                             if ($value) {
                                 foreach ($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];
                                     $val_arr[] = $tmp_l[$index] . " (" . $gopt->get_formatted_amount($tmp_v[$index]) . ")";
                                 }
                                 $value = $val_arr;
                             }
                             $submission_field_rows[] = array('field_id' => $key_parts[1], 'value' => $value, 'form_id' => $params['form']->form_id);
                             $submissions_data[$field->field_id] = new stdClass();
                             $submissions_data[$field->field_id]->label = $field->field_label;
                             $submissions_data[$field->field_id]->value = $value;
                             break;
                         case "dropdown":
                             $tmp_v = maybe_unserialize($paypal_field->get_option_price());
                             $tmp_l = maybe_unserialize($paypal_field->get_option_label());
                             $gopt = new RM_Options();
                             if ($value) {
                                 $index = (int) substr($value, 1);
                                 if (!isset($tmp_v[$index])) {
                                     break;
                                 }
                                 $prices[] = $tmp_v[$index];
                                 $item_names[] = $tmp_l[$index];
                                 $value = $tmp_l[$index] . " (" . $gopt->get_formatted_amount($tmp_v[$index]) . ")";
                             }
                             $submission_field_rows[] = array('field_id' => $key_parts[1], 'value' => $value, 'form_id' => $params['form']->form_id);
                             $submissions_data[$field->field_id] = new stdClass();
                             $submissions_data[$field->field_id]->label = $field->field_label;
                             $submissions_data[$field->field_id]->value = $value;
                             break;
                     }
                 } else {
                     if ($field->get_field_type() !== 'HTMLH' && $field->get_field_type() !== 'HTMLP') {
                         $submission_field_rows[] = array('field_id' => $key_parts[1], 'value' => $value, 'form_id' => $params['form']->form_id);
                         $submissions_data[$field->field_id] = new stdClass();
                         $submissions_data[$field->field_id]->label = $field->field_label;
                         $submissions_data[$field->field_id]->value = $value;
                     }
                 }
                 foreach ($profile_field_id as $key => $id) {
                     if ($key_parts[1] === $id) {
                         if ($key == 'email') {
                             $email = $value;
                         }
                     }
                 }
             }
         }
     }
     /*
      * Register the user if form is registration type (FormType value is 1)
      */
     if ($form_type == 1 && !is_user_logged_in()) {
         if (isset($params['is_payment_form'])) {
             if ($params['is_payment_done']) {
                 //user already activated in 'ipn' case, do nothing.
             } else {
                 //create user but keep deactivated
                 $user_id = $this->register_user($request, $params['form'], $is_auto_generate, false);
                 $this->update_user_profile($user_id, $profile);
                 $reg_data->user_id = $user_id;
             }
         } else {
             $user_id = $this->register_user($request, $params['form'], $is_auto_generate);
             $this->update_user_profile($user_id, $profile);
             $reg_data->user_id = $user_id;
         }
     } else {
         $this->update_user_profile($email, $profile, true);
     }
     //if ($form_type == 1)
     /*
      * Check if any attachment was with submission only if there is no form error
      */
     $submission_row = array('form_id' => $params['form']->form_id, 'data' => $submissions_data, 'user_email' => $email);
     $submissions = new RM_Submissions();
     $submissions->set($submission_row);
     $submission_id = $submissions->insert_into_db();
     if ($submission_field_rows) {
         foreach ($submission_field_rows as $submission_field_row) {
             $submission_field_row['submission_id'] = $submission_id;
             $submission_field = new RM_Submission_Fields();
             $submission_field->set($submission_field_row);
             //If submission is already in the table update it. (for PayPal cases.)
             if ($submission_field->insert_into_db() === false) {
                 $submission_field->update_into_db();
             }
             unset($submission_field);
         }
     }
     /*
      * Send email notification to admin and other receivers
      */
     $submissions->load_from_db($submission_id);
     $email = $this->prepare_email('to_admin', $submissions, $params['form']);
     RM_Utilities::send_mail($email);
     /*
      * If auto reply option enabled
      */
     if ($params['form']->get_form_should_send_email() == "1") {
         $email = $this->prepare_email('to_registrar', $submissions, $params['form'], $request);
         RM_Utilities::send_mail($email);
     }
     /*
      * Redirecting user as per form configuration after submission
      */
     if ($redirect_as_well) {
         $this->after_submission_proc($params);
     }
     /* echo $params['form']->form_options->form_success_message!=""?$params['form']->form_options->form_success_message:$params['form']->form_name." Submitted ";
     
     
               if(isset($params['form']->form_redirect) && $params['form']->form_redirect!="none" && $params['form']->form_redirect!=""){
               if($params['form']->form_redirect=="page"){
               RM_Utilities::redirect(null,true,$params['form']->get_form_redirect_to_page(),true);
               }else{
               RM_Utilities::redirect($params['form']->get_form_redirect_to_url(),false,0,true);
               }
               }
              */
     //if(isset($request->req['stat_id']))
     $reg_data->submission_id = $submission_id;
     return $reg_data;
 }