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; }