moduleService = new ModuleService(); } public function getEntityList(): array { $list = []; $activeModules = $this->moduleService->getActiveModules(); foreach ($activeModules as $module) { if (isset($module['type']) and $module['type'] === "entity") { $list[] = $module['slug']; } } return $list; } public function getAdditionalPropertyList(): array { $list = []; $activeModules = $this->moduleService->getActiveModules(); foreach ($activeModules as $module) { if (isset($module['type']) and $module['type'] === "additional_property") { $list[] = $module['slug']; } } return $list; } public function getEntitiesRelations(): array|bool { $entity_relations = OptionService::getItem("entity_relations"); if ($entity_relations) { return json_decode($entity_relations, true); } return false; } public function removeFromEntityRelations(string $entity, string $property) { } public function getEntityRelationsBySlug(string $slug) { $entityRelations = $this->getEntitiesRelations(); if ($entityRelations) { if (isset($entityRelations[$slug])){ return $entityRelations[$slug]; } } return false; } public function addEntityRelation(array $data): bool { $entity_relations_info = Option::where("key", "entity_relations")->first(); if ($entity_relations_info) { $entity_relations = json_decode($entity_relations_info->value, true); foreach ($data as $entity => $relation) { $entity_relations[$entity] = $relation; } $entity_relations_info->value = json_encode($entity_relations, JSON_UNESCAPED_UNICODE); $entity_relations_info->save(); return true; } return false; } public function getAdditionalPropertyClassBySlug(string $slug) { $module = $this->moduleService->getModuleInfoBySlug($slug); if (isset($module['module_class'])) { return new $module['module_class'](); } return false; } public function renderFormInputsBySlug(string $slug): void { $moduleClass = $this->getAdditionalPropertyClassBySlug($slug); if ($moduleClass and method_exists($moduleClass, "formInputs")) { $moduleClass->formInputs(); } } public function renderEntityAdditionalPropertyFormBySlug(string $slug): void { $relations = $this->getEntityRelationsBySlug($slug); if ($relations){ foreach ($relations as $relation){ $this->renderFormInputsBySlug($relation); } } } }