. /** * * @package block_mytreestudyplan * @copyright 2023 P.M. Kuipers * @license https://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ use local_treestudyplan\studyplan; class block_mytreestudyplan extends \block_base { public $levelset; public function init() { } public function specialization() { global $CFG; $this->title = get_string('title', 'block_mytreestudyplan'); $systemcontext = \context_system::instance(); $teachermode = has_capability("local/treestudyplan:viewuserreports", $systemcontext); // Load CSS files from treestudyplan. try { $this->page->requires->css(new \moodle_url($CFG->wwwroot.'/local/treestudyplan/css/bootstrap-vue.min.css')); $this->page->requires->css(new \moodle_url($CFG->wwwroot.'/local/treestudyplan/css/devstyles.css')); // Include javascript and run studyplan renderer when page loading is complete. $this->page->requires->js_call_amd('block_mytreestudyplan/block_mytreestudyplan', 'init', [$teachermode ? 'teaching' : 'myreport']); } catch (Exception $x) { // On some occasions (Plugin management), the plugin is loaded after HEAD has been printed. // In those cases we don't want to show the block anyway, so ignore the error that gets inevitably thrown. $off = 0; // Empty statement to satisfy code checker. } } public function applicable_formats() { // Limit this block to the site index and the dashboard (my) pages. return [ 'admin' => false, 'site-index' => true, 'course-view' => false, 'mod' => false, 'my' => true ]; } public function get_content() { global $CFG; global $USER; global $COURSE; global $OUTPUT; if ($this->content !== null) { return $this->content; } $systemcontext = \context_system::instance(); // TODO: Check if they have the permission in any relevant context, not just system. $teachermode = has_capability("local/treestudyplan:viewuserreports", $systemcontext); $this->content = new \stdClass; $this->content->text = ""; $mystudyplans = studyplan::find_for_user($USER->id); $data = [ 'teachermode' => $teachermode, ]; $this->content->text = $OUTPUT->render_from_template("block_mytreestudyplan/block", $data); $inviteurl = $CFG->wwwroot.'/local/treestudyplan/invitations.php'; $invitetext = get_string('manage_invites', 'local_treestudyplan'); if ( (!$teachermode ) && count($mystudyplans) > 0) { $this->content->footer = "  {$invitetext}"; } return $this->content; } public function hide_header() { return false; } public function has_config() { return false; } }