igfs/app/modules/module_shop/services/ModuleShopService.php
2024-10-16 16:06:25 +03:00

76 lines
2.6 KiB
PHP

<?php
namespace app\modules\module_shop\services;
use app\modules\module_shop\models\ModuleShop;
use kernel\FormModel;
use kernel\helpers\Debug;
use kernel\helpers\Files;
use kernel\helpers\Manifest;
use kernel\helpers\Slug;
use kernel\services\ModuleService;
class ModuleShopService extends ModuleService
{
public function create(FormModel $form_model): false|ModuleShop
{
$model = new ModuleShop();
$model->name = $form_model->getItem("name");
$model->version = $form_model->getItem("version");
$model->description = $form_model->getItem("description");
$model->author = $form_model->getItem("author");
$model->status = $form_model->getItem("status");
$model->path_to_archive = $form_model->getItem("path_to_archive");
$model->dependence = $form_model->getItem("dependence");
$model->slug = Slug::createSlug($model->name, ModuleShop::class);
if ($model->save()) {
return $model;
}
return false;
}
public function update(FormModel $form_model, ModuleShop $model): false|ModuleShop
{
if ($model->name !== $form_model->getItem("name")) {
$model->name = $form_model->getItem("name");
$model->slug = Slug::createSlug($model->name, ModuleShop::class);
}
$model->version = $form_model->getItem("version");
$model->description = $form_model->getItem("description");
$model->author = $form_model->getItem("author");
$model->status = $form_model->getItem("status");
$model->path_to_archive = $form_model->getItem("path_to_archive");
$model->dependence = $form_model->getItem("dependence");
if ($model->save()) {
return $model;
}
return false;
}
public function packModule($module): void
{
$tmpModuleDir = md5(time());
$authorSlug = Slug::createSlug($module->author);
$nameSlug = Slug::createSlug($module->name);
$tmpModuleDirFull = RESOURCES_DIR . '/tmp/modules/' . $tmpModuleDir . '/';
$fileHelper = new Files();
Debug::dd(APP_DIR . '/modules/' . $nameSlug);
$fileHelper->copy_folder(APP_DIR . '/modules/' . $nameSlug, $tmpModuleDirFull . 'app/');
// $fileHelper->copy_folder(KERNEL_APP_MODULES_DIR . '/' . $nameSlug, $tmpModuleDirFull . 'kernel/');
$fileHelper->pack(
$tmpModuleDirFull,
RESOURCES_DIR . '/module_shop/' .
$authorSlug . '/' .
$module->slug . '/' .
$module->version . '/' .
$nameSlug . '.itguild'
);
$fileHelper->recursiveRemoveDir($tmpModuleDirFull);
}
}