23use Psr\Http\Message\ServerRequestInterface;
70 public const CMD_EDIT = Capabilities::EDIT_SETTINGS->value;
92 protected \ILIAS\UI\Component\Input\Factory
$inputs;
102 public function __construct(
int $a_id = 0,
int $a_id_type = self::REPOSITORY_NODE_ID,
int $a_parent_node_id = 0)
106 $this->file_service_settings =
$DIC->fileServiceSettings();
107 $this->
user = $DIC->user();
108 $this->
lng = $DIC->language();
110 $this->
ui = $DIC->ui();
111 $this->storage =
$DIC->resourceStorage();
114 $this->general_settings =
new General();
116 $this->obj_service =
$DIC->object();
119 $this->inputs =
$DIC->ui()->factory()->input();
120 $this->
renderer = $DIC->ui()->renderer();
121 $this->request =
$DIC->http()->request();
122 $this->data_factory =
new Factory();
124 $this->lom_services =
$DIC->learningObjectMetadata();
132 $DIC[
'static_url.uri_builder']
135 $capability_context =
new Context(
138 ($a_id_type === self::WORKSPACE_NODE_ID) ? Context::CONTEXT_WORKSPACE : Context::CONTEXT_REPO
141 $this->capabilities = $capability_builder->get($capability_context);
149 $this->user->getId(),
171 $ilNavigationHistory =
$DIC[
'ilNavigationHistory'];
172 $ilUser =
$DIC[
'ilUser'];
173 $ilTabs =
$DIC[
'ilTabs'];
176 $next_class = $this->
ctrl->getNextClass($this);
177 $cmd = $this->
ctrl->getCmd();
182 $this->id_type === self::REPOSITORY_NODE_ID
183 && $this->capabilities->get(Capabilities::DOWNLOAD)->isUnlocked()
186 $ilNavigationHistory->addItem(
188 (
string) $this->capabilities->get(Capabilities::INFO_PAGE)->getUri(),
197 $suffix =
$info->getSuffix();
198 $path_file_icon = $this->icon_repo->getIconFilePathBySuffix($suffix);
199 $this->tpl->setTitleIcon($path_file_icon);
201 switch ($next_class) {
202 case strtolower(ilInfoScreenGUI::class):
206 case 'ilobjectmetadatagui':
207 if (!$this->capabilities->get(Capabilities::EDIT_SETTINGS)->isUnlocked()) {
208 $ilErr->raiseError($this->
lng->txt(
'permission_denied'),
$ilErr->WARNING);
211 $ilTabs->activateTab(
"id_meta");
218 $this->
ctrl->forwardCommand($md_gui);
222 case 'ilpermissiongui':
223 $ilTabs->activateTab(
"id_permissions");
225 $this->
ctrl->forwardCommand($perm_gui);
229 $ilTabs->activateTab(
"export");
231 $exp_gui->addFormat();
232 $this->
ctrl->forwardCommand($exp_gui);
235 case 'ilobjectcopygui':
238 $this->
ctrl->forwardCommand($cp);
242 case "ilworkspaceaccessgui":
243 $ilTabs->activateTab(
"id_permissions");
245 $this->
ctrl->forwardCommand($wspacc);
248 case "ilcommonactiondispatchergui":
250 $this->
ctrl->forwardCommand($gui);
253 case "illearningprogressgui":
254 $ilTabs->activateTab(
'learning_progress');
255 $user_id = $this->request_wrapper->has(
'user_id')
256 ? $this->request_wrapper->retrieve(
'user_id', $this->
refinery->kindlyTo()->int())
260 $this->
object->getRefId(),
263 $this->
ctrl->forwardCommand($new_gui);
264 $this->tabs_gui->setTabActive(
'learning_progress');
266 case strtolower(ilFileVersionsGUI::class):
267 $this->tabs_gui->activateTab(
"id_versions");
269 if (!$this->capabilities->get(Capabilities::MANAGE_VERSIONS)->isUnlocked()) {
270 $this->
error->raiseError($this->
lng->txt(
"permission_denied"), $this->error->MESSAGE);
276 case strtolower(ilObjFileUploadHandlerGUI::class):
279 case strtolower(ilWOPIEmbeddedApplicationGUI::class):
280 $capability = match($cmd) {
287 if ($capability ===
null || !$capability->isUnlocked()) {
288 $this->
error->raiseError($this->
lng->txt(
"permission_denied"), $this->error->MESSAGE);
291 $action = match ($capability->getCapability()) {
292 Capabilities::VIEW_EXTERNAL => $this->action_repo->getViewActionForSuffix($suffix),
293 Capabilities::EDIT_EXTERNAL => $this->action_repo->getEditActionForSuffix($suffix),
297 $this->tabs_gui->activateTab(
'content');
300 if ($this->id_type === Context::CONTEXT_WORKSPACE) {
306 $goto_link = ilLink::_getLink($this->
object->getRefId());
310 $this->storage->manage()->find($this->object->getResourceId()),
314 $capability->getCapability() === Capabilities::VIEW_EXTERNAL,
315 $this->lng->getLangKey()
318 $this->
ctrl->forwardCommand(
325 case strtolower(ilFileCommonSettingsGUI::class):
327 $this->tabs_gui->activateSubTab(
"service_settings");
328 $this->
ctrl->forwardCommand(
334 $this->object_service
341 if ($this->id_type === self::WORKSPACE_NODE_ID) {
343 $ilTabs->clearTargets();
345 if (empty($cmd) || $cmd ===
'render') {
346 $cmd = Capabilities::INFO_PAGE->value;
349 parent::executeCommand();
354 if (empty($cmd) || $cmd ===
'render') {
355 $cmd = Capabilities::INFO_PAGE->value;
381 $tpl =
new ilTemplate(
"tpl.creation_acc_head.html",
true,
true,
"components/ILIAS/ILIASObject");
382 $tpl->
setVariable(
"TITLE", $this->
lng->txt(
"option") .
" " . $form_type .
": " . $title);
384 $accordion->addItem(
$tpl->
get(), $this->ui->renderer()->render($form));
393 if (!in_array($form_type, [self::CFORM_NEW, self::CFORM_CLONE, self::CFORM_IMPORT],
true)) {
396 $title = $form->getTitle();
399 $tpl =
new ilTemplate(
"tpl.creation_acc_head.html",
true,
true,
"components/ILIAS/ILIASObject");
400 $tpl->setVariable(
"TITLE", $this->
lng->txt(
"option") .
" " . $form_type .
": " . $title);
402 $accordion->addItem($tpl->get(), $form->getHTML());
411 return $this->initUploadForm();
417 return $this->
lng->txt(
'upload_files');
425 $this->
ctrl->setParameterByClass(self::class,
'new_type', $this->getType());
426 $this->
ctrl->setParameterByClass(
428 self::PARAM_UPLOAD_ORIGIN,
429 self::UPLOAD_ORIGIN_STANDARD
433 $inputs[self::PARAM_FILES] = $this->
ui->factory()->input()->field()->file(
434 $this->upload_handler,
435 $this->
lng->txt(
'upload_files'),
437 $this->ui->factory()->input()->field()->group([
438 self::PARAM_TITLE => $this->ui->factory()->input()->field()->text(
439 $this->lng->txt(
'title')
440 )->withAdditionalTransformation(
441 $this->getEmptyStringToNullTransformation()
443 self::PARAM_DESCRIPTION => $this->ui->factory()->input()->field()->textarea(
444 $this->lng->txt(
'description')
445 )->withAdditionalTransformation(
446 $this->getEmptyStringToNullTransformation()
450 self::UPLOAD_MAX_FILES
451 )->withRequired(
true);
453 if ($this->lom_services->copyrightHelper()->isCopyrightSelectionActive()) {
454 $inputs[self::PARAM_COPYRIGHT_ID] = $this->getCopyrightSelectionInput(
'set_license_for_all_files');
457 return $this->
ui->factory()->input()->container()->form()->standard(
458 $this->
ctrl->getFormActionByClass(self::class, self::CMD_UPLOAD_FILES),
460 )->withSubmitLabel($this->
lng->txt(
'upload_files'));
468 $origin = ($this->request_wrapper->has(self::PARAM_UPLOAD_ORIGIN)) ?
469 $this->request_wrapper->retrieve(
470 self::PARAM_UPLOAD_ORIGIN,
471 $this->refinery->kindlyTo()->string()
472 ) : self::UPLOAD_ORIGIN_STANDARD;
474 if (self::UPLOAD_ORIGIN_DROPZONE === $origin) {
476 $dropzone = $dropzone->getDropzone()->withRequest($this->request);
477 $data = $dropzone->getData();
479 $form = $this->initUploadForm()->withRequest($this->request);
480 $data = $form->getData();
482 $files =
$data[self::PARAM_FILES] ??
$data[0] ??
null;
485 $form = $this->initUploadForm()->withRequest($this->request);
486 $this->tpl->setContent($this->getCreationFormsHTML($form));
494 $this->file_service_settings
498 foreach ($files as $file_data) {
499 $rid = $this->storage->manage()->find($file_data[0]);
504 $file_data[1][self::PARAM_TITLE] ??
null,
505 $file_data[1][self::PARAM_DESCRIPTION] ??
null,
506 $data[self::PARAM_COPYRIGHT_ID] ??
null
508 }
catch (Throwable $t) {
510 if (
null !== $this->log) {
511 $this->log->error($t->getMessage() .
": " . $t->getTraceAsString());
518 $this->
ui->mainTemplate()->setOnScreenMessage(
520 $this->
lng->txt(
'could_not_create_file_objs'),
525 if ($processor->getInvalidFileNames() !== []) {
526 $this->
ui->mainTemplate()->setOnScreenMessage(
529 $this->
lng->txt(
'file_upload_info_file_with_critical_extension'),
530 implode(
', ', $processor->getInvalidFileNames())
536 $link = match ($this->id_type) {
537 self::WORKSPACE_NODE_ID => $this->
ctrl->getLinkTargetByClass(ilObjWorkspaceRootFolderGUI::class),
538 default => ilLink::_getLink($this->requested_ref_id),
541 $this->
ctrl->redirectToURL($link);
548 $backup_node_id = $this->node_id;
549 parent::putObjectInTree($obj, $parent_node_id);
550 $this->node_id = $backup_node_id;
557 public function update(): void
560 $form = $this->initPropertiesForm();
561 $form = $form->withRequest($this->request);
567 $title_and_description =
$inputs[
'file_info'][
'title_and_description'];
569 $title = $title_and_description->getTitle();
571 $filename = $this->
object->getFileName();
572 if (trim((
string) $title) ===
'') {
575 $title = $this->
object->appendSuffixToTitle($title,
$filename);
577 $this->
object->handleChangedObjectTitle($title);
579 $description = $title_and_description->getLongDescription();
580 $this->
object->setDescription($description);
583 $this->
object->getObjectProperties()->storePropertyTitleAndDescription($updated_title_and_description);
585 $this->
object->setImportantInfo($inputs[
'file_info'][
'important_info']);
586 $this->
object->setRating($inputs[
'obj_features'][
'rating'] ??
false);
587 $this->
object->setOnclickMode((
int) $inputs[
'file_info'][
'on_click_action']);
588 $this->
object->update();
590 $this->
object->getObjectProperties()->storePropertyIsOnline($inputs[
'availability'][
'online_status']);
592 if ((
$inputs[
'presentation'][
'tile_image'] ??
null) !==
null) {
593 $this->
object->getObjectProperties()->storePropertyTileImage($inputs[
'presentation'][
'tile_image']);
597 if (!empty(
$data[
"name"])) {
599 $ilUser =
$DIC[
'ilUser'];
609 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"msg_obj_modified"),
true);
610 $this->
ctrl->redirectByClass(self::class, self::CMD_EDIT);
619 if (!$this->capabilities->get(Capabilities::EDIT_SETTINGS)->isUnlocked()) {
620 $ilErr->raiseError($this->
lng->txt(
"msg_no_perm_write"));
623 $this->initSettingsTab();
625 $form = $this->initPropertiesForm();
630 $this->tpl->setContent($this->
renderer->render($form));
635 $title_and_description = $this->
object->getObjectProperties()->getPropertyTitleAndDescription()->toForm(
637 $this->
ui->factory()->input()->field(),
641 $important_info = $this->inputs->field()->markdown(
643 $this->
lng->txt(
'important_info'),
644 $this->lng->txt(
'important_info_byline')
646 $this->
object->getImportantInfo() ??
""
649 $on_click_action = $this->inputs->field()->radio(
650 $this->
lng->txt(
'on_click_action')
653 $this->
lng->txt(
'file_action_download'),
654 $this->lng->txt(
'file_action_download_info'),
657 $this->
lng->txt(
'file_action_show'),
658 $this->lng->txt(
'file_action_show_info'),
660 (
string) $this->
object->getOnClickMode()
663 $input_groups = array_filter([
664 "title_and_description" => $title_and_description,
665 "important_info" => $important_info,
666 "on_click_action" => $on_click_action
667 ],
static fn(
FormInput $input):
bool =>
null !== $input);
669 $file_info_section = $this->inputs->field()->section(
671 $this->
lng->txt(
'file_info')
674 $online_status = $this->
object->getObjectProperties()->getPropertyIsOnline()->toForm(
676 $this->
ui->factory()->input()->field(),
679 $availability_section = $this->inputs->field()->section(
680 [
"online_status" => $online_status],
681 $this->
lng->txt(
'rep_activation_availability')
684 $presentation_section =
null;
685 if ($this->id_type === self::REPOSITORY_NODE_ID) {
686 $tile_image = $this->
object->getObjectProperties()->getPropertyTileImage()->toForm(
688 $this->
ui->factory()->input()->field(),
691 $presentation_section = $this->inputs->field()->section(
692 [
"tile_image" => $tile_image],
693 $this->
lng->txt(
'settings_presentation_header')
697 $additional_features_section =
null;
698 if ($this->id_type === self::REPOSITORY_NODE_ID) {
699 $this->
lng->loadLanguageModule(
'rating');
701 $enable_rating = $this->inputs->field()->checkbox(
702 $this->
lng->txt(
'rating_activate_rating'),
703 $this->lng->txt(
'rating_activate_rating_info')
705 $this->
object->hasRating()
707 $additional_features_section = $this->inputs->field()->section(
708 [
"rating" => $enable_rating],
709 $this->
lng->txt(
'obj_features')
713 $inputs = array_filter([
714 "file_info" => $file_info_section,
715 "availability" => $availability_section,
716 "presentation" => $presentation_section,
717 "obj_features" => $additional_features_section
718 ],
static fn(?
Section $input):
bool =>
null !== $input);
720 return $this->inputs->container()->form()->standard(
721 $this->
ctrl->getLinkTargetByClass(self::class,
'update'),
728 $hist_entry_id = $this->request_wrapper->has(
'hist_id')
729 ? $this->request_wrapper->retrieve(
'hist_id', $this->
refinery->kindlyTo()->int())
733 $this->
object->sendFile($hist_entry_id);
736 if ($this->capabilities->get(Capabilities::DOWNLOAD)->isUnlocked()) {
740 $this->object->getRefId(),
741 $this->object->getId(),
744 $this->updateLearningProgress();
746 $this->
object->sendFile($hist_entry_id);
748 $this->
error->raiseError($this->
lng->txt(
"permission_denied"), $this->error->MESSAGE);
751 $this->
error->raiseError($e->getMessage(), $this->error->MESSAGE);
762 $this->
ctrl->redirectToURL(
763 (
string) $this->capabilities->get(Capabilities::INFO_PAGE)->getUri()
768 $this->
ctrl->redirectToURL(
769 (
string) $this->capabilities->get(Capabilities::FORCED_INFO_PAGE)->getUri()
775 $this->
ctrl->redirectToURL(
776 (
string) $this->capabilities->get(Capabilities::MANAGE_VERSIONS)->getUri()
782 $this->
ctrl->redirectToURL(
783 (
string) $this->capabilities->get(Capabilities::UNZIP)->getUri()
789 $this->
ctrl->redirectToURL(
790 (
string) $this->capabilities->get(Capabilities::EDIT_EXTERNAL)->getUri()
795 $this->
ctrl->redirectToURL(
796 (
string) $this->capabilities->get(Capabilities::VIEW_EXTERNAL)->getUri()
805 $this->tabs_gui->activateTab(
"id_info");
807 if (!$this->capabilities->get(Capabilities::INFO_PAGE)->isUnlocked()) {
808 $GLOBALS[
'DIC'][
'ilErr']->raiseError(
809 $this->
lng->txt(
"msg_no_perm_read"),
817 $label = $this->
lng->txt(
'file_btn_lp_toggle_state_completed');
819 $label = $this->
lng->txt(
'file_btn_lp_toggle_state_not_completed');
822 $this->
ui->factory()->button()->standard(
824 $this->ctrl->getLinkTarget($this,
'toggleLearningProgress')
830 if ($this->capabilities->get(Capabilities::EDIT_EXTERNAL)->isUnlocked()) {
831 $external_editor = $this->
ui->factory()
834 $this->
lng->txt(
'open_external_editor'),
835 $this->ctrl->getLinkTargetByClass(
836 \ilWOPIEmbeddedApplicationGUI::class,
840 $this->
toolbar->addComponent($external_editor);
843 $info = $this->buildInfoScreen(
false);
850 $this->
user->getId(),
856 $lp_marks =
new ilLPMarks($this->obj_id, $this->
user->getId());
862 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'msg_obj_modified'),
true);
863 $this->
ctrl->redirect($this, Capabilities::INFO_PAGE->value);
871 $info->enablePrivateNotes();
873 if ($this->capabilities->get(Capabilities::DOWNLOAD)->isUnlocked()) {
878 $info->enableNewsEditing(
false);
879 if ($this->capabilities->get(Capabilities::MANAGE_VERSIONS)->isUnlocked()) {
881 $enable_internal_rss = $news_set->get(
"enable_rss_for_internal");
883 if ($enable_internal_rss) {
884 $info->setBlockProperty(
"news",
"settings",
true);
885 $info->setBlockProperty(
"news",
"public_notifications_option",
true);
889 $obj_id = $this->
object->getId();
896 $this->call_by_reference
898 $record_gui->setInfoObject(
$info);
899 $record_gui->parse();
904 $important_info = $this->
object->getImportantInfo();
905 if (!empty($important_info)) {
907 $markdown_to_html = $group->markdown()->toHTML();
909 $info->addSection($this->
lng->txt(
"important_info"));
910 $info->addProperty(
"", $markdown_to_html->transform($important_info));
914 if ($this->capabilities->get(Capabilities::DOWNLOAD)->isUnlocked()) {
916 if ($this->id_type === self::REPOSITORY_NODE_ID) {
919 $download_target = rtrim(ILIAS_HTTP_PATH,
'/') .
'/' . $this->
ctrl->getLinkTarget(
924 $url = $this->data_factory->uri($download_target);
925 $link = $this->data_factory->link($this->
lng->txt(
'file_download'),
$url);
926 $download_launcher = $this->
ui->factory()->launcher()->inline($link);
928 if (empty($important_info)) {
929 $info->addSection(
"");
932 $info->addProperty(
"", $this->
renderer->render($download_launcher));
936 $info->addMetaDataSections($this->
object->getId(), 0, $this->object->getType());
940 if (!$kiosk_mode && ($this->
access->checkAccess(
"write",
"", $this->ref_id) ||
941 $this->access->checkAccess(
"edit_permissions",
"", $this->ref_id))) {
944 foreach ($rs as $r) {
945 if ($this->tree->isInTree($r)) {
949 if (count($refs) > 1) {
951 foreach ($refs as $r) {
953 $cont_loc->addContextItems($r,
true);
954 $links .= $sep . $cont_loc->getHTML();
959 $this->
lng->txt(
"res_links"),
960 '<div class="small">' . $links .
'</div>'
966 $info->addSection($this->
lng->txt(
"file_info"));
968 $file_info_for_users = $this->getFileInfoForUsers();
969 foreach ($file_info_for_users as $file_info_entry_key => $file_info_entry_value) {
970 if ($file_info_entry_value !==
null) {
971 $info->addProperty($file_info_entry_key, $file_info_entry_value);
975 $file_info = $this->getAllFileInfoForCurrentUser();
976 foreach ($file_info as $file_info_block) {
977 foreach ($file_info_block as $file_info_entry_key => $file_info_entry_value) {
978 if ($file_info_entry_value !==
null) {
979 $info->addProperty($file_info_entry_key, $file_info_entry_value);
985 $info->hideFurtherSections(
false);
995 $ilHelp =
$DIC[
'ilHelp'];
998 $this->
ctrl->setParameter($this,
"ref_id", $this->node_id);
1000 if ((
$c = $this->capabilities->get(Capabilities::VIEW_EXTERNAL)) &&
$c->isUnlocked()) {
1001 $this->tabs_gui->addTab(
1003 $this->
lng->txt(
"content"),
1008 if ((
$c = $this->capabilities->get(Capabilities::MANAGE_VERSIONS)) &&
$c->isUnlocked()) {
1009 $this->tabs_gui->addTab(
1011 $this->
lng->txt(self::CMD_VERSIONS),
1016 if ((
$c = $this->capabilities->get(Capabilities::INFO_PAGE)) &&
$c->isUnlocked()) {
1017 $this->tabs_gui->addTab(
1019 $this->
lng->txt(
"info_short"),
1020 $this->ctrl->getLinkTargetByClass([
"ilobjfilegui",
"ilinfoscreengui"],
"showSummary")
1024 if ((
$c = $this->capabilities->get(Capabilities::EDIT_SETTINGS)) &&
$c->isUnlocked()) {
1025 $this->tabs_gui->addTab(
1027 $this->
lng->txt(
"settings"),
1028 $this->ctrl->getLinkTarget($this, self::CMD_EDIT)
1033 $this->tabs_gui->addTab(
1034 'learning_progress',
1035 $this->
lng->txt(
'learning_progress'),
1036 $this->ctrl->getLinkTargetByClass([self::class,
'illearningprogressgui'],
'')
1041 if ((
$c = $this->capabilities->get(Capabilities::EDIT_SETTINGS)) &&
$c->isUnlocked()) {
1043 $mdtab = $mdgui->getTab();
1045 $this->tabs_gui->addTab(
1047 $this->
lng->txt(
"meta_data"),
1054 if ((
$c = $this->capabilities->get(Capabilities::EDIT_SETTINGS)) &&
$c->isUnlocked()) {
1055 $this->tabs_gui->addTab(
1057 $this->
lng->txt(
"export"),
1058 $this->ctrl->getLinkTargetByClass(
"ilexportgui",
"")
1068 $this->tabs_gui->activateTab(
"settings");
1070 $this->tabs_gui->addSubTab(
1072 $this->
lng->txt(
'settings'),
1073 $this->ctrl->getLinkTargetByClass(self::class, self::CMD_EDIT)
1076 $this->tabs_gui->addSubTab(
1078 $this->
lng->txt(
'service_settings'),
1083 $this->tabs_gui->activateSubTab(
"file_settings");
1086 public static function _goto($a_target, $a_additional =
null): void
1089 $main_tpl =
$DIC->ui()->mainTemplate();
1092 $ilAccess =
$DIC[
'ilAccess'];
1094 if ($a_additional && str_ends_with((
string) $a_additional,
"wsp")) {
1099 if ($a_additional && str_ends_with((
string) $a_additional,
"download")) {
1105 if ($ilAccess->checkAccess(
"visible",
"", $a_target)
1106 || $ilAccess->checkAccess(
"read",
"", $a_target)) {
1109 $main_tpl->setOnScreenMessage(
1112 $lng->txt(
"msg_no_perm_read_item"),
1129 $ilLocator =
$DIC[
'ilLocator'];
1131 if (is_object($this->
object)) {
1132 $ilLocator->addItem($this->
object->getTitle(), $this->ctrl->getLinkTarget($this,
""),
"", $this->node_id);
1139 $lg = parent::initHeaderAction($a_sub_type, $a_sub_id);
1145 [ilCommonActionDispatcherGUI::class, ilRatingGUI::class]
1162 if (!$this->
object instanceof
ilObjFile) {
1163 throw new ilFileException(
"Error: object is not of type ilObjFile or doesn't exist");
1166 return $this->object;
1171 return $this->stakeholder;
1176 return $this->general_settings;
1186 return $this->node_id;
1196 return $this->
ui->factory();
Provides fluid interface to RBAC services.
The scope of this class is split ilias-conform URI's into components.
Indicates that a file is missing or not found.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getActivatedObjTypes()
get activated obj types
static _recordReadEvent(string $a_type, int $a_ref_id, int $obj_id, int $usr_id, bool $isCatchupWriteEvents=true, $a_ext_rc=null, $a_ext_time=null)
static _catchupWriteEvents(int $obj_id, int $usr_id, ?string $timestamp=null)
Catches up with all write events which occured before the specified timestamp.
static _recordWriteEvent(int $obj_id, int $usr_id, string $action, ?int $parent_obj_id=null)
Records a write event.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
Class ilCtrl provides processing control methods.
Export User Interface Class.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const LP_MODE_CONTENT_VISITED
static _updateStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null, bool $a_percentage=false, bool $a_force_raise=false)
static _hasUserCompleted(int $a_obj_id, int $a_user_id)
Lookup user object completion.
static checkAccess(int $a_ref_id, bool $a_allow_only_read=true)
check access to learning progress
const LP_CONTEXT_REPOSITORY
Class ilObjUserTrackingGUI.
static _tracProgress(int $a_user_id, int $a_obj_id, int $a_ref_id, string $a_obj_type='')
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getLogger(string $a_component_id)
Get component logger.
Component logger with individual log levels by component id.
static _getPermanentDownloadLink(int $ref_id)
Gets the permanent download link for the file.
GUI class for file objects.
LOMServices $lom_services
ServerRequestInterface $request
uploadFiles()
MUST be protected, since this is Called from ilObject2GUI when used in Personal Workspace.
ActionDBRepository $action_repo
const UPLOAD_ORIGIN_DROPZONE
initHeaderAction(?string $a_sub_type=null, ?int $a_sub_id=null)
Add header action menu.
addUIFormToAccordion(ilAccordionGUI $accordion, Standard $form, int $form_type)
const PARAM_UPLOAD_ORIGIN
getType()
Functions that must be overwritten.
putObjectInTree(ilObject $obj, ?int $parent_node_id=null)
Add object to tree at given position.
initCreateForm(string $new_type)
ILIAS UI Component Input Factory $inputs
const UPLOAD_ORIGIN_STANDARD
CapabilityCollection $capabilities
static _goto($a_target, $a_additional=null)
IconDatabaseRepository $icon_repo
ILIAS Refinery Factory $refinery
buildInfoScreen(bool $kiosk_mode)
infoScreenForward()
show information screen
General $general_settings
__construct(int $a_id=0, int $a_id_type=self::REPOSITORY_NODE_ID, int $a_parent_node_id=0)
Constructor.
ilObjectService $obj_service
ilFileServicesSettings $file_service_settings
ResourceStakeholder $stakeholder
addLegacyFormToAccordion(ilAccordionGUI $accordion, ilPropertyFormGUI $form, int $form_type)
addLocatorItems()
Functions to be overwritten.
UploadHandler $upload_handler
setTabs()
create tabs (repository/workspace switch)
Class ilObjFileProcessorInterface.
Class ilObjFileStakeholder.
const CLICK_MODE_DOWNLOAD
const CLICK_MODE_INFOPAGE
New implementation of ilObjectGUI.
executeCommand()
execute command
ilGlobalTemplateInterface $tpl
prepareOutput(bool $show_sub_objects=true)
GUI class for the workflow of copying objects.
static _gotoSharedWorkspaceNode(int $wsp_id)
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
addHeaderAction()
Add header action menu.
static _gotoRepositoryNode(int $ref_id, string $cmd="")
Class ilObject Basic functions for all objects.
static _getAllReferences(int $id)
get all reference ids for object ID
static _lookupObjId(int $ref_id)
static _lookupTitle(int $obj_id)
special template class to simplify handling of ITX/PEAR
static getGotoLink(int $a_node_id, int $a_obj_id, string $a_additional="")
Interface ResourceStakeholder.
setVariable(string $variable, $value='')
Sets the given variable to the given value.
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string.
An entity that renders components to a string output.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
if(!file_exists('../ilias.ini.php'))
trait ilObjFileInfoProvider