function write_role_assignments_xml($bf, $preferences, $context, $startlevel) { /// write role_assign code here fwrite($bf, start_tag("ROLES_ASSIGNMENTS", $startlevel, true)); if ($roles = get_roles_with_assignment_on_context($context)) { foreach ($roles as $role) { /// Skip non-selected roles if (!isset($preferences->backuproleassignments[$role->id])) { continue; } fwrite($bf, start_tag("ROLE", $startlevel + 1, true)); fwrite($bf, full_tag("ID", $startlevel + 2, false, $role->id)); fwrite($bf, full_tag("NAME", $startlevel + 2, false, $role->name)); fwrite($bf, full_tag("SHORTNAME", $startlevel + 2, false, $role->shortname)); fwrite($bf, start_tag("ASSIGNMENTS", $startlevel + 2, true)); if ($assignments = get_users_from_role_on_context($role, $context)) { foreach ($assignments as $assignment) { /// Role assignments are only sent to backup if the user is one target user if (backup_getid($preferences->backup_unique_code, 'user', $assignment->userid)) { fwrite($bf, start_tag("ASSIGNMENT", $startlevel + 3, true)); fwrite($bf, full_tag("USERID", $startlevel + 4, false, $assignment->userid)); fwrite($bf, full_tag("HIDDEN", $startlevel + 4, false, $assignment->hidden)); fwrite($bf, full_tag("TIMESTART", $startlevel + 4, false, $assignment->timestart)); fwrite($bf, full_tag("TIMEEND", $startlevel + 4, false, $assignment->timeend)); fwrite($bf, full_tag("TIMEMODIFIED", $startlevel + 4, false, $assignment->timemodified)); if (!isset($assignment->modifierid)) { $assignment->modifierid = 0; } fwrite($bf, full_tag("MODIFIERID", $startlevel + 4, false, $assignment->modifierid)); fwrite($bf, full_tag("ENROL", $startlevel + 4, false, $assignment->enrol)); fwrite($bf, full_tag("SORTORDER", $startlevel + 4, false, $assignment->sortorder)); fwrite($bf, end_tag("ASSIGNMENT", $startlevel + 3, true)); } } } fwrite($bf, end_tag("ASSIGNMENTS", $startlevel + 2, true)); fwrite($bf, end_tag("ROLE", $startlevel + 1, true)); } } fwrite($bf, end_tag("ROLES_ASSIGNMENTS", $startlevel, true)); }
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; }