. /** * Main block code * * @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; /** * MyTreestudyplan block base code */ class block_mytreestudyplan extends \block_base { /** * Plugin initialization (before $this->config and $this->page are loaded) */ public function init() { } /** * Plugin specialization (directly called after $this->config and $this->page are ready) */ 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/bootstrap-vue.min.css')); if($CFG->debugdeveloper){ $this->page->requires->css(new moodle_url($CFG->wwwroot.'/local/treestudyplan/css/devstyles.css')); } $this->page->add_body_class("features-treestudyplan"); // Mark body as containing treestudyplan content. // 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. } } /** * Publish the pages this block can be shown on */ 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 ]; } /** * Render block content */ 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; } /** * Whether to hide the header or not */ public function hide_header() { return false; } /** * Whether this block has config or not */ public function has_config() { return false; } /** * Return true to avoid broken self-test message */ function _self_test() { return true; } }