function getCourseGrade($studentId,$courseId) { $resultkrb = grade_get_course_grades(4, $userid_or_ids=null); var_dump($resultkb); //$grd = $resultkrb->grades[$user->id]; //echo $grd->str_grade; }
//get student enrolled courses //checking if the user is a student,then getting enrolled courses if(user_has_role_assignment($USER->id, 5)){ $enrolledcourses =enrol_get_users_courses($USER->id); $no_courses=count($enrolledcourses); $totalgrade=0; $total_watchlisted=getAllWatchlistCountByUser($USER->id); //var_dump($enrolledcourses); foreach($enrolledcourses as $key => $value){ if(is_object($value)){ $studentenrolledcourses[$value->id]=$value->fullname; $c_grade = grade_get_course_grades($value->id, $USER->id); //var_dump($resultkrb); $grd = $c_grade->grades[$USER->id]; $grd=$grd->grade; $totalgrade=$totalgrade+$grd; //Watchlist //$watchlist=getStatus($USER->id,$value->id); //$total_watchlisted=$total_watchlisted+$watchlist; } } /************* FINDING MEAN GRADE ****************/ if($totalgrade!=0) { $meangrade= $totalgrade/$no_courses; }
/** * Returns student course total grade and grades for activities. * This function does not return category or manual items. * This function is suitable for managers or teachers not students. * * @param int $courseid Course id * @param string $component Component name * @param int $activityid Activity id * @param array $userids Array of user ids * @return array Array of grades * @since Moodle 2.7 * @deprecated Moodle 3.2 MDL-51373 - Please do not call this function any more. * @see gradereport_user_external::get_grade_items for a similar function */ public static function get_grades($courseid, $component = null, $activityid = null, $userids = array()) { global $CFG, $USER, $DB; $params = self::validate_parameters(self::get_grades_parameters(), array('courseid' => $courseid, 'component' => $component, 'activityid' => $activityid, 'userids' => $userids)); $gradesarray = array('items' => array(), 'outcomes' => array()); $coursecontext = context_course::instance($params['courseid']); try { self::validate_context($coursecontext); } catch (Exception $e) { $exceptionparam = new stdClass(); $exceptionparam->message = $e->getMessage(); $exceptionparam->courseid = $params['courseid']; throw new moodle_exception('errorcoursecontextnotvalid', 'webservice', '', $exceptionparam); } require_capability('moodle/grade:viewhidden', $coursecontext); $course = $DB->get_record('course', array('id' => $params['courseid']), '*', MUST_EXIST); $access = false; if (has_capability('moodle/grade:viewall', $coursecontext)) { // Can view all user's grades in this course. $access = true; } else { if ($course->showgrades && count($params['userids']) == 1) { // Course showgrades == students/parents can access grades. if ($params['userids'][0] == $USER->id and has_capability('moodle/grade:view', $coursecontext)) { // Student can view their own grades in this course. $access = true; } else { if (has_capability('moodle/grade:viewall', context_user::instance($params['userids'][0]))) { // User can view the grades of this user. Parent most probably. $access = true; } } } } if (!$access) { throw new moodle_exception('nopermissiontoviewgrades', 'error'); } $itemtype = null; $itemmodule = null; $iteminstance = null; if (!empty($params['component'])) { list($itemtype, $itemmodule) = normalize_component($params['component']); } $cm = null; if (!empty($itemmodule) && !empty($params['activityid'])) { if (!($cm = get_coursemodule_from_id($itemmodule, $params['activityid']))) { throw new moodle_exception('invalidcoursemodule'); } $iteminstance = $cm->instance; } // Load all the module info. $modinfo = get_fast_modinfo($params['courseid']); $activityinstances = $modinfo->get_instances(); $gradeparams = array('courseid' => $params['courseid']); if (!empty($itemtype)) { $gradeparams['itemtype'] = $itemtype; } if (!empty($itemmodule)) { $gradeparams['itemmodule'] = $itemmodule; } if (!empty($iteminstance)) { $gradeparams['iteminstance'] = $iteminstance; } if ($activitygrades = grade_item::fetch_all($gradeparams)) { $canviewhidden = has_capability('moodle/grade:viewhidden', context_course::instance($params['courseid'])); foreach ($activitygrades as $activitygrade) { if ($activitygrade->itemtype != 'course' and $activitygrade->itemtype != 'mod') { // This function currently only supports course and mod grade items. Manual and category not supported. continue; } $context = $coursecontext; if ($activitygrade->itemtype == 'course') { $item = grade_get_course_grades($course->id, $params['userids']); $item->itemnumber = 0; $grades = new stdClass(); $grades->items = array($item); $grades->outcomes = array(); } else { $cm = $activityinstances[$activitygrade->itemmodule][$activitygrade->iteminstance]; $instance = $cm->instance; $context = context_module::instance($cm->id, IGNORE_MISSING); $grades = grade_get_grades($params['courseid'], $activitygrade->itemtype, $activitygrade->itemmodule, $instance, $params['userids']); } // Convert from objects to arrays so all web service clients are supported. // While we're doing that we also remove grades the current user can't see due to hiding. foreach ($grades->items as $gradeitem) { // Switch the stdClass instance for a grade item instance so we can call is_hidden() and use the ID. $gradeiteminstance = self::get_grade_item($course->id, $activitygrade->itemtype, $activitygrade->itemmodule, $activitygrade->iteminstance, 0); if (!$canviewhidden && $gradeiteminstance->is_hidden()) { continue; } // Format mixed bool/integer parameters. $gradeitem->hidden = empty($gradeitem->hidden) ? 0 : $gradeitem->hidden; $gradeitem->locked = empty($gradeitem->locked) ? 0 : $gradeitem->locked; $gradeitemarray = (array) $gradeitem; $gradeitemarray['grades'] = array(); if (!empty($gradeitem->grades)) { foreach ($gradeitem->grades as $studentid => $studentgrade) { if (!$canviewhidden) { // Need to load the grade_grade object to check visibility. $gradegradeinstance = grade_grade::fetch(array('userid' => $studentid, 'itemid' => $gradeiteminstance->id)); // The grade grade may be legitimately missing if the student has no grade. if (!empty($gradegradeinstance) && $gradegradeinstance->is_hidden()) { continue; } } // Format mixed bool/integer parameters. $studentgrade->hidden = empty($studentgrade->hidden) ? 0 : $studentgrade->hidden; $studentgrade->locked = empty($studentgrade->locked) ? 0 : $studentgrade->locked; $studentgrade->overridden = empty($studentgrade->overridden) ? 0 : $studentgrade->overridden; if ($gradeiteminstance->itemtype != 'course' and !empty($studentgrade->feedback)) { list($studentgrade->feedback, $studentgrade->feedbackformat) = external_format_text($studentgrade->feedback, $studentgrade->feedbackformat, $context->id, $params['component'], 'feedback', null); } $gradeitemarray['grades'][$studentid] = (array) $studentgrade; // Add the student ID as some WS clients can't access the array key. $gradeitemarray['grades'][$studentid]['userid'] = $studentid; } } if ($gradeiteminstance->itemtype == 'course') { $gradesarray['items']['course'] = $gradeitemarray; $gradesarray['items']['course']['activityid'] = 'course'; } else { $gradesarray['items'][$cm->id] = $gradeitemarray; // Add the activity ID as some WS clients can't access the array key. $gradesarray['items'][$cm->id]['activityid'] = $cm->id; } } foreach ($grades->outcomes as $outcome) { // Format mixed bool/integer parameters. $outcome->hidden = empty($outcome->hidden) ? 0 : $outcome->hidden; $outcome->locked = empty($outcome->locked) ? 0 : $outcome->locked; $gradesarray['outcomes'][$cm->id] = (array) $outcome; $gradesarray['outcomes'][$cm->id]['activityid'] = $cm->id; $gradesarray['outcomes'][$cm->id]['grades'] = array(); if (!empty($outcome->grades)) { foreach ($outcome->grades as $studentid => $studentgrade) { if (!$canviewhidden) { // Need to load the grade_grade object to check visibility. $gradeiteminstance = self::get_grade_item($course->id, $activitygrade->itemtype, $activitygrade->itemmodule, $activitygrade->iteminstance, $activitygrade->itemnumber); $gradegradeinstance = grade_grade::fetch(array('userid' => $studentid, 'itemid' => $gradeiteminstance->id)); // The grade grade may be legitimately missing if the student has no grade. if (!empty($gradegradeinstance) && $gradegradeinstance->is_hidden()) { continue; } } // Format mixed bool/integer parameters. $studentgrade->hidden = empty($studentgrade->hidden) ? 0 : $studentgrade->hidden; $studentgrade->locked = empty($studentgrade->locked) ? 0 : $studentgrade->locked; if (!empty($studentgrade->feedback)) { list($studentgrade->feedback, $studentgrade->feedbackformat) = external_format_text($studentgrade->feedback, $studentgrade->feedbackformat, $context->id, $params['component'], 'feedback', null); } $gradesarray['outcomes'][$cm->id]['grades'][$studentid] = (array) $studentgrade; // Add the student ID into the grade structure as some WS clients can't access the key. $gradesarray['outcomes'][$cm->id]['grades'][$studentid]['userid'] = $studentid; } } } } } return $gradesarray; }
<tbody> END; $html=''; //summary report foreach($studentenrolledcourses as $courseid => $coursename) { $html.=html_writer::start_tag('tr'); $html.=html_writer::start_tag('td',array('align'=>'left')); $html.=$coursename; $html.=html_writer::end_tag('td'); $html.=html_writer::start_tag('td',array('align'=>'center')); // $activities=get_array_of_activities($courseid) ; /***** GETTING GRADE OF STUDENT BASED **/ $grade_r = grade_get_course_grades($courseid, $USER->id); //var_dump($resultkrb); $grdc = $grade_r->grades[$USER->id]; $coursegrd=$grdc->grade+0.00; // var_dump($activities); foreach($activities as $key1 => $value1){ if(is_object($value1)){ if (($value1->mod == 'vpl') || ($value1->mod == 'quiz')) { $act[$value1->name] = $value1->mod; $actid[$value1->name] = $value1->cm; } } } // var_dump($act);
function getGradeByCourse($students,$courseId,$rank) { global $DB; $result= array( ); // var_dump($students); foreach ($students as $student) { $grade_r = grade_get_course_grades($courseId, $student->id); //var_dump($resultkrb); $grd = $grade_r->grades[$student->id]; $grd=$grd->grade; $watchlist=getStatus($student->id,$courseId); if(empty($watchlist)){ $watchlist=0; } $userobj = get_complete_user_data(id, $student->id); if(empty($userobj->profile['rollno'])) $userobj->profile['rollno']="--"; if(empty($userobj->firstname)) $userobj->firstname="--"; if(empty($userobj->profile['eamcetrank'])) $userobj->profile['eamcetrank']="--"; if(empty($userobj->profile['dept'])) $userobj->profile['dept']="--"; if(empty($userobj->profile['section'])) $userobj->profile['section']="--"; /*******************geting students only based on rank **************************************************/ if(empty($rank)){//if he didnt select rank if ($grd==null||$grd=="") { // $result['a']="hii"; $result[$userobj->profile['rollno']]=array( 'rollno'=>$userobj->profile['rollno'], 'firstname'=> $userobj->firstname, 'grade'=>"No grade", 'gt'=>"notgraded", 'rank'=>$userobj->profile['eamcetrank'], 'dept'=>$userobj->profile['dept'] , 'section'=>$userobj->profile['section'] , 'watchlist'=>$watchlist ); } else { //$result['b']="hii"; $result[$userobj->profile['rollno']]=array( 'rollno'=>$userobj->profile['rollno'], 'firstname'=> $userobj->firstname, 'grade'=>$grd+0, 'gt'=>"graded", 'rank'=>$userobj->profile['eamcetrank'], 'dept'=>$userobj->profile['dept'] , 'section'=>$userobj->profile['section'] , 'watchlist'=>$watchlist); } } else //selects a rank range { $rankArr= explode(":", $rank); for ($i=1;$i<count($rankArr);$i++) { $rankRange=explode("-", $rankArr[$i]); $r=$userobj->profile['eamcetrank']; if($rankRange[1]=='above') { $con=$r>=$rankRange[0]; } else { $con=($r>=$rankRange[0])&&($r<=$rankRange[1]); } if($con) // true { if ($grd==null||$grd=="") { // $result['a']="hii"; $result[$userobj->profile['rollno']]=array( 'rollno'=>$userobj->profile['rollno'], 'firstname'=> $userobj->firstname, 'grade'=>"No grade", 'gt'=>"notgraded", 'rank'=>$userobj->profile['eamcetrank'], 'dept'=>$userobj->profile['dept'] , 'section'=>$userobj->profile['section'] , 'watchlist'=>$watchlist ); } else { //$result['b']="hii"; $result[$userobj->profile['rollno']]=array( 'rollno'=>$userobj->profile['rollno'], 'firstname'=> $userobj->firstname, 'grade'=>$grd+0, 'gt'=>"graded", 'rank'=>$userobj->profile['eamcetrank'], 'dept'=>$userobj->profile['dept'] , 'section'=>$userobj->profile['section'] , 'watchlist'=>$watchlist ); } } }} } return $result; }
$html.=$course->fullname; $html.=html_writer::end_tag('td'); $activities=get_array_of_activities($course->id) ; foreach($activities as $key1 => $value1){ if(is_object($value1)){ if (($value1->mod == 'vpl') || ($value1->mod == 'quiz')) { $act[$value1->name] = $value1->mod; $actid[$value1->name] = $value1->cm; } } } // getting course average grade $grade_r = grade_get_course_grades($course->id, $USER->id);// courseid studentid $grd = $grade_r->grades[$USER->id]; //student id $cgrd=$grd->str_grade; $tgrade+=$cgrd; $vpl=0;$quiz=0; foreach($act as $key2 => $value2){ if($value2=='vpl'){ $countlabs=$countlabs+1; $getvplinstance=$DB->get_field_sql("SELECT `instance` FROM `mdl_course_modules` WHERE `id` ='$actid[$key2]' AND `course` ='$courseid'"); $submissions=$DB->get_fieldset_sql("SELECT `datesubmitted` FROM `mdl_vpl_submissions` WHERE `vpl` ='$getvplinstance'
public static function get_final_grade_by_course_id($courseId, $roleId) { // no MOODLE não temos factories // obtemos os acessores diretamente via variaveis globais global $CFG; require_once $CFG->dirroot . '/grade/lib.php'; require_once $CFG->dirroot . '/grade/querylib.php'; require_once $CFG->dirroot . '/user/lib.php'; // para trabalhar com as grades de notas precisa-se ter // as seguintes habilidades: // * moodle/grade:export // * gradeexprt/txt:view // primeiro pego o contexto do sistema com base no usuário corrente $context = get_context_instance(CONTEXT_SYSTEM); // então verifico as abilidades uma a uma require_capability('moodle/grade:export', $context); require_capability('gradeexport/txt:view', $context); // neste ponto se verifica os parametros informados estão corretos // e dentro do exigido pela função // observe que solicitei os parametros como sendo do tipo inteiro // diretamente sem que sejam algum tipo de estrutura. Isto facilita // o acesso aos parametros, $funcParams = self::validate_parameters(self::get_final_grade_by_course_id_parameters(), array('courseId' => $courseId, 'roleId' => $roleId)); if (MDEBUG) { mDebug_log($funcParams, 'Parametros da Função'); } $usersIds = array(); $context = get_context_instance(CONTEXT_COURSE, $funcParams['courseId']); $role = new stdClass(); $role->id = $roleId; $users = get_users_from_role_on_context($role, $context); if (MDEBUG) { mDebug_log($users); } $usersIds = array(); foreach ($users as $user) { $usersIds[] = $user->userid; } if (MDEBUG) { mDebug_log($usersIds, 'Ids dos Usuários'); } // OK, agora que está tudo ok, consulto no banco de dados a nota // do usuário conforme o curso $grades = grade_get_course_grades($funcParams['courseId'], $usersIds); if (MDEBUG) { mDebug_log($grades, 'Grades'); } // TODO, estudar melhorias neste retorno. foreach ($grades->grades as $userId => $grade) { $result = array(); if ($grade === false) { $result['grade'] = grade_floatval(-9999); } else { if ($grade === null) { $result['grade'] = grade_floatval(-8888); } else { $result['grade'] = grade_floatval($grade->grade); } } $result['userId'] = $userId; $results[] = $result; } if (MDEBUG) { mDebug_log($results, 'Grades finais a serem enviadas'); } return $results; }