ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
class.ilLTIConsumeProviderSettingsGUI.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
31 
33 {
34  public const CMD_SHOW_SETTINGS = 'showSettings';
35  public const CMD_SAVE_SETTINGS = 'saveSettings';
36 
41 
46 
48 
52  public function __construct(ilObjLTIConsumer $object, ilLTIConsumerAccess $access)
53  {
54  global $DIC;
55  $this->object = $object;
56  $this->access = $access;
57  $this->lom_services = $DIC->learningObjectMetadata();
58  }
59 
63  public function executeCommand(): void
64  {
65  global $DIC; /* @var \ILIAS\DI\Container $DIC */
66 
67  switch ($DIC->ctrl()->getNextClass()) {
68  default:
69 
70  $command = $DIC->ctrl()->getCmd(self::CMD_SHOW_SETTINGS) . 'Cmd';
71  $this->{$command}();
72  }
73  }
74 
75  protected function showSettingsCmd(ilLTIConsumeProviderFormGUI $form = null): void
76  {
77  global $DIC; /* @var \ILIAS\DI\Container $DIC */
78 
79  if ($form === null) {
80  $form = $this->buildForm($this->object->getProvider());
81  }
82 
83  $DIC->ui()->mainTemplate()->setContent($form->getHTML());
84  }
85 
86  protected function saveSettingsCmd(): void
87  {
88  global $DIC; /* @var \ILIAS\DI\Container $DIC */
89 
90  $provider = $this->object->getProvider();
91  $form = $this->buildForm($provider);
92  if ($form->checkInput()) {
93  $form->initProvider($provider);
94  $this->object->getProvider()->save();
95  $this->initMetadata($this->object);
96  $DIC->ctrl()->redirect($this, self::CMD_SHOW_SETTINGS);
97  }
98 
99  $this->showSettingsCmd($form);
100  }
101 
102 
106  public function initMetadata(\ilObject $object): void
107  {
108  // create LOM set from scratch
109  $this->lom_services->derive()
110  ->fromBasicProperties($object->getTitle())
111  ->forObject($object->getId(), $object->getId(), $object->getType());
112 
113  // in a second step, set the keywords
114  $keywords = [];
115  foreach ($object->getProvider()->getKeywordsArray() as $keyword) {
116  if ($keyword !== '') {
117  $keywords[] = $keyword;
118  }
119  }
120  $this->lom_services->manipulate($object->getId(), $object->getId(), $object->getType())
121  ->prepareCreateOrUpdate(
122  $this->lom_services->paths()->keywords(),
123  ...$keywords
124  )->execute();
125  }
126 
131  {
132  global $DIC; /* @var \ILIAS\DI\Container $DIC */
133 
134  $form = new ilLTIConsumeProviderFormGUI($provider);
135  $form->initForm(
136  $DIC->ctrl()->getFormAction($this),
137  self::CMD_SAVE_SETTINGS,
138  self::CMD_SHOW_SETTINGS
139  );
140 
141  return $form;
142  }
143 }
showSettingsCmd(ilLTIConsumeProviderFormGUI $form=null)
__construct(ilObjLTIConsumer $object, ilLTIConsumerAccess $access)
ilLTIConsumerAccess constructor.
$provider
Definition: ltitoken.php:80
global $DIC
Definition: shib_login.php:25