entity relations
This commit is contained in:
		| @@ -4,23 +4,70 @@ namespace kernel; | ||||
|  | ||||
| use kernel\helpers\Debug; | ||||
| use kernel\models\Option; | ||||
| use kernel\modules\option\service\OptionService; | ||||
| use kernel\services\ModuleService; | ||||
|  | ||||
| class EntityRelation | ||||
| { | ||||
|     protected ModuleService $moduleService; | ||||
|  | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->moduleService = new ModuleService(); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     public function getEntityList(): array | ||||
|     { | ||||
|         $entity_relations = Option::where("key", "entity_relations")->first(); | ||||
|         if ($entity_relations) { | ||||
|             $entity_relations = json_decode($entity_relations->value, true); | ||||
|             $entities = []; | ||||
|             foreach ($entity_relations as $entity => $relation) { | ||||
|                 $entities[] = $entity; | ||||
|         $list = []; | ||||
|         $activeModules = $this->moduleService->getActiveModules(); | ||||
|         foreach ($activeModules as $module) { | ||||
|             if (isset($module['type']) and $module['type'] === "entity") { | ||||
|                 $list[] = $module['slug']; | ||||
|             } | ||||
|  | ||||
|             return $entities; | ||||
|         } | ||||
|  | ||||
|         return []; | ||||
|         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 | ||||
| @@ -40,4 +87,32 @@ class EntityRelation | ||||
|  | ||||
|         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); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user