ILIAS  trunk Revision v11.0_alpha-1769-g99a433fe2dc
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ILIAS\Object\Properties\MultiObjectPropertiesManipulator Class Reference
+ Collaboration diagram for ILIAS\Object\Properties\MultiObjectPropertiesManipulator:

Public Member Functions

 __construct (private readonly ObjectReferencePropertiesRepository $object_reference_properties_repo, private readonly \ilObjectPropertiesAgregator $properties_agregator, private readonly \ilLanguage $language, private readonly \ilCtrlInterface $ctrl, private readonly \ilObjUser $user, private readonly UIFactory $ui_factory, private readonly \ilGlobalTemplateInterface $tpl, private readonly Refinery $refinery)
 
 getAvailabilityPeriodButton ()
 
 getEditAvailabilityPeriodPropertiesModal (array $ref_ids, \ilObjectGUI $parent_gui)
 
 saveEditAvailabilityPeriodPropertiesModal (\ilObjectGUI $parent_gui, \Closure $check_access, ServerRequestInterface $request)
 

Private Member Functions

 buildModal (string $post_url, ?array $items=null, ?array $ref_ids=null, bool $all_settings_are_equal=false)
 
 buildForm (?int $ref_id_for_values)
 
 saveAvailabilityPeriodPropertyForObjectRefIds (array $object_reference_ids, ObjectAvailabilityPeriodProperty $property)
 
 areAllElementsEqual (array $ref_ids)
 
 getItemsForRefIds (array $object_reference_ids)
 

Detailed Description

Definition at line 32 of file MultiObjectPropertiesManipulator.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\Object\Properties\MultiObjectPropertiesManipulator::__construct ( private readonly ObjectReferencePropertiesRepository  $object_reference_properties_repo,
private readonly \ilObjectPropertiesAgregator  $properties_agregator,
private readonly \ilLanguage  $language,
private readonly \ilCtrlInterface  $ctrl,
private readonly \ilObjUser  $user,
private readonly UIFactory  $ui_factory,
private readonly \ilGlobalTemplateInterface  $tpl,
private readonly Refinery  $refinery 
)

Definition at line 34 of file MultiObjectPropertiesManipulator.php.

43  {
44  }

Member Function Documentation

◆ areAllElementsEqual()

ILIAS\Object\Properties\MultiObjectPropertiesManipulator::areAllElementsEqual ( array  $ref_ids)
private
Parameters
array<int>$ref_ids

Definition at line 174 of file MultiObjectPropertiesManipulator.php.

References $ref_id.

Referenced by ILIAS\Object\Properties\MultiObjectPropertiesManipulator\getEditAvailabilityPeriodPropertiesModal().

174  : bool
175  {
176  $previous_element = $this->object_reference_properties_repo->getFor(array_shift($ref_ids))->getPropertyAvailabilityPeriod();
177  foreach ($ref_ids as $ref_id) {
178  $current_element = $this->object_reference_properties_repo->getFor($ref_id)->getPropertyAvailabilityPeriod();
179  if ($current_element->getAvailabilityPeriodEnabled() === false
180  && $previous_element->getAvailabilityPeriodEnabled() === false) {
181  return true;
182  }
183 
184  if ($current_element->getAvailabilityPeriodEnabled() !== $previous_element->getAvailabilityPeriodEnabled()
185  || $current_element->getAvailabilityPeriodStart() != $previous_element->getAvailabilityPeriodStart()
186  || $current_element->getAvailabilityPeriodEnd() != $previous_element->getAvailabilityPeriodEnd()
187  || $current_element->getVisibleWhenDisabled() !== $previous_element->getVisibleWhenDisabled()) {
188  return false;
189  }
190  }
191  return true;
192  }
$ref_id
Definition: ltiauth.php:65
+ Here is the caller graph for this function:

◆ buildForm()

ILIAS\Object\Properties\MultiObjectPropertiesManipulator::buildForm ( ?int  $ref_id_for_values)
private
Returns
array<ILIAS>

Definition at line 138 of file MultiObjectPropertiesManipulator.php.

References ILIAS\UI\examples\Layout\Page\Standard\$refinery, ILIAS\UI\examples\Symbol\Glyph\Language\language(), and ILIAS\Repository\user().

Referenced by ILIAS\Object\Properties\MultiObjectPropertiesManipulator\buildModal().

138  : array
139  {
140  $data_factory = new DataFactory();
141  $date_format = $this->user->getDateFormat();
142  $environment = [
143  'user_time_zone' => $this->user->getTimeZone(),
144  'user_date_format' => $data_factory->dateFormat()->withTime24($date_format)
145  ];
146 
147  $input_fields = [];
148  $input_fields['enable_availability_period'] = $this->object_reference_properties_repo
149  ->getFor($ref_id_for_values)->getPropertyAvailabilityPeriod()->toForm(
150  $this->language,
151  $this->ui_factory->input()->field(),
153  $environment
154  );
155  $input_fields['affected_items'] = $this->ui_factory->input()->field()->hidden();
156 
157  return $input_fields;
158  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
language()
description: > Example for rendring a language glyph.
Definition: language.php:41
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildModal()

ILIAS\Object\Properties\MultiObjectPropertiesManipulator::buildModal ( string  $post_url,
?array  $items = null,
?array  $ref_ids = null,
bool  $all_settings_are_equal = false 
)
private

Definition at line 106 of file MultiObjectPropertiesManipulator.php.

References ILIAS\Object\Properties\MultiObjectPropertiesManipulator\buildForm(), ILIAS\UI\examples\Symbol\Glyph\Language\language(), and null.

Referenced by ILIAS\Object\Properties\MultiObjectPropertiesManipulator\getEditAvailabilityPeriodPropertiesModal(), and ILIAS\Object\Properties\MultiObjectPropertiesManipulator\saveEditAvailabilityPeriodPropertiesModal().

111  : RoundTripModal {
112  $ref_id_for_value = null;
113 
114  if ($ref_ids !== null && $all_settings_are_equal) {
115  $ref_id_for_value = $ref_ids[0];
116  }
117  $modal_factory = $this->ui_factory->modal();
118  $content = $items;
119 
120  $input_fields = $this->buildForm($ref_id_for_value);
121 
122  if ($ref_ids !== null) {
123  $input_fields['affected_items'] = $input_fields['affected_items']->withValue(implode(',', $ref_ids));
124  }
125 
126  if ($ref_ids !== null && !$all_settings_are_equal) {
127  $content = [
128  $this->ui_factory->messageBox()->info($this->language->txt('unequal_items_for_availability_period_message')),
129  ] + $items;
130  }
131  return $modal_factory->roundtrip($this->language->txt('edit_availability_period'), $content, $input_fields, $post_url);
132  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
language()
description: > Example for rendring a language glyph.
Definition: language.php:41
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAvailabilityPeriodButton()

ILIAS\Object\Properties\MultiObjectPropertiesManipulator::getAvailabilityPeriodButton ( )

Definition at line 46 of file MultiObjectPropertiesManipulator.php.

References $id, ILIAS\UI\examples\Symbol\Glyph\Language\language(), and ILIAS\UI\Implementation\Component\withAdditionalOnLoadCode().

47  {
48  $on_load_code = function ($id) {
49  return "document.getElementById('$id')"
50  . '.addEventListener("click", '
51  . '(e) => {e.preventDefault();'
52  . 'e.target.setAttribute("name", "cmd[editAvailabilityPeriod]");'
53  . 'e.target.form.requestSubmit(e.target);});';
54  };
55 
56  return $this->ui_factory->button()->standard(
57  $this->language->txt('edit_availability_period'),
58  ''
59  )->withAdditionalOnLoadCode($on_load_code);
60  }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
language()
description: > Example for rendring a language glyph.
Definition: language.php:41
+ Here is the call graph for this function:

◆ getEditAvailabilityPeriodPropertiesModal()

ILIAS\Object\Properties\MultiObjectPropertiesManipulator::getEditAvailabilityPeriodPropertiesModal ( array  $ref_ids,
\ilObjectGUI  $parent_gui 
)

Definition at line 62 of file MultiObjectPropertiesManipulator.php.

References ILIAS\Object\Properties\MultiObjectPropertiesManipulator\areAllElementsEqual(), ILIAS\Object\Properties\MultiObjectPropertiesManipulator\buildModal(), ILIAS\Repository\ctrl(), ILIAS\Object\Properties\MultiObjectPropertiesManipulator\getItemsForRefIds(), ILIAS\UI\examples\Symbol\Glyph\Language\language(), and null.

65  : ?RoundTripModal {
66  if ($ref_ids === []) {
67  $this->tpl->setOnScreenMessage('failure', $this->language->txt('no_objects_selected'));
68  return null;
69  }
70 
71  $this->object_reference_properties_repo->preload($ref_ids);
72  $this->properties_agregator->preload($ref_ids);
73 
74  $items = $this->getItemsForRefIds($ref_ids);
75 
76  $post_url = $this->ctrl->getFormAction($parent_gui, 'saveAvailabilityPeriod');
77 
78  return $this->buildModal($post_url, $items, $ref_ids, $this->areAllElementsEqual($ref_ids));
79  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
language()
description: > Example for rendring a language glyph.
Definition: language.php:41
buildModal(string $post_url, ?array $items=null, ?array $ref_ids=null, bool $all_settings_are_equal=false)
+ Here is the call graph for this function:

◆ getItemsForRefIds()

ILIAS\Object\Properties\MultiObjectPropertiesManipulator::getItemsForRefIds ( array  $object_reference_ids)
private
Parameters
array<int>$ref_ids
Returns
array<ILIAS>

Definition at line 198 of file MultiObjectPropertiesManipulator.php.

Referenced by ILIAS\Object\Properties\MultiObjectPropertiesManipulator\getEditAvailabilityPeriodPropertiesModal().

198  : array
199  {
200  $items = [];
201  foreach ($object_reference_ids as $object_reference_id) {
202  $object_id = $this->object_reference_properties_repo->getFor(
203  $object_reference_id
204  )->getObjectId();
205  $object_properties = $this->properties_agregator->getFor(
206  $object_id
207  );
208  $title = $object_properties->getPropertyTitleAndDescription()->getTitle();
209  $icon = $this->ui_factory->symbol()->icon()->custom(
210  \ilObject::getIconForReference($object_reference_id, $object_id, ''),
211  $title
212  );
213  $key = 'obj_' . $object_reference_id;
214  $items[$key] = $this->ui_factory->item()->shy($title)->withLeadIcon($icon);
215  }
216  return $items;
217  }
+ Here is the caller graph for this function:

◆ saveAvailabilityPeriodPropertyForObjectRefIds()

ILIAS\Object\Properties\MultiObjectPropertiesManipulator::saveAvailabilityPeriodPropertyForObjectRefIds ( array  $object_reference_ids,
ObjectAvailabilityPeriodProperty  $property 
)
private

Definition at line 160 of file MultiObjectPropertiesManipulator.php.

References ILIAS\Object\Properties\ObjectReferenceProperties\ObjectAvailabilityPeriodProperty\withObjectReferenceId().

Referenced by ILIAS\Object\Properties\MultiObjectPropertiesManipulator\saveEditAvailabilityPeriodPropertiesModal().

163  : void {
164  foreach ($object_reference_ids as $object_reference_id) {
165  $this->object_reference_properties_repo->storePropertyAvailabilityPeriod(
166  $property->withObjectReferenceId($object_reference_id)
167  );
168  }
169  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveEditAvailabilityPeriodPropertiesModal()

ILIAS\Object\Properties\MultiObjectPropertiesManipulator::saveEditAvailabilityPeriodPropertiesModal ( \ilObjectGUI  $parent_gui,
\Closure  $check_access,
ServerRequestInterface  $request 
)

Definition at line 81 of file MultiObjectPropertiesManipulator.php.

References $data, ILIAS\Object\Properties\MultiObjectPropertiesManipulator\buildModal(), ILIAS\Repository\ctrl(), null, ILIAS\Repository\refinery(), ILIAS\Object\Properties\MultiObjectPropertiesManipulator\saveAvailabilityPeriodPropertyForObjectRefIds(), and ILIAS\Refinery\transform().

85  : RoundTripModal|bool {
86  $post_url = $this->ctrl->getFormAction($parent_gui, 'saveAvailabilityPeriod');
87  $availability_period_modal = $this->buildModal($post_url)
88  ->withRequest($request);
89  $data = $availability_period_modal->getData();
90  if ($data === null) {
91  return $availability_period_modal;
92  }
93  $ref_ids = $this->refinery->kindlyTo()->listOf($this->refinery->kindlyTo()->int())->transform(
94  explode(',', $data['affected_items'])
95  );
96 
97  if (!$check_access($ref_ids)) {
98  return false;
99  }
100 
101  $availability_period_property = $data['enable_availability_period'];
102  $this->saveAvailabilityPeriodPropertyForObjectRefIds($ref_ids, $availability_period_property);
103  return true;
104  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
buildModal(string $post_url, ?array $items=null, ?array $ref_ids=null, bool $all_settings_are_equal=false)
saveAvailabilityPeriodPropertyForObjectRefIds(array $object_reference_ids, ObjectAvailabilityPeriodProperty $property)
+ Here is the call graph for this function:

The documentation for this class was generated from the following file: