From e4c4015170686bbb4d746136fe1a1137ac8990da Mon Sep 17 00:00:00 2001 From: Gero Lueckemeyer <gero.lueckemeyer@hft-stuttgart.de> Date: Thu, 28 Dec 2023 09:46:18 +0100 Subject: [PATCH] fixed paths & documentation, bumped version --- dta.zip | Bin 24076 -> 24007 bytes dta/{utils => classes}/backend.php | 8 ++++---- dta/{utils => classes}/database.php | 6 +++--- dta/classes/privacy/provider.php | 18 +++++++++++------- dta/{utils => classes}/view.php | 8 ++++---- dta/models/DtaResult.php | 5 ++--- dta/version.php | 6 +++--- 7 files changed, 27 insertions(+), 24 deletions(-) rename dta/{utils => classes}/backend.php (94%) rename dta/{utils => classes}/database.php (96%) rename dta/{utils => classes}/view.php (98%) diff --git a/dta.zip b/dta.zip index bf683ed10c2524ba6fa4e60403149184f3f4f67d..83d1e2867578df0141d3c8e191b5f951a10eaed8 100644 GIT binary patch delta 12175 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 delta 12302 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 diff --git a/dta/utils/backend.php b/dta/classes/backend.php similarity index 94% rename from dta/utils/backend.php rename to dta/classes/backend.php index a881f9f..b2904ae 100644 --- a/dta/utils/backend.php +++ b/dta/classes/backend.php @@ -48,8 +48,8 @@ class DtaBackendUtils { /** * Sends the configuration textfile uploaded by prof to the backend. * - * @param $assignment assignment this test-config belongs to - * @param $file uploaded test-config + * @param assignment $assignment assignment this test-config belongs to + * @param file $file uploaded test-config * @return bool true if no error occurred */ public static function sendtestconfigtobackend($assignment, $file): bool { @@ -78,8 +78,8 @@ class DtaBackendUtils { /** * Sends sumbission config or archive to backend to be tested. * - * @param $assignment assignment this submission is done for - * @param $file submission config file or archive with submission + * @param assignment $assignment assignment this submission is done for + * @param file $file submission config file or archive with submission * @return string json string with testresults or null on error */ public static function sendsubmissiontobackend($assignment, $file): ?string { diff --git a/dta/utils/database.php b/dta/classes/database.php similarity index 96% rename from dta/utils/database.php rename to dta/classes/database.php index 8d54c06..6f5c82a 100644 --- a/dta/utils/database.php +++ b/dta/classes/database.php @@ -88,9 +88,9 @@ class DbUtils { * save given result summary and single results to database * under given assignment and submission id * - * @param $assignmentid assigment this is submission is linked to - * @param $submissionid submission of this result - * @param $summary instance to persist + * @param int $assignmentid assigment this is submission is linked to + * @param int $submissionid submission of this result + * @param DtaResultSummary $summary instance to persist */ public static function storeresultsummarytodatabase( int $assignmentid, diff --git a/dta/classes/privacy/provider.php b/dta/classes/privacy/provider.php index 00558e7..9e36d5c 100644 --- a/dta/classes/privacy/provider.php +++ b/dta/classes/privacy/provider.php @@ -14,13 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. -/** - * provider for data privacy - * - * @package assignsubmission_dta - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - * @copyright Gero Lueckemeyer and student project teams - */ namespace assignsubmission_dta\privacy; use core_privacy\local\metadata\collection; @@ -28,6 +21,13 @@ use core_privacy\local\request\writer; use core_privacy\local\request\contextlist; use mod_assign\privacy\assign_plugin_request_data; +/** + * provider for data privacy + * + * @package assignsubmission_dta + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @copyright Gero Lueckemeyer and student project teams + */ class provider implements \core_privacy\local\metadata\provider, \mod_assign\privacy\assignsubmission_provider, \mod_assign\privacy\assignsubmission_user_provider { @@ -37,6 +37,10 @@ class provider implements \core_privacy\local\metadata\provider, */ const ASSIGNSUBMISSION_DTA_FILEAREA_SUBMISSION = "submissions_dta"; + /** + * This is the metadata information for the assignsubmission_dta plugin. + * @param collection $collection the collection of metadata filled by the plugin + */ public static function get_metadata(collection $collection): collection { $collection->add_subsystem_link( 'core_files', diff --git a/dta/utils/view.php b/dta/classes/view.php similarity index 98% rename from dta/utils/view.php rename to dta/classes/view.php index ebd223a..b5d1dc8 100644 --- a/dta/utils/view.php +++ b/dta/classes/view.php @@ -31,8 +31,8 @@ class view_submission_utils { /** * generates a short summary html * - * @param $assignmentid assignment - * @param $submissionid submission to create a report for + * @param int $assignmentid id of the assignment to show + * @param int $submissionid id of the submission for which to create a report * @return string html */ public static function generatesummaryhtml( @@ -87,8 +87,8 @@ class view_submission_utils { /** * generates detailed view html * - * @param $assignmentid assignment - * @param $submissionid submission to create a report for + * @param int $assignmentid id of the assignment to show + * @param int $submissionid id of the submission for which to create a report */ public static function generatedetailhtml( int $assignmentid, diff --git a/dta/models/DtaResult.php b/dta/models/DtaResult.php index a06e33d..592d6f0 100644 --- a/dta/models/DtaResult.php +++ b/dta/models/DtaResult.php @@ -92,8 +92,8 @@ class DtaResult { /** * Returns the name of a state with the given number of display. - * @param $state number of the state - * @return name of state as defined + * @param int $state number of the state + * @return string name of state as defined */ public static function getstatename(int $state): string { if ($state == 1) { @@ -188,7 +188,6 @@ class DtaResultSummary { return $ret; } - /** * Returns the number of detail results attached to the summary. * @return int count of occurences diff --git a/dta/version.php b/dta/version.php index b7de914..cf9e0b3 100644 --- a/dta/version.php +++ b/dta/version.php @@ -24,8 +24,8 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2000000; -$plugin->requires = 2019111800; // Moodle 3.8. +$plugin->version = 3000000; +$plugin->requires = 2020061525; // Moodle 3.9 LTS $plugin->component = 'assignsubmission_dta'; $plugin->maturity = MATURITY_STABLE; -$plugin->release = "2.0.0"; +$plugin->release = "3.0.0"; -- GitLab