AutorÃa | Ultima modificación | Ver Log |
<?phpheader('Content-type: application/json');require_once('../../config.php');global $CFG, $USER, $DB, $PAGE;require_once($CFG->libdir.'/completionlib.php');// Parameters$modid = optional_param('modid', 0, PARAM_INT);$courseid = optional_param('courseid', 0, PARAM_INT);$parent = optional_param('parent', 0, PARAM_INT);if (!$modid && !$courseid) {echo json_encode(['success' => false,'data' => 'invalid arguments']);}$PAGE->set_url(new moodle_url('/local/cesanavigation/terminacion.php', array('course'=>$courseid, 'cmid' => $modid, 'parent' => $parent)));$course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);require_login($course);$completion = new completion_info($course);if (!$completion->is_enabled()) {echo json_encode(['success' => false,'data' => 'completion not enabled']);exit;}function terminacion_get_section_availability_locked($section, $canviewhidden) {global $CFG;$o = 0;if (!$section->uservisible) {if ($section->availableinfo) {$o = 1;}} else if ($canviewhidden && !empty($CFG->enableavailability)) {// Check if there is an availability restriction.$ci = new \core_availability\info_section($section);$fullinfo = $ci->get_full_information();if ($fullinfo) {$o = 1;}}return $o;}// Get course-modules entry$modules = get_fast_modinfo($course->id)->get_cms();if($parent) {} else {$mods = [];foreach ($modules as $module){if (!$module->uservisible || $module->is_stealth() || empty($module->url)) {continue;}$mods[$module->id] = $module;}$nummods = count($mods);$modids = array_keys($mods);$position = array_search($modid, $modids); //array_search($this->page->cm->id, $modids);if($position === false) {echo json_encode(['success' => false,'data' => 'module not exists']);exit;}$currentmod = $mods[$modids[$position]];if ($position < ($nummods - 1)) {$nextmod = $mods[$modids[$position + 1]];$redirectlink = new \moodle_url($nextmod->url, array('forceview' => 1, 'parent' => $parent));} else {$redirectlink = new \moodle_url('/my');}}// Check user is logged inrequire_login($course, false, $currentmod);if (isguestuser()) {echo json_encode(['success' => false,'data' => 'login is required']);exit;}// Check completion state is manualif($currentmod->completion != COMPLETION_TRACKING_MANUAL) {echo json_encode(['success' => false,'data' => 'cannot manual track']);exit;}$completion->update_state($currentmod, COMPLETION_COMPLETE);echo json_encode(['success' => true,'data' => trim($redirectlink)]);exit;