public function get_mc_list_field()
 {
     $list = $_POST['list_id'];
     $form_id = $_POST['form_id'];
     $mailchimp = new RM_MailChimp_Service();
     $form = new RM_Forms();
     $form->load_from_db($form_id);
     $content = $mailchimp->mc_field_mapping($form_id, $form->form_options, $list);
     echo $content;
     die;
 }
 public function process($model, RM_Front_Form_Service $service, $request, $params)
 {
     $data = new stdClass();
     if (isset($params['form_id']) && $params['form_id']) {
         $form = new RM_Forms();
         $form->load_from_db($params['form_id']);
         //echo "<pre>",var_dump($form),die();
     } else {
         return;
     }
     //Called from PayPal, straight to processing.
     if (isset($request->req['rm_pproc'])) {
         if ($request->req['rm_pproc'] == 'success' || $request->req['rm_pproc'] == 'cancel' || $request->req['rm_pproc'] == 'ipn') {
             //error_log('rm_pproc = '.$request->req['rm_pproc']);
             $paystate = $service->process_payment(null, null, $service, $request);
             $params['form'] = $form;
             $params['is_payment_form'] = true;
             $params['is_payment_done'] = true;
             /*else //Pending or cancelation cases
               {
                   $params['form'] = $form;
                   $params['is_payment_form'] = true;
                   $params['is_payment_done'] = false;                    
               }*/
             $service->save_form($request, $params);
             return;
         }
     }
     /*
      * If register form type then check if user exists
      */
     $user_exists = false;
     if ($form->form_type == 1 && !is_user_logged_in()) {
         if ($service->user_exists($form, $request)) {
             $user_exists = true;
         } else {
             Form::clearErrors('form_' . $form->form_id);
         }
     }
     if (isset($request->req['stat_id'])) {
         $stat_id = $request->req['stat_id'];
     } else {
         $stat_id = null;
     }
     /*
      * Validates the form in case form is not expired.
      */
     if ($this->mv_handler->validateForm('form_' . $form->form_id) && !$service->is_form_expired($form) && !$user_exists && !$service->is_browser_reload_duplication($stat_id)) {
         $params['form'] = $form;
         // echo "<pre>",var_dump($form),die();
         if ($service->is_off_limit_submission($form->form_id)) {
             die(RM_UI_Strings::get("ALERT_SUBMISSIOM_LIMIT"));
         }
         $service->update_stat_entry($stat_id);
         if ($service->get_setting('enable_mailchimp') == 'yes') {
             $form_options_mc = $form->get_form_options();
             //die;
             if ($form_options_mc->form_is_opt_in_checkbox == 1) {
                 $should_subscribe = isset($request->req['rm_subscribe_mc']) && $request->req['rm_subscribe_mc'][0] == 1 ? 'yes' : 'no';
             } else {
                 $should_subscribe = 'yes';
             }
             if ($should_subscribe == 'yes') {
                 $mailchimp = new RM_MailChimp_Service();
                 $mc_member = new stdClass();
                 if (isset($request->req[$form_options_mc->mailchimp_mapped_email])) {
                     $mc_member->email = $request->req[$form_options_mc->mailchimp_mapped_email];
                     if (isset($request->req[$form_options_mc->mailchimp_mapped_first_name])) {
                         $mc_member->first_name = $request->req[$form_options_mc->mailchimp_mapped_first_name];
                     } else {
                         $mc_member->first_name = NULL;
                     }
                     if (isset($request->req[$form_options_mc->mailchimp_mapped_last_name])) {
                         $mc_member->last_name = $request->req[$form_options_mc->mailchimp_mapped_last_name];
                     } else {
                         $mc_member->last_name = NULL;
                     }
                     $mailchimp->subscribe($mc_member, $form_options_mc->mailchimp_list);
                 }
             }
         }
         if (isset($request->req['rm_payment_form'])) {
             //Do not register user if the payment+registration type form, wait for payment confirmation.
             $params['is_payment_form'] = true;
             $params['is_payment_done'] = false;
             $rd = $service->save_form($request, $params, true, false);
             //die("xx");
             $res = $service->process_payment($form->get_form_id(), $rd, $service, $request);
             if ($res == 'zero_amount') {
                 $params['is_payment_form'] = true;
                 $params['is_payment_done'] = true;
                 $params['za_user_id'] = $rd->user_id;
                 $rd = $service->save_form($request, $params);
                 //$submission_id = $rd->submission_id;
             }
         } else {
             $rd = $service->save_form($request, $params);
             $submission_id = $rd->submission_id;
         }
     } else {
         if (isset($request->req['rm_submission_id'])) {
             $submissions = new RM_Submissions();
             $submissions->load_from_db($request->req['rm_submission_id']);
         }
         /*
          * Get all the fields associated with the Form
          */
         $data->fields_data = $service->get_all_form_fields($params['form_id']);
         $i = 0;
         if (is_array($data->fields_data) || is_object($data->fields_data)) {
             foreach ($data->fields_data as $field_data) {
                 $data->fields_data[$i++]->properties = $service->set_properties(maybe_unserialize($field_data->field_options));
             }
         }
         $data->form = $form;
         $data->is_auto_generate = false;
         /*
          * Checking if password generation is configured
          */
         if ($form->get_form_type() == 1) {
             $auto_generate = $service->get_setting('auto_generated_password');
             if ($auto_generate == "yes") {
                 $data->is_auto_generate = true;
             }
         }
         /*
          * Check if mailchimp is enabled in options
          */
         if ($service->get_setting('enable_mailchimp') == 'yes') {
             $data->is_mailchimp_enabled = true;
         } else {
             $data->is_mailchimp_enabled = false;
         }
         /*
          * If user role are to be choosen by registrar
          */
         /*           echo '<pre>';
                      print_r($form); */
         if (!empty($form->form_options->form_should_user_pick) || !(isset($form->form_user_role) && !empty($form->form_user_role))) {
             $role_pick = $form->form_options->form_should_user_pick;
             if ($role_pick) {
                 global $wp_roles;
                 $allowed_roles = array();
                 $default_wp_roles = $wp_roles->get_names();
                 $form_roles = $form->get_form_user_role();
                 if (is_array($form_roles) && count($form_roles) > 0) {
                     foreach ($form_roles as $val) {
                         if (array_key_exists($val, $default_wp_roles)) {
                             $allowed_roles[$val] = $default_wp_roles[$val];
                         }
                     }
                 }
                 $data->allowed_roles = $allowed_roles;
                 $data->role_as = empty($form->form_options->form_user_field_label) ? RM_UI_Strings::get('LABEL_ROLE_AS') : $form->form_options->form_user_field_label;
             }
         }
         /*
          * Checking if form is expired
          */
         $data->expired = $service->is_form_expired($form);
         $data->user_exists = $user_exists;
         if (isset($submissions)) {
             $data->submissions = $submissions;
         }
         $data->curr_symbol = $service->get_setting('currency_symbol');
         $data->currency_pos = $service->get_setting('currency_symbol_position');
         $data->stat_id = $service->create_stat_entry($params);
         if ($service->get_setting('theme') == 'matchmytheme') {
             $data->submit_btn_fgcolor = $form->form_options->form_submit_btn_color;
             $data->submit_btn_bgcolor = $form->form_options->form_submit_btn_bck_color;
         } else {
             $data->submit_btn_fgcolor = null;
             $data->submit_btn_bgcolor = null;
         }
         $data->expiry_details = $service->get_form_expiry_stats($form);
         $view = $this->mv_handler->setView("user_form", true);
         return $view->read($data);
     }
 }
 public function subscribe_to_mailchimp($request, $form_options_mc)
 {
     if (!isset($form_options_mc->mailchimp_mapped_email)) {
         return;
     }
     $merge_fields_array = array();
     $list_id = $form_options_mc->mailchimp_list;
     $mailchimp = new RM_MailChimp_Service();
     $details = $mailchimp->get_list_field($list_id);
     if (isset($details['merge_fields'])) {
         foreach ($details['merge_fields'] as $det) {
             $mc_tag = str_replace(' ', '', $det['tag']);
             $mc_list_id_tag = $list_id . '_' . $mc_tag;
             $mc_list_id_tag = str_replace(' ', '', $mc_list_id_tag);
             $field_value = null;
             if (isset($form_options_mc->mailchimp_relations->{$mc_list_id_tag})) {
                 $field_tag_id = $form_options_mc->mailchimp_relations->{$mc_list_id_tag};
                 if ($det['type'] == 'dropdown' || $det['type'] == 'radio') {
                     foreach ($det['options']['choices'] as $choice) {
                         if (isset($request[$field_tag_id]) && $choice == $request[$field_tag_id]) {
                             $field_value = $request[$field_tag_id];
                         } else {
                         }
                     }
                 } elseif (isset($request[$field_tag_id])) {
                     if (is_array($request[$field_tag_id])) {
                         $field_value = implode(',', $request[$field_tag_id]);
                     } else {
                         $field_value = $request[$field_tag_id];
                     }
                 }
                 $field_value = str_replace(' ', '', $field_value);
             } else {
                 $field_value = '';
             }
             if ($field_value != null) {
                 $merge_fields_array[$mc_tag] = $field_value;
             }
         }
     }
     if (isset($request[$form_options_mc->mailchimp_mapped_email])) {
         $email = $request[$form_options_mc->mailchimp_mapped_email];
         $mailchimp->subscribe($merge_fields_array, $email, $list_id);
     }
 }