From 9e103451e28b0c750ddea7148c630941cb6b0de9 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Fri, 21 Aug 2020 08:09:11 +0800 Subject: [PATCH] MDL-66818 mod_forum: Use cap manager to check exportability --- .../classes/local/renderers/discussion.php | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/mod/forum/classes/local/renderers/discussion.php b/mod/forum/classes/local/renderers/discussion.php index d7fa820325b..47bcfade09d 100644 --- a/mod/forum/classes/local/renderers/discussion.php +++ b/mod/forum/classes/local/renderers/discussion.php @@ -215,7 +215,7 @@ class discussion { 'movediscussion' => null, 'pindiscussion' => null, 'neighbourlinks' => $this->get_neighbour_links_html(), - 'exportdiscussion' => !empty($CFG->enableportfolios) ? $this->get_export_discussion_html() : null + 'exportdiscussion' => !empty($CFG->enableportfolios) ? $this->get_export_discussion_html($user) : null ] ]); @@ -357,24 +357,18 @@ class discussion { /** * Get the HTML to render the export discussion button. * - * @return string|null + * @param stdClass $user The user viewing the discussion + * @return string|null */ - private function get_export_discussion_html() : ?string { + private function get_export_discussion_html(stdClass $user) : ?string { global $CFG; - require_once($CFG->libdir . '/portfoliolib.php'); - $discussion = $this->discussion; - - // We use the portfolio caller to work out if user should be allowed to see this button. - $caller = new forum_portfolio_caller(['discussionid' => $discussion->get_id()]); - $caller->set_formats_from_button([]); - $caller->load_data(); - if (!$caller->check_permissions()) { + if (!$this->capabilitymanager->can_export_discussions($user)) { return null; } $button = new \portfolio_add_button(); - $button->set_callback_options('forum_portfolio_caller', ['discussionid' => $discussion->get_id()], 'mod_forum'); + $button->set_callback_options('forum_portfolio_caller', ['discussionid' => $this->discussion->get_id()], 'mod_forum'); $button = $button->to_html(PORTFOLIO_ADD_FULL_FORM, get_string('exportdiscussion', 'mod_forum')); return $button ?: null; }