diff --git a/app/Controllers/Admin/Cloudflare/AccountController.php b/app/Controllers/Admin/Cloudflare/AccountController.php index f42891c..a2cbb53 100644 --- a/app/Controllers/Admin/Cloudflare/AccountController.php +++ b/app/Controllers/Admin/Cloudflare/AccountController.php @@ -2,40 +2,37 @@ namespace App\Controllers\Admin\Cloudflare; +use App\Helpers\Cloudflare\AccountHelper; +use App\Models\Cloudflare\AccountModel; +use App\Services\Cloudflare\AccountService; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; -use App\Helpers\Cloudflare\AccountHelper; -use App\Models\Cloudflare\AccountModel; -use App\Services\Cloudflare\Account; class AccountController extends CloudflareController { private $_auth_entity = null; - private $_myLibrays = []; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name = "Account"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); + $this->title = lang("{$this->getService()->class_path}.title"); $this->helper = new AccountHelper(); } - final protected function getModel(): AccountModel + protected function getModel(): AccountModel { - if ($this->model === null) { - $this->model = new AccountModel(); + if ($this->_model === null) { + $this->_model = new AccountModel(); } - return $this->model; + return $this->_model; } - final protected function getMyLibrary(): Account + protected function getService(): AccountService { - if (!isset($this->_myLibrays[$this->_auth_entity->getPK()])) { - $this->_myLibrays[$this->_auth_entity->getPK()] = new Account($this->_auth_entity); + if ($this->service === null) { + $this->service = new AccountService(); } - return $this->_myLibrays[$this->_auth_entity->getPK()]; + return $this->service; } protected function getFormFieldOption(string $field, array $options = []): array { @@ -82,11 +79,12 @@ class AccountController extends CloudflareController //reload Account By Auth protected function reload_process(mixed $uid): void { - $this->_auth_entity = $this->getAuthModel()->getEntityByPK($uid); - if ($this->_auth_entity === null) { + //부모데이터정의 + $this->auth_entity = $this->getAuthModel()->getEntityByPK($uid); + if ($this->auth_entity === null) { throw new \Exception("Auth: {$uid} 정보를 찾을수 없습니다."); } - $this->getMyLibrary()->reload(); + $this->getService()->reload($this->auth_entity); } public function reload(int $uid): RedirectResponse { diff --git a/app/Controllers/Admin/Cloudflare/AuthController.php b/app/Controllers/Admin/Cloudflare/AuthController.php index 424a8e1..3185561 100644 --- a/app/Controllers/Admin/Cloudflare/AuthController.php +++ b/app/Controllers/Admin/Cloudflare/AuthController.php @@ -2,30 +2,36 @@ namespace App\Controllers\Admin\Cloudflare; +use App\Helpers\Cloudflare\AuthHelper; +use App\Models\Cloudflare\AuthModel; +use App\Services\Cloudflare\AuthService; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; -use App\Helpers\Cloudflare\AuthHelper; -use App\Models\Cloudflare\AuthModel; class AuthController extends CloudflareController { public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name .= "Auth"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); + $this->title = lang("{$this->getService()->class_path}.title"); $this->helper = new AuthHelper(); } - final protected function getModel(): AuthModel + protected function getModel(): AuthModel { - if ($this->model === null) { - $this->model = new AuthModel(); + if ($this->_model === null) { + $this->_model = new AuthModel(); } - return $this->model; + return $this->_model; + } + protected function getService(): AuthService + { + if ($this->service === null) { + $this->service = new AuthService(); + } + return $this->service; } private function init(string $action, array $fields = []): void { diff --git a/app/Controllers/Admin/Cloudflare/CloudflareController.php b/app/Controllers/Admin/Cloudflare/CloudflareController.php index 14049b2..3076946 100644 --- a/app/Controllers/Admin/Cloudflare/CloudflareController.php +++ b/app/Controllers/Admin/Cloudflare/CloudflareController.php @@ -21,8 +21,8 @@ abstract class CloudflareController extends AdminController public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_path = "Cloudflare/"; - $this->uri_path .= strtolower($this->class_path); + $this->uri_path .= "cloudflare/"; + // dd($this->uri_path); } final protected function getAuthModel(): AuthModel { @@ -59,7 +59,7 @@ abstract class CloudflareController extends AdminController $this->getModel()->transStart(); try { $this->sync_process($uid); - $this->message = "{$this->class_name}: 동기화작업을 완료하였습니다."; + $this->message = "{$this->getService()->class_name}: 동기화작업을 완료하였습니다."; $this->getModel()->transCommit(); log_message("notice", __FUNCTION__ . $this->message); // 이전 URL로 리다이렉트 @@ -79,7 +79,7 @@ abstract class CloudflareController extends AdminController $this->getModel()->transStart(); try { $this->reload_process($uid); - $this->message = "{$this->class_name}: Reload 작업이 완료되었습니다."; + $this->message = "{$this->getService()->class_name}: Reload 작업이 완료되었습니다."; $this->getModel()->transCommit(); log_message("notice", __FUNCTION__ . $this->message); // 이전 URL로 리다이렉트 diff --git a/app/Controllers/Admin/Cloudflare/FirewallController.php b/app/Controllers/Admin/Cloudflare/FirewallController.php index b385b60..bd88034 100644 --- a/app/Controllers/Admin/Cloudflare/FirewallController.php +++ b/app/Controllers/Admin/Cloudflare/FirewallController.php @@ -2,26 +2,23 @@ namespace App\Controllers\Admin\Cloudflare; -use App\Helpers\Cloudflare\FirewallHelper; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; use App\Models\Cloudflare\FirewallModel; +use App\Services\Cloudflare\FirewallService; +use App\Helpers\Cloudflare\FirewallHelper; use App\Models\Cloudflare\ZoneModel; -use App\Services\Cloudflare\Firewall; class FirewallController extends CloudflareController { private $_zone_entity = null; - private $_myLibrays = []; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name .= "Firewall"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); + $this->title = lang("{$this->getService()->class_path}.title"); $this->helper = new FirewallHelper(); } final protected function getModel(): FirewallModel @@ -31,12 +28,12 @@ class FirewallController extends CloudflareController } return $this->model; } - final protected function getMyLibrary(): Firewall + protected function getService(): FirewallService { - if (!isset($this->_myLibrays[$this->_zone_entity->getPK()])) { - $this->_myLibrays[$this->_zone_entity->getPK()] = new Firewall($this->_zone_entity); + if ($this->service === null) { + $this->service = new FirewallService(); } - return $this->_myLibrays[$this->_zone_entity->getPK()]; + return $this->service; } protected function getFormFieldOption(string $field, array $options = []): array { @@ -77,7 +74,7 @@ class FirewallController extends CloudflareController //부모데이터정의 $this->_zone_entity = $this->getZoneModel()->getEntityByPK($this->entity->getParent()); //Socket처리 - $this->entity = $this->getMyLibrary()->modify($this->entity, $this->formDatas); + $this->entity = $this->getService()->modify($this->_zone_entity, $this->entity, $this->formDatas); } //View //create_process_result에서 결과값을 entitys에 저장하고 호출하기때문에 아래와 같이 처리함 @@ -131,11 +128,12 @@ class FirewallController extends CloudflareController //reload Firewall By Zone protected function reload_process(mixed $uid): void { + //부모데이터정의 $this->_zone_entity = $this->getZoneModel()->getEntityByPK($uid); if ($this->_zone_entity === null) { throw new \Exception("Zone: {$uid} 정보를 찾을수 없습니다."); } - $this->getMyLibrary()->reload(); + $this->getService()->reload($this->_zone_entity); } public function reload(string $uid): RedirectResponse { diff --git a/app/Controllers/Admin/Cloudflare/RecordController.php b/app/Controllers/Admin/Cloudflare/RecordController.php index 593c63d..1010770 100644 --- a/app/Controllers/Admin/Cloudflare/RecordController.php +++ b/app/Controllers/Admin/Cloudflare/RecordController.php @@ -9,19 +9,16 @@ use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; use App\Helpers\Cloudflare\RecordHelper; use App\Models\Cloudflare\RecordModel; +use App\Services\Cloudflare\RecordService; use App\Models\Cloudflare\ZoneModel; -use App\Services\Cloudflare\Record; class RecordController extends CloudflareController { private $_zone_entity = null; - private $_myLibrays = []; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name .= "Record"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); + $this->title = lang("{$this->getService()->class_path}.title"); $this->helper = new RecordHelper(); } final protected function getModel(): RecordModel @@ -31,12 +28,12 @@ class RecordController extends CloudflareController } return $this->model; } - final protected function getMyLibrary(): Record + protected function getService(): RecordService { - if (!isset($this->_myLibrays[$this->_zone_entity->getPK()])) { - $this->_myLibrays[$this->_zone_entity->getPK()] = new Record($this->_zone_entity); + if ($this->service === null) { + $this->service = new RecordService(); } - return $this->_myLibrays[$this->_zone_entity->getPK()]; + return $this->service; } protected function getFormFieldOption(string $field, array $options = []): array { @@ -122,7 +119,8 @@ class RecordController extends CloudflareController //Socket처리 $entitys = []; foreach ($this->formDatas['hosts'] as $host) { - $entity = $this->getMyLibrary()->create( + $entity = $this->getService()->create( + $this->_zone_entity, $host, $this->formDatas['type'], $this->formDatas['content'], @@ -170,7 +168,7 @@ class RecordController extends CloudflareController //부모데이터정의 $this->_zone_entity = $this->getZoneModel()->getEntityByPK($this->entity->getParent()); //Socket처리 - $this->entity = $this->getMyLibrary()->modify($this->entity, $this->formDatas); + $this->entity = $this->getService()->modify($this->_zone_entity, $this->entity, $this->formDatas); } } //일괄처리작업 @@ -198,7 +196,7 @@ class RecordController extends CloudflareController //부모데이터정의 $this->_zone_entity = $this->getZoneModel()->getEntityByPK($this->entity->getParent()); //Cloudflare 삭제 - $this->entity = $this->getMyLibrary()->delete($this->entity); + $this->entity = $this->getService()->delete($this->_zone_entity, $this->entity); } //리스트 protected function list_entitys_process(): array @@ -252,7 +250,7 @@ class RecordController extends CloudflareController //부모데이터정의 $this->_zone_entity = $this->getZoneModel()->getEntityByPK($this->entity->getParent()); //Socket처리 - $this->entity = $this->getMyLibrary()->sync($this->entity); + $this->entity = $this->getService()->sync($this->_zone_entity, $this->entity); } public function sync(string $uid): RedirectResponse { @@ -261,11 +259,12 @@ class RecordController extends CloudflareController //reload Record By Zone protected function reload_process(mixed $uid): void { + //부모데이터정의 $this->_zone_entity = $this->getZoneModel()->getEntityByPK($uid); if ($this->_zone_entity === null) { throw new \Exception("Zone: {$uid} 정보를 찾을수 없습니다."); } - $this->getMyLibrary()->reload(); + $this->getService()->reload($this->_zone_entity); } public function reload(string $uid): RedirectResponse { diff --git a/app/Controllers/Admin/Cloudflare/ZoneController.php b/app/Controllers/Admin/Cloudflare/ZoneController.php index 9517ff2..7e8d36c 100644 --- a/app/Controllers/Admin/Cloudflare/ZoneController.php +++ b/app/Controllers/Admin/Cloudflare/ZoneController.php @@ -2,42 +2,39 @@ namespace App\Controllers\Admin\Cloudflare; +use App\Helpers\Cloudflare\ZoneHelper; +use App\Models\Cloudflare\AccountModel; +use App\Models\Cloudflare\ZoneModel; +use App\Services\Cloudflare\RecordService; +use App\Services\Cloudflare\ZoneService; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; -use App\Helpers\Cloudflare\ZoneHelper; -use App\Models\Cloudflare\AccountModel; -use App\Models\Cloudflare\ZoneModel; -use App\Services\Cloudflare\Record; -use App\Services\Cloudflare\Zone; class ZoneController extends CloudflareController { private $_account_entity = null; - private $_myLibrays = []; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name .= "Zone"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); + $this->title = lang("{$this->getService()->class_path}.title");; $this->helper = new ZoneHelper(); } - final protected function getModel(): ZoneModel + protected function getModel(): ZoneModel { - if ($this->model === null) { - $this->model = new ZoneModel(); + if ($this->_model === null) { + $this->_model = new ZoneModel(); } - return $this->model; + return $this->_model; } - final protected function getMyLibrary(): Zone + protected function getService(): ZoneService { - if (!isset($this->_myLibrays[$this->_account_entity->getPK()])) { - $this->_myLibrays[$this->_account_entity->getPK()] = new Zone($this->_account_entity); + if ($this->service === null) { + $this->service = new ZoneService(); } - return $this->_myLibrays[$this->_account_entity->getPK()]; + return $this->service; } protected function getFormFieldOption(string $field, array $options = []): array { @@ -148,7 +145,7 @@ class ZoneController extends CloudflareController $cnt = 1; $zone_entitys = []; foreach ($this->formDatas['domains'] as $domain) { - $entity = $this->getMyLibrary()->create($domain); + $entity = $this->getService()->create($this->_account_entity, $domain); log_message("debug", "Zone:{$entity->getTitle()} 작업을 완료하였습니다."); $zone_entitys[] = $entity; $cnt++; @@ -156,10 +153,11 @@ class ZoneController extends CloudflareController //Record생성 $entitys = []; foreach ($zone_entitys as $zone_entity) { - $record = new Record($zone_entity); + $record = new RecordService(); $record_entitys = []; foreach ($this->formDatas['hosts'] as $host) { $entity = $record->create( + $zone_entity, $host, $this->formDatas['type'], $this->formDatas['content'], @@ -205,7 +203,7 @@ class ZoneController extends CloudflareController //부모데이터정의 $this->_account_entity = $this->getAccountModel()->getEntityByPK($this->entity->getParent()); //Socket처리 - $this->entity = $this->getMyLibrary()->modify($this->entity, $this->formDatas); + $this->entity = $this->getService()->modify($this->_account_entity, $this->entity, $this->formDatas); } //일괄처리작업 public function batcjob(): RedirectResponse @@ -233,13 +231,13 @@ class ZoneController extends CloudflareController //Record부터 삭제필요 $this->getRecordModel()->where($this->getRecordModel()::PARENT, $this->entity->getPK()); foreach ($this->getRecordModel()->getEntitys() as $record_entity) { - $record = new Record($this->entity); - $record->delete($record_entity); + $record = new RecordService(); + $record->delete($this->entity, $record_entity); } //Zone 삭제 //부모데이터정의 $this->_account_entity = $this->getAccountModel()->getEntityByPK($this->entity->getParent()); - $this->entity = $this->getMyLibrary()->delete($this->entity); + $this->entity = $this->getService()->delete($this->_account_entity, $this->entity); } // 리스트 protected function list_entitys_process(): array @@ -293,7 +291,7 @@ class ZoneController extends CloudflareController //부모데이터정의 $this->_account_entity = $this->getAccountModel()->getEntityByPK($this->entity->getParent()); //Socket처리 - $this->entity = $this->getMyLibrary()->sync($this->entity); + $this->entity = $this->getService()->sync($this->_account_entity, $this->entity); } public function sync(string $uid): RedirectResponse { @@ -302,11 +300,12 @@ class ZoneController extends CloudflareController //reload Zone By Account protected function reload_process(mixed $uid): void { + //부모데이터정의 $this->_account_entity = $this->getAccountModel()->getEntityByPK($uid); if ($this->_account_entity === null) { throw new \Exception("Account: {$uid} 정보를 찾을수 없습니다."); } - $this->getMyLibrary()->reload(); + $this->getService()->reload($this->_account_entity); } public function reload(string $uid): RedirectResponse { diff --git a/app/Controllers/Admin/Home.php b/app/Controllers/Admin/Home.php index d592f34..eca7fea 100644 --- a/app/Controllers/Admin/Home.php +++ b/app/Controllers/Admin/Home.php @@ -2,24 +2,23 @@ namespace App\Controllers\Admin; +use App\Controllers\CommonController; use Psr\Log\LoggerInterface; use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\HTTP\RequestInterface; use App\Helpers\CommonHelper; -use App\Controllers\Admin\AdminController; -class Home extends AdminController +class Home extends CommonController { public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->title = "Main"; + $this->layout = "admin"; + $this->uri_path = "admin/"; + $this->view_path = "admin/"; + $this->title = "관리자페이지 메인"; $this->helper = new CommonHelper(); } - protected function getModel(): mixed - { - return null; - } public function index(): string { helper(['form']); diff --git a/app/Controllers/Admin/MapurlController.php b/app/Controllers/Admin/MapurlController.php index a72995a..a855bbe 100644 --- a/app/Controllers/Admin/MapurlController.php +++ b/app/Controllers/Admin/MapurlController.php @@ -4,7 +4,7 @@ namespace App\Controllers\Admin; use App\Helpers\MapurlHelper; use App\Models\MapurlModel; - +use App\Services\MapurlService; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; @@ -16,17 +16,23 @@ class MapurlController extends AdminController public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name .= "Mapurl"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); + $this->title = lang("{$this->getService()->class_path}.title"); $this->helper = new MapurlHelper(); } protected function getModel(): MapurlModel { - if ($this->model === null) { - $this->model = new MapurlModel(); + if ($this->_model === null) { + $this->_model = new MapurlModel(); } - return $this->model; + return $this->_model; + } + + protected function getService(): MapurlService + { + if ($this->service === null) { + $this->service = new MapurlService(); + } + return $this->service; } private function init(string $action, array $fields = []): void { diff --git a/app/Controllers/Admin/UserController.php b/app/Controllers/Admin/UserController.php index aff6068..3e04839 100644 --- a/app/Controllers/Admin/UserController.php +++ b/app/Controllers/Admin/UserController.php @@ -4,7 +4,7 @@ namespace App\Controllers\Admin; use App\Helpers\UserHelper; use App\Models\UserModel; - +use App\Services\UserService; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; @@ -12,22 +12,28 @@ use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\Validation\Validation; use Psr\Log\LoggerInterface; + class UserController extends AdminController { public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name = "User"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); + $this->title = lang("{$this->getService()->class_path}.title"); $this->helper = new UserHelper(); } protected function getModel(): UserModel { - if ($this->model === null) { - $this->model = new UserModel(); + if ($this->_model === null) { + $this->_model = new UserModel(); } - return $this->model; + return $this->_model; + } + protected function getService(): UserService + { + if ($this->service === null) { + $this->service = new UserService(); + } + return $this->service; } protected function setValidationRule($field, Validation $validation, string $action): Validation { @@ -74,6 +80,7 @@ class UserController extends AdminController { $this->action = $action; $this->fields = count($fields) ? $fields : ['id', $this->getModel()::TITLE, 'email', 'mobile', 'role', 'updated_at', 'created_at']; + $this->field_rules = $this->getModel()->getFieldRules($action, $this->fields); $this->filter_fields = ['role', 'status']; $this->field_options = $this->getFormFieldOptions($this->filter_fields); $this->batchjob_fields = ['status']; diff --git a/app/Controllers/Admin/UserSNSController.php b/app/Controllers/Admin/UserSNSController.php index 37321d3..800b252 100644 --- a/app/Controllers/Admin/UserSNSController.php +++ b/app/Controllers/Admin/UserSNSController.php @@ -2,33 +2,37 @@ namespace App\Controllers\Admin; -use App\Helpers\UserSNSHelper; -use App\Models\UserModel; - -use App\Models\UserSNSModel; use CodeIgniter\HTTP\DownloadResponse; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; -use CodeIgniter\Validation\Validation; use Psr\Log\LoggerInterface; +use App\Helpers\UserSNSHelper; +use App\Models\UserModel; +use App\Models\UserSNSModel; +use App\Services\UserSNSService; class UserSNSController extends AdminController { public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name = "UserSNS"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); + $this->title = lang("{$this->getService()->class_path}.title"); $this->helper = new UserSNSHelper(); } protected function getModel(): UserSNSModel { - if ($this->model === null) { - $this->model = new UserSNSModel(); + if ($this->_model === null) { + $this->_model = new UserSNSModel(); } - return $this->model; + return $this->_model; + } + protected function getService(): UserSNSService + { + if ($this->service === null) { + $this->service = new UserSNSService(); + } + return $this->service; } protected function getFormFieldOption(string $field, array $options = []): array { diff --git a/app/Controllers/AuthController.php b/app/Controllers/AuthController.php index 382cb6f..9486d56 100644 --- a/app/Controllers/AuthController.php +++ b/app/Controllers/AuthController.php @@ -7,9 +7,9 @@ use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; - use App\Models\UserModel; -use App\Helpers\UserHelper; +use App\Services\UserService; +use App\Helpers\Cloudflare\AuthHelper; use App\Libraries\MyAuth\GoogleAuth; use App\Libraries\MyAuth\LocalAuth; @@ -18,17 +18,22 @@ class AuthController extends MVController public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name .= "User"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); - $this->helper = new UserHelper(); + $this->title = lang("{$this->getService()->class_path}.title");; + $this->helper = new AuthHelper(); } protected function getModel(): UserModel { - if ($this->model === null) { - $this->model = new UserModel(); + if ($this->_model === null) { + $this->_model = new UserModel(); } - return $this->model; + return $this->_model; + } + protected function getService(): UserService + { + if ($this->service === null) { + $this->service = new UserService(); + } + return $this->service; } private function init(string $action, array $fields = []): void { diff --git a/app/Controllers/CLI/Cloudflare.php b/app/Controllers/CLI/Cloudflare.php index a4cfc58..131262e 100644 --- a/app/Controllers/CLI/Cloudflare.php +++ b/app/Controllers/CLI/Cloudflare.php @@ -6,10 +6,10 @@ use App\Controllers\BaseController; use App\Entities\Cloudflare\AccountEntity; use App\Entities\Cloudflare\AuthEntity; use App\Entities\Cloudflare\ZoneEntity; -use App\Services\Cloudflare\Account; -use App\Services\Cloudflare\Zone; -use App\Services\Cloudflare\Record; -use App\Services\Cloudflare\Firewall; +use App\Services\Cloudflare\AccountService; +use App\Services\Cloudflare\ZoneService; +use App\Services\Cloudflare\RecordService; +use App\Services\Cloudflare\FirewallService; use App\Models\Cloudflare\AuthModel; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; @@ -37,23 +37,23 @@ class Cloudflare extends BaseController } private function account_process(AuthEntity $auth_entity): array { - $account = new Account($auth_entity); - return $account->reload(); + $account = new AccountService(); + return $account->reload($auth_entity); } private function zone_process(AccountEntity $account_entity): array { - $zone = new Zone($account_entity); - return $zone->reload(); + $zone = new ZoneService(); + return $zone->reload($account_entity); } private function record_process(ZoneEntity $zone_entity): array { - $record = new Record($zone_entity); - return $record->reload(); + $record = new RecordService(); + return $record->reload($zone_entity); } private function firewall_process(ZoneEntity $zone_entity): array { - $firewall = new Firewall($zone_entity); - return $firewall->reload(); + $firewall = new FirewallService(); + return $firewall->reload($zone_entity); } public function reload(mixed $uid = false): void { diff --git a/app/Controllers/Cloudflare/CloudflareController.php b/app/Controllers/Cloudflare/CloudflareController.php index dc9bb80..99c55f4 100644 --- a/app/Controllers/Cloudflare/CloudflareController.php +++ b/app/Controllers/Cloudflare/CloudflareController.php @@ -3,7 +3,6 @@ namespace App\Controllers\Cloudflare; use App\Controllers\MVController; -use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; @@ -21,8 +20,6 @@ abstract class CloudflareController extends MVController public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_path = "Cloudflare/"; - $this->uri_path .= strtolower($this->class_path); } final protected function getAuthModel(): AuthModel { @@ -60,18 +57,18 @@ abstract class CloudflareController extends MVController final protected function trigger_procedure(): ResponseInterface { //Transaction Start - $this->getModel()->transStart(); + $this->getService()->getModel()->transStart(); try { // 여기에 필요한 로직을 구현하세요 log_message("debug", var_export($this->request->getVar(), true)); $this->trigger_process(); $this->message = "{$this->class_name}: Trigger 작업이 완료되었습니다."; - $this->getModel()->transCommit(); + $this->getService()->getModel()->transCommit(); log_message("notice", __FUNCTION__ . $this->message); return $this->response->setJSON(['status' => 200, $this->message], 200); } catch (\Exception $e) { //Transaction Rollback - $this->getModel()->transRollback(); + $this->getService()->getModel()->transRollback(); log_message("error", $e->getMessage()); return $this->response->setJSON(['status' => 500, 'message' => $e->getMessage()], 500); } diff --git a/app/Controllers/Cloudflare/FirewallController.php b/app/Controllers/Cloudflare/FirewallController.php index 5080977..cf0b0e3 100644 --- a/app/Controllers/Cloudflare/FirewallController.php +++ b/app/Controllers/Cloudflare/FirewallController.php @@ -6,18 +6,14 @@ use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; use App\Models\Cloudflare\FirewallModel; -use App\Services\Cloudflare\Firewall; +use App\Services\Cloudflare\FirewallService; class FirewallController extends CloudflareController { private $_zone_entity = null; - private $_myLibrays = []; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name .= "Firewall"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); } final protected function getModel(): FirewallModel { @@ -26,12 +22,12 @@ class FirewallController extends CloudflareController } return $this->model; } - final protected function getMyLibrary(): Firewall + protected function getService(): FirewallService { - if (!isset($this->_myLibrays[$this->_zone_entity->getPK()])) { - $this->_myLibrays[$this->_zone_entity->getPK()] = new Firewall($this->_zone_entity); + if ($this->service === null) { + $this->service = new FirewallService(); } - return $this->_myLibrays[$this->_zone_entity->getPK()]; + return $this->service; } //Trigger작업 protected function trigger_process(): void diff --git a/app/Controllers/Cloudflare/RecordController.php b/app/Controllers/Cloudflare/RecordController.php index bfa86c7..639fdcb 100644 --- a/app/Controllers/Cloudflare/RecordController.php +++ b/app/Controllers/Cloudflare/RecordController.php @@ -6,18 +6,14 @@ use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; use App\Models\Cloudflare\RecordModel; -use App\Services\Cloudflare\Record; +use App\Services\Cloudflare\RecordService; class RecordController extends CloudflareController { private $_zone_entity = null; - private $_myLibrays = []; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name .= "Record"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); } final protected function getModel(): RecordModel { @@ -26,12 +22,12 @@ class RecordController extends CloudflareController } return $this->model; } - final protected function getMyLibrary(): Record + protected function getService(): RecordService { - if (!isset($this->_myLibrays[$this->_zone_entity->getPK()])) { - $this->_myLibrays[$this->_zone_entity->getPK()] = new Record($this->_zone_entity); + if ($this->service === null) { + $this->service = new RecordService(); } - return $this->_myLibrays[$this->_zone_entity->getPK()]; + return $this->service; } //Trigger작업 protected function trigger_process(): void diff --git a/app/Controllers/Cloudflare/ZoneController.php b/app/Controllers/Cloudflare/ZoneController.php index ed64cf2..da3eb33 100644 --- a/app/Controllers/Cloudflare/ZoneController.php +++ b/app/Controllers/Cloudflare/ZoneController.php @@ -6,18 +6,14 @@ use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; use App\Models\Cloudflare\ZoneModel; -use App\Services\Cloudflare\Zone; +use App\Services\Cloudflare\ZoneService; class ZoneController extends CloudflareController { private $_account_entity = null; - private $_myLibrays = []; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_name .= "Zone"; - $this->class_path .= $this->class_name; - $this->title = lang("{$this->class_path}.title"); } final protected function getModel(): ZoneModel { @@ -26,12 +22,12 @@ class ZoneController extends CloudflareController } return $this->model; } - final protected function getMyLibrary(): Zone + protected function getService(): ZoneService { - if (!isset($this->_myLibrays[$this->_account_entity->getPK()])) { - $this->_myLibrays[$this->_account_entity->getPK()] = new Zone($this->_account_entity); + if ($this->service === null) { + $this->service = new ZoneService(); } - return $this->_myLibrays[$this->_account_entity->getPK()]; + return $this->service; } //Trigger작업 protected function trigger_process(): void diff --git a/app/Controllers/CommonController.php b/app/Controllers/CommonController.php index c18ca4a..12b8d1d 100644 --- a/app/Controllers/CommonController.php +++ b/app/Controllers/CommonController.php @@ -9,7 +9,7 @@ use Psr\Log\LoggerInterface; abstract class CommonController extends BaseController { - private $_viewDatas = []; + private $_controlDatas = []; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); @@ -17,17 +17,17 @@ abstract class CommonController extends BaseController } final public function __get($name) { - if (!array_key_exists($name, $this->_viewDatas)) { + if (!array_key_exists($name, $this->_controlDatas)) { return null; } - return $this->_viewDatas[$name]; + return $this->_controlDatas[$name]; } final public function __set($name, $value): void { - $this->_viewDatas[$name] = $value; + $this->_controlDatas[$name] = $value; } final public function getViewDatas(): array { - return $this->_viewDatas; + return $this->_controlDatas; } } diff --git a/app/Controllers/Front/FrontController.php b/app/Controllers/Front/FrontController.php deleted file mode 100644 index 7fb0de0..0000000 --- a/app/Controllers/Front/FrontController.php +++ /dev/null @@ -1,19 +0,0 @@ -layout = "front"; - $this->uri_path = "front/"; - $this->view_path = "front/"; - } -} diff --git a/app/Controllers/MVController.php b/app/Controllers/MVController.php index b114a79..e8cac84 100644 --- a/app/Controllers/MVController.php +++ b/app/Controllers/MVController.php @@ -17,9 +17,10 @@ abstract class MVController extends CommonController public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); - $this->class_path = ""; + $this->class_path = $this->getService()->class_path; } abstract protected function getModel(): mixed; + abstract protected function getService(): mixed; //Field별 Form Rule용 protected function setValidationRule($field, Validation $validation, string $action): Validation { @@ -42,8 +43,9 @@ abstract class MVController extends CommonController { switch ($field) { default: - // dd(lang($this->class_path . '.' . strtoupper($field))); - $options[$field] = lang($this->class_path . '.' . strtoupper($field)); + // echo "TEST:" . $this->getService()->class_path . "," . $this->getService()->class_name; + // dd(lang($this->getService()->class_path . '.' . strtoupper($field))); + $options[$field] = lang($this->getService()->class_path . '.' . strtoupper($field)); break; } return $options; @@ -56,7 +58,6 @@ abstract class MVController extends CommonController } $options = $this->getFormFieldOption($field, $options); } - // dd($options); return $options; } //전송된 데이터 @@ -77,9 +78,7 @@ abstract class MVController extends CommonController return $formDatas; } // 생성 - protected function create_form_process(): void - { - } + protected function create_form_process(): void {} final protected function create_form_procedure(): RedirectResponse|string { try { @@ -100,7 +99,7 @@ abstract class MVController extends CommonController //변경할 값 확인 : Upload된 파일 검증시 $this->request->getPOST()보다 먼처 체크필요 $validation = $this->getValidation($fields, service('validation'), $action); if (!$validation->withRequest($this->request)->run()) { - throw new \Exception("{$this->class_name} 작업 데이터 검증 오류발생\n" . implode( + throw new \Exception("{$this->getService()->class_name} 작업 데이터 검증 오류발생\n" . implode( "\n", $validation->getErrors() )); @@ -110,11 +109,11 @@ abstract class MVController extends CommonController { $this->create_validate($this->action, $this->fields); $this->formDatas = $this->getFormDatas(); - $this->entity = $this->getModel()->create($this->formDatas); + $this->entity = $this->getService()->create($this->formDatas); } protected function create_process_result(): RedirectResponse|string { - $url = strtolower(base_url() . $this->uri_path . $this->class_name) . "/view/" . $this->entity->getPK(); + $url = strtolower(base_url() . $this->uri_path . $this->getService()->class_name) . "/view/" . $this->entity->getPK(); return redirect()->to($url)->with('error', $this->message); } final protected function create_procedure(): RedirectResponse|string @@ -125,7 +124,7 @@ abstract class MVController extends CommonController helper(['form']); $this->create_process(); $this->getModel()->transCommit(); - $this->message = "{$this->class_name} : 생성작업이 완료되었습니다."; + $this->message = "{$this->getService()->class_name} : 생성작업이 완료되었습니다."; log_message("notice", $this->message); return $this->create_process_result(); } catch (\Exception $e) { @@ -163,7 +162,7 @@ abstract class MVController extends CommonController //변경할 값 확인 : Upload된 파일 검증시 $this->request->getVar()보다 먼처 체크필요 $validation = $this->getValidation($fields, service('validation'), $action); if (!$validation->withRequest($this->request)->run()) { - throw new \Exception("{$this->class_name} 작업 데이터 검증 오류발생\n" . implode( + throw new \Exception("{$this->getService()->class_name} 작업 데이터 검증 오류발생\n" . implode( "\n", $validation->getErrors() )); @@ -178,11 +177,11 @@ abstract class MVController extends CommonController if ($this->entity === null) { throw new \Exception(__FUNCTION__ . " => {$uid} 정보를 찾을수 없습니다."); } - $this->entity = $this->getModel()->modify($this->entity, $this->formDatas); + $this->entity = $this->getService()->modify($this->entity, $this->formDatas); } protected function modify_process_result(): RedirectResponse|string { - $url = strtolower(base_url() . $this->uri_path . $this->class_name) . "/view/" . $this->entity->getPK(); + $url = strtolower(base_url() . $this->uri_path . $this->getService()->class_name) . "/view/" . $this->entity->getPK(); return redirect()->to($url)->with('error', $this->message); } final protected function modify_procedure(mixed $uid): RedirectResponse|string @@ -193,7 +192,7 @@ abstract class MVController extends CommonController helper(['form']); $this->modify_process($uid); $this->getModel()->transCommit(); - $this->message = "{$this->class_name} : 수정작업이 완료되었습니다."; + $this->message = "{$this->getService()->class_name} : 수정작업이 완료되었습니다."; log_message("notice", $this->message); return $this->modify_process_result(); } catch (\Exception $e) { @@ -226,7 +225,7 @@ abstract class MVController extends CommonController $this->modify_process($uid); } $this->getModel()->transCommit(); - $this->message = "{$this->class_name} : 일괄처리작업이 완료되었습니다."; + $this->message = "{$this->getService()->class_name} : 일괄처리작업이 완료되었습니다."; log_message("notice", $this->message); // 이전 URL로 리다이렉트 return redirect()->to($this->myauth->popPreviousUrl())->with('error', $this->message); @@ -247,7 +246,7 @@ abstract class MVController extends CommonController $this->fields = [$field]; $this->modify_process($uid); $this->getModel()->transCommit(); - $this->message = "{$this->class_name} : 단일필드작업이 완료되었습니다."; + $this->message = "{$this->getService()->class_name} : 단일필드작업이 완료되었습니다."; log_message("notice", $this->message); // 이전 URL로 리다이렉트 return redirect()->to($this->myauth->popPreviousUrl())->with('error', $this->message); @@ -294,7 +293,7 @@ abstract class MVController extends CommonController if ($this->entity === null) { throw new \Exception("{$uid} 정보를 찾을수 없습니다."); } - $this->entity = $this->getModel()->delete($this->entity->getPK()); + $this->entity = $this->getService()->delete($this->entity->getPK()); } final public function delete(mixed $uid): RedirectResponse { @@ -303,7 +302,7 @@ abstract class MVController extends CommonController try { $this->delete_process($uid); $this->getModel()->transCommit(); - $this->message = "{$this->class_name} : 삭제작업이 완료되었습니다."; + $this->message = "{$this->getService()->class_name} : 삭제작업이 완료되었습니다."; log_message("notice", $this->message); // 이전 URL로 리다이렉트 return redirect()->to($this->myauth->popPreviousUrl())->with('error', $this->message); @@ -329,7 +328,7 @@ abstract class MVController extends CommonController $this->delete_process($uid); } $this->getModel()->transCommit(); - $this->message = "{$this->class_name} : 일괄삭제처리작업이 완료되었습니다."; + $this->message = "{$this->getService()->class_name} : 일괄삭제처리작업이 완료되었습니다."; log_message("notice", $this->message); // 이전 URL로 리다이렉트 return redirect()->to($this->myauth->popPreviousUrl())->with('error', $this->message); @@ -441,12 +440,12 @@ abstract class MVController extends CommonController $full_path = WRITEPATH . DIRECTORY_SEPARATOR . "excel"; switch ($document_type) { case 'excel': - $file_name = sprintf("%s_%s.xlsx", $this->class_name, date('Y-m-d_Hm')); + $file_name = sprintf("%s_%s.xlsx", $this->getService()->class_name, date('Y-m-d_Hm')); $writer = IOFactory::createWriter($loaded_data, 'Xlsx'); $writer->save($full_path . DIRECTORY_SEPARATOR . $file_name); break; case 'pdf': - $file_name = sprintf("%s_%s.pdf", $this->class_name, date('Y-m-d_Hm')); + $file_name = sprintf("%s_%s.pdf", $this->getService()->class_name, date('Y-m-d_Hm')); $writer = new Mpdf($loaded_data); $writer->save($full_path . DIRECTORY_SEPARATOR . $file_name); break; diff --git a/app/Helpers/Cloudflare/AccountHelper.php b/app/Helpers/Cloudflare/AccountHelper.php index 3745a33..ce4671c 100644 --- a/app/Helpers/Cloudflare/AccountHelper.php +++ b/app/Helpers/Cloudflare/AccountHelper.php @@ -15,7 +15,7 @@ class AccountHelper extends MVCHelper public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string { if (in_array($viewDatas['action'], ['create', 'modify'])) { - $extras = (strpos($viewDatas['model']->getFieldRule($viewDatas['action'], $field), 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; + $extras = (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; } $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { @@ -68,22 +68,33 @@ class AccountHelper extends MVCHelper $this->old_parent = $viewDatas['entity']->getParent(); break; case AccountModel::TITLE: - $value = anchor( + $reload = anchor( base_url() . $viewDatas['uri_path'] . 'zone/reload/' . $viewDatas['entity']->getPK(), ICONS["RELOAD"], [ "class" => "btn btn-sm btn-primary btn-circle", "target" => "_self", ] - ) . " " . - anchor( - base_url() . $viewDatas['uri_path'] . "zone?account_uid=" . $viewDatas['entity']->getPK(), - ICONS["FLAG"], - [ - "class" => "btn btn-sm btn-primary btn-circle", - "target" => "_self", - ] - ) . " " . parent::getFieldView($field, $viewDatas, $extras); + ); + $flag = anchor( + base_url() . $viewDatas['uri_path'] . "zone?account_uid=" . $viewDatas['entity']->getPK(), + ICONS["FLAG"], + [ + "class" => "btn btn-sm btn-primary btn-circle", + "target" => "_self", + ] + ); + $value = $reload . " " . $flag . " " . form_label( + $value, + 'view', + [ + "data-src" => current_url() . '/view/' . $viewDatas['entity']->getPK(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + "style" => "color: blue; cursor: pointer; font-weight:bold;", + ...$extras, + ] + ); break; case 'type': case 'status': diff --git a/app/Helpers/Cloudflare/AuthHelper.php b/app/Helpers/Cloudflare/AuthHelper.php index 1e667b7..4191472 100644 --- a/app/Helpers/Cloudflare/AuthHelper.php +++ b/app/Helpers/Cloudflare/AuthHelper.php @@ -14,7 +14,7 @@ class AuthHelper extends MVCHelper public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string { if (in_array($viewDatas['action'], ['create', 'modify'])) { - $extras = (strpos($viewDatas['model']->getFieldRule($viewDatas['action'], $field), 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; + $extras = (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; } $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { @@ -32,22 +32,33 @@ class AuthHelper extends MVCHelper $value = $viewDatas['entity']->$field ?: DEFAULTS['EMPTY']; switch ($field) { case AuthModel::TITLE: - $value = anchor( + $reload = anchor( base_url() . $viewDatas['uri_path'] . 'account/reload/' . $viewDatas['entity']->getPK(), ICONS["RELOAD"], [ "class" => "btn btn-sm btn-primary btn-circle", "target" => "_self" ] - ) . " " . - anchor( - base_url() . $viewDatas['uri_path'] . "account?auth_uid=" . $viewDatas['entity']->getPK(), - ICONS["FLAG"], - [ - "class" => "btn btn-sm btn-primary btn-circle", - "target" => "_self" - ] - ) . " " . parent::getFieldView($field, $viewDatas, $extras); + ); + $flag = anchor( + base_url() . $viewDatas['uri_path'] . "account?auth_uid=" . $viewDatas['entity']->getPK(), + ICONS["FLAG"], + [ + "class" => "btn btn-sm btn-primary btn-circle ms1", + "target" => "_self" + ] + ); + $value = $reload . " " . $flag . " " . form_label( + $value, + 'view', + [ + "data-src" => current_url() . '/view/' . $viewDatas['entity']->getPK(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + "style" => "color: blue; cursor: pointer; font-weight:bold;", + ...$extras, + ] + ); break; default: $value = parent::getFieldView($field, $viewDatas, $extras); diff --git a/app/Helpers/Cloudflare/FirewallHelper.php b/app/Helpers/Cloudflare/FirewallHelper.php index 9f76635..5c3cb7b 100644 --- a/app/Helpers/Cloudflare/FirewallHelper.php +++ b/app/Helpers/Cloudflare/FirewallHelper.php @@ -15,7 +15,7 @@ class FirewallHelper extends MVCHelper public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string { if (in_array($viewDatas['action'], ['create', 'modify'])) { - $extras = (strpos($viewDatas['model']->getFieldRule($viewDatas['action'], $field), 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; + $extras = (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; } $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { @@ -76,7 +76,17 @@ class FirewallHelper extends MVCHelper $this->old_parent = $viewDatas['entity']->getParent(); break; case FirewallModel::TITLE: - $value = parent::getFieldView($field, $viewDatas, ['class' => "label_hosts", ...$extras]); + $value = form_label( + $value, + 'view', + [ + "data-src" => current_url() . '/view/' . $viewDatas['entity']->getPK(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + "style" => "color: blue; cursor: pointer; font-weight:bold;", + ...$extras, + ] + ); break; case 'expression': // 값이 40자 이상인 경우 자르고 '...' 추가 diff --git a/app/Helpers/Cloudflare/RecordHelper.php b/app/Helpers/Cloudflare/RecordHelper.php index ea5216c..b17c35c 100644 --- a/app/Helpers/Cloudflare/RecordHelper.php +++ b/app/Helpers/Cloudflare/RecordHelper.php @@ -28,7 +28,7 @@ class RecordHelper extends MVCHelper public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string { if (in_array($viewDatas['action'], ['create', 'modify'])) { - $extras = (strpos($viewDatas['model']->getFieldRule($viewDatas['action'], $field), 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; + $extras = (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; } $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { @@ -95,13 +95,23 @@ class RecordHelper extends MVCHelper $this->old_parent = $viewDatas['entity']->getParent(); break; case RecordModel::TITLE: - $value = parent::getFieldView($field, $viewDatas, ['class' => "label_hosts", ...$extras]); $fixed = anchor( sprintf("%s/toggle/%s/fixed?fixed=%s", current_url(), $viewDatas['entity']->getPK(), $viewDatas['entity']->fixed == 'on' ? "off" : "on"), $viewDatas['entity']->fixed == 'on' ? "" . ICONS['LOCK'] . "" : ICONS['UNLOCK'], ["class" => "ext-danger", "style" => "float:right;", ...$extras] ); - $value = $fixed . " " . $value; + $value = $fixed . " " . form_label( + $value, + 'view', + [ + "data-src" => current_url() . '/view/' . $viewDatas['entity']->getPK(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + 'class' => "label_hosts", + "style" => "color: blue; cursor: pointer; font-weight:bold;", + ...$extras, + ] + ); break; case 'content': // 값이 40자 이상인 경우 자르고 '...' 추가 diff --git a/app/Helpers/Cloudflare/ZoneHelper.php b/app/Helpers/Cloudflare/ZoneHelper.php index 26e9321..8d9ec6f 100644 --- a/app/Helpers/Cloudflare/ZoneHelper.php +++ b/app/Helpers/Cloudflare/ZoneHelper.php @@ -15,7 +15,7 @@ class ZoneHelper extends MVCHelper function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string { if (in_array($viewDatas['action'], ['create', 'modify'])) { - $extras = (strpos($viewDatas['model']->getFieldRule($viewDatas['action'], $field), 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; + $extras = (strpos($viewDatas['field_rules'][$field], 'required') !== false) ? ["class" => "form-control", "required" => "", ...$extras] : ["class" => "form-control", ...$extras]; } $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { @@ -91,31 +91,34 @@ class ZoneHelper extends MVCHelper $this->old_parent = $viewDatas['entity']->getParent(); break; case ZoneModel::TITLE: - $record = anchor( + $record_reload = anchor( base_url() . $viewDatas['uri_path'] . 'record/reload/' . $viewDatas['entity']->getPK(), ICONS["RELOAD"], [ - "class" => "btn btn-sm btn-primary btn-circle", + "class" => "btn btn-sm btn-primary btn-circle", + "target" => "_self", + ] + ); + $record_flag = anchor( + base_url() . $viewDatas['uri_path'] . "record?zone_uid=" . $viewDatas['entity']->getPK(), + ICONS["FLAG"], + [ + "class" => "btn btn-sm btn-outline-primary btn-circle", "target" => "_self" ] - ) . " " . - anchor( - base_url() . $viewDatas['uri_path'] . "record?zone_uid=" . $viewDatas['entity']->getPK(), - ICONS["FLAG"], + ); + $firewall_reload = ""; + $firewall_flag = ""; + if (in_array($viewDatas['myauth']->getAuthInfo('id'), explode(",", env("cloudflare.firewall.acl")))) { + $firewall_reload = anchor( + base_url() . $viewDatas['uri_path'] . 'firewall/reload/' . $viewDatas['entity']->getPK(), + ICONS["RELOAD"], [ - "class" => "btn btn-sm btn-outline-primary btn-circle", + "class" => "btn btn-sm btn-warning btn-circle", "target" => "_self" ] ); - $firewall = anchor( - base_url() . $viewDatas['uri_path'] . 'firewall/reload/' . $viewDatas['entity']->getPK(), - ICONS["RELOAD"], - [ - "class" => "btn btn-sm btn-warning btn-circle", - "target" => "_self" - ] - ) . " " . - anchor( + $firewall_flag = anchor( base_url() . $viewDatas['uri_path'] . "firewall?zone_uid=" . $viewDatas['entity']->getPK(), ICONS["FLAG"], [ @@ -123,11 +126,24 @@ class ZoneHelper extends MVCHelper "target" => "_self" ] ); + } + $value = form_label( + $value, + 'view', + [ + "data-src" => current_url() . '/view/' . $viewDatas['entity']->getPK(), + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + 'class' => "label_zones", + "style" => "color: blue; cursor: pointer; font-weight:bold;", + ...$extras, + ] + ); $value = sprintf( "
| %s | %s |
| %s |