Proyectos de Subversion Moodle

Rev

Rev 1231 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
defined('MOODLE_INTERNAL') || die();
4
 
5
use core_completion\progress;
6
 
7
class block_cesa_lastcourse_renderer extends plugin_renderer_base {
8
 
9
    public function procesar() {
10
 
11
        global $USER, $DB, $CFG, $PAGE;
12
 
13
 
14
        $userid = $USER->id;
15
        $url_noimage =  $CFG->wwwroot . '/theme/' . $PAGE->theme->name . '/pix/coursenoimage.jpg';
16
 
17
        $data = [
18
            'course' => ''
19
        ];
20
 
21
 
22
        $sql  = "SELECT DISTINCT(courseid) AS courseid  FROM {logstore_standard_log} WHERE ";
23
        $sql .= "action = 'viewed'  AND target IN ('course', 'course_module') AND userid = $userid ";
24
        $sql .= "GROUP BY courseid ORDER BY timecreated DESC  ";
25
 
26
 
27
        $courseid =  null;
28
 
29
 
30
        $lastcourses = $DB->get_records_sql($sql);
31
        foreach($lastcourses as $lastcourse)
32
        {
33
            //$course = get_course($lastcourse->courseid);
34
 
35
 	    $course =  $DB->get_record('course',array('id'=>$lastcourse->courseid));
36
 
37
	    if(!$course || !$course->visible) {
38
                continue;
39
            }
40
 
41
            $category = $DB->get_record('course_categories',array('id'=>$course->category));
42
            if(!$category || !$category->visible) {
43
                continue;
44
            }
45
 
46
            $courseid = $course->id;
47
 
48
        }
49
 
50
        if($courseid) {
51
                $course = get_course($courseid);
52
 
53
                if ($course instanceof stdClass) {
54
                    $courseInList = new core_course_list_element($course);
55
                }
56
                $image = $url_noimage;
57
                foreach ($courseInList->get_course_overviewfiles() as $file)
58
                {
59
                    $isimage = $file->is_valid_image();
60
                    $image = file_encode_url("{$CFG->wwwroot}/pluginfile.php", '/' . $file->get_contextid() . '/' . $file->get_component() . '/' . $file->get_filearea() . $file->get_filepath() . $file->get_filename(), !$isimage);
61
                    if (!$isimage) {
62
                        $image = $url_noimage;
63
                    }
64
                }
65
 
66
 
67
                $lastaccess = null;
68
                $sql = "select timecreated  from {logstore_standard_log} where courseid  = :courseid and userid  = :userid " .
69
                    "  and eventname  = '\\\\core\\\\event\\\\course_viewed' order by id desc limit 1 ";
70
 
71
                $timecreated = $DB->get_field_sql($sql,  array('courseid' => $course->id, 'userid' => $userid));
72
                if($timecreated) {
73
 
74
                    $lastaccess = date('d/m/Y h:i a', $timecreated);
75
                }
76
 
77
                $category = $DB->get_record('course_categories',array('id'=>$course->category));
78
 
79
                $progress = progress::get_course_progress_percentage($course);
80
                $progress = $progress ? floatval($progress) : 0.0;
81
                $miProgreso = number_format($progress,2); // Progreso por curso
82
 
83
 
84
                $first_section = 0;
85
                $sections = $DB->get_records('course_sections', ['course' => $course->id], 'section ASC', 'id,name,section,sequence,visible');
86
 
87
                foreach($sections as $section)
88
                {
89
                    if(!empty($section->section)) {
90
                        $first_section = $section->id;
91
                        break;
92
                    }
93
                }
94
                $course_context = context_course::instance($course->id);
95
                $roles = get_user_roles($course_context, $USER->id, true);
96
 
97
                $completion_edit_curso = false;
98
                foreach ($roles as $role) {
99
                    if ($role->shortname == 'companydepartmentmanager' || $role->shortname == 'companycoursenoneditor') {
100
                        $completion_edit_curso  = true;
101
                        break;
102
                    }
103
                }
104
 
105
 
106
 
107
                $modules = get_fast_modinfo($course->id)->get_cms();
108
 
109
 
110
 
111
                $linkurl = '';
112
                foreach ($modules as $module)
113
                {
114
 
115
 
116
 
117
 
118
                    //print "!".$module->uservisible ."||". $module->is_stealth() ."||". $module->url ."||". $module->section."<br>";
119
                    if (!$module->uservisible || $module->is_stealth() || empty($module->url) || empty($module->section)) {
120
                        continue;
121
                    }
122
 
123
                    if($module->section == $first_section || $completion_edit_curso) {
124
                        $linkurl =  new moodle_url($module->url, array('forceview' => 1));
125
                        break;
126
                    }
127
                }
128
                if( $completion_edit_curso){
129
                    $linkurl = $CFG->wwwroot . '/course/view.php?id=' . $course->id;
130
                }
131
 
132
 
133
                $summary = trim(strip_tags($course->summary));
134
 
135
                if(empty($summary)) {
136
                    $summary = '&nbsp';
137
                } else if(strlen($summary) > 80) {
138
 
139
                    $summary =  substr($summary, 0, 80) . '...';
140
                }
141
 
142
 
143
                $data['course'] = [
144
                    'courseid' => $course->id,
145
                    'coursecategory' => $category->name,
146
                    'courseimage' => $image,
147
                    'enddate' => $course->enddate,
148
                    'fullname' => $course->fullname,
149
                    'fullnamedisplay' => get_course_display_name_for_list($course),
150
                    'hasprogress' => true,
151
                    'hidden' => false,
152
                    'id' => $course->id,
153
                    'idnumber' => $course->idnumber,
154
                    'isfavourite' => false,
155
                    'progress' => $miProgreso,
156
                    'shortname' => $course->shortname,
157
                    'showshortname' => false,
158
                    'startdate' => $course->startdate,
159
                    'summary' =>  $summary,
160
                    'summaryformat' => $course->summaryformat,
161
                    'timeaccess' => $lastaccess,
162
                    'viewurl' => $CFG->wwwroot . '/course/view.php?id=' . $course->id,
163
                    'viewurlnew' => $linkurl,
164
                    'visible' => true,
165
 
166
                ];
167
 
168
 
169
 
170
        }
171
 
172
 
173
        return $this->render_from_template('block_cesa_lastcourse/full', $data);
174
    }
175
}
176