ILIAS  trunk Revision v11.0_alpha-1753-gb21ca8c4367
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
class.ilObjectDefinition.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
29 {
30  public const MODE_REPOSITORY = 1;
31  public const MODE_WORKSPACE = 2;
32  public const MODE_ADMINISTRATION = 3;
33 
34  protected ilSetting $settings;
36 
37  protected array $obj_data = [];
38  protected array $obj_group = [];
39  protected array $sub_types = [];
40  protected string $parent_tag_name;
41  protected string $current_tag;
42  protected string $current_tag_name;
43  protected ?string $root_trans_type = null;
44 
45  public function __construct()
46  {
47  global $DIC;
48 
49  $this->component_repository = $DIC["component.repository"];
50  $this->settings = $DIC->settings();
51  $this->readDefinitionData();
52  }
53 
57  public function readDefinitionData(): void
58  {
59  $global_cache = ilCachedObjectDefinition::getInstance();
60  foreach ($global_cache->getIlObjectDef() as $rec) {
61  $this->obj_data[$rec["id"]] = [
62  "name" => $rec["id"],
63  "class_name" => $rec["class_name"],
64  "location" => $rec["location"],
65  "checkbox" => $rec["checkbox"],
66  "inherit" => $rec["inherit"],
67  "component" => $rec["component"],
68  "translate" => $rec["translate"],
69  "devmode" => $rec["devmode"],
70  "allow_link" => $rec["allow_link"],
71  "allow_copy" => $rec["allow_copy"],
72  "rbac" => $rec["rbac"],
73  "group" => $rec["grp"],
74  "system" => $rec["system"],
75  "default_pos" => "9999" . str_pad((string) $rec["default_pos"], 4, "0", STR_PAD_LEFT), // "unassigned" group
76  "sideblock" => $rec["sideblock"],
77  'export' => $rec['export'],
78  'repository' => $rec['repository'],
79  'workspace' => $rec['workspace'],
80  'administration' => $rec['administration'],
81  'amet' => $rec['amet'],
82  'orgunit_permissions' => $rec['orgunit_permissions'],
83  'lti_provider' => $rec['lti_provider'],
84  'offline_handling' => $rec['offline_handling']
85  ];
86  $this->obj_data[$rec["id"]]["subobjects"] = [];
87 
88  $defIds[] = $rec["id"];
89  }
90 
91  $subobj = $global_cache->lookupSubObjForParent($defIds);
92 
93  foreach ($subobj as $rec2) {
94  $max = $rec2["mmax"];
95  if ($max <= 0) {
96  $max = "";
97  }
98  $this->obj_data[$rec2["parent"]]["subobjects"][$rec2["subobj"]] = [
99  "name" => $rec2["subobj"],
100  "max" => $max,
101  "lng" => $rec2["subobj"]
102  ];
103  }
104 
105  $this->obj_group = $global_cache->getIlObjectGroup();
106  $this->readPluginData();
107  $this->sub_types = $global_cache->getIlObjectSubType();
108  }
109 
110  protected static function getGroupedPluginObjectTypes(array $grouped_obj, string $slotId): array
111  {
112  global $DIC;
113 
114  $component_repository = $DIC["component.repository"];
115  $plugins = $component_repository->getPluginSlotById($slotId)->getActivePlugins();
116  foreach ($plugins as $plugin) {
117  $pl_id = $plugin->getId();
118  if (!isset($grouped_obj[$pl_id])) {
119  $grouped_obj[$pl_id] = [
120  "pos" => "99992000", // "unassigned" group
121  "objs" => [0 => $pl_id]
122  ];
123  }
124  }
125  return $grouped_obj;
126  }
127 
128  public function getClassName(string $obj_name): string
129  {
130  return $this->obj_data[$obj_name]["class_name"] ?? '';
131  }
132 
133  public function getLocation(string $obj_name): string
134  {
135  return $this->obj_data[$obj_name]["location"] ?? '';
136  }
137 
141  public function getGroup(string $id): array
142  {
143  return $this->obj_group[$id];
144  }
145 
149  public function getGroupOfObj(string $obj_name): ?string
150  {
151  return $this->obj_data[$obj_name]["group"] ?? null;
152  }
153 
157  public function hasCheckbox(string $obj_name): bool
158  {
159  return (bool) ($this->obj_data[$obj_name]["checkbox"] ?? false);
160  }
161 
165  public function getTranslationType(string $obj_name): ?string
166  {
167  global $DIC;
168  $ilDB = $DIC->database();
169 
170  if ($obj_name == "root") {
171  if (!isset($this->root_trans_type)) {
172  $sql =
173  "SELECT count(obj_id) cnt" . PHP_EOL
174  . "FROM object_translation" . PHP_EOL
175  . "WHERE obj_id = " . $ilDB->quote(ROOT_FOLDER_ID, 'integer') . PHP_EOL
176  ;
177  $set = $ilDB->query($sql);
178  $rec = $set->fetchRow(ilDBConstants::FETCHMODE_ASSOC);
179  if ($rec["cnt"] > 0) {
180  $this->root_trans_type = "db";
181  } else {
182  $this->root_trans_type = $this->obj_data[$obj_name]["translate"];
183  }
184  }
185  return $this->root_trans_type;
186  }
187 
188  if (isset($this->obj_data[$obj_name])) {
189  return $this->obj_data[$obj_name]["translate"];
190  }
191 
192  return "";
193  }
194 
198  public function stopInheritance(string $obj_name): bool
199  {
200  return (bool) $this->obj_data[$obj_name]["inherit"];
201  }
202 
206  public function getDevMode(string $obj_name): bool
207  {
208  return (bool) ($this->obj_data[$obj_name]["devmode"] ?? false);
209  }
210 
216  public function getDevModeAll(): array
217  {
218  $types = array_keys($this->obj_data);
219 
220  $dev_types = [];
221  foreach ($types as $type) {
222  if ($this->getDevMode($type)) {
223  $dev_types[] = $type;
224  }
225  }
226 
227  return $dev_types;
228  }
229 
234  public function isRBACObject(string $obj_name): bool
235  {
236  return (bool) ($this->obj_data[$obj_name]["rbac"] ?? false);
237  }
238 
243  public function isPlugin(string $obj_name): bool
244  {
245  return isset($this->obj_data[$obj_name]["plugin"]);
246  }
247 
251  public function isPluginTypeName(string $str): bool
252  {
253  return (substr($str, 0, 1) == "x");
254  }
255 
259  public function isActivePluginType(string $type): bool
260  {
261  if (!$this->component_repository->hasPluginId($type)) {
262  return false;
263  }
264  $plugin_slot = $this->component_repository->getPluginById($type)->getPluginSlot();
265  return $plugin_slot->getId() === "robj" || $plugin_slot->getId() === "orguext";
266  }
267 
268  public function getAllRBACObjects(): array
269  {
270  $types = array_keys($this->obj_data);
271 
272  $rbac_types = [];
273  foreach ($types as $type) {
274  if ($this->isRBACObject($type)) {
275  $rbac_types[] = $type;
276  }
277  }
278 
279  return $rbac_types;
280  }
281 
285  public function getAllObjects(): array
286  {
287  return array_keys($this->obj_data);
288  }
289 
293  public function allowLink(string $obj_name): bool
294  {
295  return (bool) $this->obj_data[$obj_name]["allow_link"];
296  }
297 
301  public function allowCopy(string $obj_name): bool
302  {
303  return (bool) $this->obj_data[$obj_name]["allow_copy"];
304  }
305 
306  public function allowExport(string $obj_name): bool
307  {
308  return (bool) $this->obj_data[$obj_name]['export'];
309  }
310 
315  public function hasLocalRoles(string $obj_type): bool
316  {
317  switch ($obj_type) {
318  case 'root':
319  return false;
320 
321  default:
322  return true;
323  }
324  }
325 
329  public function getSubObjects(string $obj_type, bool $filter = true): array
330  {
331  $subs = [];
332  if ($subobjects = ($this->obj_data[$obj_type]["subobjects"] ?? false)) {
333  // Filter some objects e.g. chat object are creatable if chat is active
334  if ($filter) {
335  $this->__filterObjects($subobjects);
336  }
337  foreach ($subobjects as $data => $sub) {
338  if (!isset($sub["module"]) || $sub["module"] != "n") {
339  if (!($this->settings->get("obj_dis_creation_" . $data))) {
340  $subs[$data] = $sub;
341 
342  // determine position
343  $pos = (int) $this->obj_data[$data]["default_pos"];
344  if ($this->settings->get("obj_add_new_pos_" . $data) > 0) {
345  $pos = (int) $this->settings->get("obj_add_new_pos_" . $data);
346  }
347  $subs[$data]["pos"] = $pos;
348  }
349  }
350  }
351 
352  return ilArrayUtil::sortArray($subs, "pos", 'ASC', true, true);
353  }
354 
355  return $subs;
356  }
357 
366  public function getSubObjectsRecursively(
367  string $obj_type,
368  bool $include_source_obj = true,
369  bool $add_admin_objects = false
370  ): array {
371  // This associative array is used to collect all sub object types.
372  // key=>type, value=data
373  $recursive_subs = [];
374 
375  // This array is used to keep track of the object types, we
376  // need to call function getSubobjects() for.
377  $to_do = [$obj_type];
378 
379  // This array is used to keep track of the object types, we
380  // have called function getSubobjects() already. This is to
381  // prevent endless loops, for object types that support
382  // themselves as subobject types either directly or indirectly.
383  $done = [];
384 
385  while (count($to_do) > 0) {
386  $type = array_pop($to_do);
387  $done[] = $type;
388 
389  // no recovery folder subitems
390  if ($type == 'recf') {
391  continue;
392  }
393 
394  // Hide administration if desired
395  if (!$add_admin_objects and $type == 'adm') {
396  $subs = [];
397  } else {
398  $subs = $this->getSubObjects($type);
399  }
400  foreach ($subs as $subtype => $data) {
401  // Hide role templates and folder from view
402  if ($this->getDevMode($subtype) or !$this->isRBACObject($subtype)) {
403  continue;
404  }
405  if ($subtype == 'rolt') {
406  continue;
407  }
408  if (!$add_admin_objects and $subtype == 'adm') {
409  continue;
410  }
411 
412  $recursive_subs[$subtype] = $data;
413  if (!in_array($subtype, $done) && !in_array($subtype, $to_do)) {
414  $to_do[] = $subtype;
415  }
416  }
417  }
418 
419  if ($include_source_obj) {
420  if (!isset($recursive_subs[$obj_type])) {
421  $recursive_subs[$obj_type]['name'] = $obj_type;
422  $recursive_subs[$obj_type]['lng'] = $obj_type;
423  $recursive_subs[$obj_type]['max'] = 0;
424  $recursive_subs[$obj_type]['pos'] = -1;
425  }
426  }
427  return ilArrayUtil::sortArray($recursive_subs, "pos", 'ASC', true, true);
428  }
429 
430 
436  public function getSubobjectsToFilter(string $obj_type = "adm"): array
437  {
438  foreach ($this->obj_data[$obj_type]["subobjects"] as $key => $value) {
439  switch ($key) {
440  case "rolf":
441  case "orgu":
442  // DO NOTHING
443  break;
444 
445  default:
446  $tmp_subs[] = $key;
447  }
448  }
449  $tmp_subs[] = "adm";
450 
451  return $tmp_subs;
452  }
453 
454  public function getCreatableSubObjects(
455  string $obj_type,
456  int $context = self::MODE_REPOSITORY,
457  ?int $parent_ref_id = null
458  ): array {
459  $sub_objects = $this->getSubObjects($obj_type);
460 
461  // remove role folder object from list
462  unset($sub_objects["rolf"]);
463 
464  $sub_types = array_keys($sub_objects);
465 
466  // remove object types in development from list
467  foreach ($sub_types as $type) {
468  if ($this->getDevMode($type) || $this->isSystemObject($type)) {
469  unset($sub_objects[$type]);
470  }
471  if ($context == self::MODE_REPOSITORY && !$this->isAllowedInRepository($type)) {
472  unset($sub_objects[$type]);
473  }
474  if ($context == self::MODE_WORKSPACE && !$this->isAllowedInWorkspace($type)) {
475  unset($sub_objects[$type]);
476  }
477  if ($context == self::MODE_ADMINISTRATION && !$this->isAdministrationObject($type)) {
478  unset($sub_objects[$type]);
479  }
480  }
481 
482  if ($obj_type == "prg") {
483  // ask study program which objects are allowed to create on the concrete node.
484  return ilObjStudyProgramme::getCreatableSubObjects($sub_objects, $parent_ref_id);
485  }
486 
487  return $sub_objects;
488  }
489 
493  public function getSubObjectsAsString(string $obj_type): string
494  {
495  $string = "";
496  if (is_array($this->obj_data[$obj_type]["subobjects"])) {
497  $data = array_keys($this->obj_data[$obj_type]["subobjects"]);
498  $string = "'" . implode("','", $data) . "'";
499  }
500 
501  return $string;
502  }
503 
507  public function isContainer(string $obj_name): bool
508  {
509  return (bool) ($this->obj_data[$obj_name]['subobjects'] ?? false);
510  }
511 
512  public function setHandlers($xml_parser): void
513  {
514  xml_set_element_handler($xml_parser, $this->handlerBeginTag(...), $this->handlerEndTag(...));
515  xml_set_character_data_handler($xml_parser, $this->handlerCharacterData(...));
516  }
517 
518  public function handlerBeginTag($xml_parser, string $name, array $attribs): void
519  {
520  switch ($name) {
521  case 'object':
522  $this->parent_tag_name = $attribs["name"];
523  break;
524  case 'property':
525  $this->current_tag = "property";
526  $this->current_tag_name = $attribs["name"];
527  $this->obj_data[$this->parent_tag_name]["properties"][$this->current_tag_name]["module"] = $attribs["module"];
528  break;
529  }
530  }
531 
532  public function handlerCharacterData($xml_parser, string $data): void
533  {
534  }
535 
536  public function handlerEndTag($xml_parser, string $name): void
537  {
538  $this->current_tag = '';
539  $this->current_tag_name = '';
540  }
541 
542  public function __filterObjects(array &$sub_objects): void
543  {
544  // DO NOTHING
545  }
546 
557  public function isSystemObject(string $obj_name): bool
558  {
559  return (bool) ($this->obj_data[$obj_name]["system"] ?? false);
560  }
561 
565  public function isSideBlock(string $obj_name): bool
566  {
567  return (bool) ($this->obj_data[$obj_name]["sideblock"] ?? false);
568  }
569 
570  public function getSideBlockTypes(bool $filter_repository_types = true): array
571  {
572  $side_block_types = [];
573  foreach (array_keys($this->obj_data) as $type) {
574  if (
575  $filter_repository_types &&
576  !$this->isAllowedInRepository($type)
577  ) {
578  continue;
579  }
580  if ($this->isSideBlock($type)) {
581  $side_block_types[] = $type;
582  }
583  }
584  return $side_block_types;
585  }
586 
595  public static function getRepositoryObjectTypesForComponent(string $component_type, string $component_name): array
596  {
597  global $DIC;
598  $ilDB = $DIC->database();
599 
600  $sql =
601  "SELECT id, class_name, component, location, checkbox, inherit, translate, devmode, allow_link," . PHP_EOL
602  . "allow_copy, rbac, `system`, sideblock, default_pos, grp, default_pres_pos, `export`, repository," . PHP_EOL
603  . "workspace, administration, amet, orgunit_permissions, lti_provider, offline_handling" . PHP_EOL
604  . "FROM il_object_def" . PHP_EOL
605  . "WHERE component = %s" . PHP_EOL
606  ;
607  $result = $ilDB->queryF($sql, ["text"], [$component_type . "/" . $component_name]);
608 
609  $types = [];
610  while ($rec = $ilDB->fetchAssoc($result)) {
611  if ($rec["system"] != 1) {
612  $types[] = $rec;
613  }
614  }
615 
616  return $types;
617  }
618 
622  public static function getComponentForType(string $obj_type): string
623  {
624  global $DIC;
625  $ilDB = $DIC->database();
626 
627  $result = $ilDB->queryF("SELECT component FROM il_object_def WHERE id = %s", ["text"], [$obj_type]);
628 
629  if ($rec = $ilDB->fetchAssoc($result)) {
630  return $rec["component"];
631  }
632 
633  return "";
634  }
635 
639  public static function getGroupedRepositoryObjectTypes($parent_obj_type): array
640  {
641  global $DIC;
642  $ilDB = $DIC->database();
643 
644  $set = $ilDB->query("SELECT * FROM il_object_group");
645  $groups = [];
646  while ($gr_rec = $set->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) {
647  $groups[$gr_rec["id"]] = $gr_rec;
648  }
649 
650  $global_cache = ilCachedObjectDefinition::getInstance();
651 
652  $recs = $global_cache->lookupGroupedRepObj($parent_obj_type);
653 
654  $grouped_obj = [];
655  foreach ((array) $recs as $rec) {
656  if ($rec["grp"] != "") {
657  $grouped_obj[$rec["grp"]]["pos"] = (int) $groups[$rec["grp"]]["default_pres_pos"];
658  $grouped_obj[$rec["grp"]]["objs"][] = $rec["id"];
659  } else {
660  $grouped_obj[$rec["id"]]["pos"] = (int) $rec["default_pres_pos"];
661  $grouped_obj[$rec["id"]]["objs"][] = $rec["id"];
662  }
663  }
664  // now get objects from repository plugin
665  $grouped_obj = self::getGroupedPluginObjectTypes($grouped_obj, "robj");
666  $grouped_obj = self::getGroupedPluginObjectTypes($grouped_obj, "orguext");
667 
668  return ilArrayUtil::sortArray($grouped_obj, "pos", "asc", true, true);
669  }
670 
674  public function isAllowedInRepository(string $obj_name): bool
675  {
676  return (bool) ($this->obj_data[$obj_name]["repository"] ?? false);
677  }
678 
682  public function getAllRepositoryTypes(bool $incl_adm = false): array
683  {
684  $types = array_keys($this->obj_data);
685 
686  $rbac_types = [];
687  foreach ($types as $type) {
688  if ($this->isAllowedInRepository($type) && (!$this->isAdministrationObject($type) || $incl_adm)) {
689  $rbac_types[] = $type;
690  }
691  }
692 
693  return $rbac_types;
694  }
695 
699  public function isAllowedInWorkspace(string $obj_name): bool
700  {
701  return (bool) ($this->obj_data[$obj_name]["workspace"] ?? false);
702  }
703 
707  public function isAdministrationObject(string $obj_name): bool
708  {
709  return (bool) ($this->obj_data[$obj_name]['administration'] ?? false);
710  }
711 
715  public function isInactivePlugin(string $type): bool
716  {
717  if (substr($type, 0, 1) == "x" && !$this->isPlugin($type)) {
718  return true;
719  }
720  return false;
721  }
722 
726  public function getAdvancedMetaDataTypes(): array
727  {
728  $amet = [];
729  foreach ($this->obj_data as $k => $v) {
730  if ($v["amet"] ?? false) {
731  $amet[] = ["obj_type" => $k, "sub_type" => ""];
732  }
733  }
734 
735  foreach ($this->sub_types as $type => $sub_types) {
736  foreach ($sub_types as $t) {
737  if ($t["amet"]) {
738  $amet[] = ["obj_type" => $type, "sub_type" => $t["sub_type"]];
739  }
740  }
741  }
742 
743  return $amet;
744  }
745 
751  public function getOrgUnitPermissionTypes(): array
752  {
753  $types = [];
754  foreach ($this->obj_data as $type => $object_info) {
755  if ($object_info['orgunit_permissions']) {
756  $types[] = $type;
757  }
758  }
759  return $types;
760  }
761 
766  public function getLTIProviderTypes(): array
767  {
768  $types = [];
769  foreach ($this->obj_data as $type => $object_info) {
770  if (array_key_exists('lti_provider', $object_info) && $object_info['lti_provider']) {
771  $types[] = $type;
772  }
773  }
774  return $types;
775  }
776 
780  public function isOrgUnitPermissionType(string $obj_type): bool
781  {
782  return in_array($obj_type, $this->getOrgUnitPermissionTypes());
783  }
784 
788  public function getPositionByType(string $type): int
789  {
790  if ($this->settings->get("obj_add_new_pos_" . $type) > 0) {
791  return (int) $this->settings->get("obj_add_new_pos_" . $type);
792  }
793  return (int) $this->obj_data[$type]["default_pos"];
794  }
795 
799  public function getPlugins(): array
800  {
801  $plugins = [];
802  foreach ($this->obj_data as $type => $pl_data) {
803  if ($this->isPlugin($type)) {
804  $plugins[$type] = $pl_data;
805  }
806  }
807  return $plugins;
808  }
809 
813  public function getExplorerContainerTypes(): array
814  {
815  $res = $grp_map = $cnt_grp = [];
816 
817  // all repository object types
818  foreach ($this->getSubObjectsRecursively("root") as $rtype) {
819  $type = $rtype["name"];
820 
821  if ($type == "rolf") {
822  continue;
823  }
824 
825  // gather group data
826  $type_grp = $this->getGroupOfObj($type);
827  if ($type_grp) {
828  $grp_map[$type_grp][] = $type;
829  }
830 
831  // add basic container types
832  if ($this->isContainer($type)) {
833  if ($type_grp) {
834  $cnt_grp[] = $type_grp;
835  }
836 
837  $res[] = $type;
838  }
839  }
840 
841  // add complete groups (cat => rcat, catr; crs => rcrs, crsr; ...)
842  foreach ($cnt_grp as $grp) {
843  $res = array_merge($res, $grp_map[$grp]);
844  }
845  $res[] = "itgr";
846 
847  return array_unique($res);
848  }
849 
853  public function supportsOfflineHandling(string $obj_type): bool
854  {
855  return (bool) ($this->obj_data[$obj_type]['offline_handling'] ?? false);
856  }
857 
858 
863  protected function readPluginData(): void
864  {
865  $this->parsePluginData("robj", false);
866  $this->parsePluginData("orguext", true);
867  }
868 
874  protected function parsePluginData(string $slotId, bool $isInAdministration): void
875  {
876  $plugins = $this->component_repository->getPluginSlotById($slotId)->getActivePlugins();
877  foreach ($plugins as $plugin) {
878  $pl_id = $plugin->getId();
879  if ($pl_id != "" && !isset($this->obj_data[$pl_id])) {
880  $loc = $plugin->getPath() . "/classes";
881  // The plugin_id is the same as the type_id in repository object plugins.
883 
884  $this->obj_data[$pl_id] = [
885  "name" => $pl_id,
886  "class_name" => $pl->getPluginName(),
887  "plugin" => "1",
888  "location" => $loc,
889  "checkbox" => "1",
890  "inherit" => "0",
891  "component" => "",
892  "translate" => "0",
893  "devmode" => "0",
894  "allow_link" => "1",
895  "allow_copy" => $pl->allowCopy() ? '1' : '0',
896  "rbac" => "1",
897  "group" => null,
898  "system" => "0",
899  "default_pos" => "99992000", // "unassigned" group
900  'repository' => '1',
901  'workspace' => '0',
902  'administration' => $isInAdministration ? '1' : '0',
903  "sideblock" => "0",
904  'export' => $plugin->supportsExport(),
905  'offline_handling' => '0',
906  'orgunit_permissions' => $pl->useOrguPermissions() ? '1' : '0'
907  ];
908 
909  $parent_types = $pl->getParentTypes();
910  foreach ($parent_types as $parent_type) {
911  $this->obj_data[$parent_type]["subobjects"][$pl_id] = [
912  "name" => $pl_id,
913  "max" => "",
914  "lng" => $pl_id,
915  "plugin" => true
916  ];
917  }
918  }
919  }
920  }
921 }
getSubObjects(string $obj_type, bool $filter=true)
get all sub objects by type
$res
Definition: ltiservices.php:66
static getComponentForType(string $obj_type)
Get component for object type.
Readable part of repository interface to ilComponentDataDB.
static getGroupedPluginObjectTypes(array $grouped_obj, string $slotId)
$context
Definition: webdav.php:31
getSubobjectsToFilter(string $obj_type="adm")
get all subjects except (rolf) of the adm object This is necessary for filtering these objects in rol...
isSystemObject(string $obj_name)
checks if object type is a system object
isActivePluginType(string $type)
Returns true if the given type is an active type of repositoryObject or Organisation Unit Extension p...
const ROOT_FOLDER_ID
Definition: constants.php:32
isAdministrationObject(string $obj_name)
Check if administration object.
readDefinitionData()
Read object definition data.
isOrgUnitPermissionType(string $obj_type)
Check if object type offers org unit position support.
allowLink(string $obj_name)
checks if linking of an object type is allowed
getAdvancedMetaDataTypes()
Get advanced meta data objects.
isContainer(string $obj_name)
Check if object type is container (&#39;crs&#39;,&#39;fold&#39;,&#39;grp&#39; ...)
getPositionByType(string $type)
Get Position By Object Type.
getOrgUnitPermissionTypes()
Get object type with org unit position permission support.
getGroupOfObj(string $obj_name)
Get Group of object type.
isRBACObject(string $obj_name)
get RBAC status by type returns true if object type is a RBAC object type
static getCreatableSubObjects(array $subobjects, $ref_id)
Filter the list of possible subobjects for the objects that actually could be created on a concrete n...
getSideBlockTypes(bool $filter_repository_types=true)
allowCopy(string $obj_name)
checks if copying of an object type is allowed
getCreatableSubObjects(string $obj_type, int $context=self::MODE_REPOSITORY, ?int $parent_ref_id=null)
stopInheritance(string $obj_name)
Does object permits stopping inheritance?
getAllRepositoryTypes(bool $incl_adm=false)
get all RBAC object types
isAllowedInWorkspace(string $obj_name)
checks if object type can be used in workspace context
hasCheckbox(string $obj_name)
should the object get a checkbox (needed for &#39;cut&#39;,&#39;copy&#39; ...)
ilComponentRepository $component_repository
handlerCharacterData($xml_parser, string $data)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
getDevMode(string $obj_name)
get dev mode status by type
handlerEndTag($xml_parser, string $name)
isAllowedInRepository(string $obj_name)
checks if object type can be used in repository context
getPluginSlotById(string $id)
Get pluginslot by id.
isPluginTypeName(string $str)
Check if given type is a plugin type name (starts with an "x")
global $DIC
Definition: shib_login.php:22
handlerBeginTag($xml_parser, string $name, array $attribs)
getClassName(string $obj_name)
isSideBlock(string $obj_name)
Check, whether object type is a side block.
supportsOfflineHandling(string $obj_type)
check whether obj_type supports centralised offline handling
getSubObjectsRecursively(string $obj_type, bool $include_source_obj=true, bool $add_admin_objects=false)
Get all sub objects by type.
getTranslationType(string $obj_name)
get translation type (sys, db or null)
isInactivePlugin(string $type)
Check whether type belongs to inactive plugin.
static getPluginObjectByType(string $type)
Return either a repoObject plugin or a orgunit extension plugin or null if the type is not a plugin...
getAllObjects()
get all object types
static getGroupedRepositoryObjectTypes($parent_obj_type)
parsePluginData(string $slotId, bool $isInAdministration)
loads a single plugin definition into the object definition
getSubObjectsAsString(string $obj_type)
get a string of all sub objects by type
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
getLTIProviderTypes()
Get object types which offer lti provider support.
getGroup(string $id)
Get Group information.
hasLocalRoles(string $obj_type)
Check whether the creation of local roles is allowed Currently disabled for type "root" and "adm"...
isPlugin(string $obj_name)
get RBAC status by type returns true if object type is an (activated) plugin type ...
static getRepositoryObjectTypesForComponent(string $component_type, string $component_name)
Get all repository object types of component.
readPluginData()
Loads the different plugins into the object definition.
getExplorerContainerTypes()
Get all object types which are defined as container in an explorer context.
getDevModeAll()
get all object types in dev mode
__filterObjects(array &$sub_objects)
static sortArray(array $array, string $a_array_sortby_key, string $a_array_sortorder="asc", bool $a_numeric=false, bool $a_keep_keys=false)
getPlugins()
Get plugin object info.