ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilCOPagePCDef.php
Go to the documentation of this file.
1 <?php
2 
20 
27 {
28  public static array $pc_def = [];
29  public static array $pc_def_by_name = [];
30  public static array $pc_gui_classes = array();
31  public static array $pc_gui_classes_lc = array();
32  public static array $pc_def_by_gui_class_cl = array();
33 
34  public static function init(): void
35  {
36  global $DIC;
37 
38  $db = $DIC->database();
39 
40  if (self::$pc_def == null) {
41  $set = $db->query("SELECT * FROM copg_pc_def ORDER BY order_nr");
42  while ($rec = $db->fetchAssoc($set)) {
43  $rec["pc_class"] = "ilPC" . $rec["name"];
44  $rec["pc_gui_class"] = "ilPC" . $rec["name"] . "GUI";
45  self::$pc_gui_classes[] = $rec["pc_gui_class"];
46  self::$pc_gui_classes_lc[] = strtolower($rec["pc_gui_class"]);
47  self::$pc_def[$rec["pc_type"]] = $rec;
48  self::$pc_def_by_name[$rec["name"]] = $rec;
49  self::$pc_def_by_gui_class_cl[strtolower($rec["pc_gui_class"])] = $rec;
50  }
51  }
52  }
53 
54  public static function getPCDefinitions(): array
55  {
56  self::init();
57  return self::$pc_def;
58  }
59 
63  public static function getPCDefinitionByType(string $a_pc_type): ?array
64  {
65  self::init();
66  return (self::$pc_def[$a_pc_type] ?? null);
67  }
68 
72  public static function getPCDefinitionByName(
73  string $a_pc_name
74  ): array {
75  self::init();
76  return self::$pc_def_by_name[$a_pc_name];
77  }
78 
82  public static function getPCDefinitionByGUIClassName(
83  string $a_gui_class_name
84  ): array {
85  self::init();
86  $a_gui_class_name = strtolower($a_gui_class_name);
87  return self::$pc_def_by_gui_class_cl[$a_gui_class_name];
88  }
89 
90  public static function isPCGUIClassName(
91  string $a_class_name,
92  bool $a_lower_case = false
93  ): bool {
94  if ($a_lower_case) {
95  return in_array($a_class_name, self::$pc_gui_classes_lc);
96  } else {
97  return in_array($a_class_name, self::$pc_gui_classes);
98  }
99  }
100 
104  public static function getPCEditorInstanceByName(
105  string $a_name
106  ): ?PageComponentEditor {
107  $pc_def = self::getPCDefinitionByName($a_name);
108  $pc_class = "ilPC" . $pc_def["name"] . "EditorGUI";
109  if (class_exists($pc_class)) {
110  return new $pc_class();
111  }
112  return null;
113  }
114 }
COPage PC elements definition handler.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getPCDefinitionByName(string $a_pc_name)
Get PC definition by name.
static array $pc_def_by_gui_class_cl
static array $pc_gui_classes_lc
global $DIC
Definition: feed.php:28
static array $pc_def
static getPCDefinitionByType(string $a_pc_type)
Get PC definition by type.
static getPCEditorInstanceByName(string $a_name)
Get instance.
static array $pc_def_by_name
static getPCDefinitionByGUIClassName(string $a_gui_class_name)
Get PC definition by name.
static array $pc_gui_classes
static isPCGUIClassName(string $a_class_name, bool $a_lower_case=false)