public function get_fields($form_id)
 {
     $where = array("form_id" => $form_id);
     $data_specifier = array("%s", "%d");
     $email_fields = RM_DBManager::get(RM_Fields::get_identifier(), $where, $data_specifier, $result_type = 'results', $offset = 0, $limit = 1000, $column = '*', $sort_by = null, $descending = false);
     $fields = array();
     foreach ($email_fields as $field) {
         if ($field->field_type != 'Price' && $field->field_type != 'HTMLH' && $field->field_type != 'File' && $field->field_type != 'HTMLP' && $field->field_type != 'Terms') {
             $fields[] = $field;
         }
     }
     return $fields;
 }
 public function update_form_options($form_id, array $data, array $data_specifiers)
 {
     if (!(int) $form_id) {
         return false;
     }
     $i = 0;
     $row_data = array();
     $row_data_spec = array();
     $form_options = new stdClass();
     foreach ($data as $name => $value) {
         if (in_array($name, $this->valid_options)) {
             $form_options->{$name} = $value;
         } else {
             if (property_exists($this, $name)) {
                 $row_data[$name] = $value;
                 $row_data_spec[] = $data_specifiers[$i];
             }
         }
         $i++;
     }
     $form_options_ex = RM_DBManager::get('FORMS', array('form_id' => $form_id), array('%d'), 'var', 0, 1, 'form_options');
     $form_options_ex = maybe_unserialize($form_options_ex);
     $form_options_ex = RM_Utilities::merge_object($form_options_ex, $this->form_options);
     $form_options = RM_Utilities::merge_object($form_options, $form_options_ex);
     $row_data['form_options'] = maybe_serialize($form_options);
     $row_data_spec[] = '%s';
     var_dump($row_data);
     //$result = RM_DBManager::update_row('FORMS', $form_id, $row_data, $row_data_spec);
     if (!$result) {
         return false;
     }
     return true;
 }
 public function get($model_identifier, $where, $data_specifier, $result_type = 'results', $offset = 0, $limit = 15, $column = '*', $sort_by = null, $descending = false)
 {
     return RM_DBManager::get($model_identifier, $where, $data_specifier, $result_type, $offset, $limit, $column, $sort_by, $descending);
 }
 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 get_field_stats($form_id)
 {
     $fields = RM_DBManager::get_fields_filtered_by_types($form_id, array('Select', 'Checkbox', 'Radio', 'Country'));
     $stat_arr = array();
     if (is_array($fields) || is_object($fields)) {
         foreach ($fields as $field) {
             $res = array();
             $tmp_obj = new stdClass();
             $vals = maybe_unserialize($field->field_value);
             $tmp_obj->label = $field->field_label;
             $tmp_obj->total_sub = 0;
             switch ($field->field_type) {
                 case 'Checkbox':
                     $temp = RM_DBManager::get('SUBMISSION_FIELDS', array('field_id' => $field->field_id), array('%d'), 'col', 0, 999999, "value");
                     if (!$temp) {
                         break;
                     }
                     foreach ($vals as $val) {
                         $res[$val] = 0;
                     }
                     $other_option_submission = 0;
                     foreach ($temp as $single_sub) {
                         if ($single_sub == NULL) {
                             continue;
                         }
                         $single_sub = maybe_unserialize($single_sub);
                         foreach ($single_sub as $f_v) {
                             if (isset($res[$f_v])) {
                                 $res[$f_v] += 1;
                             } else {
                                 $other_option_submission++;
                             }
                         }
                     }
                     $res['Other'] = $other_option_submission;
                     //IMPORTANT: Checkbox is a multiple value type submission,
                     //hence we can't just add up the submissions of individual option to get the total submissions.
                     $tmp_obj->total_sub = RM_DBManager::count('SUBMISSION_FIELDS', array('field_id' => $field->field_id));
                     break;
                 case 'Country':
                     $temp = RM_DBManager::count_multiple('SUBMISSION_FIELDS', "value", array('field_id' => $field->field_id));
                     if (!$temp) {
                         break;
                     }
                     foreach ($temp as $single_sub) {
                         $res[$single_sub->value] = (int) $single_sub->count;
                         $tmp_obj->total_sub += (int) $single_sub->count;
                     }
                     //Compensate for the cases when Country field was not submitted (blank values).
                     if (isset($res[''])) {
                         $tmp_obj->total_sub -= $res[''];
                         //We dont need this in stat, unset it.
                         unset($res['']);
                     }
                     break;
                 case 'Radio':
                 case 'Select':
                     if ($field->field_type == 'Select') {
                         $vals = explode(',', $field->field_value);
                     }
                     $temp = RM_DBManager::count_multiple('SUBMISSION_FIELDS', "value", array('field_id' => $field->field_id));
                     if (!$temp) {
                         break;
                     }
                     foreach ($temp as $single_sub) {
                         if (in_array($single_sub->value, $vals)) {
                             $res[$single_sub->value] = (int) $single_sub->count;
                             $tmp_obj->total_sub += (int) $single_sub->count;
                         }
                     }
                     break;
             }
             $tmp_obj->sub_stat = $res;
             $stat_arr[] = $tmp_obj;
         }
     }
     return $stat_arr;
 }
 public function get_form_stats($form_id, $offset = 0, $limit = 99999)
 {
     return RM_DBManager::get('STATS', array('form_id' => $form_id), array('%d'), 'results', $offset, $limit, '*', 'visited_on', true);
 }