Proyectos de Subversion Moodle

Rev

Rev 381 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
header('Content-type: application/json');
3
require_once('../../config.php');
4
 
5
global $CFG, $USER, $DB, $PAGE;
380 ariadna 6
require_once($CFG->libdir . '/completionlib.php');
1 efrain 7
 
8
 
9
// Parameters
10
$modid = optional_param('modid', 0, PARAM_INT);
11
$courseid = optional_param('courseid', 0, PARAM_INT);
12
$parent = optional_param('parent', 0, PARAM_INT);
13
 
14
if (!$modid && !$courseid) {
15
    echo json_encode([
380 ariadna 16
        'success' => false,
1 efrain 17
        'data' => 'invalid arguments'
18
    ]);
19
}
20
 
380 ariadna 21
$PAGE->set_url(new moodle_url('/local/cesanavigation/terminacion.php', array('course' => $courseid, 'cmid' => $modid, 'parent' => $parent)));
1 efrain 22
 
23
 
24
$course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
25
require_login($course);
26
 
27
$completion = new completion_info($course);
28
if (!$completion->is_enabled()) {
29
    echo json_encode([
30
        'success' => false,
31
        'data' => 'completion not enabled'
32
    ]);
33
    exit;
34
}
35
 
36
 
380 ariadna 37
function terminacion_get_section_availability_locked($section, $canviewhidden)
38
{
1 efrain 39
    global $CFG;
40
    $o = 0;
41
    if (!$section->uservisible) {
42
        if ($section->availableinfo) {
43
            $o = 1;
44
        }
45
    } else if ($canviewhidden && !empty($CFG->enableavailability)) {
46
        // Check if there is an availability restriction.
47
        $ci = new \core_availability\info_section($section);
48
        $fullinfo = $ci->get_full_information();
49
        if ($fullinfo) {
50
            $o = 1;
51
        }
52
    }
53
    return $o;
54
}
55
 
56
 
57
// Get course-modules entry
58
$modules = get_fast_modinfo($course->id)->get_cms();
59
 
60
 
380 ariadna 61
if (!$parent) {
62
    $mods = [];
1 efrain 63
 
380 ariadna 64
    foreach ($modules as $module) {
1 efrain 65
        if (!$module->uservisible || $module->is_stealth() || empty($module->url)) {
66
            continue;
67
        }
68
        $mods[$module->id] = $module;
69
    }
380 ariadna 70
 
1 efrain 71
    $nummods = count($mods);
380 ariadna 72
 
1 efrain 73
    $modids = array_keys($mods);
74
    $position = array_search($modid, $modids);   //array_search($this->page->cm->id, $modids);
380 ariadna 75
 
76
    if ($position === false) {
1 efrain 77
        echo json_encode([
78
            'success' => false,
79
            'data' => 'module not exists'
80
        ]);
81
        exit;
82
    }
380 ariadna 83
 
1 efrain 84
    $currentmod = $mods[$modids[$position]];
380 ariadna 85
 
1 efrain 86
    if ($position < ($nummods - 1)) {
87
        $nextmod = $mods[$modids[$position + 1]];
88
        $redirectlink = new \moodle_url($nextmod->url, array('forceview' => 1, 'parent' => $parent));
89
    } else {
90
        $redirectlink = new \moodle_url('/my');
91
    }
92
}
93
 
94
 
95
// Check user is logged in
96
require_login($course, false, $currentmod);
97
if (isguestuser()) {
98
    echo json_encode([
99
        'success' => false,
100
        'data' => 'login is required'
101
    ]);
102
    exit;
103
}
104
 
105
 
106
 
107
// Check completion state is manual
380 ariadna 108
if ($currentmod->completion != COMPLETION_TRACKING_MANUAL) {
1 efrain 109
    echo json_encode([
110
        'success' => false,
402 ariadna 111
        'data' => $currentmod->completion
1 efrain 112
    ]);
113
    exit;
114
}
115
 
116
$completion->update_state($currentmod, COMPLETION_COMPLETE);
117
echo json_encode([
118
    'success' => true,
119
    'data' => trim($redirectlink)
120
]);
121
exit;