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