Current Path : C:/xampp/htdocs/moodle/theme/moove/classes/util/ |
Current File : C:/xampp/htdocs/moodle/theme/moove/classes/util/extras.php |
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * Custom moove extras functions * * @package theme_moove * @copyright 2018 Willian Mano - http://conecti.me * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace theme_moove\util; use core_competency\api as competency_api; use moodle_url; defined('MOODLE_INTERNAL') || die(); /** * Class to get some extras info in Moodle. * * @package theme_moove * @copyright 2019 Willian Mano - http://conecti.me * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class extras { /** * Returns all user enrolled courses with progress * * @param \stdClass $user * * @return array */ public static function user_courses_with_progress($user) { global $USER, $CFG; if (($USER->id !== $user->id) && !is_siteadmin($USER->id)) { return []; } require_once($CFG->dirroot.'/course/renderer.php'); $chelper = new \coursecat_helper(); $courses = enrol_get_users_courses($user->id, true, '*', 'visible DESC, fullname ASC, sortorder ASC'); foreach ($courses as $course) { $course->fullname = strip_tags($chelper->get_course_formatted_name($course)); $courseobj = new \core_course_list_element($course); $completion = new \completion_info($course); // First, let's make sure completion is enabled. if ($completion->is_enabled()) { $percentage = \core_completion\progress::get_course_progress_percentage($course, $user->id); if (!is_null($percentage)) { $percentage = floor($percentage); } if (is_null($percentage)) { $percentage = 0; } // Add completion data in course object. $course->completed = $completion->is_course_complete($user->id); $course->progress = $percentage; } $course->link = $CFG->wwwroot."/course/view.php?id=".$course->id; // Summary. $course->summary = strip_tags($chelper->get_course_formatted_summary( $courseobj, array('overflowdiv' => false, 'noclean' => false, 'para' => false) )); $course->courseimage = self::get_course_summary_image($courseobj, $course->link); } return array_values($courses); } /** * Returns the first course's summary issue * * @param \core_course_list_element $course * @param string $courselink * * @return string */ public static function get_course_summary_image($course, $courselink) { global $CFG; $contentimage = ''; foreach ($course->get_course_overviewfiles() as $file) { $isimage = $file->is_valid_image(); $url = moodle_url::make_file_url("$CFG->wwwroot/pluginfile.php", '/' . $file->get_contextid() . '/' . $file->get_component() . '/' . $file->get_filearea() . $file->get_filepath() . $file->get_filename(), !$isimage); if ($isimage) { $contentimage = \html_writer::link($courselink, \html_writer::empty_tag('img', array( 'src' => $url, 'alt' => $course->fullname, 'class' => 'card-img-top w-100'))); break; } } if (empty($contentimage)) { $url = $CFG->wwwroot . "/theme/moove/pix/default_course.jpg"; $contentimage = \html_writer::link($courselink, \html_writer::empty_tag('img', array( 'src' => $url, 'alt' => $course->fullname, 'class' => 'card-img-top w-100'))); } return $contentimage; } /** * Returns the user picture * * @param null $userobject * @param int $imgsize * * @return \moodle_url * @throws \coding_exception */ public static function get_user_picture($userobject = null, $imgsize = 100) { global $USER, $PAGE; if (!$userobject) { $userobject = $USER; } $userimg = new \user_picture($userobject); $userimg->size = $imgsize; return $userimg->get_url($PAGE); } /** * Returns an array of all user competency plans * * @param \stdClass $user * * @return array * * @throws \coding_exception * @throws \required_capability_exception */ public static function get_user_competency_plans($user) { global $USER; if (($USER->id !== $user->id) && !is_siteadmin($USER->id)) { return []; } $retorno = []; try { $plans = array_values(competency_api::list_user_plans($user->id)); if (empty($plans)) { return []; } foreach ($plans as $plan) { $pclist = competency_api::list_plan_competencies($plan); $ucproperty = 'usercompetency'; if ($plan->get('status') != 1) { $ucproperty = 'usercompetencyplan'; } $proficientcount = 0; foreach ($pclist as $pc) { $usercomp = $pc->$ucproperty; if ($usercomp->get('proficiency')) { $proficientcount++; } } $proficientcompetencypercentage = 0; $competencycount = count($pclist); if ($competencycount) { $proficientcompetencypercentage = ((float) $proficientcount / (float) $competencycount) * 100.0; } $progressclass = ''; if ($proficientcompetencypercentage == 100) { $progressclass = 'bg-success'; } $retorno[] = [ 'id' => $plan->get('id'), 'name' => $plan->get('name'), 'competencycount' => $competencycount, 'proficientcount' => $proficientcount, 'proficientcompetencypercentage' => $proficientcompetencypercentage, 'progressclass' => $progressclass ]; } } catch (\Exception $e) { return []; } return $retorno; } /** * Returns the buttons displayed at the page header * * @param \context_course $context * @param \stdClass $user * * @return array * * @throws \coding_exception * @throws \moodle_exception */ public static function get_mypublic_headerbuttons($context, $user) { global $USER, $CFG; $headerbuttons = []; // Check to see if we should be displaying a message button. if (!empty($CFG->messaging) && $USER->id != $user->id && has_capability('moodle/site:sendmessage', $context)) { $iscontact = !empty(\core_message\api::get_contact($USER->id, $user->id)) ? 1 : 0; $contacttitle = $iscontact ? 'removecontact' : 'addcontact'; $contacturlaction = $iscontact ? 'removecontact' : 'addcontact'; $contactimage = $iscontact ? 'slicon-user-unfollow' : 'slicon-user-follow'; $headerbuttons = [ [ 'title' => get_string('sendmessage', 'core_message'), 'url' => new \moodle_url('/message/index.php', array('id' => $user->id)), 'icon' => 'fa fa-comment-o', 'class' => 'btn btn-block btn-outline-primary' ], [ 'title' => get_string($contacttitle, 'theme_moove'), 'url' => new \moodle_url('/message/index.php', [ 'user1' => $USER->id, 'user2' => $user->id, $contacturlaction => $user->id, 'sesskey' => sesskey()] ), 'icon' => $contactimage, 'class' => 'btn btn-block btn-outline-dark ajax-contact-button', 'linkattributes' => \core_message\helper::togglecontact_link_params($user, $iscontact), ] ]; \core_message\helper::togglecontact_requirejs(); } return $headerbuttons; } }