public function test_min()
 {
     $stats = new stats();
     $data_array = array(1, 2);
     $this->assertEquals($stats->min($data_array), 1);
     $data_array = array(-1, -2);
     $this->assertEquals($stats->min($data_array), -2);
     $data_array = array();
     #error?
     $this->assertEquals($stats->min($data_array), 0);
 }
    array_push($out, $sumPgMark);
    array_push($totalScore, $sumPgMark);
    fputcsv($output, $out);
    next($sids);
}
/**Statistics array. At end is 1 row mean of pages and everything, 2nd row is std-dev of pages and everything
	 more specifically, use the booklet_id as row name e.g. this row is "mean" thus 5 rows in total:
	 Mean, Median, Spread, Maximum, Minimum. */
$stats = array("mean" => array("", "Mean"), "median" => array("", "Median"), "spread" => array("", "Spread"), "max" => array("", "Maximum"), "min" => array("", "Minimum"));
/** puts into the respective statistics arrays the total page marks. */
foreach ($pagemarks as $each) {
    array_push($stats["mean"], $calc->mean($each));
    array_push($stats["median"], $calc->median($each));
    array_push($stats["spread"], $calc->spread($each));
    array_push($stats["max"], $calc->max($each));
    array_push($stats["min"], $calc->min($each));
}
/** Stats for total marks of entire class appended at the very end of the statistics arrays. */
array_push($stats["mean"], $calc->mean($totalScore));
array_push($stats["median"], $calc->median($totalScore));
array_push($stats["spread"], $calc->spread($totalScore));
array_push($stats["max"], $calc->max($totalScore));
array_push($stats["min"], $calc->min($totalScore));
/** actually write the statistics into the CSV. */
foreach ($stats as $s) {
    fputcsv($output, $s);
}
fclose($output);
?>

Example #3
0
/**
Function that draws the statistics onto the page and provides a link to the downloadable CSV.
*/
function create_stats_page($crs, $yr)
{
    global $DB;
    $calc = new stats();
    //$mform->addElement('header', 'year_sem', get_string('stats_title','local_memplugin'));
    echo '<h1>Results for ' . $yr . '</h1><br>';
    /** The SQL query to retrieve all the totatl marks for each booklet for a specific year and course. */
    /*
    $mark_sql = $GLOBALS['DB']->get_records_sql('SELECT {mem_mark_stats}.booklet_id, total_booklet_score, total_booklet_score_max FROM {mem_booklet_data}, {mem_mark_stats} WHERE course_id=? and year_semester_origin=? and {mem_mark_stats}.booklet_id={mem_booklet_data}.booklet_id and {mem_mark_stats}.exam_hash={mem_booklet_data}.exam_hash', array($crs, $yr));
    */
    // get hash
    $recBk = $DB->get_records_sql('SELECT {mem_booklet_data}.booklet_id, student_id, exam_hash, max_pages
							FROM {mem_booklet_data}
							WHERE {mem_booklet_data}.course_id=?
							and year_semester_origin=?
							', array($crs, $yr));
    $student_totals = 0;
    $raw_data_score = array();
    $max_score = 0;
    foreach ($recBk as $bk) {
        $pageMarks = 0;
        $pageTotals = 0;
        for ($i = 1; $i <= $bk->max_pages; $i++) {
            $recPg = $DB->get_record_sql('SELECT page_id, page_marks, page_marks_max
							FROM {mem_pages}
							WHERE {mem_pages}.page_num=?
							AND {mem_pages}.exam_hash=?
							AND {mem_pages}.booklet_id=?
							', array($i, $bk->exam_hash, $bk->booklet_id));
            $pageMarks += $recPg->page_marks;
            $pageTotals += $recPg->page_marks_max;
        }
        $student_totals += $pageMarks;
        $max_score = $pageTotals;
        array_push($raw_data_score, $pageMarks);
    }
    $total_mark = $student_totals;
    $raw_marks = $raw_data_score;
    var_dump($total_mark);
    echo "</br>";
    var_dump($raw_marks);
    echo "</br>";
    //$percentage_interval = floor(100/$total_mark);
    $percentage_interval = 5;
    echo $calc->graph($raw_marks, $percentage_interval, $total_mark);
    echo get_string('stats_mean', 'local_memplugin') . number_format($calc->mean($calc->to_percentage_array($raw_marks, $total_mark)), 2) . '%<br>';
    echo get_string('stats_median', 'local_memplugin') . number_format($calc->median($calc->to_percentage_array($raw_marks, $total_mark)), 2) . '%<br>';
    echo get_string('stats_spread', 'local_memplugin') . number_format($calc->spread($calc->to_percentage_array($raw_marks, $total_mark)), 2) . '%<br>';
    echo get_string('stats_max', 'local_memplugin') . $calc->max($calc->to_percentage_array($raw_marks, $total_mark)) . '%<br>';
    echo get_string('stats_min', 'local_memplugin') . $calc->min($calc->to_percentage_array($raw_marks, $total_mark)) . '%<br>';
    /** This link generates the CSV by calling csv_generate.php */
    echo '<a href="csv_generate.php?semester=' . $yr . '&course=' . $crs . '" alt="download csv">' . get_string('stats_download', 'local_memplugin') . '</a></br>';
}