ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ContainerSkillDBRepository.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
24{
25 protected \ilDBInterface $db;
27
28 public function __construct(
29 ?\ilDBInterface $db = null,
31 ) {
32 global $DIC;
33
34 $this->db = ($db) ?: $DIC->database();
35 $this->factory_service = ($factory_service) ?: $DIC->skills()->internalContainer()->factory();
36 }
37
38 public function add(int $cont_obj_id, int $skill_id, int $tref_id): void
39 {
40 $this->db->replace(
41 "cont_skills",
42 [
43 "id" => ["integer", $cont_obj_id],
44 "skill_id" => ["integer", $skill_id],
45 "tref_id" => ["integer", $tref_id]
46 ],
47 []
48 );
49 }
50
51 public function remove(int $cont_obj_id, int $skill_id, int $tref_id): void
52 {
53 $this->db->manipulate(
54 "DELETE FROM cont_skills WHERE " .
55 " id = " . $this->db->quote($cont_obj_id, "integer") .
56 " AND skill_id = " . $this->db->quote($skill_id, "integer") .
57 " AND tref_id = " . $this->db->quote($tref_id, "integer")
58 );
59 }
60
61 public function removeForSkill(int $skill_node_id, bool $is_reference): void
62 {
63 if (!$is_reference) {
64 $this->db->manipulate("DELETE FROM cont_skills " .
65 " WHERE skill_id = " . $this->db->quote($skill_node_id, "integer"));
66 } else {
67 $this->db->manipulate("DELETE FROM cont_skills " .
68 " WHERE tref_id = " . $this->db->quote($skill_node_id, "integer"));
69 }
70 }
71
75 public function getAll(int $cont_obj_id): array
76 {
77 $skills = [];
78 $set = $this->db->query(
79 "SELECT * FROM cont_skills " .
80 " WHERE id = " . $this->db->quote($cont_obj_id, "integer")
81 );
82
83 while ($rec = $this->db->fetchAssoc($set)) {
84 $skills[] = $this->getContainerSkillFromRecord($rec);
85 }
86 return $skills;
87 }
88
89 protected function getContainerSkillFromRecord(array $rec): ContainerSkill
90 {
91 $rec["skill_id"] = (int) $rec["skill_id"];
92 $rec["tref_id"] = (int) $rec["tref_id"];
93 $rec["id"] = (int) $rec["id"];
94
95 return $this->factory_service->containerSkill()->skill(
96 $rec["skill_id"],
97 $rec["tref_id"],
98 $rec["id"]
99 );
100 }
101}
add(int $cont_obj_id, int $skill_id, int $tref_id)
__construct(?\ilDBInterface $db=null, ?SkillInternalFactoryService $factory_service=null,)
Interface ilDBInterface.
global $DIC
Definition: shib_login.php:26