public function add($model, $service, $request, $params)
 {
     if (isset($request->req['rm_form_id'])) {
         $fields_data = $service->get_all_form_fields($request->req['rm_form_id']);
     } else {
         die(RM_UI_Strings::get('MSG_NO_FORM_SELECTED'));
     }
     if ($this->mv_handler->validateForm("add-field")) {
         $model->set($request->req);
         if (isset($request->req['field_id'])) {
             $service->update($model, $service, $request, $params);
         } else {
             $service->add($model, $service, $request, $params);
         }
         RM_Utilities::redirect(admin_url('/admin.php?page=' . $params['xml_loader']->request_tree->success . '&rm_form_id=' . $request->req["rm_form_id"]));
         //$this->view->render();
     } else {
         // Edit for request
         if (isset($request->req['rm_field_id'])) {
             $model->load_from_db($request->req['rm_field_id']);
         }
         $data = new stdClass();
         $data->model = $model;
         $data->selected_field = isset($request->req['rm_field_type']) ? $request->req['rm_field_type'] : null;
         $data->form_id = $request->req['rm_form_id'];
         $data->paypal_fields = RM_Utilities::get_paypal_field_types($service);
         $view = $this->mv_handler->setView("field_add");
         $view->render($data);
     }
 }
 public function add($model, $service, $request, $params)
 {
     if (isset($request->req['rm_form_id'])) {
         $fields_data = $service->get_all_form_fields($request->req['rm_form_id']);
     } else {
         die(RM_UI_Strings::get('MSG_NO_FORM_SELECTED'));
     }
     if (isset($request->req['rm_form_page_no'])) {
         $form_page_no = $request->req['rm_form_page_no'];
     } else {
         $form_page_no = 1;
     }
     if ($this->mv_handler->validateForm("add-field")) {
         $request->req['page_no'] = $form_page_no;
         $new_field_order = intval($service->get_fields_highest_order($request->req['rm_form_id'], $form_page_no)) + 1;
         $request->req['field_order'] = $new_field_order;
         //Setup icon props
         $f_icon = new stdClass();
         $f_icon->codepoint = $request->req['input_selected_icon_codepoint'];
         $f_icon->fg_color = $request->req['icon_fg_color'];
         $f_icon->bg_color = $request->req['icon_bg_color'];
         $f_icon->shape = $request->req['icon_shape'];
         $request->req['icon'] = $f_icon;
         /////////////////////
         $model->set($request->req);
         if (isset($request->req['field_id'])) {
             $service->update($model, $service, $request, $params);
         } else {
             $service->add($model, $service, $request, $params);
         }
         RM_Utilities::redirect(admin_url('/admin.php?page=' . $params['xml_loader']->request_tree->success . '&rm_form_id=' . $request->req["rm_form_id"] . '&rm_form_page_no=' . $form_page_no));
         //$this->view->render();
     } else {
         // Edit for request
         if (isset($request->req['rm_field_id'])) {
             $model->load_from_db($request->req['rm_field_id']);
         }
         $data = new stdClass();
         $data->model = $model;
         $data->selected_field = isset($request->req['rm_field_type']) ? $request->req['rm_field_type'] : null;
         $data->form_id = $request->req['rm_form_id'];
         $data->paypal_fields = RM_Utilities::get_paypal_field_types($service);
         $view = $this->mv_handler->setView("field_add");
         $view->render($data);
     }
 }
 public function add($model, $service, $request, $params)
 {
     //die("GOT IT!!!!");
     if ($this->mv_handler->validateForm("add-paypal-field")) {
         if (isset($request->req['multisel_name_value'])) {
             $request->req['option_label'] = maybe_serialize($request->req['multisel_name_value']);
             $request->req['option_price'] = maybe_serialize($request->req['multisel_price_value']);
         }
         //die("GOT IT!!!!");
         if (isset($request->req['show_on_form'])) {
             $request->req['extra_options'] = 'yes';
         } else {
             $request->req['extra_options'] = 'no';
         }
         $model->set($request->req);
         //            echo "AND NOW PARAMS:";
         //             var_dump($params);
         //             die;
         if (isset($request->req['field_id'])) {
             $service->update($model, $service, $request, $params);
         } else {
             $service->add($model, $service, $request, $params);
         }
         RM_Utilities::redirect(admin_url('/admin.php?page=' . $params['xml_loader']->request_tree->success));
         //$this->view->render();
     } else {
         $data = new stdClass();
         // Edit for request
         if (isset($request->req['rm_field_id'])) {
             $model->load_from_db($request->req['rm_field_id']);
             if ($model->extra_options != 'yes') {
                 $data->show_on_form = 0;
             } else {
                 $data->show_on_form = 1;
             }
         } else {
             $data->show_on_form = 1;
         }
         $data->model = $model;
         $view = $this->mv_handler->setView("paypal_field_add");
         $data->selected_field = $request->req['rm_field_type'];
         $view->render($data);
     }
 }
 public function form($model, $service, $request, $params)
 {
     if (isset($request->req['rm_target'])) {
         if ($request->req['rm_target'] == 'fbcb') {
             $service->facebook_login_callback();
         }
     }
     if ($this->mv_handler->validateForm("rm_login_form")) {
         $user = $service->login($request);
         if (is_wp_error($user)) {
             Form::setError('rm_login_form', $user->get_error_message());
         } else {
             $redirect_to = RM_Utilities::after_login_redirect($user);
             RM_Utilities::redirect($redirect_to);
             die;
         }
     }
     $data = new stdClass();
     //$service->facebook_login_callback();
     $data->facebook_html = $service->facebook_login_html();
     $view = $this->mv_handler->setView('login', true);
     return $view->read($data);
 }
 public function view($model, RM_User_Services $service, $request, $params)
 {
     if (isset($request->req['user_id'])) {
         $curr_user = wp_get_current_user();
         if (isset($curr_user->ID)) {
             $curr_user_id = $curr_user->ID;
         } else {
             $curr_user_id = null;
         }
         $user = $service->get_user_by('id', $request->req['user_id']);
         if (!$user instanceof WP_User) {
             $view = $this->mv_handler->setView('show_notice');
             $data = RM_UI_Strings::get('MSG_DO_NOT_HAVE_ACCESS');
             $view->render($data);
             return;
         }
         $view_data = new stdClass();
         $view_data->user = $user;
         $view_data->user_meta = get_user_meta($request->req['user_id']);
         $view_data->custom_fields = $service->get_custom_fields($user->user_email);
         $view_data->curr_user = $curr_user_id;
         $view_data->submissions = array();
         $view_data->payments = array();
         $submissions = $service->get_submissions_by_email($user->user_email, 10);
         if ($submissions) {
             $i = 0;
             foreach ($submissions as $submission) {
                 $form_name = $service->get('FORMS', array('form_id' => $submission->form_id), array('%d'), 'var', 0, 1, 'form_name');
                 $view_data->submissions[$i] = new stdClass();
                 $view_data->submissions[$i]->submission_id = $submission->submission_id;
                 $view_data->submissions[$i]->submitted_on = $submission->submitted_on;
                 $view_data->submissions[$i]->form_id = $submission->form_id;
                 $view_data->submissions[$i++]->form_name = $form_name;
                 $result = $service->get('PAYPAL_LOGS', array('submission_id' => $submission->submission_id), array('%d'), 'row', 0, 10, '*', null, true);
                 if ($result) {
                     $view_data->payments[] = array('form_name' => $form_name, 'submission_id' => $submission->submission_id, 'form_id' => $submission->form_id, 'payment' => $result);
                 }
             }
         }
         $view = $this->mv_handler->setView('user_view');
         $view->render($view_data);
     } else {
         RM_Utilities::redirect('?page=rm_user_manage');
     }
 }
 public function facebook_login_callback()
 {
     global $rm_env_requirements;
     if (!($rm_env_requirements & RM_REQ_EXT_CURL)) {
         return;
     }
     global $rm_fb_sdk_req;
     $gopts = new RM_Options();
     $fb_app_id = $gopts->get_value_of('facebook_app_id');
     $fb_app_secret = $gopts->get_value_of('facebook_app_secret');
     if (!$fb_app_id || !$fb_app_secret) {
         return;
     }
     if ($rm_fb_sdk_req === RM_FB_SDK_REQ_OK) {
         $fb = new Facebook\Facebook(array('app_id' => $fb_app_id, 'app_secret' => $fb_app_secret, 'default_graph_version' => 'v2.2'));
         $helper = $fb->getRedirectLoginHelper();
         try {
             $accessToken = $helper->getAccessToken();
         } catch (Facebook\Exceptions\FacebookResponseException $e) {
             // When Graph returns an error
             echo 'Graph returned an error: ' . $e->getMessage();
             exit;
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             // When validation fails or other local issues
             echo 'Facebook SDK returned an error: ' . $e->getMessage();
             exit;
         }
         if (!isset($accessToken)) {
             if ($helper->getError()) {
                 header('HTTP/1.0 401 Unauthorized');
                 echo "Error: " . $helper->getError() . "\n";
                 echo "Error Code: " . $helper->getErrorCode() . "\n";
                 echo "Error Reason: " . $helper->getErrorReason() . "\n";
                 echo "Error Description: " . $helper->getErrorDescription() . "\n";
             } else {
                 header('HTTP/1.0 400 Bad Request');
                 echo 'Bad request';
             }
             exit;
         }
         // Logged in
         // echo '<h3>Access Token</h3>';
         //var_dump($accessToken->getValue());
         // The OAuth 2.0 client handler helps us manage access tokens
         $oAuth2Client = $fb->getOAuth2Client();
         // Get the access token metadata from /debug_token
         $tokenMetadata = $oAuth2Client->debugToken($accessToken);
         //echo '<h3>Metadata</h3>';
         //var_dump($tokenMetadata);
         // Validation (these will throw FacebookSDKException's when they fail)
         $tokenMetadata->validateAppId($fb_app_id);
         // Replace {app-id} with your app id
         // If you know the user ID this access token belongs to, you can validate it here
         //$tokenMetadata->validateUserId('123');
         $tokenMetadata->validateExpiration();
         if (!$accessToken->isLongLived()) {
             // Exchanges a short-lived access token for a long-lived one
             try {
                 $accessToken2 = $oAuth2Client->getLongLivedAccessToken($accessToken);
             } catch (Facebook\Exceptions\FacebookSDKException $e) {
                 echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
                 exit;
             }
             //echo '<h3>Long-lived</h3>';
             //var_dump($accessToken2->getValue());
         }
         //$_SESSION['fb_access_token'] = (string) $accessToken;
         try {
             // Returns a `Facebook\FacebookResponse` object
             $response = $fb->get('/me?fields=id,name,email,first_name,last_name', (string) $accessToken);
         } catch (Facebook\Exceptions\FacebookResponseException $e) {
             echo 'Graph returned an error: ' . $e->getMessage();
             exit;
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             echo 'Facebook SDK returned an error: ' . $e->getMessage();
             exit;
         }
         $user = $response->getGraphUser();
         //var_dump($user->getFirstName());
         $user_name = $user->getName();
         $user_email = $user->getEmail();
         $user_name = $user->getName();
         $user_fname = $user->getFirstName();
         $user_lname = $user->getLastName();
         $redirection_post = $gopts->get_value_of('post_submission_redirection_url');
         if (email_exists($user_email)) {
             // user is a member
             $user = get_user_by('email', $user_email);
             $user_id = $user->ID;
             wp_set_auth_cookie($user_id, true);
         } else {
             // this user is a guest
             $random_password = wp_generate_password(10, false);
             $user_id = wp_create_user($user_email, $random_password, $user_email);
             if (!is_wp_error($user_id)) {
                 if (function_exists('is_multisite') && is_multisite()) {
                     add_user_to_blog(get_current_blog_id(), $user_id, 'subscriber');
                 }
                 update_user_meta($user_id, 'avatar_image', 'https://graph.facebook.com/' . $user->getId() . '/picture?type=large');
                 wp_update_user(array('ID' => $user_id, 'display_name' => $user_name, 'first_name' => $user_fname, 'last_name' => $user_lname));
                 wp_set_auth_cookie($user_id, true);
             }
         }
     } else {
         $fb = new Facebook(array('appId' => $fb_app_id, 'secret' => $fb_app_secret));
         $user = $fb->getUser();
         if ($user) {
             $user_profile = $fb->api('/me?fields=id,name,email,first_name,last_name');
             if (isset($user_profile['email'])) {
                 $user_email = $user_profile['email'];
                 $redirection_post = $gopts->get_value_of('post_submission_redirection_url');
                 if (email_exists($user_email)) {
                     // user is a member
                     $user = get_user_by('email', $user_email);
                     $user_id = $user->ID;
                     wp_set_auth_cookie($user_id, true);
                 } else {
                     // this user is a guest
                     $random_password = wp_generate_password(10, false);
                     $user_id = wp_create_user($user_email, $random_password, $user_email);
                     if (!is_wp_error($user_id)) {
                         if (function_exists('is_multisite') && is_multisite()) {
                             add_user_to_blog(get_current_blog_id(), $user_id, 'subscriber');
                         }
                         update_user_meta($user_id, 'avatar_image', 'https://graph.facebook.com/' . $user_profile['id'] . '/picture?type=large');
                         wp_update_user(array('ID' => $user_id, 'display_name' => $user_profile['name'], 'first_name' => $user_profile['first_name'], 'last_name' => $user_profile['last_name']));
                         wp_set_auth_cookie($user_id, true);
                     }
                 }
             } else {
                 die('Error: Unable to fetch email address from Facebbok.');
             }
         }
     }
     if ($redirection_post > 0) {
         $after_login_url = get_permalink($redirection_post);
     } else {
         $after_login_url = home_url();
     }
     RM_Utilities::redirect($after_login_url);
 }
 function mailchimp($model, $service, $request, $params)
 {
     if ($this->mv_handler->validateForm("form_sett_mailchimp")) {
         $options = array();
         $options['mailchimp_list'] = $request->req['mailchimp_list'];
         $options['mailchimp_mapped_email'] = isset($request->req['email']) ? $request->req['email'] : null;
         $options['mailchimp_relations'] = $service->get_mailchimp_mapping($request->req);
         $options['form_is_opt_in_checkbox'] = isset($request->req['form_is_opt_in_checkbox']) ? $request->req['form_is_opt_in_checkbox'] : null;
         $options['form_opt_in_text'] = $request->req['form_opt_in_text'];
         if (isset($request->req['rm_form_id']) && (int) $request->req['rm_form_id']) {
             $model->load_from_db($request->req['rm_form_id']);
             $model->set($options);
             $model->update_into_db();
             RM_Utilities::redirect('?page=rm_form_sett_manage&rm_form_id=' . $request->req['rm_form_id']);
             return;
         } else {
             echo '<div class="rmnotice">' . RM_UI_Strings::get('MSG_FS_NOT_AUTHORIZED') . '</div>';
             return;
         }
     }
     if (isset($request->req['rm_form_id']) && (int) $request->req['rm_form_id']) {
         $data = new stdClass();
         $data->form_id = $request->req['rm_form_id'];
         $model->load_from_db($request->req['rm_form_id']);
         $data->mc_form_list = $model->form_options->mailchimp_list;
         if ($data->mc_form_list) {
             $data->mc_fields = $service->mc_field_mapping($data->form_id, $model->form_options);
         } else {
             $data->mc_fields = null;
         }
         $data->model = $model;
         $mclist = $service->get_list();
         $data->mailchimp_list[''] = RM_UI_Strings::get('SELECT_LIST');
         if ($mclist && isset($mclist['lists'])) {
             foreach ($mclist['lists'] as $mcl) {
                 $data->mailchimp_list[$mcl['id']] = $mcl['name'];
             }
         }
         $view = $this->mv_handler->setView('form_mc_sett');
     } else {
         $data = RM_UI_Strings::get('MSG_FS_NOT_AUTHORIZED');
         $view = $this->mv_handler->setView('show_notice');
     }
     $view->render($data);
 }
 public function remove($model, RM_Services $service, $request, $params)
 {
     $selected = isset($request->req['rm_selected']) ? $request->req['rm_selected'] : null;
     if ($selected != null) {
         $service->remove_submissions($selected);
         $service->remove_submission_notes($selected);
         $service->remove_submission_payment_logs($selected);
     }
     RM_Utilities::redirect('?page=rm_submission_manage');
 }
 public function payment($model, RM_Setting_Service $service, $request, $params)
 {
     if ($this->mv_handler->validateForm("options_payment")) {
         $options = array();
         $options['payment_gateway'] = $request->req['payment_gateway'];
         $options['paypal_test_mode'] = isset($request->req['paypal_test_mode']) ? "yes" : null;
         $options['paypal_email'] = $request->req['paypal_email'];
         $options['currency'] = $request->req['currency'];
         $options['currency_symbol_position'] = $request->req['currency_symbol_position'];
         $options['paypal_page_style'] = $request->req['paypal_page_style'];
         $service->set_model($model);
         $service->save_options($options);
         RM_Utilities::redirect(admin_url('/admin.php?page=' . $params['xml_loader']->request_tree->success));
     } else {
         $view = $this->mv_handler->setView('options_payment');
         $service->set_model($model);
         $data = $service->get_options();
         $view->render($data);
     }
 }
 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 reset_pass_page($model, RM_Front_Service $service, $request)
 {
     if (is_user_logged_in()) {
         if ($this->mv_handler->validateForm("rm_reset_pass_form")) {
             if ($service->should_reset_password($request->req)) {
                 wp_set_password($request->req['new_pass'], get_current_user_id());
                 RM_Utilities::redirect(wp_login_url(get_permalink()) . '&is_reset=1', false, 0, 1000);
                 return RM_UI_Strings::get('PASS_RESET_SUCCESSFUL');
             }
         }
         $view = $this->mv_handler->setView('reset_password', true);
         return $view->read();
     }
 }
 public function 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 != "") {
         echo "<br>", RM_UI_Strings::get("MSG_REDIRECTING_TO") . "<br>";
         //echo "<br>", var_dump(),die;
         if ($params['form']->form_redirect == "page") {
             $page_id = $params['form']->get_form_redirect_to_page();
             $page_title = get_post($page_id)->post_title ?: '#' . $page_id . ' (No title)';
             echo $page_title;
             RM_Utilities::redirect(null, true, $page_id, true);
         } else {
             $url = $params['form']->get_form_redirect_to_url();
             RM_Utilities::redirect($url, false, 0, true);
         }
     }
 }
 public function log_off($model, RM_Front_Service $service, $request, $params)
 {
     $user_email = $service->get_user_email();
     if (null != $user_email) {
         $service->log_front_user_off($user_email);
         RM_Utilities::redirect(get_permalink(get_option('rm_option_front_sub_page_id')));
     }
 }
 public function after_submission_proc($params, $prevent_redirection = false)
 {
     $form_options = $params->form_options;
     $msg_str = $form_options->form_success_message != "" ? $form_options->form_success_message : $params->form_name . " Submitted ";
     if (!$prevent_redirection) {
         if ($form_options->redirection_type) {
             $redir_str = "<br>" . RM_UI_Strings::get("MSG_REDIRECTING_TO") . "<br>";
             //echo "<br>", var_dump(),die;
             if ($form_options->redirection_type === "page") {
                 $page_id = $form_options->redirect_page;
                 $page_title = get_post($page_id)->post_title ?: '#' . $page_id . ' (No title)';
                 $redir_str .= $page_title;
                 RM_Utilities::redirect(null, true, $page_id, true);
             } else {
                 $url = $form_options->redirect_url;
                 $redir_str .= $url;
                 RM_Utilities::redirect($url, false, 0, true);
             }
             return $msg_str . '<br><br>' . $redir_str;
         }
     }
     return $msg_str;
 }