2009-07-07 02:26:36 +00:00
< ? php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
2007-10-10 06:34:20 +00:00
2007-07-16 04:09:00 +00:00
/**
* File in which the user_report class is defined .
* @ package gradebook
*/
require_once ( $CFG -> dirroot . '/grade/report/lib.php' );
require_once ( $CFG -> libdir . '/tablelib.php' );
2010-01-08 07:48:37 +00:00
//showhiddenitems values
define ( " GRADE_REPORT_USER_HIDE_HIDDEN " , 0 );
define ( " GRADE_REPORT_USER_HIDE_UNTIL " , 1 );
define ( " GRADE_REPORT_USER_SHOW_HIDDEN " , 2 );
2007-07-16 04:09:00 +00:00
/**
* Class providing an API for the user report building and displaying .
* @ uses grade_report
* @ package gradebook
*/
class grade_report_user extends grade_report {
/**
* The user .
* @ var object $user
*/
2008-06-03 16:10:57 +00:00
public $user ;
2007-07-16 04:09:00 +00:00
/**
* A flexitable to hold the data .
* @ var object $table
*/
2008-06-03 16:10:57 +00:00
public $table ;
2007-07-16 04:09:00 +00:00
2009-04-16 07:16:44 +00:00
var $gtree ;
2007-10-08 23:09:10 +00:00
/**
* Flat structure similar to grade tree
*/
2008-06-03 16:10:57 +00:00
public $gseq ;
2007-10-08 23:09:10 +00:00
2007-10-27 15:33:43 +00:00
/**
* show student ranks
*/
2008-06-03 16:10:57 +00:00
public $showrank ;
2007-10-27 15:33:43 +00:00
2008-10-08 11:06:05 +00:00
/**
* show grade percentages
*/
public $showpercentage ;
2009-02-25 07:56:11 +00:00
/**
* Show range
*/
var $showrange ;
var $tableheaders ;
var $tablecolumns ;
var $maxdepth ;
var $evenodd ;
var $tabledata ;
var $canviewhidden ;
var $switch ;
2007-10-27 15:33:43 +00:00
/**
* Show hidden items even when user does not have required cap
*/
2008-06-03 16:10:57 +00:00
public $showhiddenitems ;
2007-10-27 15:33:43 +00:00
2007-07-16 04:09:00 +00:00
/**
* Constructor . Sets local copies of user preferences and initialises grade_tree .
* @ param int $courseid
2007-07-17 06:09:03 +00:00
* @ param object $gpr grade plugin return tracking object
2007-07-16 04:09:00 +00:00
* @ param string $context
* @ param int $userid The id of the user
*/
2008-06-03 16:10:57 +00:00
public function __construct ( $courseid , $gpr , $context , $userid ) {
global $CFG , $DB ;
parent :: __construct ( $courseid , $gpr , $context );
2007-07-16 04:09:00 +00:00
2007-10-30 21:25:50 +00:00
$this -> showrank = grade_get_setting ( $this -> courseid , 'report_user_showrank' , $CFG -> grade_report_user_showrank );
2008-10-08 11:06:05 +00:00
$this -> showpercentage = grade_get_setting ( $this -> courseid , 'report_user_showpercentage' , $CFG -> grade_report_user_showpercentage );
2007-10-30 21:25:50 +00:00
$this -> showhiddenitems = grade_get_setting ( $this -> courseid , 'report_user_showhiddenitems' , $CFG -> grade_report_user_showhiddenitems );
2010-02-08 06:27:04 +00:00
$this -> showtotalsifcontainhidden = grade_get_setting ( $this -> courseid , 'report_user_showtotalsifcontainhidden' , $CFG -> grade_report_user_showtotalsifcontainhidden );
2009-04-16 07:16:44 +00:00
2009-02-25 07:56:11 +00:00
$this -> showrange = true ;
$this -> switch = grade_get_setting ( $this -> courseid , 'aggregationposition' , $CFG -> grade_aggregationposition );
// Grab the grade_tree for this course
2009-06-23 00:38:29 +00:00
$this -> gtree = new grade_tree ( $this -> courseid , false , $this -> switch , false , ! $CFG -> enableoutcomes );
2007-10-27 15:33:43 +00:00
2009-02-25 07:56:11 +00:00
// Determine the number of rows and indentation
$this -> maxdepth = 1 ;
$this -> inject_rowspans ( $this -> gtree -> top_element );
$this -> maxdepth ++ ; // Need to account for the lead column that spans all children
for ( $i = 1 ; $i <= $this -> maxdepth ; $i ++ ) {
$this -> evenodd [ $i ] = 0 ;
}
$this -> tabledata = array ();
2007-10-08 23:09:10 +00:00
2009-02-25 07:56:11 +00:00
$this -> canviewhidden = has_capability ( 'moodle/grade:viewhidden' , get_context_instance ( CONTEXT_COURSE , $this -> courseid ));
2007-07-25 19:57:47 +00:00
2007-07-16 04:09:00 +00:00
// get the user (for full name)
2008-06-03 16:10:57 +00:00
$this -> user = $DB -> get_record ( 'user' , array ( 'id' => $userid ));
2007-07-16 04:09:00 +00:00
// base url for sorting by first/last name
$this -> baseurl = $CFG -> wwwroot . '/grade/report?id=' . $courseid . '&userid=' . $userid ;
2007-07-20 09:34:35 +00:00
$this -> pbarurl = $this -> baseurl ;
2007-07-16 04:09:00 +00:00
2007-10-28 12:51:16 +00:00
// no groups on this report - rank is from all course users
2007-07-20 09:34:35 +00:00
$this -> setup_table ();
2007-07-16 04:09:00 +00:00
}
2009-02-25 07:56:11 +00:00
function inject_rowspans ( & $element ) {
if ( $element [ 'depth' ] > $this -> maxdepth ) {
$this -> maxdepth = $element [ 'depth' ];
}
if ( empty ( $element [ 'children' ])) {
return 1 ;
}
$count = 1 ;
foreach ( $element [ 'children' ] as $key => $child ) {
$count += $this -> inject_rowspans ( $element [ 'children' ][ $key ]);
}
$element [ 'rowspan' ] = $count ;
return $count ;
}
2007-07-16 04:09:00 +00:00
/**
* Prepares the headers and attributes of the flexitable .
*/
2008-06-03 16:10:57 +00:00
public function setup_table () {
2007-10-21 12:56:19 +00:00
global $CFG ;
2007-07-16 04:09:00 +00:00
/*
2007-10-28 12:51:16 +00:00
* Table has 5 - 6 columns
*| itemname / description | final grade | percentage final grade | rank ( optional ) | feedback |
*/
2007-07-16 04:09:00 +00:00
// setting up table headers
2009-02-25 07:56:11 +00:00
$this -> tablecolumns = array ( 'itemname' , 'grade' );
$this -> tableheaders = array ( $this -> get_lang_string ( 'gradeitem' , 'grades' ),
2008-10-08 11:06:05 +00:00
$this -> get_lang_string ( 'grade' ));
2009-02-25 07:56:11 +00:00
if ( $this -> showrange ) {
$this -> tablecolumns [] = 'range' ;
$this -> tableheaders [] = $this -> get_lang_string ( 'range' , 'grades' );
}
2008-10-08 11:06:05 +00:00
if ( $this -> showpercentage ) {
2009-02-25 07:56:11 +00:00
$this -> tablecolumns [] = 'percentage' ;
$this -> tableheaders [] = $this -> get_lang_string ( 'percentage' , 'grades' );
2008-10-08 11:06:05 +00:00
}
2007-10-27 15:33:43 +00:00
if ( $this -> showrank ) {
2007-10-21 12:56:19 +00:00
// TODO: this is broken if hidden grades present!!
2009-02-25 07:56:11 +00:00
$this -> tablecolumns [] = 'rank' ;
$this -> tableheaders [] = $this -> get_lang_string ( 'rank' , 'grades' );
2007-10-21 12:56:19 +00:00
}
2007-07-16 04:09:00 +00:00
2009-02-25 07:56:11 +00:00
$this -> tablecolumns [] = 'feedback' ;
$this -> tableheaders [] = $this -> get_lang_string ( 'feedback' , 'grades' );
2007-07-16 04:09:00 +00:00
2009-02-25 07:56:11 +00:00
}
2007-07-16 04:09:00 +00:00
2009-02-25 07:56:11 +00:00
function fill_table () {
//print "<pre>";
//print_r($this->gtree->top_element);
$this -> fill_table_recursive ( $this -> gtree -> top_element );
//print_r($this->tabledata);
//print "</pre>";
return true ;
2007-07-16 04:09:00 +00:00
}
2009-02-25 07:56:11 +00:00
private function fill_table_recursive ( & $element ) {
2009-02-25 09:17:48 +00:00
global $CFG , $DB ;
2007-07-16 04:09:00 +00:00
2009-02-25 07:56:11 +00:00
$type = $element [ 'type' ];
$depth = $element [ 'depth' ];
$grade_object = $element [ 'object' ];
$eid = $grade_object -> id ;
$fullname = $this -> gtree -> get_element_header ( $element , true , true , true );
$data = array ();
$hidden = '' ;
$excluded = '' ;
$class = '' ;
2007-07-16 04:09:00 +00:00
2010-01-08 07:48:37 +00:00
// If this is a hidden grade category, hide it completely from the user
2009-04-30 08:40:22 +00:00
if ( $type == 'category' && $grade_object -> is_hidden () && ! $this -> canviewhidden && (
2010-01-08 07:48:37 +00:00
$this -> showhiddenitems == GRADE_REPORT_USER_HIDE_HIDDEN ||
( $this -> showhiddenitems == GRADE_REPORT_USER_HIDE_UNTIL && ! $grade_object -> is_hiddenuntil ()))) {
2009-04-16 07:16:44 +00:00
return false ;
}
2007-10-17 09:45:14 +00:00
2009-02-25 07:56:11 +00:00
if ( $type == 'category' ) {
$this -> evenodd [ $depth ] = (( $this -> evenodd [ $depth ] + 1 ) % 2 );
2007-10-17 20:38:52 +00:00
}
2009-02-25 07:56:11 +00:00
$alter = ( $this -> evenodd [ $depth ] == 0 ) ? 'even' : 'odd' ;
2007-10-17 09:45:14 +00:00
2009-02-25 07:56:11 +00:00
/// Process those items that have scores associated
if ( $type == 'item' or $type == 'categoryitem' or $type == 'courseitem' ) {
if ( ! $grade_grade = grade_grade :: fetch ( array ( 'itemid' => $grade_object -> id , 'userid' => $this -> user -> id ))) {
$grade_grade = new grade_grade ();
$grade_grade -> userid = $this -> user -> id ;
$grade_grade -> itemid = $grade_object -> id ;
2007-10-19 08:51:52 +00:00
}
2007-10-17 09:45:14 +00:00
2009-02-25 07:56:11 +00:00
$grade_grade -> load_grade_item ();
2007-07-16 04:09:00 +00:00
2009-02-25 07:56:11 +00:00
/// Hidden Items
if ( $grade_grade -> grade_item -> is_hidden ()) {
$hidden = ' hidden' ;
2007-11-01 08:25:05 +00:00
}
2010-01-08 07:48:37 +00:00
// If this is a hidden grade item, hide it completely from the user.
2009-04-16 07:16:44 +00:00
if ( $grade_grade -> is_hidden () && ! $this -> canviewhidden && (
2010-01-08 07:48:37 +00:00
$this -> showhiddenitems == GRADE_REPORT_USER_HIDE_HIDDEN ||
( $this -> showhiddenitems == GRADE_REPORT_USER_HIDE_UNTIL && ! $grade_grade -> is_hiddenuntil ()))) {
2009-04-16 07:16:44 +00:00
// return false;
} else {
2010-02-12 03:39:40 +00:00
/// Excluded Item
if ( $grade_grade -> is_excluded ()) {
$fullname .= ' [' . get_string ( 'excluded' , 'grades' ) . ']' ;
$excluded = ' excluded' ;
}
2009-04-16 07:16:44 +00:00
2010-02-12 03:39:40 +00:00
/// Other class information
$class = " $hidden $excluded " ;
if ( $this -> switch ) { // alter style based on whether aggregation is first or last
$class .= ( $type == 'categoryitem' or $type == 'courseitem' ) ? " " . $alter . " d $depth baggt b2b " : " item b1b " ;
} else {
$class .= ( $type == 'categoryitem' or $type == 'courseitem' ) ? " " . $alter . " d $depth baggb " : " item b1b " ;
}
2007-07-16 04:09:00 +00:00
2010-02-12 03:39:40 +00:00
/// Name
$data [ 'itemname' ][ 'content' ] = $fullname ;
$data [ 'itemname' ][ 'class' ] = $class ;
$data [ 'itemname' ][ 'colspan' ] = ( $this -> maxdepth - $depth );
2007-10-08 23:09:10 +00:00
2010-02-12 03:39:40 +00:00
/// Actual Grade
$gradeval = $grade_grade -> finalgrade ;
2009-02-25 07:56:11 +00:00
if ( $grade_grade -> grade_item -> needsupdate ) {
2010-02-12 03:39:40 +00:00
$data [ 'grade' ][ 'class' ] = $class . ' gradingerror' ;
$data [ 'grade' ][ 'content' ] = get_string ( 'error' );
} else if ( ! empty ( $CFG -> grade_hiddenasdate ) and $grade_grade -> get_datesubmitted () and ! $this -> canviewhidden and $grade_grade -> is_hidden ()
and ! $grade_grade -> grade_item -> is_category_item () and ! $grade_grade -> grade_item -> is_course_item ()) {
// the problem here is that we do not have the time when grade value was modified, 'timemodified' is general modification date for grade_grades records
$class .= ' datesubmitted' ;
$data [ 'grade' ][ 'class' ] = $class ;
$data [ 'grade' ][ 'content' ] = get_string ( 'submittedon' , 'grades' , userdate ( $grade_grade -> get_datesubmitted (), get_string ( 'strftimedatetimeshort' )));
} elseif ( $grade_grade -> is_hidden ()) {
$data [ 'grade' ][ 'class' ] = $class . ' hidden' ;
$data [ 'grade' ][ 'content' ] = '-' ;
2008-10-08 11:06:05 +00:00
} else {
2010-02-12 03:39:40 +00:00
$data [ 'grade' ][ 'class' ] = $class ;
$gradeval = $this -> blank_hidden_total ( $this -> courseid , $grade_grade -> grade_item , $gradeval );
$data [ 'grade' ][ 'content' ] = grade_format_gradevalue ( $gradeval , $grade_grade -> grade_item , true );
2008-10-08 11:06:05 +00:00
}
2007-10-17 09:45:14 +00:00
2010-02-12 03:39:40 +00:00
/// Percentage
if ( $this -> showpercentage ) {
if ( $grade_grade -> grade_item -> needsupdate ) {
$data [ 'percentage' ][ 'class' ] = $class . ' gradingerror' ;
$data [ 'percentage' ][ 'content' ] = get_string ( 'error' );
} elseif ( $grade_grade -> is_hidden ()) {
$data [ 'percentage' ][ 'class' ] = $class . ' hidden' ;
$data [ 'percentage' ][ 'content' ] = '-' ;
} else {
$data [ 'percentage' ][ 'class' ] = $class ;
$data [ 'percentage' ][ 'content' ] = grade_format_gradevalue ( $gradeval , $grade_grade -> grade_item , true , GRADE_DISPLAY_TYPE_PERCENTAGE );
}
}
/// Rank
if ( $this -> showrank ) {
// TODO: this is broken if hidden grades present!!
if ( $grade_grade -> grade_item -> needsupdate ) {
$data [ 'rank' ][ 'class' ] = $class . ' gradingerror' ;
$data [ 'rank' ][ 'content' ] = get_string ( 'error' );
} elseif ( $grade_grade -> is_hidden ()) {
$data [ 'rank' ][ 'class' ] = $class . ' hidden' ;
$data [ 'rank' ][ 'content' ] = '-' ;
} else if ( is_null ( $gradeval )) {
// no grade, no rank
$data [ 'rank' ][ 'class' ] = $class ;
2009-04-16 07:16:44 +00:00
$data [ 'rank' ][ 'content' ] = '-' ;
2007-10-27 15:33:43 +00:00
2010-02-12 03:39:40 +00:00
} else {
/// find the number of users with a higher grade
$sql = " SELECT COUNT(DISTINCT(userid))
FROM { grade_grades }
WHERE finalgrade > ?
AND itemid = ? " ;
$rank = $DB -> count_records_sql ( $sql , array ( $grade_grade -> finalgrade , $grade_grade -> grade_item -> id )) + 1 ;
$data [ 'rank' ][ 'class' ] = $class ;
$data [ 'rank' ][ 'content' ] = " $rank / " . $this -> get_numusers ( false ); // total course users
}
2007-10-21 12:56:19 +00:00
}
2007-07-16 04:09:00 +00:00
2010-02-12 03:39:40 +00:00
/// Feedback
if ( empty ( $grade_grade -> feedback ) or ( ! $this -> canviewhidden and $grade_grade -> is_hidden ())) {
$data [ 'feedback' ][ 'class' ] = $class . ' feedbacktext' ;
$data [ 'feedback' ][ 'content' ] = ' ' ;
2007-10-17 09:45:14 +00:00
2010-02-12 03:39:40 +00:00
} else {
$data [ 'feedback' ][ 'class' ] = $class . ' feedbacktext' ;
$data [ 'feedback' ][ 'content' ] = format_text ( $grade_grade -> feedback , $grade_grade -> feedbackformat );
}
2007-10-17 09:45:14 +00:00
2010-02-12 03:39:40 +00:00
/// Range
if ( $this -> showrange ) {
$data [ 'range' ][ 'class' ] = $class ;
$data [ 'range' ][ 'content' ] = $grade_grade -> grade_item -> get_formatted_range ();
}
2009-02-25 07:56:11 +00:00
}
2007-07-16 04:09:00 +00:00
}
2007-10-08 23:09:10 +00:00
2009-02-25 07:56:11 +00:00
/// Category
if ( $type == 'category' ) {
$data [ 'leader' ][ 'class' ] = $class . ' ' . $alter . " d $depth b1t b2b b1l " ;
$data [ 'leader' ][ 'rowspan' ] = $element [ 'rowspan' ];
if ( $this -> switch ) { // alter style based on whether aggregation is first or last
$data [ 'itemname' ][ 'class' ] = $class . ' ' . $alter . " d $depth b1b b1t " ;
} else {
$data [ 'itemname' ][ 'class' ] = $class . ' ' . $alter . " d $depth b2t " ;
}
$data [ 'itemname' ][ 'colspan' ] = ( $this -> maxdepth - $depth + count ( $this -> tablecolumns ) - 1 );
$data [ 'itemname' ][ 'content' ] = $fullname ;
}
/// Add this row to the overall system
$this -> tabledata [] = $data ;
/// Recursively iterate through all child elements
if ( isset ( $element [ 'children' ])) {
foreach ( $element [ 'children' ] as $key => $child ) {
$this -> fill_table_recursive ( $element [ 'children' ][ $key ]);
}
}
2007-07-16 04:09:00 +00:00
}
/**
* Prints or returns the HTML from the flexitable .
* @ param bool $return Whether or not to return the data instead of printing it directly .
* @ return string
*/
2008-06-03 16:10:57 +00:00
public function print_table ( $return = false ) {
2009-02-25 07:56:11 +00:00
$maxspan = $this -> maxdepth ;
/// Build table structure
$html = "
2009-04-23 20:20:41 +00:00
< table cellspacing = '0' cellpadding = '0' class = 'boxaligncenter generaltable user-grade' >
2009-02-25 07:56:11 +00:00
< thead >
< tr >
< th class = \ " header \" colspan=' $maxspan '> " . $this -> tableheaders [ 0 ] . " </th> \n " ;
for ( $i = 1 ; $i < count ( $this -> tableheaders ); $i ++ ) {
$html .= " <th class= \" header \" > " . $this -> tableheaders [ $i ] . " </th> \n " ;
}
$html .= "
</ tr >
</ thead >
< tbody > \n " ;
/// Print out the table data
for ( $i = 0 ; $i < count ( $this -> tabledata ); $i ++ ) {
$html .= " <tr> \n " ;
if ( isset ( $this -> tabledata [ $i ][ 'leader' ])) {
$rowspan = $this -> tabledata [ $i ][ 'leader' ][ 'rowspan' ];
$class = $this -> tabledata [ $i ][ 'leader' ][ 'class' ];
$html .= " <td class=' $class ' rowspan=' $rowspan '></td> \n " ;
}
for ( $j = 0 ; $j < count ( $this -> tablecolumns ); $j ++ ) {
$name = $this -> tablecolumns [ $j ];
$class = ( isset ( $this -> tabledata [ $i ][ $name ][ 'class' ])) ? $this -> tabledata [ $i ][ $name ][ 'class' ] : '' ;
$colspan = ( isset ( $this -> tabledata [ $i ][ $name ][ 'colspan' ])) ? " colspan=' " . $this -> tabledata [ $i ][ $name ][ 'colspan' ] . " ' " : '' ;
$content = ( isset ( $this -> tabledata [ $i ][ $name ][ 'content' ])) ? $this -> tabledata [ $i ][ $name ][ 'content' ] : null ;
if ( isset ( $content )) {
$html .= " <td class=' $class ' $colspan > $content </td> \n " ;
}
}
$html .= " </tr> \n " ;
}
$html .= " </tbody></table> " ;
2007-07-16 04:09:00 +00:00
if ( $return ) {
return $html ;
} else {
echo $html ;
}
}
/**
* Processes the data sent by the form ( grades and feedbacks ) .
* @ var array $data
* @ return bool Success or Failure ( array of errors ) .
*/
2009-04-16 07:16:44 +00:00
function process_data ( $data ) {
2008-06-03 16:10:57 +00:00
}
2009-04-16 07:16:44 +00:00
function process_action ( $target , $action ) {
2007-07-16 04:09:00 +00:00
}
2007-10-27 15:33:43 +00:00
}
function grade_report_user_settings_definition ( & $mform ) {
global $CFG ;
$options = array ( - 1 => get_string ( 'default' , 'grades' ),
0 => get_string ( 'hide' ),
1 => get_string ( 'show' ));
2007-10-27 20:37:22 +00:00
if ( empty ( $CFG -> grade_report_user_showrank )) {
2007-10-27 15:33:43 +00:00
$options [ - 1 ] = get_string ( 'defaultprev' , 'grades' , $options [ 0 ]);
} else {
$options [ - 1 ] = get_string ( 'defaultprev' , 'grades' , $options [ 1 ]);
}
$mform -> addElement ( 'select' , 'report_user_showrank' , get_string ( 'showrank' , 'grades' ), $options );
2008-06-02 16:06:33 +00:00
$mform -> setHelpButton ( 'report_user_showrank' , array ( 'showrank' , get_string ( 'showrank' , 'grades' ), 'grade' ));
2007-10-27 15:33:43 +00:00
2008-10-08 11:06:05 +00:00
if ( empty ( $CFG -> grade_report_user_showpercentage )) {
2008-10-13 08:44:10 +00:00
$options [ - 1 ] = get_string ( 'defaultprev' , 'grades' , $options [ 0 ]);
2009-02-25 07:56:11 +00:00
} else {
$options [ - 1 ] = get_string ( 'defaultprev' , 'grades' , $options [ 1 ]);
2008-10-08 11:06:05 +00:00
}
$mform -> addElement ( 'select' , 'report_user_showpercentage' , get_string ( 'showpercentage' , 'grades' ), $options );
$mform -> setHelpButton ( 'report_user_showpercentage' , array ( 'showpercentage' , get_string ( 'showpercentage' , 'grades' ), 'grade' ));
2007-10-27 15:33:43 +00:00
$options = array ( - 1 => get_string ( 'default' , 'grades' ),
2009-05-07 07:38:02 +00:00
0 => get_string ( 'shownohidden' , 'grades' ),
2007-10-30 21:25:50 +00:00
1 => get_string ( 'showhiddenuntilonly' , 'grades' ),
2009-05-07 07:38:02 +00:00
2 => get_string ( 'showallhidden' , 'grades' ));
2007-10-27 15:33:43 +00:00
2007-10-27 20:37:22 +00:00
if ( empty ( $CFG -> grade_report_user_showhiddenitems )) {
2007-10-27 15:33:43 +00:00
$options [ - 1 ] = get_string ( 'defaultprev' , 'grades' , $options [ 0 ]);
} else {
2009-05-07 07:38:02 +00:00
$options [ - 1 ] = get_string ( 'defaultprev' , 'grades' , $options [ $CFG -> grade_report_user_showhiddenitems ]);
2007-10-27 15:33:43 +00:00
}
$mform -> addElement ( 'select' , 'report_user_showhiddenitems' , get_string ( 'showhiddenitems' , 'grades' ), $options );
2010-06-21 06:57:46 +00:00
$mform -> addHelpButton ( 'report_user_showhiddenitems' , 'showhiddenitems' , 'grades' );
2010-02-08 06:27:04 +00:00
//showtotalsifcontainhidden
$options = array ( - 1 => get_string ( 'default' , 'grades' ),
GRADE_REPORT_HIDE_TOTAL_IF_CONTAINS_HIDDEN => get_string ( 'hide' ),
GRADE_REPORT_SHOW_TOTAL_IF_CONTAINS_HIDDEN => get_string ( 'hidetotalshowexhiddenitems' , 'grades' ),
GRADE_REPORT_SHOW_REAL_TOTAL_IF_CONTAINS_HIDDEN => get_string ( 'hidetotalshowinchiddenitems' , 'grades' ) );
if ( empty ( $CFG -> grade_report_user_showtotalsifcontainhidden )) {
$options [ - 1 ] = get_string ( 'defaultprev' , 'grades' , $options [ 0 ]);
} else {
$options [ - 1 ] = get_string ( 'defaultprev' , 'grades' , $options [ $CFG -> grade_report_user_showtotalsifcontainhidden ]);
}
$mform -> addElement ( 'select' , 'report_user_showtotalsifcontainhidden' , get_string ( 'hidetotalifhiddenitems' , 'grades' ), $options );
2010-06-07 09:56:33 +00:00
$mform -> addHelpButton ( 'report_user_showtotalsifcontainhidden' , 'hidetotalifhiddenitems' , 'grades' );
2007-10-28 17:15:00 +00:00
}
function grade_report_user_profilereport ( $course , $user ) {
2009-09-04 03:12:01 +00:00
global $OUTPUT ;
2007-10-28 17:15:00 +00:00
if ( ! empty ( $course -> showgrades )) {
$context = get_context_instance ( CONTEXT_COURSE , $course -> id );
//first make sure we have proper final grades - this must be done before constructing of the grade tree
grade_regrade_final_grades ( $course -> id );
/// return tracking object
$gpr = new grade_plugin_return ( array ( 'type' => 'report' , 'plugin' => 'user' , 'courseid' => $course -> id , 'userid' => $user -> id ));
// Create a report instance
$report = new grade_report_user ( $course -> id , $gpr , $context , $user -> id );
2007-07-16 04:09:00 +00:00
2007-10-28 17:15:00 +00:00
// print the page
echo '<div class="grade-report-user">' ; // css fix to share styles with real report page
2009-08-06 08:16:46 +00:00
echo $OUTPUT -> heading ( get_string ( 'modulename' , 'gradereport_user' ) . ' - ' . fullname ( $report -> user ));
2007-10-28 17:15:00 +00:00
if ( $report -> fill_table ()) {
echo $report -> print_table ( true );
}
echo '</div>' ;
}
2007-07-16 04:09:00 +00:00
}
2007-10-28 17:15:00 +00:00
2009-11-01 12:11:29 +00:00