entity relation save
This commit is contained in:
parent
860ea1a82d
commit
62eff81213
@ -2,8 +2,13 @@
|
|||||||
|
|
||||||
namespace app\modules\tag;
|
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\Module;
|
||||||
use kernel\modules\menu\service\MenuService;
|
use kernel\modules\menu\service\MenuService;
|
||||||
|
use kernel\Request;
|
||||||
use kernel\services\MigrationService;
|
use kernel\services\MigrationService;
|
||||||
|
|
||||||
class TagModule extends Module
|
class TagModule extends Module
|
||||||
@ -35,4 +40,21 @@ class TagModule extends Module
|
|||||||
{
|
{
|
||||||
$this->menuService->removeItemBySlug("tag");
|
$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",
|
"version": "0.2",
|
||||||
"author": "ITGuild",
|
"author": "ITGuild",
|
||||||
"slug": "tag",
|
"slug": "tag",
|
||||||
|
"type": "additional_property",
|
||||||
"description": "Tags module",
|
"description": "Tags module",
|
||||||
"app_module_path": "{APP}/modules/{slug}",
|
"app_module_path": "{APP}/modules/{slug}",
|
||||||
"module_class": "app\\modules\\tag\\TagModule",
|
"module_class": "app\\modules\\tag\\TagModule",
|
||||||
|
@ -53,7 +53,7 @@ class EntityRelation
|
|||||||
return false;
|
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();
|
$entity_relations_info = Option::where("key", "entity_relations")->first();
|
||||||
if ($entity_relations_info) {
|
if ($entity_relations_info) {
|
||||||
@ -71,6 +71,42 @@ class EntityRelation
|
|||||||
return false;
|
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)
|
public function getEntityRelationsBySlug(string $slug)
|
||||||
{
|
{
|
||||||
$entityRelations = $this->getEntitiesRelations();
|
$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 Exception;
|
||||||
use JetBrains\PhpStorm\NoReturn;
|
use JetBrains\PhpStorm\NoReturn;
|
||||||
use kernel\AdminController;
|
use kernel\AdminController;
|
||||||
|
use kernel\EntityRelation;
|
||||||
|
use kernel\helpers\Debug;
|
||||||
use kernel\modules\post\models\forms\CreatePostForm;
|
use kernel\modules\post\models\forms\CreatePostForm;
|
||||||
use kernel\modules\post\models\Post;
|
use kernel\modules\post\models\Post;
|
||||||
use kernel\modules\post\service\PostService;
|
use kernel\modules\post\service\PostService;
|
||||||
|
use kernel\Request;
|
||||||
|
|
||||||
class PostController extends AdminController
|
class PostController extends AdminController
|
||||||
{
|
{
|
||||||
@ -31,6 +34,10 @@ class PostController extends AdminController
|
|||||||
$postForm->load($_REQUEST);
|
$postForm->load($_REQUEST);
|
||||||
if ($postForm->validate()) {
|
if ($postForm->validate()) {
|
||||||
$post = $this->postService->create($postForm);
|
$post = $this->postService->create($postForm);
|
||||||
|
|
||||||
|
$entityRelation = new EntityRelation();
|
||||||
|
$entityRelation->saveEntityRelation("post", new Request());
|
||||||
|
|
||||||
if ($post) {
|
if ($post) {
|
||||||
$this->redirect("/admin/post/view/" . $post->id);
|
$this->redirect("/admin/post/view/" . $post->id);
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace kernel\services;
|
namespace kernel\services;
|
||||||
|
|
||||||
use DirectoryIterator;
|
use DirectoryIterator;
|
||||||
|
use kernel\EntityRelation;
|
||||||
use kernel\helpers\Debug;
|
use kernel\helpers\Debug;
|
||||||
use kernel\helpers\Files;
|
use kernel\helpers\Files;
|
||||||
use kernel\helpers\Manifest;
|
use kernel\helpers\Manifest;
|
||||||
@ -130,6 +131,10 @@ class ModuleService
|
|||||||
public function deactivateModule(string $module): bool
|
public function deactivateModule(string $module): bool
|
||||||
{
|
{
|
||||||
$active_modules_info = Option::where("key", "active_modules")->first();
|
$active_modules_info = Option::where("key", "active_modules")->first();
|
||||||
|
|
||||||
|
EntityRelation::removeEntityRelation($module);
|
||||||
|
EntityRelation::removePropertyRelation($module);
|
||||||
|
|
||||||
$active_modules = json_decode($active_modules_info->value);
|
$active_modules = json_decode($active_modules_info->value);
|
||||||
if (!in_array($module, $active_modules->modules)) {
|
if (!in_array($module, $active_modules->modules)) {
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user