ILIAS  release_8 Revision v8.24
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...
 
 getUserId (int $submission_id)
 
 hasSubmissions (int $assignment_id)
 

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.

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

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

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.

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 }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
fetchAssoc(ilDBStatement $statement)
queryF(string $query, array $types, array $values)
in(string $field, array $values, bool $negate=false, string $type="")

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

+ 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.

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

References $query, and $res.

◆ updateWebDirAccessTime()

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

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

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.

References ilUtil\now().

+ 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: