ILIAS  trunk Revision v11.0_alpha-1811-gd2d5443e411
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
class.DomainService.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
21 namespace ILIAS\Container\Content;
22 
28 
33 {
34  protected \ILIAS\COPage\PC\Resources\ResourcesManager $copage_resources;
35  protected \ILIAS\Repository\Clipboard\ClipboardManager $repo_clipboard;
36  protected InternalRepoService $repo_service;
37  protected InternalDataService $data_service;
39 
45  protected static array $mode_managers = [];
46 
50  protected static array $flat_item_set_managers = [];
51 
55  protected static array $tree_item_set_managers = [];
56 
57  public function __construct(
58  InternalRepoService $repo_service,
59  InternalDataService $data_service,
60  InternalDomainService $domain_service
61  ) {
62  global $DIC;
63 
64  $this->repo_clipboard = $DIC
65  ->repository()
66  ->internal()
67  ->domain()
68  ->clipboard();
69 
70  $this->repo_service = $repo_service;
71  $this->data_service = $data_service;
72  $this->domain_service = $domain_service;
73  $this->item_repo = $this->repo_service->content()->item();
74  $this->mode_repo = $this->repo_service->content()->mode();
75  $this->copage_resources = $DIC->copage()->internal()->domain()->pc()->resources();
76  }
77 
82  {
83  // @todo get rid of $DIC/request call here -> move to gui
84  global $DIC;
85 
86  return new ItemManager(
87  $container,
88  $this->item_repo,
89  $this->mode($container),
90  $DIC->container()->internal()->gui()->standardRequest()
91  );
92  }
93 
97  public function itemPresentation(
99  ?\ilContainerUserFilter $container_user_filter,
100  bool $include_empty_blocks = true,
101  ?string $lang = null
103  return new ItemPresentationManager(
104  $this->domain_service,
105  $container,
106  $container_user_filter,
107  $this->repo_clipboard,
108  $include_empty_blocks,
109  $lang
110  );
111  }
112 
116  public function itemSetFlat(
117  int $ref_id,
118  ?\ilContainerUserFilter $user_filter
119  ): ItemSetManager {
120  if (!isset(self::$flat_item_set_managers[$ref_id])) {
121  self::$flat_item_set_managers[$ref_id] = new ItemSetManager(
122  $this->domain_service,
124  $ref_id,
125  $user_filter
126  );
127  }
128  return self::$flat_item_set_managers[$ref_id];
129  }
130 
134  public function itemSetTree(
135  int $ref_id,
136  ?\ilContainerUserFilter $user_filter
137  ): ItemSetManager {
138  if (!isset(self::$tree_item_set_managers[$ref_id])) {
139  self::$tree_item_set_managers[$ref_id] = new ItemSetManager(
140  $this->domain_service,
142  $ref_id,
143  $user_filter
144  );
145  }
146  return self::$tree_item_set_managers[$ref_id];
147  }
148 
152  public function itemSetSingle(int $ref_id, int $single_ref_id): ItemSetManager
153  {
154  return new ItemSetManager(
155  $this->domain_service,
157  $ref_id,
158  null,
159  $single_ref_id
160  );
161  }
162 
164  {
165  $view_mode = $container->getViewMode();
166  if ($container->filteredSubtree()) {
167  $view_mode = \ilContainer::VIEW_SIMPLE;
168  }
169  switch ($view_mode) {
170  case \ilContainer::VIEW_SIMPLE:
171  $container_view = new SimpleViewManager(
172  $this->data_service->content(),
174  $container
175  );
176  break;
177 
178  case \ilContainer::VIEW_OBJECTIVE:
179  $container_view = new ObjectiveViewManager(
180  $this->data_service->content(),
182  $container
183  );
184  break;
185 
186  // all items in one block
187  case \ilContainer::VIEW_SESSIONS:
188  case \ilCourseConstants::IL_CRS_VIEW_TIMING: // not nice this workaround
189  $container_view = new SessionsViewManager(
190  $this->data_service->content(),
192  $container
193  );
194  break;
195 
196  // all items in one block
197  case \ilContainer::VIEW_BY_TYPE:
198  default:
199  $container_view = new ByTypeViewManager(
200  $this->data_service->content(),
202  $container
203  );
204  break;
205  }
206 
207  return $container_view;
208  }
209 
218  {
219  if (!isset(self::$mode_managers[$container->getId()])) {
220  self::$mode_managers[$container->getId()] = new ModeManager(
221  $container,
222  $this->mode_repo,
223  $this->repo_clipboard,
224  $this->domain_service->user()->getId()
225  );
226  }
227  return self::$mode_managers[$container->getId()];
228  }
229 
233  public function filter(
234  array $objects,
235  ?\ilContainerUserFilter $container_user_filter,
236  bool $results_on_filter_only = false
237  ): FilterManager {
238  return new FilterManager(
239  $this,
240  $this->repo_service->content(),
241  $this->domain_service->metadata(),
242  $objects,
243  $container_user_filter,
244  $results_on_filter_only
245  );
246  }
247 
248  public function itemBlockSequenceGenerator(
250  BlockSequence $block_sequence,
251  ItemSetManager $item_set_manager,
252  bool $include_empty_blocks = true,
253  ?string $lang = null
254  ): ItemBlockSequenceGenerator {
255  return new ItemBlockSequenceGenerator(
256  $this->data_service->content(),
259  $container,
260  $block_sequence,
261  $item_set_manager,
262  $include_empty_blocks,
263  $lang
264  );
265  }
266 }
__construct(InternalRepoService $repo_service, InternalDataService $data_service, InternalDomainService $domain_service)
items(\ilContainer $container)
Controls item state (e.g.
filteredSubtree()
Note grp/crs currently allow to filter in their whole subtrees Catetories only their direct childs...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ILIAS COPage PC Resources ResourcesManager $copage_resources
ILIAS Repository Clipboard ClipboardManager $repo_clipboard
$container
Definition: wac.php:36
itemSetFlat(int $ref_id, ?\ilContainerUserFilter $user_filter)
Manages set of conatiner items (flat version)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
itemBlockSequenceGenerator(\ilContainer $container, BlockSequence $block_sequence, ItemSetManager $item_set_manager, bool $include_empty_blocks=true, ?string $lang=null)
$ref_id
Definition: ltiauth.php:65
mode(\ilContainer $container)
Controls admin/content view state Note: The node manager currently holds "state". ...
global $DIC
Definition: shib_login.php:22
itemPresentation(\ilContainer $container, ?\ilContainerUserFilter $container_user_filter, bool $include_empty_blocks=true, ?string $lang=null)
Manages item retrieval, filtering, grouping and sorting.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
itemSetTree(int $ref_id, ?\ilContainerUserFilter $user_filter)
Manages set of conatiner items (flat version)
$lang
Definition: xapiexit.php:25
filter(array $objects, ?\ilContainerUserFilter $container_user_filter, bool $results_on_filter_only=false)
itemSetSingle(int $ref_id, int $single_ref_id)
Manages set of conatiner items (single item version)