entity relation save
This commit is contained in:
		| @@ -2,8 +2,13 @@ | ||||
|  | ||||
| namespace app\modules\tag; | ||||
|  | ||||
| use itguild\forms\builders\TextInputBuilder; | ||||
| use kernel\app_modules\tag\models\Tag; | ||||
| use kernel\helpers\Debug; | ||||
| use kernel\helpers\Slug; | ||||
| use kernel\Module; | ||||
| use kernel\modules\menu\service\MenuService; | ||||
| use kernel\Request; | ||||
| use kernel\services\MigrationService; | ||||
|  | ||||
| class TagModule extends Module | ||||
| @@ -35,4 +40,21 @@ class TagModule extends Module | ||||
|     { | ||||
|         $this->menuService->removeItemBySlug("tag"); | ||||
|     } | ||||
|  | ||||
|     public function formInputs(): void | ||||
|     { | ||||
|         $input = TextInputBuilder::build("tag", ['class' => 'form-control', 'placeholder' => 'Теги']); | ||||
|         $input->setLabel("Теги"); | ||||
|         $input->create()->render(); | ||||
|     } | ||||
|  | ||||
|     public function saveInputs(string $entity, Request $request): void | ||||
|     { | ||||
|         $model = new Tag(); | ||||
|         $model->entity = $entity; | ||||
|         $model->label = $request->post('tag'); | ||||
|         $model->status = Tag::ACTIVE_STATUS; | ||||
|         $model->slug = Slug::createSlug($request->post('tag'), $model); | ||||
|         $model->save(); | ||||
|     } | ||||
| } | ||||
| @@ -3,6 +3,7 @@ | ||||
|   "version": "0.2", | ||||
|   "author": "ITGuild", | ||||
|   "slug": "tag", | ||||
|   "type": "additional_property", | ||||
|   "description": "Tags module", | ||||
|   "app_module_path": "{APP}/modules/{slug}", | ||||
|   "module_class": "app\\modules\\tag\\TagModule", | ||||
|   | ||||
| @@ -53,7 +53,7 @@ class EntityRelation | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public function removeFromEntityRelations(string $entity, string $property): bool | ||||
|     public static function removePropertyFromEntityRelations(string $entity, string $property): bool | ||||
|     { | ||||
|         $entity_relations_info = Option::where("key", "entity_relations")->first(); | ||||
|         if ($entity_relations_info) { | ||||
| @@ -71,6 +71,42 @@ class EntityRelation | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public static function removePropertyRelation(string $property): bool | ||||
|     { | ||||
|         $entity_relations_info = Option::where("key", "entity_relations")->first(); | ||||
|         if ($entity_relations_info) { | ||||
|             $entity_relations = json_decode($entity_relations_info->value, true); | ||||
|             foreach ($entity_relations as $entity => $entity_relation){ | ||||
|                 if (in_array($property, $entity_relation)) { | ||||
|                     $index = array_search($property, $entity_relation); | ||||
|                     unset($entity_relations[$entity][$index]); | ||||
|                 } | ||||
|             } | ||||
|             $entity_relations_info->value = json_encode($entity_relations, JSON_UNESCAPED_UNICODE); | ||||
|             $entity_relations_info->save(); | ||||
|  | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public static function removeEntityRelation(string $entity): bool | ||||
|     { | ||||
|         $entity_relations_info = Option::where("key", "entity_relations")->first(); | ||||
|         if ($entity_relations_info) { | ||||
|             $entity_relations = json_decode($entity_relations_info->value, true); | ||||
|             if (isset($entity_relations[$entity])) { | ||||
|                 unset($entity_relations[$entity]); | ||||
|                 $entity_relations_info->value = json_encode($entity_relations, JSON_UNESCAPED_UNICODE); | ||||
|                 $entity_relations_info->save(); | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     public function getEntityRelationsBySlug(string $slug) | ||||
|     { | ||||
|         $entityRelations = $this->getEntitiesRelations(); | ||||
| @@ -129,4 +165,22 @@ class EntityRelation | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public function saveEntityRelationBySlug(string $slug, string $entity, Request $request): void | ||||
|     { | ||||
|         $moduleClass = $this->getAdditionalPropertyClassBySlug($slug); | ||||
|         if ($moduleClass and method_exists($moduleClass, "saveInputs")) { | ||||
|             $moduleClass->saveInputs($entity, $request); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public function saveEntityRelation(string $entity, Request $request): void | ||||
|     { | ||||
|         $relations = $this->getEntityRelationsBySlug($entity); | ||||
|         if ($relations){ | ||||
|             foreach ($relations as $relation){ | ||||
|                 $this->saveEntityRelationBySlug($relation, $entity, $request); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -6,9 +6,12 @@ namespace kernel\modules\post\controllers; | ||||
| use Exception; | ||||
| use JetBrains\PhpStorm\NoReturn; | ||||
| use kernel\AdminController; | ||||
| use kernel\EntityRelation; | ||||
| use kernel\helpers\Debug; | ||||
| use kernel\modules\post\models\forms\CreatePostForm; | ||||
| use kernel\modules\post\models\Post; | ||||
| use kernel\modules\post\service\PostService; | ||||
| use kernel\Request; | ||||
|  | ||||
| class PostController extends AdminController | ||||
| { | ||||
| @@ -31,6 +34,10 @@ class PostController extends AdminController | ||||
|         $postForm->load($_REQUEST); | ||||
|         if ($postForm->validate()) { | ||||
|             $post = $this->postService->create($postForm); | ||||
|  | ||||
|             $entityRelation = new EntityRelation(); | ||||
|             $entityRelation->saveEntityRelation("post", new Request()); | ||||
|  | ||||
|             if ($post) { | ||||
|                 $this->redirect("/admin/post/view/" . $post->id); | ||||
|             } | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
| namespace kernel\services; | ||||
|  | ||||
| use DirectoryIterator; | ||||
| use kernel\EntityRelation; | ||||
| use kernel\helpers\Debug; | ||||
| use kernel\helpers\Files; | ||||
| use kernel\helpers\Manifest; | ||||
| @@ -130,6 +131,10 @@ class ModuleService | ||||
|     public function deactivateModule(string $module): bool | ||||
|     { | ||||
|         $active_modules_info = Option::where("key", "active_modules")->first(); | ||||
|  | ||||
|         EntityRelation::removeEntityRelation($module); | ||||
|         EntityRelation::removePropertyRelation($module); | ||||
|  | ||||
|         $active_modules = json_decode($active_modules_info->value); | ||||
|         if (!in_array($module, $active_modules->modules)) { | ||||
|             return true; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user