19 declare(strict_types=1);
30 protected \ilDBInterface
$db;
41 $this->db = (
$db) ?: $DIC->database();
42 $this->factory_service = (
$factory_service) ?: $DIC->skills()->internal()->factory();
43 $this->tree = (
$tree) ?: $DIC->repositoryTree();
49 public function getAll(
int $skill_id,
int $tref_id): array
55 "SELECT * FROM skl_skill_resource " .
56 " WHERE base_skill_id = " .
$ilDB->quote($skill_id,
"integer") .
57 " AND tref_id = " .
$ilDB->quote($tref_id,
"integer") .
61 while ($rec =
$ilDB->fetchAssoc($set)) {
62 if ($tree->isInTree((
int) $rec[
"rep_ref_id"])) {
72 $rec[
"base_skill_id"] = (
int) $rec[
"base_skill_id"];
73 $rec[
"tref_id"] = (
int) $rec[
"tref_id"];
74 $rec[
"level_id"] = (
int) $rec[
"level_id"];
75 $rec[
"rep_ref_id"] = (
int) $rec[
"rep_ref_id"];
76 $rec[
"imparting"] = (bool) $rec[
"imparting"];
77 $rec[
"ltrigger"] = (bool) $rec[
"ltrigger"];
79 return $this->factory_service->resource()->resource(
80 $rec[
"base_skill_id"],
100 "base_skill_id" => [
"integer", $skill_id],
101 "tref_id" => [
"integer", $tref_id],
102 "level_id" => [
"integer", $level_id],
103 "rep_ref_id" => [
"integer", $rep_ref_id]
106 "imparting" => [
"integer", (
int) $imparting],
107 "ltrigger" => [
"integer", (
int) $trigger]
120 "skl_skill_resource",
122 "imparting" => [
"integer", (
int) $imparting]
125 "base_skill_id" => [
"integer", $skill_id],
126 "tref_id" => [
"integer", $tref_id],
127 "level_id" => [
"integer", $level_id],
128 "rep_ref_id" => [
"integer", $rep_ref_id]
141 "skl_skill_resource",
143 "ltrigger" => [
"integer", (
int) $trigger]
146 "base_skill_id" => [
"integer", $skill_id],
147 "tref_id" => [
"integer", $tref_id],
148 "level_id" => [
"integer", $level_id],
149 "rep_ref_id" => [
"integer", $rep_ref_id]
154 public function remove(
int $skill_id,
int $tref_id,
int $level_id,
int $rep_ref_id):
void 156 $this->db->manipulate(
157 "DELETE FROM skl_skill_resource WHERE " .
158 " base_skill_id = " . $this->db->quote($skill_id,
"integer") .
159 " AND tref_id = " . $this->db->quote($tref_id,
"integer") .
160 " AND level_id = " . $this->db->quote($level_id,
"integer") .
161 " AND rep_ref_id = " . $this->db->quote($rep_ref_id,
"integer")
167 if (!$is_reference) {
168 $this->db->manipulate(
169 "DELETE FROM skl_skill_resource WHERE " .
170 " base_skill_id = " . $this->db->quote($skill_node_id,
"integer")
173 $this->db->manipulate(
174 "DELETE FROM skl_skill_resource WHERE " .
175 " tref_id = " . $this->db->quote($skill_node_id,
"integer")
185 $set = $this->db->query(
"SELECT * FROM skl_skill_resource " .
186 " WHERE rep_ref_id = " . $this->db->quote($rep_ref_id,
"integer") .
187 " AND ltrigger = " . $this->db->quote(1,
"integer"));
190 while ($rec = $this->db->fetchAssoc($set)) {
193 return $skill_levels;
198 $rec[
"base_skill_id"] = (
int) $rec[
"base_skill_id"];
199 $rec[
"tref_id"] = (
int) $rec[
"tref_id"];
200 $rec[
"level_id"] = (
int) $rec[
"level_id"];
202 return $this->factory_service->resource()->resourceLevel(
203 $rec[
"base_skill_id"],
getTriggerLevelsForRefId(int $rep_ref_id)
updateTrigger(int $skill_id, int $tref_id, int $level_id, int $rep_ref_id, bool $trigger)
removeForSkill(int $skill_node_id, bool $is_reference)
__construct(?\ilDBInterface $db=null, ?Service\SkillInternalFactoryService $factory_service=null, ?\ilTree $tree=null)
updateImparting(int $skill_id, int $tref_id, int $level_id, int $rep_ref_id, bool $imparting)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
getSkillResourceLevelFromRecord(array $rec)
Service SkillInternalFactoryService $factory_service
Skill internal factory service.
addOrUpdate(int $skill_id, int $tref_id, int $level_id, int $rep_ref_id, bool $imparting, bool $trigger)
getAll(int $skill_id, int $tref_id)
getSkillResourceFromRecord(array $rec)