From 728e1931a20198ed85782db15c7e74f04d04361a Mon Sep 17 00:00:00 2001 From: mjollnir_ Date: Mon, 11 Aug 2008 15:31:55 +0000 Subject: [PATCH] MDL-15768 - mod/assignment upgraded to check caps before portfolio export --- lang/en_utf8/assignment.php | 1 + mod/assignment/db/access.php | 14 +++++++++++++- mod/assignment/lib.php | 7 ++++--- mod/assignment/type/online/assignment.class.php | 2 +- mod/assignment/type/upload/assignment.class.php | 4 ++-- mod/assignment/version.php | 4 ++-- 6 files changed, 23 insertions(+), 9 deletions(-) diff --git a/lang/en_utf8/assignment.php b/lang/en_utf8/assignment.php index dcc46eddac..b0703cdb51 100644 --- a/lang/en_utf8/assignment.php +++ b/lang/en_utf8/assignment.php @@ -7,6 +7,7 @@ $string['allowmaxfiles'] = 'Maximum number of uploaded files'; $string['allownotes'] = 'Allow notes'; $string['allowresubmit'] = 'Allow resubmitting'; $string['alreadygraded'] = 'Your assignment has already been graded and resubmission is not allowed.'; +$string['assignment:exportownsubmission'] = 'Export own submission'; $string['assignment:grade'] = 'Grade assignment'; $string['assignment:submit'] = 'Submit assignment'; $string['assignment:view'] = 'View assignment'; diff --git a/mod/assignment/db/access.php b/mod/assignment/db/access.php index c4400b7ed4..2e970129a4 100644 --- a/mod/assignment/db/access.php +++ b/mod/assignment/db/access.php @@ -65,7 +65,19 @@ $mod_assignment_capabilities = array( 'editingteacher' => CAP_ALLOW, 'admin' => CAP_ALLOW ) - ) + ), + + 'mod/assignment:exportownsubmission' => array( + + 'captype' => 'read', + 'contextlevel' => CONTEXT_MODULE, + 'legacy' => array( + 'teacher' => CAP_ALLOW, + 'editingteacher' => CAP_ALLOW, + 'admin' => CAP_ALLOW, + 'student' => CAP_ALLOW, + ) + ), ); ?> diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index c3cce74b9f..1ae83494bf 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -1713,13 +1713,13 @@ class assignment_base { $icon = mimeinfo_from_type('icon', $mimetype); $path = $browser->encodepath($CFG->wwwroot.'/pluginfile.php', '/'.$this->context->id.'/assignment_submission/'.$userid.'/'.$filename); $output .= ''.$icon.''.s($filename).''; - if ($this->portfolio_exportable() && true) { // @todo replace with capability check + if ($this->portfolio_exportable() && has_capability('mod/assignment:exportownsubmission', $this->context)) { $p['file'] = $file->get_id(); $output .= portfolio_add_button('assignment_portfolio_caller', $p, null, false, true); } $output .= '
'; } - if ($this->portfolio_exportable() && true) { //@todo replace with check capability + if ($this->portfolio_exportable() && has_capability('mod/assignment:exportownsubmission', $this->context)) { unset($p['file']);// for all files $output .= '
' . portfolio_add_button('assignment_portfolio_caller', $p, null, true, true); } @@ -3187,7 +3187,8 @@ class assignment_portfolio_caller extends portfolio_module_caller_base { } public function check_permissions() { - return has_capability('mod/assignment:export-upload-files', get_context_instance(CONTEXT_MODULE, $this->assignment->cm->id)); + $context = get_context_instance(CONTEXT_MODULE, $this->assignment->cm->id); + return has_capability('mod/assignment:exportownsubmission', $context); } public function __wakeup() { diff --git a/mod/assignment/type/online/assignment.class.php b/mod/assignment/type/online/assignment.class.php index bbf00cb772..6d726ac147 100644 --- a/mod/assignment/type/online/assignment.class.php +++ b/mod/assignment/type/online/assignment.class.php @@ -101,7 +101,7 @@ class assignment_online extends assignment_base { $mform->display(); } else { print_box_start('generalbox boxwidthwide boxaligncenter', 'online'); - if ($submission && true) { // @todo penny replace with capability check later + if ($submission && has_capability('mod/assignment:exportownsubmission', $this->context)) { echo format_text($submission->data1, $submission->data2); $p = array( 'userid' => $USER->id, diff --git a/mod/assignment/type/upload/assignment.class.php b/mod/assignment/type/upload/assignment.class.php index a2d0b6f03d..d97988b6b5 100644 --- a/mod/assignment/type/upload/assignment.class.php +++ b/mod/assignment/type/upload/assignment.class.php @@ -360,13 +360,13 @@ class assignment_upload extends assignment_base { .' '; } - if (true) { // @todo penny replace with capability check + if (has_capability('mod/assignment:exportownsubmission', $this->context)) { $p['file'] = $filename; $output .= portfolio_add_button('assignment_portfolio_caller', $p, '/mod/assignment/lib.php', false, true); } $output .= '
'; } - if (true) { //@todo penny replace with check capability + if (has_capability('mod/assignment:exportownsubmission', $this->context)) { unset($p['file']);// for all files $output .= '
' . portfolio_add_button('assignment_portfolio_caller', $p, '/mod/assignment/lib.php', true, true); } diff --git a/mod/assignment/version.php b/mod/assignment/version.php index 2d169bc0eb..3c5ff3c707 100644 --- a/mod/assignment/version.php +++ b/mod/assignment/version.php @@ -5,8 +5,8 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2008073000; -$module->requires = 2008072401; // Requires this Moodle version +$module->version = 2008081100; +$module->requires = 2008080701; // Requires this Moodle version $module->cron = 60; ?> -- 2.39.5