From 1fa872b84fe022b553fbb7ca0fb47f8a46bf1c60 Mon Sep 17 00:00:00 2001 From: Mihail Geshoski Date: Thu, 29 Apr 2021 11:35:59 +0800 Subject: [PATCH] MDL-71440 mod_assign: New capability for viewing the submission summary Creates a new capability mod/assign:viewownsubmissionsummary which will be required in order to display the submission summary to the user in the assignment page. --- mod/assign/db/access.php | 8 ++++++++ mod/assign/externallib.php | 8 ++++---- mod/assign/lang/en/assign.php | 1 + mod/assign/locallib.php | 5 ++--- mod/assign/version.php | 2 +- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/mod/assign/db/access.php b/mod/assign/db/access.php index 647c2c0c38f..12b47bea376 100644 --- a/mod/assign/db/access.php +++ b/mod/assign/db/access.php @@ -198,5 +198,13 @@ $capabilities = array( 'manager' => CAP_ALLOW ) ), + + 'mod/assign:viewownsubmissionsummary' => array( + 'captype' => 'read', + 'contextlevel' => CONTEXT_MODULE, + 'archetypes' => array( + 'student' => CAP_ALLOW + ) + ), ); diff --git a/mod/assign/externallib.php b/mod/assign/externallib.php index f6c041b9635..de1b56428d1 100644 --- a/mod/assign/externallib.php +++ b/mod/assign/externallib.php @@ -2375,8 +2375,8 @@ class mod_assign_external extends external_api { } // Retrieve the rest of the renderable objects. - $cansubmit = has_capability('mod/assign:submit', $context, $user, false); - if ($cansubmit || $assign->get_user_submission($user->id, false) !== false) { + if (has_capability('mod/assign:viewownsubmissionsummary', $context, $user, false)) { + // The user can view the submission summary. $lastattempt = $assign->get_assign_submission_status_renderable($user, true); } @@ -2432,8 +2432,8 @@ class mod_assign_external extends external_api { } // Can edit its own submission? - $lastattempt->caneditowner = $cansubmit && $assign->submissions_open($user->id) - && $assign->is_any_submission_plugin_enabled(); + $lastattempt->caneditowner = has_capability('mod/assign:submit', $context, $user, false) + && $assign->submissions_open($user->id) && $assign->is_any_submission_plugin_enabled(); $result['lastattempt'] = $lastattempt; } diff --git a/mod/assign/lang/en/assign.php b/mod/assign/lang/en/assign.php index b68423d0c91..b2c4c3daec8 100644 --- a/mod/assign/lang/en/assign.php +++ b/mod/assign/lang/en/assign.php @@ -63,6 +63,7 @@ $string['assign:viewgrades'] = 'View grades'; $string['assign:showhiddengrader'] = 'See the identity of a hidden grader'; $string['assign:submit'] = 'Submit assignment'; $string['assign:view'] = 'View assignment'; +$string['assign:viewownsubmissionsummary'] = 'View own submission summary'; $string['assignfeedback'] = 'Feedback plugin'; $string['assignfeedbackpluginname'] = 'Feedback plugin'; $string['assignmentisdue'] = 'Assignment is due'; diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index c2764753011..037b2692f04 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -5490,9 +5490,8 @@ class assign { $o = ''; if ($this->can_view_submission($user->id)) { - $cansubmit = has_capability('mod/assign:submit', $this->get_context(), $user, false); - if ($cansubmit || $this->get_user_submission($user->id, false) !== false) { - // The user can submit, or has a submission. + if (has_capability('mod/assign:viewownsubmissionsummary', $this->get_context(), $user, false)) { + // The user can view the submission summary. $submissionstatus = $this->get_assign_submission_status_renderable($user, $showlinks); $o .= $this->get_renderer()->render($submissionstatus); } diff --git a/mod/assign/version.php b/mod/assign/version.php index 1771ea9e62b..86058277cd8 100644 --- a/mod/assign/version.php +++ b/mod/assign/version.php @@ -25,5 +25,5 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'mod_assign'; // Full name of the plugin (used for diagnostics). -$plugin->version = 2021052501; // The current module version (Date: YYYYMMDDXX). +$plugin->version = 2021052502; // The current module version (Date: YYYYMMDDXX). $plugin->requires = 2021052500; // Requires this Moodle version.