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
        $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. 4
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. 5
0
 /**
  * Get the report data
  * @param  stdClass $course  course object
  * @param  stdClass $context context object
  * @param  stdClass $user    user object (it can be null for all the users)
  * @param  int $userid       the user to retrieve data from, 0 for all
  * @param  int $groupid      the group id to filter
  * @param  bool $tabledata   whether to get the table data (true) or the gradeitemdata
  * @return array data and possible warnings
  * @since  Moodle 3.2
  */
 protected static function get_report_data($course, $context, $user, $userid, $groupid, $tabledata = true)
 {
     global $CFG;
     $warnings = array();
     // 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';
     // Force regrade to update items marked as 'needupdate'.
     grade_regrade_final_grades($course->id);
     $gpr = new grade_plugin_return(array('type' => 'report', 'plugin' => 'user', 'courseid' => $course->id, 'userid' => $userid));
     $reportdata = array();
     // Just one user.
     if ($user) {
         $report = new grade_report_user($course->id, $gpr, $context, $userid);
         $report->fill_table();
         $gradeuserdata = array('courseid' => $course->id, 'userid' => $user->id, 'userfullname' => fullname($user), 'maxdepth' => $report->maxdepth);
         if ($tabledata) {
             $gradeuserdata['tabledata'] = $report->tabledata;
         } else {
             $gradeuserdata['gradeitems'] = $report->gradeitemsdata;
         }
         $reportdata[] = $gradeuserdata;
     } 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, null, $groupid);
         $gui->require_active_enrolment($showonlyactiveenrol);
         $gui->init();
         while ($userdata = $gui->next_user()) {
             $currentuser = $userdata->user;
             $report = new grade_report_user($course->id, $gpr, $context, $currentuser->id);
             $report->fill_table();
             $gradeuserdata = array('courseid' => $course->id, 'userid' => $currentuser->id, 'userfullname' => fullname($currentuser), 'maxdepth' => $report->maxdepth);
             if ($tabledata) {
                 $gradeuserdata['tabledata'] = $report->tabledata;
             } else {
                 $gradeuserdata['gradeitems'] = $report->gradeitemsdata;
             }
             $reportdata[] = $gradeuserdata;
         }
         $gui->close();
     }
     return array($reportdata, $warnings);
 }
Esempio n. 6
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;
 }
Esempio n. 7
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;
 }