From ce32ee7bad7c8a581714073cf6795ea704b185e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0?= Date: Wed, 12 Mar 2025 13:18:37 +0900 Subject: [PATCH] cfmgrv4 init...10 --- .../Admin/Cloudflare/AccountController.php | 2 + .../Admin/Cloudflare/AuditLogController.php | 2 + .../Admin/Cloudflare/AuthController.php | 2 + .../Admin/Cloudflare/FirewallController.php | 2 + .../Admin/Cloudflare/RecordController.php | 3 +- .../Admin/Cloudflare/ZoneController.php | 3 +- app/Controllers/Admin/MapurlController.php | 3 +- app/Controllers/Admin/MyLogController.php | 2 + app/Controllers/Admin/UserController.php | 2 + app/Controllers/Admin/UserSNSController.php | 2 + app/Controllers/CommonController.php | 2 - app/Controllers/UserController.php | 2 + app/Helpers/CommonHelper.php | 156 ++++++++++++++++ app/Helpers/MVCHelper.php | 167 ------------------ app/Helpers/MapurlHelper.php | 2 +- app/Helpers/MyLogHelper.php | 2 +- app/Helpers/UserHelper.php | 2 +- app/Helpers/UserSNSHelper.php | 2 +- 18 files changed, 182 insertions(+), 176 deletions(-) delete mode 100644 app/Helpers/MVCHelper.php diff --git a/app/Controllers/Admin/Cloudflare/AccountController.php b/app/Controllers/Admin/Cloudflare/AccountController.php index f2c0d54..05c4c73 100644 --- a/app/Controllers/Admin/Cloudflare/AccountController.php +++ b/app/Controllers/Admin/Cloudflare/AccountController.php @@ -22,6 +22,8 @@ class AccountController extends CloudflareController { if ($this->service === null) { $this->service = new AccountService(); + $this->class_name = $this->service->getClassName(); + $this->class_path = $this->service->getClassPath(); } return $this->service; } diff --git a/app/Controllers/Admin/Cloudflare/AuditLogController.php b/app/Controllers/Admin/Cloudflare/AuditLogController.php index fb16e48..f49f534 100644 --- a/app/Controllers/Admin/Cloudflare/AuditLogController.php +++ b/app/Controllers/Admin/Cloudflare/AuditLogController.php @@ -24,6 +24,8 @@ class AuditLogController extends CloudflareController { if ($this->service === null) { $this->service = new AuditLogService(); + $this->class_name = $this->service->getClassName(); + $this->class_path = $this->service->getClassPath(); } return $this->service; } diff --git a/app/Controllers/Admin/Cloudflare/AuthController.php b/app/Controllers/Admin/Cloudflare/AuthController.php index cd1ff28..56fe0aa 100644 --- a/app/Controllers/Admin/Cloudflare/AuthController.php +++ b/app/Controllers/Admin/Cloudflare/AuthController.php @@ -22,6 +22,8 @@ class AuthController extends CloudflareController { if ($this->service === null) { $this->service = new AuthService(); + $this->class_name = $this->service->getClassName(); + $this->class_path = $this->service->getClassPath(); } return $this->service; } diff --git a/app/Controllers/Admin/Cloudflare/FirewallController.php b/app/Controllers/Admin/Cloudflare/FirewallController.php index ff68622..c389216 100644 --- a/app/Controllers/Admin/Cloudflare/FirewallController.php +++ b/app/Controllers/Admin/Cloudflare/FirewallController.php @@ -25,6 +25,8 @@ class FirewallController extends CloudflareController { if ($this->service === null) { $this->service = new FirewallService(); + $this->class_name = $this->service->getClassName(); + $this->class_path = $this->service->getClassPath(); } return $this->service; } diff --git a/app/Controllers/Admin/Cloudflare/RecordController.php b/app/Controllers/Admin/Cloudflare/RecordController.php index 223b6be..6e3ec86 100644 --- a/app/Controllers/Admin/Cloudflare/RecordController.php +++ b/app/Controllers/Admin/Cloudflare/RecordController.php @@ -19,12 +19,13 @@ class RecordController extends CloudflareController parent::initController($request, $response, $logger); $this->title = lang("{$this->getService()->getClassPath()}.title"); $this->helper = new RecordHelper(); - $this->isMyLog = env("mylog.cloudflare.record.use") == "true"; //MyLogService 사용여부 } protected function getService(): RecordService { if ($this->service === null) { $this->service = new RecordService(); + $this->class_name = $this->service->getClassName(); + $this->class_path = $this->service->getClassPath(); } return $this->service; } diff --git a/app/Controllers/Admin/Cloudflare/ZoneController.php b/app/Controllers/Admin/Cloudflare/ZoneController.php index 87c9b12..3e08e3e 100644 --- a/app/Controllers/Admin/Cloudflare/ZoneController.php +++ b/app/Controllers/Admin/Cloudflare/ZoneController.php @@ -20,12 +20,13 @@ class ZoneController extends CloudflareController parent::initController($request, $response, $logger); $this->title = lang("{$this->getService()->getClassPath()}.title");; $this->helper = new ZoneHelper(); - $this->isMyLog = env("mylog.cloudflare.zone.use") == "true"; //MyLogService 사용여부 } protected function getService(): ZoneService { if ($this->service === null) { $this->service = new ZoneService(); + $this->class_name = $this->service->getClassName(); + $this->class_path = $this->service->getClassPath(); } return $this->service; } diff --git a/app/Controllers/Admin/MapurlController.php b/app/Controllers/Admin/MapurlController.php index 2b51572..7b097b7 100644 --- a/app/Controllers/Admin/MapurlController.php +++ b/app/Controllers/Admin/MapurlController.php @@ -17,12 +17,13 @@ class MapurlController extends AdminController parent::initController($request, $response, $logger); $this->title = lang("{$this->getService()->getClassPath()}.title"); $this->helper = new MapurlHelper(); - $this->isMyLog = env("mylog.mapurl.use") == "true"; //MyLogService 사용여부 } protected function getService(): MapurlService { if ($this->service === null) { $this->service = new MapurlService(); + $this->class_name = $this->service->getClassName(); + $this->class_path = $this->service->getClassPath(); } return $this->service; } diff --git a/app/Controllers/Admin/MyLogController.php b/app/Controllers/Admin/MyLogController.php index f423326..0d1550d 100644 --- a/app/Controllers/Admin/MyLogController.php +++ b/app/Controllers/Admin/MyLogController.php @@ -23,6 +23,8 @@ class MyLogController extends AdminController { if ($this->service === null) { $this->service = new MyLogService(); + $this->class_name = "MyLog"; + $this->class_path = $this->class_name; } return $this->service; } diff --git a/app/Controllers/Admin/UserController.php b/app/Controllers/Admin/UserController.php index 88561d1..a8e7d33 100644 --- a/app/Controllers/Admin/UserController.php +++ b/app/Controllers/Admin/UserController.php @@ -24,6 +24,8 @@ class UserController extends AdminController { if ($this->service === null) { $this->service = new UserService(); + $this->class_name = $this->service->getClassName(); + $this->class_path = $this->service->getClassPath(); } return $this->service; } diff --git a/app/Controllers/Admin/UserSNSController.php b/app/Controllers/Admin/UserSNSController.php index e55c79e..50f38e1 100644 --- a/app/Controllers/Admin/UserSNSController.php +++ b/app/Controllers/Admin/UserSNSController.php @@ -23,6 +23,8 @@ class UserSNSController extends AdminController { if ($this->service === null) { $this->service = new UserSNSService(); + $this->class_name = $this->service->getClassName(); + $this->class_path = $this->service->getClassPath(); } return $this->service; } diff --git a/app/Controllers/CommonController.php b/app/Controllers/CommonController.php index 8120e28..65d4ee6 100644 --- a/app/Controllers/CommonController.php +++ b/app/Controllers/CommonController.php @@ -20,8 +20,6 @@ abstract class CommonController extends BaseController private $_viewDatas = []; abstract protected function getService(): mixed; - //Field별 Form Rule용 - public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); diff --git a/app/Controllers/UserController.php b/app/Controllers/UserController.php index a0a7def..b1c510b 100644 --- a/app/Controllers/UserController.php +++ b/app/Controllers/UserController.php @@ -24,6 +24,8 @@ class UserController extends CommonController { if ($this->service === null) { $this->service = new UserService(); + $this->class_name = $this->service->getClassName(); + $this->class_path = $this->service->getClassPath(); } return $this->service; } diff --git a/app/Helpers/CommonHelper.php b/app/Helpers/CommonHelper.php index f15c85e..230a99c 100644 --- a/app/Helpers/CommonHelper.php +++ b/app/Helpers/CommonHelper.php @@ -139,4 +139,160 @@ class CommonHelper } return ""; } + + public function getFieldLabel(string $field, array $viewDatas, array $extras = []): string + { + switch ($field) { + default: + $extras = (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? ["class" => "text-danger", "required" => "", ...$extras] : $extras; + $label = form_label(lang("{$viewDatas['class_path']}.label.{$field}"), $field, $extras); + break; + } + return $label; + } + + // header.php에서 getFieldForm_Helper사용 + public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string + { + if (in_array($viewDatas['action'], ['create', 'modify'])) { + $extras = (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; + } + $value = $value ?: DEFAULTS['EMPTY']; + switch ($field) { + case 'status': + $form = form_dropdown($field, [ + "" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', + ] + $viewDatas['field_options'][$field], $value, $extras); + break; + case 'updated_at': + case 'created_at': + $extra_class = isset($extras['class']) ? $extras['class'] . ' calender' : 'calender'; + $form = form_input($field, $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]); + break; + default: + $form = form_input($field, $value, ["autocomplete" => $field, ...$extras]); + break; + } + return $form; + } + + public function getFieldView(string $field, array $viewDatas, array $extras = []): string + { + $value = $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']; + switch ($field) { + case 'category_uid': + foreach (array_values($viewDatas['field_options'][$field]) as $category_2depths) { + foreach ($category_2depths as $key => $depth) { + if ($key == $depth) { + $value = $depth; + } + } + } + break; + case 'updated_at': + case 'created_at': + $value = $value ? date("Y-m-d", strtotime($value)) : ""; + break; + default: + if (in_array($field, $viewDatas['filter_fields'])) { + $extras["onChange"] = sprintf( + 'location.href="%s/toggle/%s/%s?%s="+this.options[this.selectedIndex].value', + current_url(), + $viewDatas['entity']->getPK(), + $field, + $field + ); + $value = $this->getFieldForm($field, $viewDatas['entity']->$field, $viewDatas, $extras); + } + break; + } + return $value; + } + + public function getListRowColor($entity): string + { + return $entity->status != DEFAULTS['STATUS'] ? 'class="table-danger"' : ""; + } + + public function getListLabel(string $field, array $viewDatas, array $extras = []): string + { + switch ($field) { + default: + $label = $this->getFieldLabel($field, $viewDatas, $extras); + if (isset($viewDatas['order_field']) && $viewDatas['order_field'] == $field) { + $label .= $viewDatas['order_value'] == 'ASC' ? ICONS["UP"] : ICONS["DOWN"]; + } + $query = $viewDatas['uri']->getQuery(['except' => ['order_field', 'order_value']]); + $query .= empty($query) ? "" : "&"; + $query .= "order_field={$field}&order_value="; + $query .= isset($viewDatas['order_value']) && $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC"; + $label = anchor(current_url() . "?" . $query, $label); + break; + } + return $label; + } + + public function getListButton(string $action, array $viewDatas, array $extras = []): string + { + switch ($action) { + case 'create': + $extras = ["class" => "btn btn-outline btn-primary btn-circle", "target" => "_self", ...$extras]; + $action = form_label( + '입력', + $action, + [ + "data-src" => current_url() . '/' . $action . '?' . $viewDatas['uri']->getQuery(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + ...$extras + ] + ); + break; + case 'modify': + $pk = $viewDatas['entity']->getPK(); + $oldBatchJobUids = old("batchjob_uids", null); + $oldBatchJobUids = is_array($oldBatchJobUids) ? $oldBatchJobUids : [$oldBatchJobUids]; + $checkbox = form_checkbox([ + "id" => "checkbox_uid_{$pk}", + "name" => "batchjob_uids[]", + "value" => $pk, + "class" => "batchjobuids_checkboxs", + "checked" => in_array($pk, $oldBatchJobUids) + ]); + $action = $checkbox . form_label( + $viewDatas['cnt'], + $action, + [ + "data-src" => current_url() . '/' . $action . '/' . $viewDatas['entity']->getPK(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + ...$extras + ] + ); + break; + case 'delete': + $extras = ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self", ...$extras]; + $action = anchor( + current_url() . '/' . $action . '/' . $viewDatas['entity']->getPK(), + ICONS['DELETE'], + $extras + ); + break; + case 'batchjob': + $action = form_submit("batchjob_submit", '일괄처리', [ + "formaction" => current_url() . '/batchjob', + "class" => "btn btn-outline btn-warning", + "onclick" => "return submitBatchJob()" + ]); + break; + case 'batchjob_delete': + $action = form_submit("batchjob_submit", '일괄삭제', [ + "formaction" => current_url() . '/batchjob_delete', + "class" => "btn btn-outline btn-danger", + "onclick" => "return submitBatchJobDelete()" + ]); + break; + } + return $action; + } } diff --git a/app/Helpers/MVCHelper.php b/app/Helpers/MVCHelper.php deleted file mode 100644 index 2fa1cf4..0000000 --- a/app/Helpers/MVCHelper.php +++ /dev/null @@ -1,167 +0,0 @@ - "text-danger", "required" => "", ...$extras] : $extras; - $label = form_label(lang("{$viewDatas['class_path']}.label.{$field}"), $field, $extras); - break; - } - return $label; - } - - // header.php에서 getFieldForm_Helper사용 - public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string - { - if (in_array($viewDatas['action'], ['create', 'modify'])) { - $extras = (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; - } - $value = $value ?: DEFAULTS['EMPTY']; - switch ($field) { - case 'status': - $form = form_dropdown($field, [ - "" => lang($viewDatas['class_path'] . '.label.' . $field) . ' 선택', - ] + $viewDatas['field_options'][$field], $value, $extras); - break; - case 'updated_at': - case 'created_at': - $extra_class = isset($extras['class']) ? $extras['class'] . ' calender' : 'calender'; - $form = form_input($field, $value, ['class' => $extra_class, ...array_diff_key($extras, ['class' => ''])]); - break; - default: - $form = form_input($field, $value, ["autocomplete" => $field, ...$extras]); - break; - } - return $form; - } - - public function getFieldView(string $field, array $viewDatas, array $extras = []): string - { - $value = $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']; - switch ($field) { - case 'category_uid': - foreach (array_values($viewDatas['field_options'][$field]) as $category_2depths) { - foreach ($category_2depths as $key => $depth) { - if ($key == $depth) { - $value = $depth; - } - } - } - break; - case 'updated_at': - case 'created_at': - $value = $value ? date("Y-m-d", strtotime($value)) : ""; - break; - default: - if (in_array($field, $viewDatas['filter_fields'])) { - $extras["onChange"] = sprintf( - 'location.href="%s/toggle/%s/%s?%s="+this.options[this.selectedIndex].value', - current_url(), - $viewDatas['entity']->getPK(), - $field, - $field - ); - $value = $this->getFieldForm($field, $viewDatas['entity']->$field, $viewDatas, $extras); - } - break; - } - return $value; - } - - public function getListRowColor($entity): string - { - return $entity->status != DEFAULTS['STATUS'] ? 'class="table-danger"' : ""; - } - - public function getListLabel(string $field, array $viewDatas, array $extras = []): string - { - switch ($field) { - default: - $label = $this->getFieldLabel($field, $viewDatas, $extras); - if (isset($viewDatas['order_field']) && $viewDatas['order_field'] == $field) { - $label .= $viewDatas['order_value'] == 'ASC' ? ICONS["UP"] : ICONS["DOWN"]; - } - $query = $viewDatas['uri']->getQuery(['except' => ['order_field', 'order_value']]); - $query .= empty($query) ? "" : "&"; - $query .= "order_field={$field}&order_value="; - $query .= isset($viewDatas['order_value']) && $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC"; - $label = anchor(current_url() . "?" . $query, $label); - break; - } - return $label; - } - - public function getListButton(string $action, array $viewDatas, array $extras = []): string - { - switch ($action) { - case 'create': - $extras = ["class" => "btn btn-outline btn-primary btn-circle", "target" => "_self", ...$extras]; - $action = form_label( - '입력', - $action, - [ - "data-src" => current_url() . '/' . $action . '?' . $viewDatas['uri']->getQuery(), - "data-bs-toggle" => "modal", - "data-bs-target" => "#index_action_form", - ...$extras - ] - ); - break; - case 'modify': - $pk = $viewDatas['entity']->getPK(); - $oldBatchJobUids = old("batchjob_uids", null); - $oldBatchJobUids = is_array($oldBatchJobUids) ? $oldBatchJobUids : [$oldBatchJobUids]; - $checkbox = form_checkbox([ - "id" => "checkbox_uid_{$pk}", - "name" => "batchjob_uids[]", - "value" => $pk, - "class" => "batchjobuids_checkboxs", - "checked" => in_array($pk, $oldBatchJobUids) - ]); - $action = $checkbox . form_label( - $viewDatas['cnt'], - $action, - [ - "data-src" => current_url() . '/' . $action . '/' . $viewDatas['entity']->getPK(), - "data-bs-toggle" => "modal", - "data-bs-target" => "#index_action_form", - ...$extras - ] - ); - break; - case 'delete': - $extras = ["class" => "btn btn-sm btn-danger btn-circle", "target" => "_self", ...$extras]; - $action = anchor( - current_url() . '/' . $action . '/' . $viewDatas['entity']->getPK(), - ICONS['DELETE'], - $extras - ); - break; - case 'batchjob': - $action = form_submit("batchjob_submit", '일괄처리', [ - "formaction" => current_url() . '/batchjob', - "class" => "btn btn-outline btn-warning", - "onclick" => "return submitBatchJob()" - ]); - break; - case 'batchjob_delete': - $action = form_submit("batchjob_submit", '일괄삭제', [ - "formaction" => current_url() . '/batchjob_delete', - "class" => "btn btn-outline btn-danger", - "onclick" => "return submitBatchJobDelete()" - ]); - break; - } - return $action; - } -} diff --git a/app/Helpers/MapurlHelper.php b/app/Helpers/MapurlHelper.php index 3b9c61f..bbfe761 100644 --- a/app/Helpers/MapurlHelper.php +++ b/app/Helpers/MapurlHelper.php @@ -4,7 +4,7 @@ namespace App\Helpers; use App\Models\MapurlModel; -class MapurlHelper extends MVCHelper +class MapurlHelper extends CommonHelper { public function __construct() { diff --git a/app/Helpers/MyLogHelper.php b/app/Helpers/MyLogHelper.php index 167e46d..0c47b07 100644 --- a/app/Helpers/MyLogHelper.php +++ b/app/Helpers/MyLogHelper.php @@ -4,7 +4,7 @@ namespace App\Helpers; use App\Models\MyLogModel; -class MyLogHelper extends MVCHelper +class MyLogHelper extends CommonHelper { public function __construct() { diff --git a/app/Helpers/UserHelper.php b/app/Helpers/UserHelper.php index 2156e6e..bdc174e 100644 --- a/app/Helpers/UserHelper.php +++ b/app/Helpers/UserHelper.php @@ -4,7 +4,7 @@ namespace App\Helpers; use App\Models\UserModel; -class UserHelper extends MVCHelper +class UserHelper extends CommonHelper { public function __construct() { diff --git a/app/Helpers/UserSNSHelper.php b/app/Helpers/UserSNSHelper.php index 1ac0bbc..a9d3ba4 100644 --- a/app/Helpers/UserSNSHelper.php +++ b/app/Helpers/UserSNSHelper.php @@ -4,7 +4,7 @@ namespace App\Helpers; use App\Models\UserSNSModel; -class UserSNSHelper extends MVCHelper +class UserSNSHelper extends CommonHelper { public function __construct() {