ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
class.TreeTable.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\Skill\Table;
22
23use ILIAS\Data;
24use ILIAS\UI;
25use Psr\Http\Message\ServerRequestInterface;
29
34{
35 protected \ilCtrl $ctrl;
36 protected \ilLanguage $lng;
37 protected UI\Factory $ui_fac;
38 protected ServerRequestInterface $request;
39 protected Data\Factory $df;
44
45 public function __construct(int $ref_id)
46 {
47 global $DIC;
48
49 $this->ctrl = $DIC->ctrl();
50 $this->lng = $DIC->language();
51 $this->ui_fac = $DIC->ui()->factory();
52 $this->request = $DIC->http()->request();
53 $this->df = new Data\Factory();
54 $this->skill_manager = $DIC->skills()->internal()->manager();
55 $this->skill_management_access_manager = $this->skill_manager->getManagementAccessManager($ref_id);
56 $this->skill_tree_manager = $this->skill_manager->getTreeManager();
57 $this->skill_tree_factory = $DIC->skills()->internal()->factory()->tree();
58 }
59
60 public function getComponent(): UI\Component\Table\Data
61 {
62 $columns = $this->getColumns();
63 $actions = $this->getActions();
64 $data_retrieval = $this->getDataRetrieval();
65
66 $table = $this->ui_fac->table()
67 ->data($data_retrieval, $this->lng->txt("skmg_skill_trees"), $columns)
68 ->withId(self::class)
69 ->withActions($actions)
70 ->withRequest($this->request);
71
72 return $table;
73 }
74
75 protected function getColumns(): array
76 {
77 $columns = [
78 "title" => $this->ui_fac->table()->column()->link($this->lng->txt("title"))
79 ];
80
81 return $columns;
82 }
83
84 protected function getActions(): array
85 {
86 $query_params_namespace = ["skl_tree_table"];
87
88 $uri_delete = $this->df->uri(
89 ILIAS_HTTP_PATH . "/" . $this->ctrl->getLinkTargetByClass("ilobjskilltreegui", "delete")
90 );
91 $url_builder_delete = new UI\URLBuilder($uri_delete);
92 list($url_builder_delete, $action_parameter_token_delete, $row_id_token_delete) =
93 $url_builder_delete->acquireParameters(
94 $query_params_namespace,
95 "action",
96 "tree_ids"
97 );
98
99 $actions = [];
100 if ($this->skill_management_access_manager->hasCreateTreePermission()) {
101 $actions["delete"] = $this->ui_fac->table()->action()->multi(
102 $this->lng->txt("delete"),
103 $url_builder_delete->withParameter($action_parameter_token_delete, "deleteTrees"),
104 $row_id_token_delete
105 );
106 }
107
108 return $actions;
109 }
110
111 protected function getDataRetrieval(): UI\Component\Table\DataRetrieval
112 {
113 $data_retrieval = new class (
119 ) implements UI\Component\Table\DataRetrieval {
120 use TableRecords;
121
122 public function __construct(
126 protected UI\Factory $ui_fac,
127 protected \ilCtrl $ctrl
128 ) {
129 }
130
131 public function getRows(
132 UI\Component\Table\DataRowBuilder $row_builder,
133 array $visible_column_ids,
135 Data\Order $order,
136 mixed $additional_viewcontrol_data,
137 mixed $filter_data,
138 mixed $additional_parameters
139 ): \Generator {
140 $records = $this->getRecords($range, $order);
141 foreach ($records as $idx => $record) {
142 $row_id = (string) $record["tree_id"];
143
144 yield $row_builder->buildDataRow($row_id, $record);
145 }
146 }
147
148 public function getTotalRowCount(
149 mixed $additional_viewcontrol_data,
150 mixed $filter_data,
151 mixed $additional_parameters
152 ): ?int {
153 return count($this->getRecords());
154 }
155
156 protected function getRecords(?Data\Range $range = null, ?Data\Order $order = null): array
157 {
158 $items = array_filter(array_map(
159 function (\ilObjSkillTree $skillTree): array {
160 $tree_access_manager = $this->skill_manager->getTreeAccessManager($skillTree->getRefId());
161 if ($tree_access_manager->hasVisibleTreePermission()) {
162 return [
163 "tree" => $skillTree
164 ];
165 }
166 return [];
167 },
168 iterator_to_array($this->skill_tree_manager->getTrees())
169 ));
170
171 $records = [];
172 $i = 0;
173 foreach ($items as $item) {
175 $tree_obj = $item["tree"];
176 $tree = $this->skill_tree_factory->getTreeById($tree_obj->getId());
177 $records[$i]["tree_id"] = $tree->readRootId();
178 $this->ctrl->setParameterByClass("ilobjskilltreegui", "ref_id", $tree_obj->getRefId());
179 $records[$i]["title"] = $this->ui_fac->link()->standard(
180 $tree_obj->getTitle(),
181 $this->ctrl->getLinkTargetByClass("ilobjskilltreegui", "editSkills")
182 );
183 $this->ctrl->clearParameterByClass("ilobjskilltreegui", "ref_id");
184 $i++;
185 }
186
187 if ($order) {
188 $records = $this->orderRecords($records, $order);
189 }
190
191 if ($range) {
192 $records = $this->limitRecords($records, $range);
193 }
194
195 return $records;
196 }
197 };
198
199 return $data_retrieval;
200 }
201}
Builds a Color from either hex- or rgb values.
Definition: Factory.php:31
Both the subject and the direction need to be specified when expressing an order.
Definition: Order.php:29
A simple class to express a naive range of whole positive numbers.
Definition: Range.php:29
Access SkillManagementAccess $skill_management_access_manager
ServerRequestInterface $request
Service SkillInternalManagerService $skill_manager
Tree SkillTreeManager $skill_tree_manager
Tree SkillTreeFactory $skill_tree_factory
Definition: UI.php:24
Class ilCtrl provides processing control methods.
Skill tree object in skill management (repository object class)
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$ref_id
Definition: ltiauth.php:66
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
if(!file_exists('../ilias.ini.php'))
global $DIC
Definition: shib_login.php:26