}); }); </script> <?php echo heading($page_title, 2); ?> <div id="accordion"> <?php echo heading(lang('contact_details'), 3); ?> <div class="pure-g"> <div class="pure-u-3-5"> <?php echo sprintf(lang('now_calling'), name($participant), gender($participant->gender), dob($participant->dateofbirth), age_in_months($participant)); ?> <?php if ($participation->nrcalls > 0 && !empty($previous_call)) { echo '<p><em>'; echo sprintf(lang('already_called'), name($participant), $participation->nrcalls, output_date($participation->lastcalled), lcfirst(lang($previous_call->status))); echo '</em></p>'; } ?> <!-- Contact details --> <?php echo sprintf(lang('call_contact'), $participant->firstname, parent_name($participant)); ?> <br> <br>
/** Creates a .csv-file from a table of scores (testinvite_id -> score) */ function scores_to_csv($test_code, $score_table, $experiment_id = NULL) { $CI =& get_instance(); // Retrieve the headers $headers = array(lang('reference_number'), lang('gender'), lang('age'), lang('age_md'), lang('dyslexicparent'), lang('multilingual')); if ($experiment_id) { array_unshift($headers, lang('part_number')); } // Add test categories $test = $CI->testModel->get_test_by_code($test_code); $testcats = $CI->testCatModel->get_testcats_by_test($test->id, FALSE, TRUE); foreach ($testcats as $testcat) { $headers[] = $testcat->code . ' - ' . $testcat->name; } // For N-CDI: add parent test categories if ($test_code == 'ncdi_wz') { $parent_testcats = $CI->testCatModel->get_testcats_by_test($test->id, TRUE); foreach ($parent_testcats as $parent) { $headers[] = $parent->name . ' - ' . lang('raw_score'); $headers[] = $parent->name . ' - ' . lang('percentile'); $headers[] = $parent->name . ' - ' . lang('language_age'); } } // Add headers to the csv array (later used in fputscsv) $csv_array = array(); $csv_array[] = $headers; // Generate array for each row and put in total array foreach ($score_table as $testinvite_id => $scores) { $testinvite = $CI->testInviteModel->get_testinvite_by_id($testinvite_id); $participant = $CI->testInviteModel->get_participant_by_testinvite($testinvite); // Add participant data $refnr = reference_number($participant); $g = $participant->gender; $age = age_in_months($participant, $testinvite->datecompleted); $agemd = age_in_months_and_days($participant->dateofbirth, $testinvite->datecompleted); $d = $participant->dyslexicparent ? $participant->dyslexicparent : lang('no'); $m = $participant->multilingual ? lang('yes') : lang('no'); $csv_row = array($refnr, $g, $age, $agemd, $d, $m); if ($experiment_id) { $participation = $CI->participationModel->get_participation($experiment_id, $participant->id); array_unshift($csv_row, $participation->part_number); } // Add score data foreach ($testcats as $testcat) { $score = isset($scores[$testcat->id]) ? $scores[$testcat->id] : ''; array_push($csv_row, $score); } // For N-CDI: total score data if ($test_code == 'ncdi_wz') { $totals = create_ncdi_score_array($test, $testinvite, TRUE); foreach ($totals as $total) { array_push($csv_row, $total['score'], $total['percentile'], $total['age']); } } // Add row to csv array $csv_array[] = $csv_row; } // Create a new output stream and capture the result in a new object $fp = fopen('php://output', 'w'); ob_start(); // Create a new row in the CSV file for every in the array foreach ($csv_array as $row) { fputcsv($fp, $row, ';'); } // Capture the output as a string $csv = ob_get_contents(); // Close the object and the stream ob_end_clean(); fclose($fp); return $csv; }
public function percentiles($test_code, $testinvite_id = NULL) { $table = array(); $table['cols'] = array(array('label' => lang('testcat'), 'type' => 'string'), array('label' => lang('gender'), 'type' => 'string'), array('label' => lang('age'), 'type' => 'number'), array('label' => '50ste percentiel', 'type' => 'number'), array('type' => 'string', 'role' => 'tooltip'), array('label' => '99e percentiel', 'type' => 'number', 'role' => 'interval'), array('label' => '85e percentiel', 'type' => 'number', 'role' => 'interval'), array('label' => '15e percentiel', 'type' => 'number', 'role' => 'interval'), array('label' => '1e percentiel', 'type' => 'number', 'role' => 'interval')); if ($testinvite_id) { $testinvite = $this->testInviteModel->get_testinvite_by_id($testinvite_id); $participant = $this->testInviteModel->get_participant_by_testinvite($testinvite); $p_gender = $participant->gender; $p_age = age_in_months($participant, $testinvite->datecompleted); array_push($table['cols'], array('label' => 'Score kind', 'type' => 'number'), array('type' => 'string', 'role' => 'tooltip')); } $testcat_ids = $this->get_testcat_ids($test_code); $percentiles1 = $this->percentileModel->get_percentiles_by_testcats($testcat_ids, array(50)); $percentiles2 = $this->percentileModel->get_percentiles_by_testcats($testcat_ids, array(1, 15, 50, 85, 99)); $percentiles = array_merge($percentiles1, $percentiles2); $rows = array(); foreach ($percentiles as $percentile) { $unique = implode('_', array($percentile->testcat_id, $percentile->gender, $percentile->age)); $testcat = $this->testCatModel->get_testcat_by_id($percentile->testcat_id)->name; $gender = !empty($percentile->gender) ? gender_sex($percentile->gender) : NULL; $rows[$unique]['t'] = array('v' => $testcat); $rows[$unique]['g'] = array('v' => $gender); $rows[$unique]['a'] = array('v' => intval($percentile->age)); $rows[$unique][$percentile->percentile] = array('v' => $percentile->score); if ($percentile->percentile == 50) { $tooltip = 'Score 50ste percentiel na ' . $percentile->age . ' maanden: ' . $percentile->score; $rows[$unique]['tt'] = array('v' => $tooltip); } if (isset($participant) && $percentile->percentile == 1) { if ((empty($percentile->gender) || $percentile->gender === $p_gender) && $percentile->age == $p_age) { $score = $this->testCatModel->total_score($percentile->testcat_id, $testinvite_id); $rows[$unique][100] = array('v' => intval($score->score)); $tooltip = 'Score kind na ' . $percentile->age . ' maanden: ' . $score->score; $rows[$unique][101] = array('v' => $tooltip); } else { $rows[$unique][100] = array('v' => NULL); $rows[$unique][101] = array('v' => NULL); } } } $table['rows'] = $this->flatten($rows); echo json_encode($table); }