Esempio n. 1
1
/**
 * Profile report callback.
 *
 * @param object $course The course.
 * @param object $user The user.
 * @param boolean $viewasuser True when we are viewing this as the targetted user sees it.
 */
function grade_report_user_profilereport($course, $user, $viewasuser = false)
{
    global $OUTPUT;
    if (!empty($course->showgrades)) {
        $context = context_course::instance($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, $viewasuser);
        // print the page
        echo '<div class="grade-report-user">';
        // css fix to share styles with real report page
        if ($report->fill_table()) {
            echo $report->print_table(true);
        }
        echo '</div>';
    }
}
Esempio n. 2
0
/**
 * Profile report callback.
 *
 * @param object $course The course.
 * @param object $user The user.
 * @param boolean $viewasuser True when we are viewing this as the targetted user sees it.
 */
function grade_report_user_profilereport($course, $user, $viewasuser = false)
{
    global $OUTPUT;
    if (!empty($course->showgrades)) {
        $context = context_course::instance($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, $viewasuser);
        // print the page
        echo '<div class="grade-report-user">';
        // css fix to share styles with real report page
        echo $OUTPUT->heading(get_string('pluginname', 'gradereport_user') . ' - ' . fullname($report->user));
        if ($report->fill_table()) {
            echo $report->print_table(true);
        }
        echo '</div>';
    }
}
Esempio n. 3
0
 /**
  * Does this course have any visible feedback for current user?.
  *
  * @param $course
  * @return stdClass | null
  */
 public static function course_feedback($course)
 {
     global $USER;
     // Get course context.
     $coursecontext = \context_course::instance($course->id);
     // Security check - should they be allowed to see course grade?
     $onlyactive = true;
     if (!is_enrolled($coursecontext, $USER, 'moodle/grade:view', $onlyactive)) {
         return self::skipgradewarning('User not enrolled on course with capability moodle/grade:view');
     }
     // Security check - are they allowed to see the grade report for the course?
     if (!has_capability('gradereport/user:view', $coursecontext)) {
         return self::skipgradewarning('User does not have required course capability gradereport/user:view');
     }
     // See if user can view hidden grades for this course.
     $canviewhidden = has_capability('moodle/grade:viewhidden', $coursecontext);
     // Do not show grade if grade book disabled for students.
     // Note - moodle/grade:viewall is a capability held by teachers and thus used to exclude them from not getting
     // the grade.
     if (empty($course->showgrades) && !has_capability('moodle/grade:viewall', $coursecontext)) {
         return self::skipgradewarning('Course set up to not show gradebook to students');
     }
     // Get course grade_item.
     $courseitem = \grade_item::fetch_course_item($course->id);
     // Get the stored grade.
     $coursegrade = new \grade_grade(array('itemid' => $courseitem->id, 'userid' => $USER->id));
     $coursegrade->grade_item =& $courseitem;
     // Return null if can't view.
     if ($coursegrade->is_hidden() && !$canviewhidden) {
         return self::skipgradewarning('Course grade is hidden from students');
     }
     // Use user grade report to get course total - this is to take hidden grade settings into account.
     $gpr = new \grade_plugin_return(array('type' => 'report', 'plugin' => 'user', 'courseid' => $course->id, 'userid' => $USER->id));
     $report = new \grade_report_user($course->id, $gpr, $coursecontext, $USER->id);
     $report->fill_table();
     $visiblegradefound = false;
     foreach ($report->tabledata as $item) {
         if (self::item_has_grade_or_feedback($item)) {
             $visiblegradefound = true;
             break;
         }
     }
     $feedbackhtml = '';
     if ($visiblegradefound) {
         // Just output - feedback available.
         $url = new \moodle_url('/grade/report/user/index.php', array('id' => $course->id));
         $feedbackhtml = \html_writer::link($url, get_string('feedbackavailable', 'theme_snap'), array('class' => 'coursegrade'));
     }
     return (object) array('feedbackhtml' => $feedbackhtml);
 }
Esempio n. 4
0
        $studentnamelink = html_writer::link(new moodle_url('/user/view.php', array('id' => $report->user->id, 'course' => $courseid)), fullname($report->user));
        print_grade_page_head($courseid, 'report', 'user', get_string('pluginname', 'gradereport_user') . ' - ' . $studentnamelink, false, false, true, null, null, $report->user);
        groups_print_course_menu($course, $gpr->get_return_url('index.php?id=' . $courseid, array('userid' => 0)));
        if ($user_selector) {
            $renderer = $PAGE->get_renderer('gradereport_user');
            $showallusersoptions = true;
            echo $renderer->graded_users_selector('user', $course, $userid, $currentgroup, $showallusersoptions);
        }
        if ($currentgroup and !groups_is_member($currentgroup, $userid)) {
            echo $OUTPUT->notification(get_string('groupusernotmember', 'error'));
        } else {
            if ($report->fill_table()) {
                echo '<br />' . $report->print_table(true, $userid, $courseid);
                //START BY @HARSHA
                //echo '<br />'.$report->print_table(true);
            }
        }
    }
} else {
    //Students will see just their own report
    // Create a report instance
    $report = new grade_report_user($courseid, $gpr, $context, $userid);
    // print the page
    print_grade_page_head($courseid, 'report', 'user', get_string('pluginname', 'gradereport_user') . ' - ' . fullname($report->user));
    if ($report->fill_table()) {
        echo '<br />' . $report->print_table(true);
    }
}
// Trigger report viewed event.
$report->viewed();
echo $OUTPUT->footer();
Esempio n. 5
0
 /**
  * Trigger the user report events, do the same that the web interface view of the report
  *
  * @param int $courseid id of course
  * @param int $userid id of the user the report belongs to
  * @return array of warnings and status result
  * @since Moodle 2.9
  * @throws moodle_exception
  */
 public static function view_grade_report($courseid, $userid = 0)
 {
     global $CFG, $USER;
     require_once $CFG->dirroot . "/grade/lib.php";
     require_once $CFG->dirroot . "/grade/report/user/lib.php";
     $params = self::validate_parameters(self::view_grade_report_parameters(), array('courseid' => $courseid, 'userid' => $userid));
     $warnings = array();
     $course = get_course($params['courseid']);
     $context = context_course::instance($course->id);
     self::validate_context($context);
     $userid = $params['userid'];
     if (empty($userid)) {
         $userid = $USER->id;
     } else {
         $user = core_user::get_user($userid, '*', MUST_EXIST);
         core_user::require_active_user($user);
     }
     $access = false;
     if (has_capability('moodle/grade:viewall', $context)) {
         // Can view all course grades (any user).
         $access = true;
     } else {
         if ($userid == $USER->id and has_capability('moodle/grade:view', $context) and $course->showgrades) {
             // View own grades.
             $access = true;
         }
     }
     if (!$access) {
         throw new moodle_exception('nopermissiontoviewgrades', 'error');
     }
     // Create a report instance. We don't need the gpr second parameter.
     $report = new grade_report_user($course->id, null, $context, $userid);
     $report->viewed();
     $result = array();
     $result['status'] = true;
     $result['warnings'] = $warnings;
     return $result;
 }
Esempio n. 6
0
                print_heading(get_string('modulename', 'gradereport_user') . ' - ' . fullname($report->user));
                if ($report->fill_table()) {
                    echo $report->print_table(true);
                }
                echo "<p style = 'page-break-after: always;'></p>";
            }
            $gui->close();
        } elseif ($userid) {
            // Only show one user's report
            $report = new grade_report_user($courseid, $gpr, $context, $userid);
            print_heading(get_string('modulename', 'gradereport_user') . ' - ' . fullname($report->user));
            if ($report->fill_table()) {
                echo $report->print_table(true);
            }
        }
    } else {
        //Students will see just their own report
        // Create a report instance
        $report = new grade_report_user($courseid, $gpr, $context, $userid);
        // print the page
        print_heading(get_string('modulename', 'gradereport_user') . ' - ' . fullname($report->user));
        if ($report->fill_table()) {
            echo $report->print_table(true);
        }
    }
} else {
    // no access to grades!
    echo "Can not view grades.";
    //TODO: localize
}
print_footer($course);
Esempio n. 7
0
 /**
  * Returns a list of grades tables for users in a course.
  *
  * @param int $courseid Course Id
  * @param int $userid   Only this user (optional)
  *
  * @return array the grades tables
  * @since Moodle 2.9
  */
 public static function get_grades_table($courseid, $userid = 0)
 {
     global $CFG, $USER;
     $warnings = array();
     // Validate the parameter.
     $params = self::validate_parameters(self::get_grades_table_parameters(), array('courseid' => $courseid, 'userid' => $userid));
     // Compact/extract functions are not recommended.
     $courseid = $params['courseid'];
     $userid = $params['userid'];
     // Function get_course internally throws an exception if the course doesn't exist.
     $course = get_course($courseid);
     $context = context_course::instance($courseid);
     self::validate_context($context);
     // Specific capabilities.
     require_capability('gradereport/user:view', $context);
     $user = null;
     if (empty($userid)) {
         require_capability('moodle/grade:viewall', $context);
     } else {
         $user = core_user::get_user($userid, '*', MUST_EXIST);
     }
     $access = false;
     if (has_capability('moodle/grade:viewall', $context)) {
         // Can view all course grades.
         $access = true;
     } else {
         if ($userid == $USER->id and has_capability('moodle/grade:view', $context) and $course->showgrades) {
             // View own grades.
             $access = true;
         }
     }
     if (!$access) {
         throw new moodle_exception('nopermissiontoviewgrades', 'error');
     }
     // Require files here to save some memory in case validation fails.
     require_once $CFG->dirroot . '/group/lib.php';
     require_once $CFG->libdir . '/gradelib.php';
     require_once $CFG->dirroot . '/grade/lib.php';
     require_once $CFG->dirroot . '/grade/report/user/lib.php';
     $gpr = new grade_plugin_return(array('type' => 'report', 'plugin' => 'user', 'courseid' => $courseid, 'userid' => $userid));
     $tables = array();
     // Just one user.
     if ($user) {
         $report = new grade_report_user($courseid, $gpr, $context, $userid);
         $report->fill_table();
         $tables[] = array('courseid' => $courseid, 'userid' => $user->id, 'userfullname' => fullname($user), 'maxdepth' => $report->maxdepth, 'tabledata' => $report->tabledata);
     } else {
         $defaultgradeshowactiveenrol = !empty($CFG->grade_report_showonlyactiveenrol);
         $showonlyactiveenrol = get_user_preferences('grade_report_showonlyactiveenrol', $defaultgradeshowactiveenrol);
         $showonlyactiveenrol = $showonlyactiveenrol || !has_capability('moodle/course:viewsuspendedusers', $context);
         $gui = new graded_users_iterator($course);
         $gui->require_active_enrolment($showonlyactiveenrol);
         $gui->init();
         while ($userdata = $gui->next_user()) {
             $currentuser = $userdata->user;
             $report = new grade_report_user($courseid, $gpr, $context, $currentuser->id);
             $report->fill_table();
             $tables[] = array('courseid' => $courseid, 'userid' => $currentuser->id, 'userfullname' => fullname($currentuser), 'maxdepth' => $report->maxdepth, 'tabledata' => $report->tabledata);
         }
         $gui->close();
     }
     $result = array();
     $result['tables'] = $tables;
     $result['warnings'] = $warnings;
     return $result;
 }
 */
global $PAGE;
require_once $CFG->libdir . '/gradelib.php';
require_once $CFG->dirroot . '/grade/lib.php';
require_once $CFG->dirroot . '/grade/report/user/lib.php';
$courseid = $COURSE->id;
$userid = $USER->id;
$context = context_course::instance($COURSE->id);
$report = '';
if ($PAGE->pagelayout == 'course') {
    if (has_capability('moodle/grade:view', $context) and $COURSE->showgrades) {
        // First make sure we have proper final grades - this must be done before constructing of the grade tree.
        grade_regrade_final_grades($courseid);
        // Return tracking object.
        $gpr = new grade_plugin_return(array('type' => 'report', 'plugin' => 'user', 'courseid' => $courseid, 'userid' => $userid));
        $report = new grade_report_user($courseid, $gpr, $context, $userid);
        if ($report->fill_table()) {
            // Get course overall grade value from User Grade Report
            $html = $report->print_table(true);
            // Get User Grade report table.
            $t = explode("<tr>", $html);
            // Split table into individual lines.
            $text = explode("</span>", $t[count($t) - 1]);
            // Split initial html out of last line.
            $gradetext = explode(" ", $text[1]);
            // Split last line into chunks.
            for ($i = 0; $i < count($gradetext); $i++) {
                // Use html identifier to find course total
                if ($gradetext[$i] == "column-percentage'") {
                    $percentageposition = $i + 1;
                }
Esempio n. 9
0
 /**
  * Does this course have any visible feedback for current user?.
  *
  * @param $course
  * @return boolean
  */
 public static function course_feedback($course)
 {
     global $USER;
     // Get course context.
     $coursecontext = \context_course::instance($course->id);
     // Security check - should they be allowed to see course grade?
     $onlyactive = true;
     if (!is_enrolled($coursecontext, $USER, 'moodle/grade:view', $onlyactive)) {
         return false;
     }
     // Security check - are they allowed to see the grade report for the course?
     if (!has_capability('gradereport/user:view', $coursecontext)) {
         return false;
     }
     // See if user can view hidden grades for this course.
     $canviewhidden = has_capability('moodle/grade:viewhidden', $coursecontext);
     // Do not show grade if grade book disabled for students.
     // Note - moodle/grade:viewall is a capability held by teachers and thus used to exclude them from not getting
     // the grade.
     if (empty($course->showgrades) && !has_capability('moodle/grade:viewall', $coursecontext)) {
         return false;
     }
     // Get course grade_item.
     $courseitem = \grade_item::fetch_course_item($course->id);
     // Get the stored grade.
     $coursegrade = new \grade_grade(array('itemid' => $courseitem->id, 'userid' => $USER->id));
     $coursegrade->grade_item =& $courseitem;
     // Return null if can't view.
     if ($coursegrade->is_hidden() && !$canviewhidden) {
         return false;
     }
     // Use user grade report to get course total - this is to take hidden grade settings into account.
     $gpr = new \grade_plugin_return(array('type' => 'report', 'plugin' => 'user', 'courseid' => $course->id, 'userid' => $USER->id));
     $report = new \grade_report_user($course->id, $gpr, $coursecontext, $USER->id);
     $report->fill_table();
     $visiblegradefound = false;
     foreach ($report->tabledata as $item) {
         if (self::item_has_grade_or_feedback($item)) {
             $visiblegradefound = true;
             break;
         }
     }
     if ($visiblegradefound) {
         return true;
     }
     return false;
 }