diff --git a/db/services.php b/db/services.php index 4308a8f..dae064f 100644 --- a/db/services.php +++ b/db/services.php @@ -95,6 +95,14 @@ 'description' => 'Get Markers feedbacks', 'capabilities' => 'mod/assign:view', 'type' => 'read', + ], + 'api_ext_update_assessment' => [ + 'classname' => 'api_extend', + 'methodname' => 'update_assessment', + 'classpath' => 'local/api_extend/externallib.php', + 'description' => 'Update Course Assessment', + 'capabilities' => 'moodle/course:update', + 'type' => 'write', ] ]; diff --git a/externallib.php b/externallib.php index bc76cd7..6bcd2d9 100644 --- a/externallib.php +++ b/externallib.php @@ -702,4 +702,81 @@ public static function get_markers_feedback_returns(): external_multiple_structu ); } + + + /** + * Returns description of method parameters + * + * @return external_function_parameters + */ + public static function update_assessment_parameters() + { + return new external_function_parameters([ + 'instanceid' => new external_value(PARAM_INT, 'The assignment id'), + 'courseid' => new external_value(PARAM_INT, 'The course id'), + 'duedate' => new external_value(PARAM_INT, 'The due date') + ]); + } + + /** + * Update Course Assessment + * + * @param $instanceid + * @param $courseid + * @param $duedate + * @return array | false + * @throws dml_exception + * @throws invalid_parameter_exception + * @throws required_capability_exception + */ + public static function update_assessment($instanceid, $courseid, $duedate) + { + global $DB; + + //Parameter validation + $params = self::validate_parameters( + self::update_assessment_parameters(), + [ + 'instanceid' => $instanceid, + 'courseid' => $courseid, + 'duedate' => $duedate, + ] + ); + + $context = context_system::instance(); + require_capability('moodle/course:update', $context); + + $sql = "SELECT a.id + FROM {assign} a + WHERE a.id = :id AND a.course = :courseid"; + + $record = $DB->get_record_sql($sql, ['id' => $params['instanceid'], 'courseid' => $params['courseid']], MUST_EXIST); + + if(empty($record)) { + return false; + } + + $rec = new stdclass(); + $rec->id = $record->id; + $rec->duedate = $duedate; + + $DB->update_record('assign', $rec); + + return (array)$record; + + } + + /** + * Returns description of method result value + * + * @return external_single_structure + */ + public static function update_assessment_returns(): external_single_structure + { + return new external_single_structure( + [ + 'id' => new external_value(PARAM_INT, 'The course assessment id'), + ] + ); + } } diff --git a/version.php b/version.php index 93ff48b..ac89bc4 100644 --- a/version.php +++ b/version.php @@ -22,7 +22,7 @@ defined('MOODLE_INTERNAL') || die; -$plugin->version = 2022111400; +$plugin->version = 2022120700; $plugin->requires = 2018051700; // Requires this Moodle version - at least 2.0 $plugin->component = 'local_api_extend'; $plugin->release = '0.2';