ILIAS  trunk Revision v11.0_alpha-2638-g80c1d007f79
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  bool $force_session_order_by_date = true
120  ): ItemSetManager {
121  if (!isset(self::$flat_item_set_managers[$ref_id])) {
122  self::$flat_item_set_managers[$ref_id] = new ItemSetManager(
123  $this->domain_service,
125  $ref_id,
126  $user_filter,
127  0,
128  false,
129  $force_session_order_by_date
130  );
131  }
132  return self::$flat_item_set_managers[$ref_id];
133  }
134 
138  public function itemSetTree(
139  int $ref_id,
140  ?\ilContainerUserFilter $user_filter
141  ): ItemSetManager {
142  if (!isset(self::$tree_item_set_managers[$ref_id])) {
143  self::$tree_item_set_managers[$ref_id] = new ItemSetManager(
144  $this->domain_service,
146  $ref_id,
147  $user_filter
148  );
149  }
150  return self::$tree_item_set_managers[$ref_id];
151  }
152 
156  public function itemSetSingle(int $ref_id, int $single_ref_id): ItemSetManager
157  {
158  return new ItemSetManager(
159  $this->domain_service,
161  $ref_id,
162  null,
163  $single_ref_id
164  );
165  }
166 
168  {
169  $view_mode = $container->getViewMode();
170  if ($container->filteredSubtree()) {
171  $view_mode = \ilContainer::VIEW_SIMPLE;
172  }
173  switch ($view_mode) {
174  case \ilContainer::VIEW_SIMPLE:
175  $container_view = new SimpleViewManager(
176  $this->data_service->content(),
178  $container
179  );
180  break;
181 
182  case \ilContainer::VIEW_OBJECTIVE:
183  $container_view = new ObjectiveViewManager(
184  $this->data_service->content(),
186  $container
187  );
188  break;
189 
190  // all items in one block
191  case \ilContainer::VIEW_SESSIONS:
192  case \ilCourseConstants::IL_CRS_VIEW_TIMING: // not nice this workaround
193  $container_view = new SessionsViewManager(
194  $this->data_service->content(),
196  $container
197  );
198  break;
199 
200  // all items in one block
201  case \ilContainer::VIEW_BY_TYPE:
202  default:
203  $container_view = new ByTypeViewManager(
204  $this->data_service->content(),
206  $container
207  );
208  break;
209  }
210 
211  return $container_view;
212  }
213 
222  {
223  if (!isset(self::$mode_managers[$container->getId()])) {
224  self::$mode_managers[$container->getId()] = new ModeManager(
225  $container,
226  $this->mode_repo,
227  $this->repo_clipboard,
228  $this->domain_service->user()->getId()
229  );
230  }
231  return self::$mode_managers[$container->getId()];
232  }
233 
237  public function filter(
238  array $objects,
239  ?\ilContainerUserFilter $container_user_filter,
240  bool $results_on_filter_only = false
241  ): FilterManager {
242  return new FilterManager(
243  $this,
244  $this->repo_service->content(),
245  $this->domain_service->metadata(),
246  $objects,
247  $container_user_filter,
248  $results_on_filter_only
249  );
250  }
251 
252  public function itemBlockSequenceGenerator(
254  BlockSequence $block_sequence,
255  ItemSetManager $item_set_manager,
256  bool $include_empty_blocks = true,
257  ?string $lang = null
258  ): ItemBlockSequenceGenerator {
259  return new ItemBlockSequenceGenerator(
260  $this->data_service->content(),
263  $container,
264  $block_sequence,
265  $item_set_manager,
266  $include_empty_blocks,
267  $lang
268  );
269  }
270 }
__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
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:26
itemPresentation(\ilContainer $container, ?\ilContainerUserFilter $container_user_filter, bool $include_empty_blocks=true, ?string $lang=null)
Manages item retrieval, filtering, grouping and sorting.
Class ilContainer.
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)
itemSetFlat(int $ref_id, ?\ilContainerUserFilter $user_filter, bool $force_session_order_by_date=true)
Manages set of conatiner items (flat version)
itemSetSingle(int $ref_id, int $single_ref_id)
Manages set of conatiner items (single item version)