public function notify_users($users, $type)
 {
     if (is_array($users) && !empty($users)) {
         $front_form_service = new RM_Front_Form_Service();
         foreach ($users as $id) {
             $user = get_user_by('id', $id);
             $params = new stdClass();
             $params->email = $user->user_email;
             $email = $front_form_service->prepare_email($type, null, $params);
             RM_Utilities::send_mail($email);
         }
     }
 }
 public function notify_users($note)
 {
     $gopt = new RM_Options();
     if ($gopt->get_value_of('user_notification_for_notes') == "yes") {
         if ($note->get_status() != 'publish') {
             return;
         }
         $submission = new RM_Submissions();
         $submission->load_from_db($note->get_submission_id());
         $email = new stdClass();
         //echo '<pre>';
         //print_r($submission); die;
         $email->to = $submission->get_user_email();
         $from_email = $gopt->get_value_of('senders_email_formatted');
         $header = "From: {$from_email}\r\n";
         $header .= "MIME-Version: 1.0\r\n";
         $header .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
         $email->subject = get_bloginfo('name', 'display') . " Notification from Admin ";
         $email->message = RM_UI_Strings::get('MSG_NOTE_FROM_ADMIN') . $note->get_notes();
         $email->header = $header;
         $email->attachments = array();
         RM_Utilities::send_mail($email);
     }
 }
 public static function do_job()
 {
     //error_log("******* in the chronos ********");
     $job_batch = get_option("rm_option_jobman_job", null);
     if ($job_batch == null) {
         return;
     }
     //echo "<br>Batch:<br>";
     //return;
     //self::log_var_dump($job_batch);
     $gopts = new RM_Options();
     $from_email = $gopts->get_value_of('senders_email_formatted');
     $header = "From: {$from_email}\r\n";
     $header .= "MIME-Version: 1.0\r\n";
     $header .= "Content-Type: text/html; charset=utf-8\r\n";
     foreach ($job_batch as $key => $job) {
         $results = RM_DBManager::get_submissions_for_form($job->form_id, $job->job_size, $job->offset);
         //echo "<br>in foreach:<br>";
         //var_dump($results);
         if ($results != false) {
             foreach ($results as $result) {
                 //error_log("Doing a job, email: " . $result->user_email);
                 $sub_values = maybe_unserialize($result->data);
                 $processed_msg = $job->mail_packet['message'];
                 foreach ($job->form_fields as $field_placeholder) {
                     $abab = explode("_", $field_placeholder);
                     $field_id = $abab[1];
                     if (isset($sub_values[$field_id])) {
                         if (is_array($sub_values[$field_id]->value)) {
                             $sub_values[$field_id]->value = implode(",", $sub_values[$field_id]->value);
                         }
                         $processed_msg = str_replace("{{" . $field_placeholder . "}}", $sub_values[$field_id]->value, $processed_msg);
                     }
                 }
                 $cron_mail = new stdClass();
                 $cron_mail->to = $result->user_email;
                 $cron_mail->header = $header;
                 $cron_mail->message = wpautop($processed_msg);
                 $cron_mail->subject = $job->mail_packet['subject'];
                 $cron_mail->attachments = array();
                 RM_Utilities::send_mail($cron_mail);
                 //wp_mail($result->user_email,
                 //$job->mail_packet['subject'] ,
                 //$processed_msg,
                 //$header);
             }
             $job_batch[$key]->offset += count($results);
             //$job->job_size;
             if ($job->callback !== null) {
                 $job->callback(true);
             }
         }
         if ($job_batch[$key]->offset >= $job_batch[$key]->total) {
             unset($job_batch[$key]);
         }
     }
     update_option("rm_option_jobman_job", $job_batch);
 }
 public function process($model, $service, $request, $params)
 {
     if ($service->is_ip_banned()) {
         return $this->banned_view();
     }
     global $rm_form_diary;
     if (count($rm_form_diary) > 0 && !isset($params['force_enable_multiform'])) {
         return;
     }
     if (isset($params['form_id']) && $params['form_id']) {
         $form_id = $params['form_id'];
         $fe_form = $this->form_factory->create_form($form_id);
         $form_name = 'form_' . $fe_form->get_form_id();
     } else {
         return;
     }
     $fopts = $fe_form->get_form_options();
     if ($fe_form->is_expired() && $fopts->post_expiry_action == 'switch_to_another_form') {
         $form_id = $fopts->post_expiry_form_id;
         if ($form_id) {
             $fe_form = $this->form_factory->create_form($form_id);
             $form_name = 'form_' . $fe_form->get_form_id();
         } else {
             return;
         }
     }
     if (isset($request->req['rm_pproc'])) {
         $paypal_service = new RM_Paypal_Service();
         ob_start();
         $resp = $paypal_service->callback($request->req['rm_pproc'], isset($request->req['rm_pproc_id']) ? $request->req['rm_pproc_id'] : null);
         $paypal_callback_msg = ob_get_clean();
         $x = new stdClass();
         $x->form_options = $fe_form->get_form_options();
         $x->form_name = $fe_form->get_form_name();
         $after_sub_msg = $service->after_submission_proc($x);
         return $paypal_callback_msg . '<br><br>' . $after_sub_msg;
     }
     //Call form specific processing before submission.
     $form_preproc_response = $fe_form->pre_sub_proc($request->req, $params);
     if (isset($request->req['stat_id'])) {
         $stat_id = $request->req['stat_id'];
     } else {
         $stat_id = null;
     }
     if (isset($request->req['rm_form_sub_no']) && $request->req['rm_form_sub_no']) {
         $subbed_form_no = $request->req['rm_form_sub_no'];
     } else {
         $subbed_form_no = null;
     }
     if ($subbed_form_no && $fe_form->get_form_number() == $subbed_form_no && $form_preproc_response && $this->mv_handler->validateForm($form_name . "_" . $subbed_form_no) && !$service->is_browser_reload_duplication($stat_id)) {
         if ($service->is_off_limit_submission($form_id, $fe_form->get_form_options())) {
             die(RM_UI_Strings::get("ALERT_SUBMISSIOM_LIMIT"));
         }
         $primary_data = $fe_form->get_prepared_data($request->req, 'primary');
         $service->update_stat_entry($stat_id);
         $db_data = $fe_form->get_prepared_data($request->req, 'dbonly');
         $sub_detail = $service->save_submission($form_id, $db_data, $primary_data['user_email']->value);
         $form_options = $fe_form->get_form_options();
         if ((int) $form_options->should_export_submissions === 1) {
             $service->export_to_external_url($form_options->export_submissions_to_url, $db_data);
         }
         if ($form_options->form_is_unique_token) {
             $token = $sub_detail->token;
         } else {
             $token = null;
         }
         if ($form_options->form_should_send_email) {
             $parameters = new stdClass();
             //This is different then the $params in the argument of this function!
             $parameters->req = $request->req;
             $parameters->email = $primary_data['user_email']->value;
             $parameters->email_content = $form_options->form_email_content;
             $parameters->email_subject = $form_options->form_email_subject;
             $email = $service->prepare_email('to_registrar', $token, $parameters);
             RM_Utilities::send_mail($email);
         }
         $submissions = new RM_Submissions();
         $submissions->load_from_db($sub_detail->submission_id);
         $parameters = new stdClass();
         $parameters->sub_data = $submissions->get_data();
         $parameters->form_name = $fe_form->get_form_name();
         $email = $service->prepare_email('to_admin', $token, $parameters);
         RM_Utilities::send_mail($email);
         $params['sub_detail'] = $sub_detail;
         /*
          * Check for payment
          */
         //also call Form specific method after submission
         $prevent_redirection = false;
         if ($fe_form->has_price_field()) {
             $params['paystate'] = 'pre_payment';
             $fe_form->post_sub_proc($request->req, $params, false);
             $params['is_paid'] = $service->process_payment($fe_form, $request, $params);
             if ($params['is_paid'] === 'do_not_redirect') {
                 $params['paystate'] = 'post_payment';
                 $fe_form->post_sub_proc($request->req, $params, false);
                 $this->update_user_profile($primary_data['user_email']->value, $db_data, $service);
                 $prevent_redirection = true;
             } else {
                 $params['paystate'] = 'post_payment';
                 $fe_form->post_sub_proc($request->req, $params, $params['is_paid']);
                 $this->update_user_profile($primary_data['user_email']->value, $db_data, $service);
             }
         } else {
             $params['paystate'] = 'na';
             $fe_form->post_sub_proc($request->req, $params);
             $this->update_user_profile($primary_data['user_email']->value, $db_data, $service);
         }
         unset($parameters->sub_data);
         $parameters->form_options = $form_options;
         if (!$prevent_redirection) {
             return $service->after_submission_proc($parameters);
         }
         //This must be returned as there is no ob_start here at work.
     } else {
         $data = new stdClass();
         $data->stat_id = $service->create_stat_entry($params);
         $data->fe_form = $fe_form;
         $force_multiple_form = isset($params['force_enable_multiform']) ? true : false;
         $view = $this->mv_handler->setView("user_form_nexgen", true);
         return $view->read($data, $force_multiple_form);
     }
 }
 public function register_user($request, $form, $is_auto_generate, $is_paid = true)
 {
     $gopt = new RM_Options();
     $username = $request->req['username'];
     if ($is_auto_generate != "yes") {
         $password = $request->req['password'];
     } else {
         $password = wp_generate_password(8, false, false);
     }
     $primary_emails = $this->get_primary_email_fields($form->form_id);
     $request_keys = array_keys($request->req);
     $emails = array_intersect($request_keys, $primary_emails);
     foreach ($emails as $email) {
         $email_field_name = $email;
         break;
     }
     $email = $request->req[$email_field_name];
     $user_id = wp_create_user($username, $password, $email);
     if (is_wp_error($user_id)) {
         foreach ($user_id as $err) {
             foreach ($err as $error) {
                 echo $error[0];
                 die;
             }
         }
     } else {
         /*
          * User created. Check if details are to send via an email
          */
         $required_params = new stdClass();
         $required_params->email = $email;
         $required_params->username = $username;
         $required_params->password = $password;
         if ($this->get_setting('send_password') === 'yes' || $this->get_setting('auto_generated_password') === 'yes') {
             $email_obj = $this->prepare_email('new_user', null, $form, $required_params);
             RM_Utilities::send_mail($email_obj);
         }
         /*
          * Deactivate the user in case auto approval is off
          */
         if (!$is_paid || $gopt->get_value_of('user_auto_approval') != "yes") {
             $this->user_service->deactivate_user_by_id($user_id);
             $link = $this->user_service->create_user_activation_link($user_id);
             $required_params->link = $link;
             $email_obj = $this->prepare_email('user_activation', null, $form, $required_params);
             RM_Utilities::send_mail($email_obj);
         }
         /*
          * If role is chosen by registrar
          */
         if (isset($request->req['role_as']) && !empty($request->req['role_as'])) {
             $this->user_service->set_user_role($user_id, $request->req['role_as']);
         } else {
             $tmp = $form->get_default_form_user_role();
             if (!empty($tmp)) {
                 /*
                  * Assign user role if configured by default
                  */
                 $this->user_service->set_user_role($user_id, $form->get_default_form_user_role());
             }
         }
     }
     return $user_id;
 }