ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilObjLearningSequenceGUI.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
36 {
37  const CMD_VIEW = "view";
38  const CMD_LEARNER_VIEW = "learnerView";
39  const CMD_CONTENT = "manageContent";
40 
41  const CMD_MEMBERS = "members";
42  const CMD_MANAGE_MEMBERS = "participants";
43  const CMD_MEMBERS_GALLERY = "jump2UsersGallery";
44 
45  const CMD_INFO = "showSummary";
46  const CMD_INFO_SCREEN = "infoScreen";
47  const CMD_SETTINGS = "settings";
48  const CMD_PERMISSIONS = "perm";
49  const CMD_LP = "learningProgress";
50  const CMD_EXPORT = "export";
51  const CMD_IMPORT = "importFile";
52  const CMD_CREATE = "create";
53  const CMD_SAVE = "save";
54  const CMD_CANCEL = "cancel";
55  const CMD_UNPARTICIPATE = "unparticipate";
56  const CMD_ADD_TO_DESK = "addToDesk";
57  const CMD_REMOVE_FROM_DESK = "removeFromDesk";
58  const CMD_LINK = "link";
59  const CMD_CANCEL_LINK = "cancelMoveLink";
60  const CMD_CUT = "cut";
61  const CMD_CANCEL_CUT = "cancelCut";
62  const CMD_CUT_SHOWTREE = "showPasteTree";
63  const CMD_CUT_CLIPBOARD = "keepObjectsInClipboard";
64  const CMD_DELETE = "delete";
65  const CMD_CANCEL_DELETE = "cancelDelete";
66  const CMD_DELETE_CONFIRMED = "confirmedDelete";
67  const CMD_PERFORM_PASTE = 'performPasteIntoMultipleObjects';
68  const CMD_SHOW_TRASH = 'trash';
69  const CMD_UNDELETE = 'undelete';
70  const CMD_REDRAW_HEADER = 'redrawHeaderAction';
71 
72  const TAB_VIEW_CONTENT = "view_content";
73  const TAB_MANAGE = "manage";
74  const TAB_CONTENT_MAIN = "manage_content_maintab";
75  const TAB_INFO = "show_summary";
76  const TAB_SETTINGS = "settings";
77  const TAB_PERMISSIONS = "perm_settings";
78  const TAB_MEMBERS = "members";
79  const TAB_LP = "learning_progress";
80  const TAB_EXPORT = "export";
81 
82  const MAIL_ALLOWED_ALL = 1;
84 
85  const ACCESS_READ = 'read';
86  const ACCESS_VISIBLE = 'visible';
87 
88  public $object;
89 
90  public static function _goto(string $target)
91  {
92  global $DIC;
93 
94  $request = $DIC->http()->request();
95  $lng = $DIC->language();
96  $err = $DIC['ilErr'];
97 
98  $targetParameters = explode('_', $target);
99  $id = (int) $targetParameters[0];
100 
101  if (!self::isAccessible($id)) {
102  $err->raiseError($lng->txt('msg_no_perm_read'), $err->FATAL);
103  }
104 
105  if (self::hasAccess(self::ACCESS_READ, $id)) {
106  $params = ['ref_id' => $id];
107 
108  if (isset($request->getQueryParams()['gotolp'])) {
109  $params['gotolp'] = 1;
110  }
111 
112  self::forwardByClass(
113  ilRepositoryGUI::class,
114  [ilRepositoryGUI::class, ilObjLearningSequenceGUI::class],
115  $params,
116  self::CMD_VIEW
117  );
118  }
119 
120  if (self::hasAccess(self::ACCESS_VISIBLE, $id)) {
121  ilObjectGUI::_gotoRepositoryNode($target, 'infoScreen');
122  }
123 
124  if (self::hasAccess(self::ACCESS_READ, ROOT_FOLDER_ID)) {
125  ilUtil::sendInfo(sprintf(
126  $lng->txt('msg_no_perm_read_item'),
128  ), true);
129 
130  self::forwardByClass(ilRepositoryGUI::class, [ilRepositoryGUI::class], ['ref_id' => ROOT_FOLDER_ID]);
131  }
132  }
133 
134  protected static function isAccessible(int $id) : bool
135  {
136  return $id > 0 && (
137  self::hasAccess(self::ACCESS_READ, $id) ||
138  self::hasAccess(self::ACCESS_VISIBLE, $id) ||
139  self::hasAccess(self::ACCESS_READ, ROOT_FOLDER_ID)
140  );
141  }
142 
143  protected static function hasAccess(string $mode, int $id) : bool
144  {
145  global $DIC;
146  return $DIC->access()->checkAccess($mode, '', $id);
147  }
148 
149  protected static function forwardByClass(string $base_class, array $classes, array $params, string $cmd = '')
150  {
151  global $DIC;
152  $ctrl = $DIC->ctrl();
153  $target_class = end($classes);
154 
155  $ctrl->setTargetScript('ilias.php');
156  $ctrl->initBaseClass($base_class);
157 
158  foreach ($params as $key => $value) {
159  $ctrl->setParameterByClass($target_class, $key, $value);
160  }
161 
162  $ctrl->redirectByClass($classes, $cmd);
163  }
164 
165  public function __construct()
166  {
167  $this->ref_id = (int) $_GET['ref_id'];
168  parent::__construct([], $this->ref_id, true, false);
169 
170  $this->obj_type = ilObjLearningSequence::OBJ_TYPE;
171 
172  global $DIC;
173  $this->ctrl = $DIC['ilCtrl'];
174  $this->lng = $DIC['lng'];
175  $this->user = $DIC['ilUser'];
176  $this->tabs = $DIC['ilTabs'];
177  $this->toolbar = $DIC['ilToolbar'];
178  $this->help = $DIC['ilHelp'];
179  $this->settings = $DIC['ilSetting'];
180  $this->access = $DIC['ilAccess'];
181  $this->rbac_review = $DIC['rbacreview'];
182  $this->ui_factory = $DIC['ui.factory'];
183  $this->ui_renderer = $DIC['ui.renderer'];
184 
185  $this->log = $DIC["ilLoggerFactory"]->getRootLogger();
186  $this->app_event_handler = $DIC['ilAppEventHandler'];
187  $this->navigation_history = $DIC['ilNavigationHistory'];
188  $this->obj_definition = $DIC['objDefinition'];
189  $this->tpl = $DIC["tpl"];
190  $this->obj_service = $DIC->object();
191  $this->toolbar = $DIC['ilToolbar'];
192 
193  $this->help->setScreenIdComponent($this->obj_type);
194  $this->lng->loadLanguageModule($this->obj_type);
195 
196  $this->object = $this->getObject();
197  $this->data_factory = new \ILIAS\Data\Factory();
198  }
199 
200  protected function recordLearningSequenceRead()
201  {
203  $this->object->getType(),
204  $this->object->getRefId(),
205  $this->object->getId(),
206  $this->user->getId()
207  );
208  }
209 
210  public function executeCommand()
211  {
212  $next_class = $this->ctrl->getNextClass($this);
213  $cmd = $this->ctrl->getCmd();
214  $tpl = $this->tpl;
215 
216  parent::prepareOutput();
217  $this->addToNavigationHistory();
218  //showRepTree is from containerGUI;
219  //LSO will attach allowed subitems to whitelist
220  //see: $this::getAdditionalWhitelistTypes
221 
222  $in_player = (
223  $next_class === 'ilobjlearningsequencelearnergui'
224  && $cmd === 'view'
225  );
226 
227  $tpl->setPermanentLink("lso", $this->ref_id);
228 
229  switch ($next_class) {
230  case "ilcommonactiondispatchergui":
232  $this->ctrl->forwardCommand($gui);
233  break;
234  case "ilinfoscreengui":
235  $this->info($cmd);
236  break;
237  case "ilpermissiongui":
238  $this->permissions($cmd);
239  break;
240  case "ilobjlearningsequencesettingsgui":
241  $this->settings($cmd);
242  break;
243  case "ilobjlearningsequencecontentgui":
244  $this->manageContent($cmd);
245  break;
246  case "ilobjlearningsequencelearnergui":
247  $this->learnerView($cmd);
248  break;
249  case "illearningsequencemembershipgui":
250  $this->manage_members($cmd);
251  break;
252  case 'ilmailmembersearchgui':
253  $this->mail();
254  break;
255  case 'illearningprogressgui':
256  $this->learningProgress($cmd);
257  break;
258  case 'ilexportgui':
259  $this->export();
260  break;
261  case 'ilobjectcopygui':
262  $cp = new ilObjectCopyGUI($this);
263  $cp->setType('lso');
264  $this->ctrl->forwardCommand($cp);
265  break;
266  case 'ilobjindividualassessmentgui':
267  $struct = ['ilrepositorygui','ilobjindividualassessmentgui'];
268  if ($cmd === 'edit') {
269  $struct[] = 'ilindividualassessmentsettingsgui';
270  }
271  $this->ctrl->redirectByClass($struct, $cmd);
272  break;
273  case 'ilobjtestgui':
274  $struct = ['ilrepositorygui','ilobjtestgui'];
275  $this->ctrl->redirectByClass($struct, $cmd);
276  break;
277 
278  case false:
279  if ($cmd === '') {
280  $cmd = self::CMD_VIEW;
281  }
282 
283  switch ($cmd) {
284  case self::CMD_IMPORT:
285  $this->importFileObject();
286  break;
287  case self::CMD_INFO:
288  case self::CMD_INFO_SCREEN:
289  $this->info();
290  break;
291  case self::CMD_VIEW:
292  case self::CMD_LEARNER_VIEW:
293  case self::CMD_CONTENT:
294  case self::CMD_MEMBERS:
295  case self::CMD_SETTINGS:
296  case self::CMD_SAVE:
297  case self::CMD_CREATE:
298  case self::CMD_LP:
299  case self::CMD_UNPARTICIPATE:
300  $this->$cmd();
301  break;
302  case self::CMD_CANCEL:
303  if ($this->getCreationMode()) {
304  $this->cancelCreation();
305  }
306  break;
307  case self::CMD_REMOVE_FROM_DESK:
308  $this->removeFromDeskObject();
309  $this->view();
310  break;
311  case self::CMD_ADD_TO_DESK:
312  $this->addToDeskObject();
313  $this->view();
314  break;
315  case self::CMD_CUT:
316  $this->cutObject();
317  break;
318  case self::CMD_CUT_SHOWTREE:
319  $this->showPasteTreeObject();
320  break;
321  case self::CMD_CUT_CLIPBOARD:
323  break;
324  case self::CMD_LINK:
325  $this->linkObject();
326  break;
327  case self::CMD_DELETE:
328  $this->deleteObject();
329  break;
330  case self::CMD_DELETE_CONFIRMED:
331  $this->confirmedDeleteObject();
332  break;
333  case self::CMD_PERFORM_PASTE:
335  break;
336  case self::CMD_SHOW_TRASH:
337  $this->trashObject();
338  break;
339  case self::CMD_UNDELETE:
340  $this->undeleteObject();
341  break;
342 
343  case self::CMD_CANCEL_CUT:
344  case self::CMD_CANCEL_DELETE:
345  case self::CMD_CANCEL_LINK:
346  $cmd = self::CMD_CONTENT;
347  $this->$cmd();
348  break;
349 
350  case self::CMD_REDRAW_HEADER:
351  $this->redrawHeaderActionObject();
352  break;
353 
354  default:
355  throw new ilException("ilObjLearningSequenceGUI: Invalid command '$cmd'");
356  }
357  break;
358  default:
359  throw new ilException("ilObjLearningSequenceGUI: Can't forward to next class $next_class");
360  }
361 
362  if (!$in_player) {
363  $this->addHeaderAction();
364  }
365  }
366 
367  public function addToNavigationHistory()
368  {
369  if (
370  !$this->getCreationMode() &&
371  $this->access->checkAccess('read', '', $this->ref_id)
372  ) {
373  $link = ilLink::_getLink($this->ref_id, $this->obj_type);
374  $this->navigation_history->addItem($this->ref_id, $link, $this->obj_type);
375  }
376  }
377 
378  protected function info(string $cmd = self::CMD_INFO)
379  {
380  $this->tabs->setTabActive(self::TAB_INFO);
381  $this->ctrl->setCmdClass('ilinfoscreengui');
382  $this->ctrl->setCmd($cmd);
383  $info = new ilInfoScreenGUI($this);
384  $this->ctrl->forwardCommand($info);
385  }
386 
387  protected function permissions(string $cmd = self::CMD_PERMISSIONS)
388  {
389  $this->tabs->setTabActive(self::TAB_PERMISSIONS);
390  $perm_gui = new ilPermissionGUI($this);
391  $this->ctrl->setCmd($cmd);
392  $this->ctrl->forwardCommand($perm_gui);
393  }
394 
395  protected function settings(string $cmd = self::CMD_SETTINGS)
396  {
397  $this->tabs->activateTab(self::TAB_SETTINGS);
399  $this->getObject(),
400  $this->ctrl,
401  $this->lng,
402  $this->tpl,
403  $this->obj_service
404  );
405  $this->ctrl->setCmd($cmd);
406  $this->ctrl->forwardCommand($gui);
407  }
408 
409  protected function view()
410  {
411  $this->tabs->clearSubTabs();
412  if ($this->checkAccess("write")) {
413  $this->manageContent(self::CMD_CONTENT);
414  return;
415  }
416  if ($this->checkAccess("read")) {
417  $this->learnerView(self::CMD_LEARNER_VIEW);
419  return;
420  }
421  $this->info(self::CMD_INFO);
423  }
424 
425  protected function manageContent(string $cmd = self::CMD_CONTENT)
426  {
427  $this->tabs->activateTab(self::TAB_CONTENT_MAIN);
428  $this->addSubTabsForContent($cmd);
429  $this->tabs->activateSubTab(self::TAB_MANAGE);
430 
432  $this,
433  $this->ctrl,
434  $this->tpl,
435  $this->lng,
436  $this->access,
437  new ilConfirmationGUI(),
438  new LSItemOnlineStatus()
439  );
440  $this->ctrl->setCmd($cmd);
441  $this->ctrl->forwardCommand($gui);
442  }
443 
444  protected function learnerView(string $cmd = self::CMD_LEARNER_VIEW)
445  {
446  $this->tabs->activateTab(self::TAB_CONTENT_MAIN);
447  $this->addSubTabsForContent($cmd);
448  $this->tabs->activateSubTab(self::TAB_VIEW_CONTENT);
449 
450  $gui = $this->object->getLocalDI()["gui.learner"];
451 
452  $this->ctrl->setCmd($cmd);
453  $this->ctrl->forwardCommand($gui);
454  }
455 
456  protected function members()
457  {
458  $may_manage_members = $this->checkAccess("edit_members");
459  $this->ctrl->setCmdClass('ilLearningSequenceMembershipGUI');
460  if ($may_manage_members) {
461  $this->manage_members(self::CMD_MANAGE_MEMBERS);
462  } else {
463  $this->manage_members(self::CMD_MEMBERS_GALLERY);
464  }
465  }
466 
467  protected function manage_members(string $cmd = self::CMD_MANAGE_MEMBERS)
468  {
469  $this->tabs->setTabActive(self::TAB_MEMBERS);
470 
471  $ms_gui = new ilLearningSequenceMembershipGUI(
472  $this,
473  $this->getObject(),
474  $this->getTrackingObject(),
476  $this->lng,
477  $this->ctrl,
478  $this->access,
479  $this->rbac_review,
480  $this->settings,
481  $this->toolbar
482  );
483 
484  $this->ctrl->setCmd($cmd);
485  $this->ctrl->forwardCommand($ms_gui);
486  }
487 
488  protected function learningProgress(string $cmd = self::CMD_LP)
489  {
490  $this->tabs->setTabActive(self::TAB_LP);
491 
492  $for_user = $this->user->getId();
493 
494  if ($_GET['user_id']) {
495  $for_user = $_GET['user_id'];
496  }
497 
498  $lp_gui = new ilLearningProgressGUI(
500  $this->getObject()->getRefId(),
501  $for_user
502  );
503 
504  if ($cmd === self::CMD_LP) {
505  $cmd = '';
506  }
507 
508  $this->ctrl->setCmd($cmd);
509  $this->ctrl->forwardCommand($lp_gui);
510  }
511 
512  protected function export()
513  {
514  $this->tabs->setTabActive(self::TAB_EXPORT);
515  $gui = new ilExportGUI($this);
516  $gui->addFormat("xml");
517 
518  $this->ctrl->forwardCommand($gui);
519  }
520 
521  protected function initDidacticTemplate(ilPropertyFormGUI $form)
522  {
523  return $form;
524  }
525 
526  protected function create()
527  {
528  parent::createObject();
529  }
530 
531  protected function save()
532  {
533  parent::saveObject();
534  }
535 
536  protected function afterSave(ilObject $new_object)
537  {
538  $participant = new ilLearningSequenceParticipants(
539  (int) $new_object->getId(),
540  $this->log,
543  );
544 
545  $participant->add($this->user->getId(), IL_LSO_ADMIN);
546  $participant->updateNotification($this->user->getId(), $this->settings->get('mail_lso_admin_notification', true));
547 
548 
549  $settings = new \ilContainerSortingSettings($new_object->getId());
550  $settings->setSortMode(\ilContainer::SORT_MANUAL);
551  $settings->setSortDirection(\ilContainer::SORT_DIRECTION_ASC);
553  $settings->setSortNewItemsPosition(\ilContainer::SORT_NEW_ITEMS_POSITION_BOTTOM);
554  $settings->save();
555 
556  ilUtil::sendSuccess($this->lng->txt('object_added'), true);
557  $this->ctrl->setParameter($this, "ref_id", $new_object->getRefId());
559  $this->getReturnLocation(
560  "save",
561  $this->ctrl->getLinkTarget($this, self::CMD_SETTINGS, "", false, false)
562  )
563  );
564  }
565 
566  public function unparticipate()
567  {
568  if ($this->checkAccess('unparticipate')) {
569  $usr_id = (int) $this->user->getId();
570  $this->getObject()->getLSRoles()->leave($usr_id);
571  $this->learnerView();
572  }
573  }
574 
575  protected function removeMember(int $usr_id)
576  {
577  $this->ls_object->leave($usr_id);
578  }
579 
580  public function getTabs()
581  {
582  if ($this->checkAccess("read")) {
583  $this->tabs->addTab(
584  self::TAB_CONTENT_MAIN,
585  $this->lng->txt(self::TAB_CONTENT_MAIN),
586  $this->ctrl->getLinkTarget($this, self::CMD_VIEW, "", false, false)
587  );
588  }
589 
590  if ($this->checkAccess("read") || $this->checkAccess("visible")) {
591  $this->tabs->addTab(
592  self::TAB_INFO,
593  $this->lng->txt(self::TAB_INFO),
594  $this->getLinkTarget(self::CMD_INFO)
595  );
596  }
597 
598  if ($this->checkAccess("write")) {
599  $this->tabs->addTab(
600  self::TAB_SETTINGS,
601  $this->lng->txt(self::TAB_SETTINGS),
602  $this->getLinkTarget(self::CMD_SETTINGS)
603  );
604  }
605 
606  if ($this->checkAccess("read")) {
607  if ($this->checkAccess("manage_members")
608  || (
609  $this->getObject()->getLSSettings()->getMembersGallery()
610  &&
611  $this->getObject()->getLSRoles()->isMember((int) $this->user->getId())
612  )
613  ) {
614  $this->tabs->addTab(
615  self::TAB_MEMBERS,
616  $this->lng->txt(self::TAB_MEMBERS),
617  $this->ctrl->getLinkTarget($this, self::CMD_MEMBERS, "", false, false)
618  );
619  }
620  }
621 
623  $this->tabs->addTab(
624  self::TAB_LP,
625  $this->lng->txt(self::TAB_LP),
626  $this->getLinkTarget(self::CMD_LP)
627  );
628  }
629 
630  if ($this->checkAccess("write")) {
631  $this->tabs->addTab(
632  self::TAB_EXPORT,
633  $this->lng->txt(self::TAB_EXPORT),
634  $this->ctrl->getLinkTargetByClass("ilexportgui", "")
635  );
636  }
637 
638  if ($this->checkAccess("edit_permission")) {
639  $this->tabs->addTab(
640  self::TAB_PERMISSIONS,
641  $this->lng->txt(self::TAB_PERMISSIONS),
642  $this->getLinkTarget(self::CMD_PERMISSIONS)
643  );
644  }
645  }
646 
647  public function renderObject()
648  {
649  // disables this method in ilContainerGUI
650  }
651 
652  protected function addSubTabsForContent()
653  {
654  $this->tabs->addSubTab(
655  self::TAB_VIEW_CONTENT,
656  $this->lng->txt(self::TAB_VIEW_CONTENT),
657  $this->getLinkTarget(self::CMD_LEARNER_VIEW)
658  );
659 
660  if ($this->checkAccess("write")) {
661  $this->tabs->addSubTab(
662  self::TAB_MANAGE,
663  $this->lng->txt(self::TAB_MANAGE),
664  $this->getLinkTarget(self::CMD_CONTENT)
665  );
666  }
667  }
668 
669  protected function checkAccess($which) : bool
670  {
671  return $this->access->checkAccess($which, "", $this->ref_id);
672  }
673 
674  protected function checkLPAccess()
675  {
676  $ref_id = $this->getObject()->getRefId();
677  $is_participant = ilLearningSequenceParticipants::_isParticipant($ref_id, $this->user->getId());
678 
679  $lp_access = ilLearningProgressAccess::checkAccess($ref_id, $is_participant);
680  $may_edit_lp_settings = $this->checkAccess('edit_learning_progress');
681 
682  return ($lp_access || $may_edit_lp_settings);
683  }
684 
685  protected function getLinkTarget(string $cmd) : string
686  {
687  $class = $this->getClassForTabs($cmd);
688  $class_path = [
689  strtolower('ilObjLearningSequenceGUI'),
690  $class
691  ];
692  return $this->ctrl->getLinkTargetByClass($class_path, $cmd);
693  }
694 
695  protected function getClassForTabs(string $cmd) : string
696  {
697  switch ($cmd) {
698  case self::CMD_CONTENT:
699  return 'ilObjLearningSequenceContentGUI';
700  case self::CMD_LEARNER_VIEW:
701  return 'ilObjLearningSequenceLearnerGUI';
702  case self::CMD_SETTINGS:
703  return 'ilObjLearningSequenceSettingsGUI';
704  case self::CMD_INFO:
705  return 'ilInfoScreenGUI';
706  case self::CMD_PERMISSIONS:
707  return 'ilPermissionGUI';
708  case self::CMD_LP:
709  return 'ilLearningProgressGUI';
710  }
711 
712  throw new InvalidArgumentException('cannot resolve class for command: ' . $cmd);
713  }
714 
715  public function createMailSignature()
716  {
717  $link = chr(13) . chr(10) . chr(13) . chr(10);
718  $link .= $this->lng->txt('lso_mail_permanent_link');
719  $link .= chr(13) . chr(10) . chr(13) . chr(10);
720  $link .= ilLink::_getLink($this->object->getRefId());
721 
722  return rawurlencode(base64_encode($link));
723  }
724 
725  public function getObject()
726  {
727  if ($this->object === null) {
728  $this->object = ilObjLearningSequence::getInstanceByRefId($this->ref_id);
729  }
730 
731  return $this->object;
732  }
733 
734  protected function getTrackingObject() : ilObjUserTracking
735  {
736  return new ilObjUserTracking();
737  }
738 
742  public function getLocalRoles() : array
743  {
744  $local_roles = $this->object->getLocalLearningSequenceRoles(false);
745  $lso_member = $this->object->getDefaultMemberRole();
746  $lso_roles = array();
747 
748  if (in_array($lso_member, $local_roles)) {
749  $lso_roles[$lso_member] = ilObjRole::_getTranslation(array_search($lso_member, $local_roles));
750  unset($local_roles[$lso_roles[$lso_member]]);
751  }
752 
753  foreach ($local_roles as $title => $role_id) {
754  $lso_roles[$role_id] = ilObjRole::_getTranslation($title);
755  }
756 
757  return $lso_roles;
758  }
759 
763  protected function getAdditionalWhitelistTypes() : array
764  {
765  $types = array_filter(
766  array_keys($this->obj_definition->getSubObjects('lso', false)),
767  function ($type) {
768  return $type !== 'rolf';
769  }
770  );
771 
772  return $types;
773  }
774 
775  public function addCustomData($a_data)
776  {
777  $res_data = array();
778  foreach ($a_data as $usr_id => $user_data) {
779  $res_data[$usr_id] = $user_data;
780  $udf_data = new ilUserDefinedData($usr_id);
781 
782  foreach ($udf_data->getAll() as $field => $value) {
783  list($f, $field_id) = explode('_', $field);
784  $res_data[$usr_id]['udf_' . $field_id] = (string) $value;
785  }
786  }
787 
788  return $res_data;
789  }
790 }
redrawHeaderActionObject()
Ajax call: redraw action header only.
static _recordReadEvent( $a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
static hasAccess(string $mode, int $id)
Class ilInfoScreenGUI.
Class ilUserDefinedData.
cancelCreation()
cancel create action and go back to repository parent
This class represents a property form user interface.
GUI class for the workflow of copying objects.
$type
const ROOT_FOLDER_ID
Definition: constants.php:30
$_GET["client_id"]
trashObject()
Show trash content of object.
learningProgress(string $cmd=self::CMD_LP)
static _lookupTitle($a_id)
lookup object title
confirmedDeleteObject()
confirmed deletion of object -> objects are moved to trash or deleted immediately, if trash is disabled
const IL_LSO_ADMIN
Class ilObjLearningSequenceSettingsGUI.
user()
Definition: user.php:4
help()
Definition: help.php:2
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
Export User Interface Class.
static checkAccess($a_ref_id, $a_allow_only_read=true)
check access to learning progress
static _enabledLearningProgress()
check wether learing progress is enabled or not
const SORT_NEW_ITEMS_POSITION_BOTTOM
initDidacticTemplate(ilPropertyFormGUI $form)
undeleteObject()
Get objects back from trash.
getId()
get object id public
static _gotoRepositoryNode($a_ref_id, $a_cmd="frameset")
Goto repository root.
linkObject()
create an new reference of an object in tree it&#39;s like a hard link of unix
manage_members(string $cmd=self::CMD_MANAGE_MEMBERS)
const SORT_NEW_ITEMS_ORDER_CREATION
manageContent(string $cmd=self::CMD_CONTENT)
static _lookupObjId($a_id)
static getInstanceByRefId(int $ref_id)
settings(string $cmd=self::CMD_SETTINGS)
global $DIC
Definition: goto.php:24
static forwardByClass(string $base_class, array $classes, array $params, string $cmd='')
Class ilObjLearningSequenceContentGUI.
showPasteTreeObject()
Show paste tree.
importFileObject($parent_id=null, $a_catch_errors=true)
Import.
getAdditionalWhitelistTypes()
append additional types to ilRepositoryExplorerGUI&#39;s whitelist
learnerView(string $cmd=self::CMD_LEARNER_VIEW)
static _getTranslation($a_role_title)
removeFromDeskObject()
Remove from desktop public.
__construct(Container $dic, ilPlugin $plugin)
addToDeskObject()
Add desktop item public.
getCreationMode()
get creation mode
cutObject()
cut object(s) out from a container and write the information to clipboard
getRefId()
get reference id public
Class ilContainerGUI.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
deleteObject($a_error=false)
Display deletion confirmation screen.
Class ilObjLearningSequenceGUI.
static _getInstance()
Get instance of ilPrivacySettings.
permissions(string $cmd=self::CMD_PERMISSIONS)
static redirect($a_script)
addHeaderAction()
Add header action menu.
Class ilObjUserTrackingGUI.
getReturnLocation($a_cmd, $a_location="")
get return location for command (command is method name without "Object", e.g.
keepObjectsInClipboardObject()
Keep objects in the clipboard.
GUI class for learning sequence membership features.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
Confirmation screen class.