AutorÃa | Ultima modificación | Ver Log |
<?phpdefined('MOODLE_INTERNAL') || die();use core_completion\progress;class block_cesa_lastcourse_renderer extends plugin_renderer_base {public function procesar() {global $USER, $DB, $CFG, $PAGE;$userid = $USER->id;$url_noimage = $CFG->wwwroot . '/theme/' . $PAGE->theme->name . '/pix/coursenoimage.jpg';$data = ['course' => ''];$sql = "SELECT DISTINCT(courseid) AS courseid FROM {logstore_standard_log} WHERE ";$sql .= "action = 'viewed' AND target IN ('course', 'course_module') AND userid = $userid ";$sql .= "GROUP BY courseid ORDER BY timecreated DESC ";$courseid = null;$lastcourses = $DB->get_records_sql($sql);foreach($lastcourses as $lastcourse){//$course = get_course($lastcourse->courseid);$course = $DB->get_record('course',array('id'=>$lastcourse->courseid));if(!$course || !$course->visible) {continue;}$category = $DB->get_record('course_categories',array('id'=>$course->category));if(!$category || !$category->visible) {continue;}$courseid = $course->id;}if($courseid) {$course = get_course($courseid);if ($course instanceof stdClass) {$courseInList = new core_course_list_element($course);}$image = $url_noimage;foreach ($courseInList->get_course_overviewfiles() as $file){$isimage = $file->is_valid_image();$image = file_encode_url("{$CFG->wwwroot}/pluginfile.php", '/' . $file->get_contextid() . '/' . $file->get_component() . '/' . $file->get_filearea() . $file->get_filepath() . $file->get_filename(), !$isimage);if (!$isimage) {$image = $url_noimage;}}$lastaccess = null;$sql = "select timecreated from {logstore_standard_log} where courseid = :courseid and userid = :userid " ." and eventname = '\\\\core\\\\event\\\\course_viewed' order by id desc limit 1 ";$timecreated = $DB->get_field_sql($sql, array('courseid' => $course->id, 'userid' => $userid));if($timecreated) {$lastaccess = date('d/m/Y h:i a', $timecreated);}$category = $DB->get_record('course_categories',array('id'=>$course->category));$progress = progress::get_course_progress_percentage($course);$progress = $progress ? floatval($progress) : 0.0;$miProgreso = number_format($progress,2); // Progreso por curso$first_section = 0;$sections = $DB->get_records('course_sections', ['course' => $course->id], 'section ASC', 'id,name,section,sequence,visible');foreach($sections as $section){if(!empty($section->section)) {$first_section = $section->id;break;}}$course_context = context_course::instance($course->id);$roles = get_user_roles($course_context, $USER->id, true);$completion_edit_curso = false;foreach ($roles as $role) {if ($role->shortname == 'companydepartmentmanager' || $role->shortname == 'companycoursenoneditor') {$completion_edit_curso = true;break;}}$modules = get_fast_modinfo($course->id)->get_cms();$linkurl = '';foreach ($modules as $module){//print "!".$module->uservisible ."||". $module->is_stealth() ."||". $module->url ."||". $module->section."<br>";if (!$module->uservisible || $module->is_stealth() || empty($module->url) || empty($module->section)) {continue;}if($module->section == $first_section || $completion_edit_curso) {$linkurl = new moodle_url($module->url, array('forceview' => 1));break;}}if( $completion_edit_curso){$linkurl = $CFG->wwwroot . '/course/view.php?id=' . $course->id;}$summary = trim(strip_tags($course->summary));if(empty($summary)) {$summary = ' ';} else if(strlen($summary) > 80) {$summary = substr($summary, 0, 80) . '...';}$data['course'] = ['courseid' => $course->id,'coursecategory' => $category->name,'courseimage' => $image,'enddate' => $course->enddate,'fullname' => $course->fullname,'fullnamedisplay' => get_course_display_name_for_list($course),'hasprogress' => true,'hidden' => false,'id' => $course->id,'idnumber' => $course->idnumber,'isfavourite' => false,'progress' => $miProgreso,'shortname' => $course->shortname,'showshortname' => false,'startdate' => $course->startdate,'summary' => $summary,'summaryformat' => $course->summaryformat,'timeaccess' => $lastaccess,'viewurl' => $CFG->wwwroot . '/course/view.php?id=' . $course->id,'viewurlnew' => $linkurl,'visible' => true,];}return $this->render_from_template('block_cesa_lastcourse/full', $data);}}