19declare(strict_types=1);
82 $this->
ctrl = $DIC->ctrl();
83 $this->tree =
$DIC->repositoryTree();
84 $this->
tabs = $DIC->tabs();
85 $this->
toolbar = $DIC->toolbar();
86 $this->tpl =
$DIC[
"tpl"];
87 $this->obj_definition =
$DIC[
"objDefinition"];
88 $this->obj_data_cache =
$DIC[
"ilObjDataCache"];
89 $this->
access = $DIC->access();
90 $this->
error = $DIC[
"ilErr"];
91 $this->rbacsystem =
$DIC->rbac()->system();
92 $this->
user = $DIC->user();
93 $this->rbacreview =
$DIC->rbac()->review();
95 $this->
lng = $DIC->language();
96 $this->request_wrapper =
$DIC->http()->wrapper()->query();
97 $this->post_wrapper =
$DIC->http()->wrapper()->post();
101 $this->parent_obj = $parent_gui;
103 $this->
lng->loadLanguageModule(
'search');
104 $this->
lng->loadLanguageModule(
'obj');
105 $this->
ctrl->saveParameter($this,
"crtcb");
107 $this->clipboard =
$DIC
120 $this->
ctrl->getNextClass($this);
121 $cmd = $this->
ctrl->getCmd();
126 protected function init(): void
128 if ($this->retriever->has(
'smode')) {
129 $this->
setSubMode($this->retriever->getMaybeInt(
'smode') ?? 0);
135 if ($this->retriever->has(
'source_ids')) {
136 $this->
setSource(explode(
'_', $this->retriever->getMaybeString(
'source_ids')));
137 $this->
ctrl->setParameter($this,
'source_ids', implode(
'_', $this->
getSources()));
140 if ($this->retriever->has(
'source_id')) {
141 $this->
setSource([$this->retriever->getMaybeInt(
'source_id')]);
142 $this->
ctrl->setParameter($this,
'source_ids', implode(
'_', $this->
getSources()));
152 if ($this->retriever->has(
'new_type')) {
153 $this->
setMode(self::SEARCH_SOURCE);
154 $this->
setType($this->retriever->getMaybeString(
'new_type'));
155 $this->
setTarget($this->request_wrapper->retrieve(
"ref_id", $this->refinery->kindlyTo()->int()));
157 $this->
ctrl->setParameter($this,
'new_type', $this->
getType());
166 elseif ($this->retriever->getMaybeInt(
'selectMode') === self::SOURCE_SELECTION) {
167 $this->
setMode(self::SOURCE_SELECTION);
169 $this->
ctrl->setParameterByClass(get_class($this->parent_obj),
'selectMode', self::SOURCE_SELECTION);
170 $this->
setTarget($this->request_wrapper->retrieve(
"ref_id", $this->refinery->kindlyTo()->int()));
171 $this->
ctrl->setReturnByClass(get_class($this->parent_obj),
'');
174 } elseif ($this->retriever->getMaybeInt(
'selectMode') === self::TARGET_SELECTION) {
175 $this->
setMode(self::TARGET_SELECTION);
176 $this->
ctrl->setReturnByClass(get_class($this->parent_obj),
'');
181 if ($this->retriever->has(
'target_ids')) {
182 $this->
setTargets(explode(
'_', $this->retriever->getMaybeString(
'target_ids')));
189 $this->
lng->loadLanguageModule(
'cntr');
190 $this->
tabs->clearTargets();
191 $this->
tabs->setBackTarget(
192 $this->
lng->txt(
'tab_back_to_repository'),
193 (
string) $this->ctrl->getParentReturn($this->parent_obj)
197 protected function setTabs(
int $tab_group,
int $active_tab): void
199 if ($tab_group == self::TAB_GROUP_SC_SELECTION) {
200 if ($this->
getSubMode() == self::SUBMODE_CONTENT_ONLY) {
201 if ($this->
getMode() == self::SOURCE_SELECTION) {
203 (
string) self::TAB_SELECTION_SOURCE_TREE,
204 $this->
lng->txt(
'cntr_copy_repo_tree'),
205 $this->ctrl->getLinkTarget($this,
'initSourceSelection')
208 (
string) self::TAB_SELECTION_MEMBERSHIP,
209 $this->
lng->txt(
'cntr_copy_crs_grp'),
210 $this->ctrl->getLinkTarget($this,
'showSourceSelectionMembership')
215 $this->
tabs->activateTab((
string) $active_tab);
223 $this->
ctrl->setParameter($this,
'smode', self::SUBMODE_CONTENT_ONLY);
224 $this->
ctrl->setParameter($this,
'selectMode', self::SOURCE_SELECTION);
226 $this->
setSubMode(self::SUBMODE_CONTENT_ONLY);
227 $this->
setMode(self::SOURCE_SELECTION);
228 $this->
setTarget($this->request_wrapper->retrieve(
"ref_id", $this->refinery->kindlyTo()->int()));
238 $this->
ctrl->setParameter($this,
'selectMode', self::TARGET_SELECTION);
250 $path = $this->tree->getPathId($source_id);
251 foreach (
$path as $node_id) {
252 if (!in_array($node_id, $node_ids)) {
253 $node_ids[] = $node_id;
261 $this->
ctrl->setReturnByClass(get_class($this->parent_obj),
'');
270 $this->
setTabs(self::TAB_GROUP_SC_SELECTION, self::TAB_SELECTION_SOURCE_TREE);
274 foreach ($this->
getTargets() as $target_ref_id) {
275 $path = $this->tree->getPathId($target_ref_id);
276 foreach (
$path as $node_id) {
277 if (!in_array($node_id, $node_ids)) {
278 $node_ids[] = $node_id;
286 $this->
ctrl->setReturnByClass(get_class($this->parent_obj),
'');
296 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'msg_copy_clipboard_source'));
297 $this->
setTabs(self::TAB_GROUP_SC_SELECTION, self::TAB_SELECTION_MEMBERSHIP);
301 'showSourceSelectionMembership',
302 'copy_selection_mmbrs'
313 $this->tpl->setContent($cgs->getHTML());
318 if ($this->obj_definition->isContainer($this->getType())) {
319 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'msg_copy_clipboard_container'));
321 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'msg_copy_clipboard'));
325 $exp->setTypeWhiteList([
"root",
"cat",
"grp",
"crs",
"fold",
"lso",
"prg"]);
326 $exp->setSelectMode(
"target",
true);
327 if ($exp->handleCommand()) {
330 $output = $exp->getHTML();
333 $t->setFormAction($this->
ctrl->getFormAction($this,
"saveTarget"));
335 if ($this->obj_definition->isContainer($this->getType())) {
336 $btn->setCaption(
'btn_next');
338 $btn->setCaption(
'paste');
340 $btn->setCommand(
'saveTarget');
341 $btn->setPrimary(
true);
342 $t->addButtonInstance($btn);
345 $clipboard_btn->setCaption(
'obj_insert_into_clipboard');
346 $clipboard_btn->setCommand(
'keepObjectsInClipboard');
347 $t->addButtonInstance($clipboard_btn);
349 $cancel_btn->setCaption(
'cancel');
350 $cancel_btn->setCommand(
'cancel');
351 $t->addButtonInstance($cancel_btn);
352 $t->setCloseFormTag(
false);
354 $output = $t->getHTML() . $output;
356 $t->setCloseFormTag(
true);
357 $t->setOpenFormTag(
false);
358 $output .=
"<br />" . $t->getHTML();
360 $this->tpl->setContent($output);
365 $this->tpl->addBlockFile(
368 'tpl.paste_into_multiple_objects.html',
372 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'msg_copy_clipboard_source'));
375 'ilias.php?baseClass=ilRepositoryGUI&cmd=goto',
376 'paste_copy_repexpand'
378 $exp->setRequiredFormItemPermission(
'visible,read,copy');
380 $this->
ctrl->setParameter($this,
'selectMode', self::SOURCE_SELECTION);
381 $exp->setExpandTarget($this->
ctrl->getLinkTarget($this,
'showSourceSelectionTree'));
382 $exp->setTargetGet(
'ref_id');
383 $exp->setPostVar(
'source');
388 foreach ([
'cat',
'root',
'fold'] as
$container) {
392 if (!$this->request_wrapper->has(
"paste_copy_repexpand")) {
393 $expanded = $this->tree->readRootId();
395 $expanded = $this->request_wrapper->retrieve(
"paste_copy_repexpand", $this->
refinery->kindlyTo()->int());
398 $this->tpl->setVariable(
'FORM_TARGET',
'_self');
399 $this->tpl->setVariable(
'FORM_ACTION', $this->
ctrl->getFormAction($this,
'copySelection'));
401 $exp->setExpand($expanded);
404 $output = $exp->getOutput();
406 $this->tpl->setVariable(
'OBJECT_TREE', $output);
407 $this->tpl->setVariable(
'CMD_SUBMIT',
'saveSource');
408 $this->tpl->setVariable(
'TXT_SUBMIT', $this->
lng->txt(
'btn_next'));
410 $this->
toolbar->addButton($this->
lng->txt(
'cancel'), $this->ctrl->getLinkTarget($this,
'cancel'));
416 $target = $_REQUEST[
'target'] ??
null;
417 if (is_array($target) && $target) {
419 $this->
ctrl->setParameter($this,
'target_ids', implode(
'_', $this->
getTargets()));
422 elseif ((
int) $target) {
424 $this->
ctrl->setParameter($this,
'target_ids', implode(
'_', $this->
getTargets()));
428 $this->
ctrl->setParameter($this,
'selectMode', self::TARGET_SELECTION);
429 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
435 foreach ($this->
getSources() as $source_ref_id) {
436 foreach ($this->
getTargets() as $target_ref_id) {
439 $target_object =
new $target_class_name((
int) $target_ref_id);
440 $possible_subtypes = $target_object->getPossibleSubObjects();
444 if (!array_key_exists($source_type, (array) $possible_subtypes)) {
445 $this->tpl->setOnScreenMessage(
'failure', sprintf(
446 $this->
lng->txt(
'msg_obj_may_not_contain_objects_of_type'),
448 $this->lng->txt(
'obj_' . $source_type)
456 if (count($this->
getSources()) == 1 && $this->obj_definition->isContainer($this->getType())) {
460 foreach ($this->
getTargets() as $target_ref_id) {
461 if ($this->tree->isGrandChild($this->getFirstSource(), (
int) $target_ref_id)) {
469 if (count($is_child) > 0) {
470 $this->tpl->setOnScreenMessage(
472 $this->
lng->txt(
"msg_not_in_itself") .
" " . implode(
',', $is_child)
500 $this->sub_mode =
$mode;
528 $this->sources = $this->
refinery->kindlyTo()->listOf($this->
refinery->kindlyTo()->int())->transform(
540 if (count($this->sources)) {
541 return (
int) $this->sources[0];
554 $this->targets = $this->
refinery->kindlyTo()->listOf($this->
refinery->kindlyTo()->int())->transform(
566 if (array_key_exists(0, $this->
getTargets())) {
568 return (
int) $targets[0];
578 $ilCtrl->returnToParent($this);
583 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"obj_inserted_clipboard"),
true);
585 $this->clipboard->
setCmd(
"copy");
586 $this->clipboard->setRefIds($this->
getSources());
587 $ilCtrl->returnToParent($this);
592 if ($this->post_wrapper->has(
'tit')) {
593 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'wizard_search_list'));
594 ilSession::set(
'source_query', $this->post_wrapper->retrieve(
"tit", $this->refinery->kindlyTo()->string()));
600 $this->
form->setValuesByPost();
602 if (!$this->
form->checkInput()) {
603 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_search_string'),
true);
604 $this->
ctrl->returnToParent($this);
608 $tit = $this->
form->getInput(
'tit');
612 $query_parser->setMinWordLength(1);
614 $query_parser->parse();
615 if (!$query_parser->validate()) {
616 $this->tpl->setOnScreenMessage(
'failure', $query_parser->getMessage(),
true);
617 $this->
ctrl->returnToParent($this);
622 $object_search->setFilter([$this->retriever->getMaybeString(
'new_type')]);
623 $res = $object_search->performSearch();
624 $res->setRequiredPermission(
'copy');
628 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'search_no_match'),
true);
629 $this->
ctrl->returnToParent($this);
633 $table->setFormAction($this->
ctrl->getFormAction($this));
635 $table->parseSearchResults(
$results);
636 $this->tpl->setContent($table->getHTML());
641 if ($this->post_wrapper->has(
"source")) {
642 $source = $this->post_wrapper->retrieve(
"source", $this->
refinery->kindlyTo()->int());
645 $this->
ctrl->setParameter($this,
'source_id',
$source);
647 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
653 foreach ($this->
getSources() as $source_ref_id) {
654 foreach ($this->
getTargets() as $target_ref_id) {
657 $target_object =
new $target_class_name($target_ref_id);
658 $possible_subtypes = $target_object->getPossibleSubObjects();
662 if (!array_key_exists($source_type, $possible_subtypes)) {
665 $this->
getSubMode() != self::SUBMODE_CONTENT_ONLY and
668 $this->tpl->setOnScreenMessage(
'failure', sprintf(
669 $this->
lng->txt(
'msg_obj_may_not_contain_objects_of_type'),
671 $this->lng->txt(
'obj_' . $source_type)
680 if ($this->obj_definition->isContainer($this->getType())) {
693 $source = $this->retriever->getMaybeInt(
'source');
695 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
696 $this->
ctrl->redirect($this,
'showSourceSelectionMembership');
702 $this->
ctrl->setParameter($this,
'source_id',
$source);
704 if ($this->obj_definition->isContainer($this->getType())) {
715 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
720 $this->log->debug(
'Source(s): ' . print_r($this->
getSources(),
true));
721 $this->log->debug(
'Target(s): ' . print_r($this->
getTargets(),
true));
723 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt($this->getType() .
'_copy_threads_info'));
724 $this->tpl->addJavaScript(
'./Services/CopyWizard/js/ilContainer.js');
725 $this->tpl->setVariable(
'BODY_ATTRIBUTES',
'onload="ilDisableChilds(\'cmd\');"');
730 $back_cmd =
'adoptContent';
734 $back_cmd =
'showTargetSelectionTree';
738 $back_cmd =
'searchSource';
745 $this->tpl->setContent($table->getHTML());
755 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'),
true);
756 $this->
ctrl->returnToParent($this);
770 foreach (
$sources as $source_ref_id) {
775 foreach ($this->
getTargets() as $target_ref_id) {
776 if (!$this->rbacsystem->checkAccess(
'create', $target_ref_id, $source_type)) {
778 'Permission denied for target_id: ' .
784 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'permission_denied'),
true);
785 $this->
ctrl->returnToParent($this);
790 if (!$this->
access->checkAccess(
'copy',
'', $source_ref_id)) {
791 $this->log->notice(
'Permission denied for source_ref_id: ' . $source_ref_id .
' COPY');
792 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'permission_denied'),
true);
793 $this->
ctrl->returnToParent($this);
797 if ($this->obj_definition->isContainer($source_type) and $this->getSubMode() != self::SUBMODE_CONTENT_ONLY) {
798 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'cntr_container_only_on_their_own'),
true);
799 $this->
ctrl->returnToParent($this);
810 foreach (
$sources as $source_ref_id) {
814 foreach ($this->
getTargets() as $target_ref_id) {
818 $wizard_options->saveOwner($this->
user->getId());
819 $wizard_options->saveRoot((
int) $source_ref_id);
820 $wizard_options->read();
823 $new_obj = $orig->cloneObject($target_ref_id, $copy_id);
826 $wizard_options->deleteAll();
827 $this->parent_obj->callCreationCallback(
829 $this->obj_definition,
830 $this->retriever->getMaybeInt(
'crtcb', 0)
835 $rbac_log_roles = $this->rbacreview->getParentRoleIds($new_obj->getRefId());
842 $this->clipboard->clear();
843 $this->log->info(
'Object copy completed.');
845 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"object_duplicated"),
true);
846 $ref_id = $new_obj->getRefId();
848 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"objects_duplicated"),
true);
852 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"objects_duplicated"),
true);
858 $this->log->debug(
'Copy container to targets: ' . print_r($_REQUEST,
true));
859 $this->log->debug(
'Source(s): ' . print_r($this->
getSources(),
true));
860 $this->log->debug(
'Target(s): ' . print_r($this->
getTargets(),
true));
863 foreach ($this->
getTargets() as $target_ref_id) {
867 $this->clipboard->clear();
870 $this->log->info(
'Object copy completed.');
871 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"object_duplicated"),
true);
872 if ($this->
getSubMode() == self::SUBMODE_CONTENT_ONLY) {
873 $this->
ctrl->returnToParent($this);
876 $this->
ctrl->redirectToURL($link);
878 $this->log->debug(
'Object copy in progress.');
886 if ($this->request_wrapper->has(
'ref_id')) {
887 $ref_id = $this->request_wrapper->retrieve(
898 $progress->setObjectInfo($this->targets_copy_id);
902 $progress->setRedirectionUrl($link);
904 $this->tpl->setContent($progress->getHTML());
909 $json =
new stdClass();
910 $json->percentage =
null;
911 $json->performed_steps =
null;
913 $copy_id = $this->retriever->getMaybeInt(
'_copy_id');
915 $node = $options->fetchFirstNode();
916 $json->current_node_id = 0;
917 $json->current_node_title =
"";
918 $json->in_dependencies =
false;
919 if (is_array($node)) {
920 $json->current_node_id = $node[
'obj_id'];
921 $json->current_node_title = $node[
'title'];
923 $node = $options->fetchFirstDependenciesNode();
924 if (is_array($node)) {
925 $json->current_node_id = $node[
'obj_id'];
926 $json->current_node_title = $node[
'title'];
927 $json->in_dependencies =
true;
930 $json->required_steps = $options->getRequiredSteps();
931 $json->id = $copy_id;
933 $this->log->debug(
'Update copy progress: ' . json_encode($json));
935 echo json_encode($json);
941 if ($this->
getSubMode() != self::SUBMODE_CONTENT_ONLY) {
942 if (!$this->rbacsystem->checkAccess(
'create', $target_ref_id, $this->getType())) {
944 'Permission denied for target: ' .
950 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'permission_denied'),
true);
951 $this->
ctrl->returnToParent($this);
956 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'),
true);
957 $this->
ctrl->returnToParent($this);
961 if ($this->post_wrapper->has(
"cp_options")) {
962 $options = $this->post_wrapper->retrieve(
964 $this->
refinery->kindlyTo()->dictOf(
965 $this->refinery->kindlyTo()->dictOf($this->refinery->kindlyTo()->string())
970 $this->log->debug(
'Copy container (sources): ' . print_r($this->
getSources(),
true));
973 $result = $orig->cloneAllObject(
984 $this->targets_copy_id[$target_ref_id] = $result[
'copy_id'];
986 $new_ref_id = (
int) $result[
'ref_id'];
987 if ($new_ref_id > 0) {
990 $this->parent_obj->callCreationCallback(
992 $this->obj_definition,
993 $this->retriever->getMaybeInt(
'crtcb', 0)
1012 $this->tpl->setVariable($tpl_var, $this->
form->getHTML());
1030 $this->
form->setTableWidth(
'600px');
1031 $this->
ctrl->setParameter($this,
'new_type', $this->
getType());
1032 $this->
form->setFormAction($this->
ctrl->getFormAction($this));
1033 $this->
form->setTitle($this->
lng->txt($this->getType() .
'_copy'));
1034 $this->
form->addCommandButton(
'searchSource', $this->
lng->txt(
'search_for'));
1035 $this->
form->addCommandButton(
'cancel', $this->
lng->txt(
'cancel'));
1039 $tit->setMaxLength(70);
1040 $tit->setRequired(
true);
1041 $tit->setInfo($this->
lng->txt(
'wizard_title_info'));
1042 $this->
form->addItem($tit);
Class ArrayBasedRequestWrapper.
Manages items in repository clipboard.
static _allocateCopyId()
Allocate a copy for further entries.
static _isFinished(int $a_copy_id)
static _getInstance(int $a_copy_id)
Class ilCtrl provides processing control methods.
setCmd(?string $a_cmd)
@inheritDoc
setReturnByClass(string $a_class, string $a_cmd=null)
@inheritDoc
Error Handling & global info handling uses PEAR error class.
static _getLink(?int $a_ref_id, string $a_type='', array $a_params=array(), string $append="")
static getLogger(string $a_component_id)
Get component logger.
Component logger with individual log levels by component id.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
GUI class for the workflow of copying objects.
const TAB_SELECTION_MEMBERSHIP
sourceExists()
Check if there is any source object.
unsetSession()
Unset session variables.
copyMultipleNonContainer(array $sources)
Copy multiple non container.
ILIAS HTTP Wrapper ArrayBasedRequestWrapper $post_wrapper
setTabs(int $tab_group, int $active_tab)
ilObjectDefinition $obj_definition
initTargetSelection()
Init copy from repository/search list commands.
const TAB_SELECTION_SOURCE_TREE
ilObjectRequestRetriever $retriever
setSource(array $source_ids)
ILIAS HTTP Wrapper RequestWrapper $request_wrapper
ILIAS Refinery Factory $refinery
ilObjectDataCache $obj_data_cache
getParentObject()
Get parent gui object.
const SUBMODE_CONTENT_ONLY
copySingleObject()
Start cloning a single (not container) object.
const TAB_GROUP_SC_SELECTION
showSourceSelectionTree()
ilGlobalTemplateInterface $tpl
saveSourceMembership()
Save selected source from membership screen.
ClipboardManager $clipboard
ImplementsCreationCallback $parent_obj
copyContainer(int $target_ref_id)
showSourceSearch(?string $tpl_var)
Show init screen Normally shown below the create and import form when creating a new object.
adoptContent()
Adopt content (crs in crs, grp in grp, crs in grp or grp in crs)
showSourceSelectionMembership()
show target selection membership
showTargetSelectionTree()
__construct(ImplementsCreationCallback $parent_gui)
setTargets(array $targets)
const TAB_SELECTION_TARGET_TREE
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...
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...
parses the objects.xml it handles the xml-description of all ilias objects
static getClassByType(string $obj_type)
static getInstanceByRefId(int $ref_id, bool $stop_on_error=true)
get an instance of an Ilias object by reference id
Class ilObjectGUI Basic methods of all Output classes.
Base class for all sub item list gui's.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupType(int $id, bool $reference=false)
static _lookupObjId(int $ref_id)
static _lookupTitle(int $obj_id)
static _getMembershipByType(int $a_usr_id, array $a_type, bool $a_only_member_role=false)
get membership by type Get course or group membership
ilPasteIntoMultipleItemsExplorer Explorer
static add(int $a_action, int $a_ref_id, array $a_diff, bool $a_source_ref_id=false)
static gatherFaPa(int $a_ref_id, array $a_role_ids, bool $a_add_action=false)
class ilRbacReview Contains Review functions of core Rbac.
class ilRbacSystem system function like checkAccess, addActiveRole ... Supporting system functions ar...
Explorer for selecting repository items.
static get(string $a_var)
static clear(string $a_var)
static set(string $a_var, $a_val)
Set a value.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a text property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
static redirect(string $a_script)
static _getObjectsByOperations( $a_obj_type, string $a_operation, int $a_usr_id=0, int $limit=0)
Get all objects of a specific type and check access This function is not recursive,...
Interface RequestWrapper.
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...
form( $class_path, string $cmd)