ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
ILIAS\Exercise\Submission\SubmissionDBRepository Class Reference

Submission repository. More...

+ Inheritance diagram for ILIAS\Exercise\Submission\SubmissionDBRepository:
+ Collaboration diagram for ILIAS\Exercise\Submission\SubmissionDBRepository:

Public Member Functions

 __construct (\ilDBInterface $db=null)
 
 getUserId (int $submission_id)
 
 hasSubmissions (int $assignment_id)
 
 updateWebDirAccessTime (int $assignment_id, int $member_id)
 
 getUserSubmissionState (int $user_id, array $assignment_ids)
 Checks if a user has submitted anything for a number of assignments. More...
 

Protected Attributes

const TABLE_NAME = "exc_returned"
 
const TEAM_TABLE_NAME = "il_exc_team"
 
ilDBInterface $db
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ILIAS\Exercise\Submission\SubmissionDBRepository::__construct ( \ilDBInterface  $db = null)

Definition at line 34 of file class.SubmissionDBRepository.php.

References ILIAS\Exercise\Submission\SubmissionDBRepository\$db, and $DIC.

35  {
36  global $DIC;
37 
38  $this->db = (is_null($db))
39  ? $DIC->database()
40  : $db;
41  }
global $DIC
Definition: feed.php:28

Member Function Documentation

◆ getUserId()

ILIAS\Exercise\Submission\SubmissionDBRepository::getUserId ( int  $submission_id)

Implements ILIAS\Exercise\Submission\SubmissionRepositoryInterface.

Definition at line 43 of file class.SubmissionDBRepository.php.

43  : int
44  {
45  $q = "SELECT user_id FROM " . self::TABLE_NAME .
46  " WHERE returned_id = " . $this->db->quote($submission_id, "integer");
47  $usr_set = $this->db->query($q);
48 
49  $rec = $this->db->fetchAssoc($usr_set);
50  return (int) ($rec["user_id"] ?? 0);
51  }

◆ getUserSubmissionState()

ILIAS\Exercise\Submission\SubmissionDBRepository::getUserSubmissionState ( int  $user_id,
array  $assignment_ids 
)

Checks if a user has submitted anything for a number of assignments.

This function should be performant, because it is being used for task determination. It assumes, that team db entries only exist for team assignment types and thus does not read the assignment types at all.

Definition at line 78 of file class.SubmissionDBRepository.php.

References ILIAS\Exercise\Submission\SubmissionDBRepository\$db, $id, ILIAS\Repository\int(), and ilDBInterface\queryF().

78  : array
79  {
80  $db = $this->db;
81 
82  $submitted = [];
83  foreach ($assignment_ids as $id) {
84  $submitted[(int) $id] = false;
85  }
86 
87  $set = $db->queryF(
88  "SELECT ass_id FROM " . self::TABLE_NAME .
89  " WHERE " . $db->in("ass_id", $assignment_ids, false, "integer") .
90  " AND user_id = %s " .
91  " AND (filename IS NOT NULL OR atext IS NOT NULL)" .
92  " AND ts IS NOT NULL",
93  ["integer"],
94  [$user_id]
95  );
96  while ($rec = $db->fetchAssoc($set)) {
97  $submitted[(int) $rec["ass_id"]] = true;
98  }
99 
100  $set = $db->queryF(
101  "SELECT ret.ass_id FROM " . self::TABLE_NAME . " ret JOIN " .
102  self::TEAM_TABLE_NAME . " team ON (ret.team_id = team.id AND ret.ass_id = team.ass_id) " .
103  " WHERE " . $db->in("ret.ass_id", $assignment_ids, false, "integer") .
104  " AND team.user_id = %s " .
105  " AND (ret.filename IS NOT NULL OR ret.atext IS NOT NULL)" .
106  " AND ret.ts IS NOT NULL",
107  ["integer"],
108  [$user_id]
109  );
110  while ($rec = $db->fetchAssoc($set)) {
111  $submitted[(int) $rec["ass_id"]] = true;
112  }
113 
114  return $submitted;
115  }
fetchAssoc(ilDBStatement $statement)
queryF(string $query, array $types, array $values)
in(string $field, array $values, bool $negate=false, string $type="")
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the call graph for this function:

◆ hasSubmissions()

ILIAS\Exercise\Submission\SubmissionDBRepository::hasSubmissions ( int  $assignment_id)

Implements ILIAS\Exercise\Submission\SubmissionRepositoryInterface.

Definition at line 53 of file class.SubmissionDBRepository.php.

References $query, and $res.

53  : int
54  {
55  $query = "SELECT * FROM " . self::TABLE_NAME .
56  " WHERE ass_id = " . $this->db->quote($assignment_id, "integer") .
57  " AND (filename IS NOT NULL OR atext IS NOT NULL)" .
58  " AND ts IS NOT NULL";
59  $res = $this->db->query($query);
60  return $res->numRows();
61  }
$res
Definition: ltiservices.php:69
$query

◆ updateWebDirAccessTime()

ILIAS\Exercise\Submission\SubmissionDBRepository::updateWebDirAccessTime ( int  $assignment_id,
int  $member_id 
)

Definition at line 64 of file class.SubmissionDBRepository.php.

References ilUtil\now().

64  : void
65  {
66  $this->db->manipulate("UPDATE " . self::TABLE_NAME .
67  " SET web_dir_access_time = " . $this->db->quote(\ilUtil::now(), "timestamp") .
68  " WHERE ass_id = " . $this->db->quote($assignment_id, "integer") .
69  " AND user_id = " . $this->db->quote($member_id, "integer"));
70  }
static now()
Return current timestamp in Y-m-d H:i:s format.
+ Here is the call graph for this function:

Field Documentation

◆ $db

◆ TABLE_NAME

const ILIAS\Exercise\Submission\SubmissionDBRepository::TABLE_NAME = "exc_returned"
protected

Definition at line 29 of file class.SubmissionDBRepository.php.

◆ TEAM_TABLE_NAME

const ILIAS\Exercise\Submission\SubmissionDBRepository::TEAM_TABLE_NAME = "il_exc_team"
protected

Definition at line 30 of file class.SubmissionDBRepository.php.


The documentation for this class was generated from the following file: