/**
  * Takes a record and transforms it into an appropriate format
  * This method is set up as a hook to be implented by actual report class
  *
  * @param   stdClass  $record         The current report record
  * @param   string    $export_format  The format being used to render the report
  *
  * @return  stdClass                  The reformatted record
  */
 function transform_record($record, $export_format)
 {
     if ($export_format != php_report::$EXPORT_FORMAT_CSV && $export_format != php_report::$EXPORT_FORMAT_EXCEL) {
         $user = new stdClass();
         $user->firstname = $record->firstname;
         $user->lastname = $record->r_student;
         $record->r_student = php_report::fullname($user);
     }
     if (empty($record->r_elements)) {
         $record->r_elements = '0';
         $record->r_percent = '0';
     } else {
         //$percentage = round($record->r_complete / $record->r_elements * 10000) / 100;
         $percentage = round($record->r_percent / $record->r_elements * 10000) / 100;
         $percentage = $percentage > 100 ? 100 : $percentage;
         $record->r_percent = $percentage;
     }
     if ($export_format != php_report::$EXPORT_FORMAT_CSV) {
         $record->r_percent .= get_string('percent_symbol', $this->lang_file);
     }
     if (empty($record->r_graded)) {
         $record->r_graded = '0';
     }
     if (empty($record->r_total_elements)) {
         $record->r_total_elements = '0';
     }
     $secs_in_hour = 3600;
     if (!empty($record->r_timespent)) {
         if ($record->r_timespent > 0 && $record->r_timespent < $secs_in_hour) {
             $timespent = 1;
             $record->r_timespent = $export_format == php_report::$EXPORT_FORMAT_HTML ? '&lt;1' : '1';
         } else {
             $timespent = floor($record->r_timespent / $secs_in_hour);
             $record->r_timespent = $timespent;
         }
     } else {
         $timespent = 0;
         $record->r_timespent = "0";
     }
     if ($export_format != php_report::$EXPORT_FORMAT_CSV) {
         $record->r_timespent .= ' ' . get_string($timespent == 1 ? 'hour' : 'hours', $this->lang_file);
     }
     // ELIS-4916: now using ELIS grade!
     if (!empty($record->elisgrade)) {
         $record->r_total_grade = pm_display_grade($record->elisgrade);
         if (is_numeric($record->r_total_grade) && $export_format != php_report::$EXPORT_FORMAT_CSV) {
             $record->r_total_grade .= get_string('percent_symbol', $this->lang_file);
         }
     } else {
         $record->r_total_grade = get_string('na', $this->lang_file);
     }
     $record->r_status = $record->r_status == 1 ? get_string('complete', $this->lang_file) : get_string('incomplete', $this->lang_file);
     $record->curriculum_name = $record->curriculum_name == '' ? get_string('na', $this->lang_file) : $record->curriculum_name;
     return $record;
 }
 /**
  * Takes a record and transforms it into an appropriate format
  * This method is set up as a hook to be implented by actual report class
  *
  * @param   stdClass  $record         The current report record
  * @param   string    $export_format  The format being used to render the report
  * @uses $CFG
  * @return stdClass  The reformatted record
  */
 function transform_record($record, $export_format)
 {
     global $CFG;
     //is this a required course?
     if ($record->curriculumid === NULL) {
         //not part of a curriculum
         $record->required = get_string('na', 'rlreport_course_completion_by_cluster');
     } else {
         if ($record->required == 1) {
             $record->required = get_string('required_yes', 'rlreport_course_completion_by_cluster');
         } else {
             $record->required = get_string('required_no', 'rlreport_course_completion_by_cluster');
         }
     }
     //make sure we want to display this column
     if (property_exists($record, 'completestatusid')) {
         if ($record->completestatusid === NULL) {
             //not enrolled in the class
             $record->completestatusid = get_string('stustatus_notenrolled', 'rlreport_course_completion_by_cluster');
         } else {
             if ($record->completestatusid == STUSTATUS_NOTCOMPLETE) {
                 $record->completestatusid = get_string('stustatus_notcomplete', 'rlreport_course_completion_by_cluster');
             } else {
                 if ($record->completestatusid == STUSTATUS_PASSED) {
                     //flag the class enrolment as passed and show completion date
                     $a = $this->format_date($record->enrolcompletetime);
                     $record->completestatusid = get_string('stustatus_passed', 'rlreport_course_completion_by_cluster', $a);
                 } else {
                     //flag the class enrolment as failed and show completion date
                     $a = $this->format_date($record->enrolcompletetime);
                     $record->completestatusid = get_string('stustatus_failed', 'rlreport_course_completion_by_cluster', $a);
                 }
             }
         }
     }
     //class grade
     if ($record->grade === NULL) {
         //not enrolled
         $record->grade = get_string('na', 'rlreport_course_completion_by_cluster');
     } else {
         //format the grade value
         $record->grade = get_string($export_format == php_report::$EXPORT_FORMAT_CSV ? 'formatted_grade_csv' : 'formatted_grade', 'rlreport_course_completion_by_cluster', pm_display_grade($record->grade));
     }
     if (isset($record->numcomplete)) {
         $record->numcomplete = get_string('numcomplete_tally', 'rlreport_course_completion_by_cluster', $record);
     }
     return $record;
 }
Пример #3
0
 /**
  * Convert a listing of non-program courses to a data table
  *
  * @param array $classes A listing of table entries for non-program courses
  * @return object the table that can be used to display this information
  */
 function get_dashboard_nonprogram_table($classes)
 {
     global $CFG;
     $status_mapping = array(STUSTATUS_PASSED => get_string('passed', 'local_elisprogram'), STUSTATUS_FAILED => get_string('failed', 'local_elisprogram'), STUSTATUS_NOTCOMPLETE => get_string('n_completed', 'local_elisprogram'));
     $table = new html_table();
     $table->head = array(get_string('course', 'local_elisprogram'), get_string('class', 'local_elisprogram'), get_string('score', 'local_elisprogram'), get_string('student_status', 'local_elisprogram'), get_string('date', 'local_elisprogram'));
     $table->data = array();
     if ($classes != false) {
         //have one or more classes
         foreach ($classes as $class) {
             if ($mdlcrs = moodle_get_course($class->classid)) {
                 $coursename = '<a href="' . $CFG->wwwroot . '/course/view.php?id=' . $mdlcrs . '">' . $class->coursename . '</a>';
             } else {
                 $coursename = $class->coursename;
             }
             $table->data[] = array($coursename, $class->idnumber, pm_display_grade($class->grade), $status_mapping[$class->completestatusid], $class->completestatusid == STUSTATUS_PASSED && !empty($class->completetime) ? userdate($class->completetime, get_string('pm_date_format', 'local_elisprogram')) : get_string('na', 'local_elisprogram'));
         }
     }
     return $table;
 }
Пример #4
0
 /**
  * Method to test pm_display_grade()
  *
  * @param string|float|int $inval Input value to be passed to pm_display_grade()
  * @param string $expected The expected output from pm_display_grade() for input value
  * @dataProvider pmdisplaygrade_data
  */
 public function testpmdisplaygrade($inval, $expected)
 {
     $actual = pm_display_grade($inval);
     $this->assertTrue($expected === (string) $actual);
 }
 /**
  * Takes a record and transforms it into an appropriate format
  * This method is set up as a hook to be implented by actual report class
  *
  * @param   stdClass  $record         The current report record
  * @param   string    $export_format  The format being used to render the report
  * @uses    $DB
  * @return  stdClass                  The reformatted record
  */
 function transform_record($record, $export_format)
 {
     global $DB;
     $record->startdate = $record->startdate == 0 ? get_string('na', $this->lang_file) : $this->pmclassdate($record, 'start');
     $today = strtotime(date('Y-m-d'));
     if ($record->enddate > $today) {
         $record->enddate = get_string('transform_column_in_progress', $this->lang_file);
     } else {
         $record->enddate = $record->enddate == 0 ? get_string('na', $this->lang_file) : $this->pmclassdate($record, 'end');
     }
     //make sure this is set to something so that the horizontal bar graph doesn't disappear
     if (empty($record->stucompletedprogress)) {
         $record->stucompletedprogress = 0;
     }
     $a = new stdClass();
     if (isset($record->stucompletedprogress)) {
         $a->value = $record->stucompletedprogress;
         $a->total = $record->numprogress;
     } else {
         $a->value = 0;
         $a->total = 0;
     }
     $record->completedprogress = get_string('of', $this->lang_file, $a);
     if (empty($record->numresources)) {
         $record->numresources = 0;
     }
     if ($this->preposttest_columns) {
         if (!empty($record->pretestscore)) {
             $record->pretestscore = pm_display_grade($record->pretestscore);
             if ($export_format != php_report::$EXPORT_FORMAT_CSV) {
                 $record->pretestscore .= get_string('percent_symbol', $this->lang_file);
             }
         } else {
             $record->pretestscore = get_string('no_test_symbol', $this->lang_file);
         }
         if (!empty($record->posttestscore)) {
             $record->posttestscore = pm_display_grade($record->posttestscore);
             if ($export_format != php_report::$EXPORT_FORMAT_CSV) {
                 $record->posttestscore .= get_string('percent_symbol', $this->lang_file);
             }
         } else {
             $record->posttestscore = get_string('no_test_symbol', $this->lang_file);
         }
     }
     if ($this->los_columns) {
         $los = $DB->get_records(coursecompletion::TABLE, array('courseid' => $record->courseid), '', 'id, name');
         $fid = 1;
         foreach ($los as $lo) {
             $elem = "lo{$fid}";
             $lograde = $DB->get_field(student_grade::TABLE, 'grade', array('userid' => $record->userid, 'classid' => $record->classid, 'completionid' => $lo->id));
             // TBD: locked?
             if (!is_numeric($lograde)) {
                 $lograde = '-';
                 // TBD
             }
             $record->{$elem} = $lo->name . ': ' . pm_display_grade($lograde);
             if (is_numeric($lograde) && $export_format != php_report::$EXPORT_FORMAT_CSV) {
                 $record->{$elem} .= get_string('percent_symbol', $this->lang_file);
             }
             //error_log("ICPR::xform_rec(): record->{$elem} => {$record->$elem}");
             ++$fid;
         }
     }
     if ($this->totalscore_column) {
         $record->elisgrade = pm_display_grade($record->elisgrade);
         if (is_numeric($record->elisgrade) && $export_format != php_report::$EXPORT_FORMAT_CSV) {
             $record->elisgrade .= get_string('percent_symbol', $this->lang_file);
         }
     }
     if (empty($record->numposts)) {
         $record->numposts = 0;
     }
     $record->enrol_status = empty($record->enrol_status) ? get_string('grouping_course_in_progress', $this->lang_file) : get_string('grouping_course_complete', $this->lang_file);
     // Default values for custom fields IF not set
     foreach ($this->field_default as $key => $value) {
         // error_log("ICPR:transform_record(), checking default for {$key} => {$value}");
         if (!isset($record->{$key})) {
             $record->{$key} = $this->format_default_data($value);
         }
     }
     return $record;
 }
 /**
  * Takes a summary row record and transoforms it into an appropriate format
  * This method is set up as a hook to be implented by actual report class
  *
  * @return stdClass  The reformatted record
  */
 function transform_column_summary_record($record)
 {
     //calculate the percentage of completion elements satisfied
     if ($record->percentcomplete == NULL) {
         $record->percentcomplete = get_string('na', 'rlreport_course_completion_gas_gauge');
     } else {
         $record->percentcomplete = number_format($record->percentcomplete, 1);
     }
     //format the Moodle gradebook course score
     if ($record->score === NULL) {
         $record->score = get_string('na', 'rlreport_course_completion_gas_gauge');
     } else {
         $record->score = pm_display_grade($record->score);
         // TBD: NO $export_format passed to append '%'
     }
     return $record;
 }
Пример #7
0
 /**
  * Formats enrolment data for display in the table post-edit.
  * @param array $enroldata The incoming enrolment data
  * @return array The formatted enrolment data.
  */
 protected function format_enroldata_for_display($enroldata)
 {
     // Locked 0,1 => no, yes.
     if (isset($enroldata['locked'])) {
         $enroldata['locked'] = $enroldata['locked'] == 1 ? get_string('yes', 'moodle') : get_string('no', 'moodle');
     }
     // Format enrolment time.
     if (isset($enroldata['enrolmenttime'])) {
         $enroldata['enrolmenttime'] = ds_process_displaytime($enroldata['enrolmenttime']);
     }
     // Format completion time.
     if (isset($enroldata['completetime'])) {
         $statusiscomplete = isset($enroldata['completestatusid']) && $enroldata['completestatusid'] != STUSTATUS_NOTCOMPLETE ? true : false;
         $enroldata['completetime'] = $statusiscomplete === true ? ds_process_displaytime($enroldata['completetime']) : '-';
     }
     // Completion status ints to labels.
     if (isset($enroldata['completestatusid'])) {
         $choices = array(STUSTATUS_NOTCOMPLETE => get_string('n_completed', 'local_elisprogram'), STUSTATUS_PASSED => get_string('passed', 'local_elisprogram'), STUSTATUS_FAILED => get_string('failed', 'local_elisprogram'));
         $enroldata['completestatusid'] = $choices[$enroldata['completestatusid']];
     }
     if (isset($enroldata['grade'])) {
         $enroldata['grade'] = pm_display_grade($enroldata['grade']);
     }
     if (isset($enroldata['credits'])) {
         $enroldata['credits'] = number_format($enroldata['credits'], 2);
     }
     return $enroldata;
 }
 /**
  * Takes a record and transforms it into an appropriate format
  * This method is set up as a hook to be implented by actual report class
  *
  * @param   stdClass  $record         The current report record
  * @param   string    $export_format  The format being used to render the report
  *
  * @return  stdClass                  The reformatted record
  */
 function transform_record($record, $export_format)
 {
     static $init_column_width = 0;
     $record->curriculum_name = $record->curriculum_name == '' ? get_string('na', $this->lang_file) : $record->curriculum_name;
     $record->element = empty($record->element) ? get_string('none', $this->lang_file) : $record->element;
     $record->score = empty($record->score) ? get_string('na', $this->lang_file) : pm_display_grade($record->score) . ($export_format == php_report::$EXPORT_FORMAT_CSV ? '' : get_string('percent_symbol', $this->lang_file));
     if (!$init_column_width && $export_format == php_report::$EXPORT_FORMAT_PDF) {
         // ELIS-2890: make column wide enough for column summary row width
         $init_column_width = 1;
         $record->score .= str_repeat(" ", 160);
     }
     return $record;
 }
Пример #9
0
 /**
  * Formats various attributes for human consumption.
  *
  * Changes the locked int to yes/no, formated enrolment and completion times into date strings, converts completion status
  * to human-readable label.
  *
  * @param array $row An array for a single result.
  * @return array The transformed result.
  */
 protected function results_row_transform(array $row)
 {
     $row = parent::results_row_transform($row);
     // Locked 0,1 => no, yes.
     if (isset($row['enrol_locked'])) {
         $row['enrol_locked'] = $row['enrol_locked'] == 1 ? get_string('yes', 'moodle') : get_string('no', 'moodle');
     }
     // Format enrolment time.
     if (isset($row['enrol_enrolmenttime'])) {
         $row['enrol_enrolmenttime'] = ds_process_displaytime($row['enrol_enrolmenttime']);
     }
     // Format completion time.
     if (isset($row['enrol_completetime'])) {
         $statusiscomplete = isset($row['enrol_completestatusid']) && $row['enrol_completestatusid'] != STUSTATUS_NOTCOMPLETE ? true : false;
         $row['enrol_completetime'] = $statusiscomplete === true ? ds_process_displaytime($row['enrol_completetime']) : '';
     }
     // Completion status ints to labels.
     if (isset($row['enrol_completestatusid'])) {
         $choices = array(STUSTATUS_NOTCOMPLETE => get_string('n_completed', 'local_elisprogram'), STUSTATUS_PASSED => get_string('passed', 'local_elisprogram'), STUSTATUS_FAILED => get_string('failed', 'local_elisprogram'));
         $row['enrol_completestatusid'] = $choices[$row['enrol_completestatusid']];
     }
     if (isset($row['enrol_grade'])) {
         $row['enrol_grade'] = pm_display_grade($row['enrol_grade']);
     }
     return $row;
 }
 /**
  * Takes a record and transform it into an appropriate format
  * This method is set up as a hook to be implented by actual report class
  *
  * @param   stdClass  $record         The current report record
  * @param   string    $export_format  The format being used to render the report
  *
  * @return  stdClass                  The reformatted record
  */
 function transform_record($record, $export_format)
 {
     $record->user_id = php_report::fullname($record);
     // start-end dates
     $sdate = cm_timestamp_to_date($record->startdate, STR_DATE_FORMAT);
     $edate = !empty($record->enddate) ? cm_timestamp_to_date($record->enddate, STR_DATE_FORMAT) : get_string('present', $this->langfile);
     $record->startdate = empty($record->startdate) && empty($record->enddate) ? get_string('na', $this->langfile) : "{$sdate} - {$edate}";
     // completed date
     $record->completed = $record->status != STUSTATUS_NOTCOMPLETE && !empty($record->completed) ? cm_timestamp_to_date($record->completed, STR_DATE_FORMAT) : get_string('incomplete', $this->langfile);
     // status mapping
     $statusmap = array(STUSTATUS_NOTCOMPLETE => 'na', STUSTATUS_FAILED => 'status_failed', STUSTATUS_PASSED => 'status_passed');
     $record->status = get_string($statusmap[$record->status], $this->langfile);
     if (!empty($record->grade)) {
         $record->grade = pm_display_grade($record->grade);
         if ($export_format != php_report::$EXPORT_FORMAT_CSV) {
             $record->grade .= get_string('percent_symbol', $this->langfile);
         }
     } else {
         $record->grade = get_string('na', $this->langfile);
     }
     return $record;
 }