From b3659ee82077ab7cdf10d7860dd2290b78f5f614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EC=A4=80=ED=9D=A0git=20config=20git=20config=20-?= =?UTF-8?q?-helpgit=20config=20--global=20user=2Ename=20=EC=B5=9C=EC=A4=80?= =?UTF-8?q?=ED=9D=A0?= Date: Sat, 22 Jul 2023 23:19:44 +0900 Subject: [PATCH] servermgrv2 init... --- app/Config/Constants.php | 21 +-- .../Admin/BoardConfigController.php | 40 ++--- app/Controllers/Admin/BoardController.php | 50 +++---- app/Controllers/Admin/LoggerController.php | 18 +-- app/Controllers/Admin/UserSNSController.php | 7 - app/Controllers/BaseController.php | 88 ++++++----- app/Database/board.sql | 17 ++- app/Helpers/Admin/BoardConfig_helper.php | 40 +++-- app/Helpers/Admin/Board_helper.php | 12 +- app/Helpers/Admin/Logger_helper.php | 10 +- app/Helpers/Admin/UserSNS_helper.php | 10 +- app/Helpers/Admin/User_helper.php | 10 +- app/Language/en/Admin/Board.php | 29 ---- app/Language/en/Admin/BoardConfig.php | 26 ---- app/Language/en/Admin/HPILO.php | 30 ---- app/Language/en/Admin/Logger.php | 18 --- app/Language/en/Admin/User.php | 18 --- app/Language/en/Admin/UserSNS.php | 18 --- app/Language/en/Admin/Validation.php | 4 - app/Language/kr/Admin/Board.php | 11 +- app/Language/kr/Admin/BoardConfig.php | 16 +- app/Language/kr/Admin/Logger.php | 5 - app/Language/kr/Admin/User.php | 26 ++-- app/Language/kr/Admin/UserSNS.php | 8 +- app/Libraries/Adapter/API/Adapter.php | 12 -- app/Libraries/Adapter/API/CurlAdapter.php | 8 +- app/Libraries/Adapter/API/GuzzleAdapter.php | 4 +- app/Libraries/Adapter/API/LocalAdapter.php | 6 +- app/Libraries/Adapter/Auth/GoogleAdapter.php | 11 +- app/Libraries/Log/DataBase.php | 4 +- app/Libraries/Log/Log.php | 4 +- app/Models/BaseModel.php | 141 ++++++++---------- app/Models/BoardConfigModel.php | 45 +++--- app/Models/BoardModel.php | 49 ++---- app/Models/LoggerModel.php | 23 +-- app/Models/UserModel.php | 13 +- app/Models/UserSNSModel.php | 24 +-- 37 files changed, 339 insertions(+), 537 deletions(-) delete mode 100644 app/Language/en/Admin/Board.php delete mode 100644 app/Language/en/Admin/BoardConfig.php delete mode 100644 app/Language/en/Admin/HPILO.php delete mode 100644 app/Language/en/Admin/Logger.php delete mode 100644 app/Language/en/Admin/User.php delete mode 100644 app/Language/en/Admin/UserSNS.php delete mode 100644 app/Language/en/Admin/Validation.php diff --git a/app/Config/Constants.php b/app/Config/Constants.php index ac19746..eea5e28 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -157,12 +157,14 @@ define('AUTH_ADAPTERS', [ ], ]); //등급 관련 -define('ROLES', [ - 'guest' => '비회원', 'user' => '일반회원', 'vip' => 'VIP회원', - 'bronze' => '일반판매자', 'silver' => '고급판매자', 'gold' => '파워리셀러', - 'manager' => '관리자', 'cloudflare' => "Cloudflare관리자", 'director' => '감독자', 'master' => "마스터", +define('FORM_OPTIONS', [ + 'ROLE' => [ + 'guest' => '비회원', 'user' => '일반회원', 'vip' => 'VIP회원', + 'bronze' => '일반판매자', 'silver' => '고급판매자', 'gold' => '파워리셀러', + 'manager' => '관리자', 'cloudflare' => "Cloudflare관리자", 'director' => '감독자', 'master' => "마스터", + ], + 'STATUS' => ["use" => "사용", "unuse" => "사용않함",], ]); -define('STATUS', ["use" => "사용", "unuse" => "사용않함",]); //Upload , Download 관련 define('PATHS', [ @@ -199,8 +201,9 @@ define('DEFAULTS', [ 'PERPAGE' => getenv('default.perpage') ?: 20, ]); -//UUID초기값 정의 -define('UUIDS', [ - 'NAMESPACE' => getenv('uuid.namespace') ?: "8fc990b07418d5826d98de952cfb268dee4a23a3", - 'SECRET' => getenv('uuid.secret') ?: "delftstack1", +//API Adapter초기갑 정의 +define('API', [ + 'SSL_VERIFY' => getenv('api.ssl') == 'true' ? true : false, + 'COOKIE_FILE' => PATHS['API'] . getenv('api.cookie.file') ?: "api-cookie_" . date("Ymd") . ".log", + 'DEBUG_FILE' => PATHS['API'] . getenv('api.debug.file') ?: "api-debug_" . date("Ymd") . ".log", ]); diff --git a/app/Controllers/Admin/BoardConfigController.php b/app/Controllers/Admin/BoardConfigController.php index dac7686..eecc3a6 100644 --- a/app/Controllers/Admin/BoardConfigController.php +++ b/app/Controllers/Admin/BoardConfigController.php @@ -19,13 +19,13 @@ class BoardConfigController extends \App\Controllers\Admin\AdminController 'fields' => ['name', 'isaccess', 'isread', 'iswrite', 'isreply', 'isupload', 'isdownload', 'status', 'head', 'tail'], 'fieldFilters' => ['isaccess', 'isread', 'iswrite', 'isreply', 'isupload', 'isdownload', 'status'], 'fieldRules' => [ - 'name' => 'required|string|is_unique[tw_board_conifg.name]', - 'isaccess' => 'required|string', - 'isread' => 'required|string', - 'iswrite' => 'required|string', - 'isreply' => 'required|string', - 'isupload' => 'required|string', - 'isdownload' => 'required|string', + 'name' => 'required|string|is_unique[tw_board_config.name]', + 'isaccess' => 'required', + 'isread' => 'required', + 'iswrite' => 'required', + 'isreply' => 'required', + 'isupload' => 'required', + 'isdownload' => 'required', 'head' => 'if_exist|string', 'tail' => 'if_exist|string', 'status' => 'if_exist|string', @@ -36,12 +36,12 @@ class BoardConfigController extends \App\Controllers\Admin\AdminController 'fieldFilters' => ['isaccess', 'isread', 'iswrite', 'isreply', 'isupload', 'isdownload', 'status'], 'fieldRules' => [ 'name' => 'required|string', - 'isaccess' => 'required|string', - 'isread' => 'required|string', - 'iswrite' => 'required|string', - 'isreply' => 'required|string', - 'isupload' => 'required|string', - 'isdownload' => 'required|string', + 'isaccess' => 'required', + 'isread' => 'required', + 'iswrite' => 'required', + 'isreply' => 'required', + 'isupload' => 'required', + 'isdownload' => 'required', 'head' => 'if_exist|string', 'tail' => 'if_exist|string', 'status' => 'if_exist|string', @@ -52,12 +52,12 @@ class BoardConfigController extends \App\Controllers\Admin\AdminController 'fieldFilters' => ['isaccess', 'isread', 'iswrite', 'isreply', 'isupload', 'isdownload', 'status'], 'fieldRules' => [ 'name' => 'required|string', - 'isaccess' => 'required|string', - 'isread' => 'required|string', - 'iswrite' => 'required|string', - 'isreply' => 'required|string', - 'isupload' => 'required|string', - 'isdownload' => 'required|string', + 'isaccess' => 'required', + 'isread' => 'required', + 'iswrite' => 'required', + 'isreply' => 'required', + 'isupload' => 'required', + 'isdownload' => 'required', 'head' => 'if_exist|string', 'tail' => 'if_exist|string', 'status' => 'if_exist|string', @@ -66,7 +66,7 @@ class BoardConfigController extends \App\Controllers\Admin\AdminController 'index' => [ 'fields' => ['name', 'isaccess', 'isread', 'iswrite', 'isreply', 'isupload', 'isdownload', 'status', 'created_at'], 'fieldFilters' => ['isaccess', 'isread', 'iswrite', 'isreply', 'isupload', 'isdownload', 'status'], - 'batchjobFilters' => ['isaccess', 'isread', 'iswrite', 'isreply', 'isupload', 'isdownload', 'status'], + 'batchjobFilters' => ['status'], ], 'excel' => [ 'fields' => ['name', 'isaccess', 'isread', 'iswrite', 'isreply', 'isupload', 'isdownload', 'status', 'created_at'], diff --git a/app/Controllers/Admin/BoardController.php b/app/Controllers/Admin/BoardController.php index dc827e4..cd933fa 100644 --- a/app/Controllers/Admin/BoardController.php +++ b/app/Controllers/Admin/BoardController.php @@ -2,17 +2,16 @@ namespace App\Controllers\Admin; -use App\Models\UserModel; +use App\Models\BoardConfigModel; use App\Models\BoardModel; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; -use App\Libraries\Log\Log; class BoardController extends \App\Controllers\Admin\AdminController { - private $_userModel = null; - private $_user_uids = null; + private $_boardConfigModel = null; + private $_board_config_uids = null; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { parent::initController($request, $response, $logger); @@ -20,10 +19,10 @@ class BoardController extends \App\Controllers\Admin\AdminController $this->_model = new BoardModel(); $this->_defines = [ 'insert' => [ - 'fields' => ['board_category', 'title', 'content', 'passwd', 'confirmpassword', 'upload_file', 'status'], - 'fieldFilters' => ['board_category', 'user_uid', 'status'], + 'fields' => ['board_config_uid', 'title', 'content', 'passwd', 'confirmpassword', 'upload_file', 'status'], + 'fieldFilters' => ['board_config_uid', 'user_uid', 'status'], 'fieldRules' => [ - 'board_category' => 'required|string', + 'board_config_uid' => 'required|string', 'title' => 'required|string', 'content' => 'required|string', 'passwd' => 'if_exist|trim|string', @@ -34,10 +33,10 @@ class BoardController extends \App\Controllers\Admin\AdminController ] ], 'update' => [ - 'fields' => ['board_category', 'title', 'content', 'passwd', 'confirmpassword', 'upload_file', 'status'], - 'fieldFilters' => ['board_category', 'user_uid', 'status'], + 'fields' => ['board_config_uid', 'title', 'content', 'passwd', 'confirmpassword', 'upload_file', 'status'], + 'fieldFilters' => ['board_config_uid', 'user_uid', 'status'], 'fieldRules' => [ - 'board_category' => 'required|string', + 'board_config_uid' => 'required|string', 'title' => 'required|string', 'content' => 'required|string', 'passwd' => 'if_exist|trim|string', @@ -48,18 +47,18 @@ class BoardController extends \App\Controllers\Admin\AdminController ], ], 'view' => [ - 'fields' => ['board_category', 'user_uid', 'title', 'view_cnt', 'status', 'updated_at', 'created_at', 'content'], - 'fieldFilters' => ['board_category', 'user_uid', 'status'], - 'fieldRules' => ['board_category', 'user_uid', 'status'], + 'fields' => ['board_config_uid', 'user_uid', 'title', 'view_cnt', 'status', 'updated_at', 'created_at', 'content'], + 'fieldFilters' => ['board_config_uid', 'user_uid', 'status'], + 'fieldRules' => ['board_config_uid', 'user_uid', 'status'], ], 'index' => [ - 'fields' => ['board_category', 'user_uid', 'title', 'view_cnt', 'status', 'updated_at', 'created_at'], - 'fieldFilters' => ['board_category', 'user_uid', 'status'], - 'batchjobFilters' => ['board_category', 'user_uid', 'status'], + 'fields' => ['board_config_uid', 'user_uid', 'title', 'view_cnt', 'status', 'updated_at', 'created_at'], + 'fieldFilters' => ['board_config_uid', 'user_uid', 'status'], + 'batchjobFilters' => ['board_config_uid', 'user_uid', 'status'], ], 'excel' => [ - 'fields' => ['board_category', 'user_uid', 'title', 'view_cnt', 'status', 'updated_at', 'created_at'], - 'fieldFilters' => ['board_category', 'user_uid', 'status'], + 'fields' => ['board_config_uid', 'user_uid', 'title', 'view_cnt', 'status', 'updated_at', 'created_at'], + 'fieldFilters' => ['board_config_uid', 'user_uid', 'status'], ], ]; helper($this->_className); @@ -68,21 +67,22 @@ class BoardController extends \App\Controllers\Admin\AdminController $this->_viewDatas['className'] = $this->_className; } - private function getUserModel(): UserModel + //BoardConfig모델 + final protected function getBoardConfigModel(): BoardConfigModel { - return is_null($this->_userModel) ? new UserModel() : $this->_userModel; + return is_null($this->_boardConfigModel) ? new BoardConfigModel() : $this->_boardConfigModel; } //Field별 Form Option용 protected function getFieldFormOption(string $field): array { switch ($field) { - case 'user_uid': - if (is_null($this->_user_uids)) { + case 'board_config_uid': + if (is_null($this->_board_config_uids)) { //모든 필요한 FormOption등 조기화작업 필요 - $this->_user_uids = $this->getUserModel()->getFieldFormOptions(['status' => 'use']); + $this->_board_config_uids = $this->getBoardConfigModel()->getFieldFormOptions(['status' => 'use']); } - return $this->_user_uids; + return $this->_board_config_uids; default: return parent::getFieldFormOption($field); break; @@ -94,7 +94,7 @@ class BoardController extends \App\Controllers\Admin\AdminController { switch ($field) { case 'upload_file': - $this->_viewDatas['fieldDatas'][$field] = $this->single_upload_procedure($field, $entity); + return $this->single_upload_procedure($field, $entity); break; default: return parent::getFieldFormData($field, $entity); diff --git a/app/Controllers/Admin/LoggerController.php b/app/Controllers/Admin/LoggerController.php index 40b5533..7151fb1 100644 --- a/app/Controllers/Admin/LoggerController.php +++ b/app/Controllers/Admin/LoggerController.php @@ -20,17 +20,17 @@ class LoggerController extends \App\Controllers\Admin\AdminController $this->_defines = [ 'view' => [ 'fields' => ['user_uid', 'title', 'content', 'status', 'created_at'], - 'fieldFilters' => ['user_uid', 'status'], + 'fieldFilters' => ['user_uid'], 'fieldRules' => [], ], 'index' => [ 'fields' => ['user_uid', 'title', 'status', 'created_at'], - 'fieldFilters' => ['user_uid', 'status'], + 'fieldFilters' => ['user_uid'], 'batchjobFilters' => [], ], 'excel' => [ 'fields' => ['user_uid', 'title', 'status', 'created_at'], - 'fieldFilters' => ['user_uid', 'status'], + 'fieldFilters' => ['user_uid'], ], ]; helper($this->_className); @@ -39,22 +39,10 @@ class LoggerController extends \App\Controllers\Admin\AdminController $this->_viewDatas['className'] = $this->_className; } - private function getUserModel(): UserModel - { - return is_null($this->_userModel) ? new UserModel() : $this->_userModel; - } - //Field별 Form Option용 protected function getFieldFormOption(string $field): array { switch ($field) { - case 'user_uid': - if (is_null($this->_user_uids)) { - //모든 필요한 FormOption등 조기화작업 필요 - $this->_user_uids = $this->getUserModel()->getFieldFormOptions(['status' => 'use']); - } - return $this->_user_uids; - break; default: return parent::getFieldFormOption($field); break; diff --git a/app/Controllers/Admin/UserSNSController.php b/app/Controllers/Admin/UserSNSController.php index cef0d82..1d003e1 100644 --- a/app/Controllers/Admin/UserSNSController.php +++ b/app/Controllers/Admin/UserSNSController.php @@ -2,7 +2,6 @@ namespace App\Controllers\Admin; -use App\Models\UserModel; use App\Models\UserSNSModel; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; @@ -10,7 +9,6 @@ use Psr\Log\LoggerInterface; class UserSNSController extends \App\Controllers\Admin\AdminController { - private $_userModel = null; private $_user_uids = null; public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { @@ -39,11 +37,6 @@ class UserSNSController extends \App\Controllers\Admin\AdminController $this->_viewDatas['className'] = $this->_className; } - private function getUserModel(): UserModel - { - return is_null($this->_userModel) ? new UserModel() : $this->_userModel; - } - //Field별 Form Option용 protected function getFieldFormOption(string $field): array { diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php index d66a3a8..2dbb43a 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -9,6 +9,7 @@ use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; use App\Libraries\Log\Log; +use App\Models\UserModel; /** * Class BaseController @@ -47,6 +48,8 @@ abstract class BaseController extends Controller /** * Constructor. */ + private $_userModel = null; + private $_user_uids = array(); protected $_model = null; protected $_className = ''; protected $_defines = array(); @@ -74,26 +77,39 @@ abstract class BaseController extends Controller } } + //User모델 + final protected function getUserModel(): UserModel + { + return is_null($this->_userModel) ? new UserModel() : $this->_userModel; + } + //Field별 Form Option용 protected function getFieldFormOption(string $field): array { switch ($field) { - default: - $fieldFormOptionDatas = lang($this->_className . '.' . strtoupper($field)); - if (!is_array($fieldFormOptionDatas)) { - throw new \Exception(__FUNCTION__ . "에서 {$field}의 데이터가 array가 아닙니다.\n" . var_export($fieldFormOptionDatas, true)); + case 'user_uid': + if (is_null($this->_user_uids)) { + //모든 필요한 FormOption등 조기화작업 필요 + $this->_user_uids = $this->getUserModel()->getFieldFormOptions(['status' => 'use']); } - return $fieldFormOptionDatas; + return $this->_user_uids; + break; + default: + $formOptionDatas = lang($this->_className . '.' . strtoupper($field)); + if (!is_array($formOptionDatas)) { + throw new \Exception("{$this->_className}에서 Field:{$field}의 FormOptionData가 array가 아닙니다.\n" . var_export($formOptionDatas, true)); + } + return $formOptionDatas; break; } } //Field별 Form Option용 - final protected function getFieldFormOptions(array $fieldFilters): array + final protected function getFieldFormOptions(array $fields): array { $fieldFormOptions = array(); - foreach ($fieldFilters as $field) { - if (is_array($field)) { - throw new \Exception(__FUNCTION__ . "에서 field가 array 입니다.\n" . var_export($fieldFilters, true)); + foreach ($fields as $field) { + if (!is_string($field)) { + throw new \Exception(__FUNCTION__ . "에서 {$this->_className}의 Field:{$field}가 string 아닙니다.\n" . var_export($fields, true)); } $fieldFormOptions[$field] = $this->getFieldFormOption($field); } @@ -104,8 +120,8 @@ abstract class BaseController extends Controller { $tempRules = $this->_model->getValidationRules(['only' => $fields]); foreach ($fields as $field) { - if (is_array($field)) { - throw new \Exception(__FUNCTION__ . "에서 field가 array 입니다.\n" . var_export($fieldRules, true)); + if (!is_string($field)) { + throw new \Exception(__FUNCTION__ . "에서 {$field}가 string 아닙니다.\n" . var_export($fieldRules, true)); } if (array_key_exists($field, $fieldRules)) { $tempRules[$field] = $fieldRules[$field]; @@ -118,20 +134,8 @@ abstract class BaseController extends Controller protected function getFieldFormData(string $field, $entity = null) { switch ($field) { - case 'passwd': - //암호는 보안상 log에 남지 않기 - $this->_viewDatas['fieldDatas'][$field] = $this->request->getVar($field); - break; default: - $this->_viewDatas['fieldDatas'][$field] = $this->request->getVar($field); - if (is_null($entity)) { - Log::add("info", "{$field} : {$this->_viewDatas['fieldDatas'][$field]}"); - } else { - Log::add( - "info", - "{$field} : {$entity->$field} => {$this->_viewDatas['fieldDatas'][$field]}" - ); - } + return $this->request->getVar($field); break; } } @@ -214,7 +218,8 @@ abstract class BaseController extends Controller //변경된 값 적용 $this->_viewDatas['fieldDatas'] = array(); foreach ($this->_viewDatas['fields'] as $field) { - $this->getFieldFormData($field); + $this->_viewDatas['fieldDatas'][$field] = $this->getFieldFormData($field); + Log::add("info", "{$field} : " . var_export($this->_viewDatas['fieldDatas'][$field], true)); } //변경할 값 확인 if (!$this->validate($this->_viewDatas['fieldRules'])) { @@ -241,7 +246,7 @@ abstract class BaseController extends Controller $message = __FUNCTION__ . " 실패하였습니다."; Log::add("warning", $e->getMessage()); Log::add("warning", var_export($this->_viewDatas['fieldDatas'], true)); - Log::save("{$this->_viewDatas['title']} {$message}", false); + Log::save("{$this->_viewDatas['title']} {$message}", 'error'); return redirect()->back()->withInput()->with("error", $message . "
\n{$e->getMessage()}"); } } @@ -280,7 +285,11 @@ abstract class BaseController extends Controller //변경된 값 적용 $this->_viewDatas['fieldDatas'] = array(); foreach ($this->_viewDatas['fields'] as $field) { - $this->getFieldFormData($field, $entity); + $this->_viewDatas['fieldDatas'][$field] = $this->getFieldFormData($field, $entity); + Log::add( + "info", + "{$field} : {$entity->$field} => " . var_export($this->_viewDatas['fieldDatas'][$field]) + ); } //변경할 값 확인 if (!$this->validate($this->_viewDatas['fieldRules'])) { @@ -307,7 +316,7 @@ abstract class BaseController extends Controller $message = __FUNCTION__ . " 실패하였습니다."; Log::add("warning", $e->getMessage()); Log::add("warning", var_export($this->_viewDatas['fieldDatas'], true)); - Log::save("{$this->_viewDatas['title']} {$message}", false); + Log::save("{$this->_viewDatas['title']} {$message}", 'error'); return redirect()->back()->withInput()->with("error", $message . "
\n{$e->getMessage()}"); } } @@ -360,7 +369,7 @@ abstract class BaseController extends Controller $message = __FUNCTION__ . " 실패하였습니다."; Log::add("warning", $e->getMessage()); Log::add("warning", var_export($this->_viewDatas['fieldDatas'], true)); - Log::save("{$this->_viewDatas['title']} {$message}", false); + Log::save("{$this->_viewDatas['title']} {$message}", 'error'); return redirect()->back()->withInput()->with("error", $message . "
\n{$e->getMessage()}"); } } @@ -394,7 +403,7 @@ abstract class BaseController extends Controller $message = __FUNCTION__ . " 실패하였습니다."; Log::add("warning", $e->getMessage()); Log::add("warning", var_export($this->_viewDatas['fieldDatas'], true)); - Log::save("{$this->_viewDatas['title']} {$message}", false); + Log::save("{$this->_viewDatas['title']} {$message}", 'error'); return alert_CommonHelper($message . "
\n{$e->getMessage()}", 'back'); } } @@ -449,7 +458,7 @@ abstract class BaseController extends Controller $message = "총: " . count($uids) . "개의 수정(Batchjob)을 실패하였습니다."; Log::add("warning", $e->getMessage()); Log::add("warning", var_export($this->_viewDatas['fieldDatas'], true)); - Log::save("{$this->_viewDatas['title']} {$message}", false); + Log::save("{$this->_viewDatas['title']} {$message}", 'error'); return alert_CommonHelper($message . "
\n{$e->getMessage()}", 'back'); } } @@ -476,7 +485,7 @@ abstract class BaseController extends Controller } catch (\Exception $e) { $message = __FUNCTION__ . " 실패하였습니다."; Log::add("warning", $e->getMessage()); - Log::save("{$this->_viewDatas['title']} {$message}", false); + Log::save("{$this->_viewDatas['title']} {$message}", 'error'); return alert_CommonHelper($message . "
\n{$e->getMessage()}", 'back'); } } @@ -615,7 +624,7 @@ abstract class BaseController extends Controller $this->_viewDatas['fieldFilters'] = $this->_defines['excel']['fieldFilters']; $this->_viewDatas['fieldFormOptions'] = $this->getFieldFormOptions($this->_viewDatas['fieldFilters']); } - private function excel_getSpreadSheet() + protected function excel_spreadSheet() { //Excepl 초기화 $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); @@ -642,13 +651,18 @@ abstract class BaseController extends Controller protected function excel_process() { $fileName = date('Y-m-d_Hm') . '.xlsx'; - //파일저장 참고:https://teserre.tistory.com/19 - $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($this->excel_getSpreadSheet(), 'Xlsx'); - //파일저장용 - // $writer->save(Excel_FilePath . '/' . $fileName); + $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($this->excel_spreadSheet(), 'Xlsx'); + //결과파일저장 + $writer->save(PATHS['EXCEL'] . '/' . $fileName); //Download시 header("Content-Type: application/vnd.ms-excel"); header(sprintf("Content-Disposition: attachment; filename=%s", urlencode($fileName))); + header("Expires: 0"); + header("Cache-Control: must-revalidate"); + header("Pragma: public"); + header("Content-Length:" . filesize(PATHS['EXCEL'] . '/' . $fileName)); + // flush(); + // return readfile(PATHS['EXCEL'] . '/' . $fileName); return $writer->save('php://output'); } protected function excel_procedure() diff --git a/app/Database/board.sql b/app/Database/board.sql index 531dced..93250e4 100644 --- a/app/Database/board.sql +++ b/app/Database/board.sql @@ -26,10 +26,10 @@ DROP TABLE IF EXISTS tw_board; -- select * from tw_board order by grpno desc,grporder asc CREATE TABLE tw_board ( uid int(10) unsigned NOT NULL AUTO_INCREMENT, - grpno int(5) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group번호: 상위가없을시 기본 uid와 같음', - grporder int(5) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group순서: 상위가없을시 0부터시작', - grpdepth int(3) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group깊이: 상위가없을시 1부터시작 , 상위 grpdpt+1씩 추가필요', - board_category_uid varchar(36) NOT NULL COMMENT '게시판구분', + grpno int(10) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group번호: uid와 Type맞춰야함 , 상위가없을시 기본 uid와 같음', + grporder int(5) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group순서: 최상위시 1부터시작', + grpdepth int(2) UNSIGNED NOT NULL DEFAULT 1 COMMENT 'Group깊이: 최상위시 1부터시작 , 상위 grpdpt+1씩 추가필요', + board_config_uid varchar(36) NOT NULL COMMENT '게시판구분', user_uid varchar(36) NULL COMMENT '작성자 정보', title varchar(255) NOT NULL COMMENT '제목', content text NOT NULL COMMENT '내용', @@ -39,13 +39,14 @@ CREATE TABLE tw_board ( updated_at timestamp NULL DEFAULT NULL, created_at timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (uid), - CONSTRAINT FOREIGN KEY (board_category_uid) REFERENCES tw_board_config (uid), + CONSTRAINT FOREIGN KEY (board_config_uid) REFERENCES tw_board_config (uid), CONSTRAINT FOREIGN KEY (user_uid) REFERENCES tw_user (uid) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT ='게시판 정보'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT ='게시물 정보'; +DROP TABLE IF EXISTS tw_board_file; CREATE TABLE tw_board_file ( uid int(10) unsigned NOT NULL AUTO_INCREMENT, - tw_board_uid int(10) unsigned NOT NULL COMMENT '게시판 정보', + board_uid int(10) unsigned NOT NULL COMMENT '게시물 정보', mime_type varchar(50) NOT NULL COMMENT 'Mime_Type', name varchar(255) NOT NULL COMMENT '파일명', real_name varchar(255) NOT NULL COMMENT '실제파일명', @@ -53,5 +54,5 @@ CREATE TABLE tw_board_file ( updated_at timestamp NULL DEFAULT NULL, created_at timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (uid), - CONSTRAINT FOREIGN KEY (tw_board_uid) REFERENCES tw_board (uid) + CONSTRAINT FOREIGN KEY (board_uid) REFERENCES tw_board (uid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT ='게시판 File정보'; \ No newline at end of file diff --git a/app/Helpers/Admin/BoardConfig_helper.php b/app/Helpers/Admin/BoardConfig_helper.php index 575a571..c3610f1 100644 --- a/app/Helpers/Admin/BoardConfig_helper.php +++ b/app/Helpers/Admin/BoardConfig_helper.php @@ -12,7 +12,7 @@ function getFieldLabel_BoardConfigHelper($field, array $fieldRules, array $attri } //header.php에서 getFieldForm_Helper사용 -function getFieldForm_BoardConfigHelper($field, $value, array $formOptions, array $attributes = array()) +function getFieldForm_BoardConfigHelper($field, $value, array $fieldFormOptions, array $attributes = array()) { $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { @@ -22,14 +22,14 @@ function getFieldForm_BoardConfigHelper($field, $value, array $formOptions, arra case 'isreply': case 'isupload': case 'isdownload': - foreach ($formOptions[$field] as $key => $label) { - $checkboxs[] = form_checkbox("{$field}[]", $key, $key != 'guest' || $key == $value, $attributes) . $label; + foreach ($fieldFormOptions[$field] as $key => $label) { + $checkboxs[] = form_checkbox("{$field}[]", $key, in_array($key, is_array($value) ? $value : explode("|", $value)), $attributes) . $label; } return implode(" ", $checkboxs); break; case 'status': - $formOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/BoardConfig.label.{$field}") . " 선택", ...$formOptions[$field]]; - return form_dropdown($field, $formOptions[$field], $value, $attributes); + $fieldFormOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/BoardConfig.label.{$field}") . " 선택", ...$fieldFormOptions[$field]]; + return form_dropdown($field, $fieldFormOptions[$field], $value, $attributes); break; case 'updated_at': case 'created_at': @@ -52,6 +52,17 @@ function getFieldForm_BoardConfigHelper($field, $value, array $formOptions, arra function getFieldView_BoardConfigHelper($field, $entity, array $fieldFilters, array $fieldFormOptions, array $attributes = array()) { switch ($field) { + case 'isaccess': + case 'isread': + case 'iswrite': + case 'isreply': + case 'isupload': + case 'isdownload': + foreach ($fieldFormOptions[$field] as $key => $label) { + $checkboxs[] = form_checkbox("{$field}[]", $key, in_array($key, explode("|", $entity->$field)), $attributes) . $label; + } + return implode(" ", $checkboxs); + break; case 'head': case 'tail': return html_entity_decode($entity->$field); @@ -65,7 +76,7 @@ function getFieldView_BoardConfigHelper($field, $entity, array $fieldFilters, ar } } // -function getFieldFilter_BoardConfigHelper($field, $value, array $formOptions, array $attributes = array()) +function getFieldFilter_BoardConfigHelper($field, $value, array $fieldFormOptions, array $attributes = array()) { $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { @@ -75,11 +86,11 @@ function getFieldFilter_BoardConfigHelper($field, $value, array $formOptions, ar case 'isreply': case 'isupload': case 'isdownload': - $formOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/BoardConfig.label.{$field}") . " 선택", ...$formOptions[$field]]; - return form_dropdown($field, $formOptions[$field], $value, $attributes); + $fieldFormOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/BoardConfig.label.{$field}") . " 선택", ...$fieldFormOptions[$field]]; + return form_dropdown($field, $fieldFormOptions[$field], $value, $attributes); break; default: - return getFieldForm_BoardConfigHelper($field, $value, $formOptions, $attributes); + return getFieldForm_BoardConfigHelper($field, $value, $fieldFormOptions, $attributes); break; } } // @@ -98,6 +109,17 @@ function getFieldIndex_Row_BoardConfigHelper($field, array $row, array $fieldFil case 'name': return anchor(current_url() . '/view/' . $row['uid'], $row[$field], ["target" => "_self"]); break; + case 'isaccess': + case 'isread': + case 'iswrite': + case 'isreply': + case 'isupload': + case 'isdownload': + foreach ($fieldFormOptions[$field] as $key => $label) { + $checkboxs[] = form_checkbox($field, $key, in_array($key, explode("|", $row[$field])), $attributes) . $label; + } + return '
' . implode("
", $checkboxs) . '
'; + break; case 'updated_at': case 'created_at': return isset($row[$field]) ? str_split($row[$field], 10)[0] : ""; diff --git a/app/Helpers/Admin/Board_helper.php b/app/Helpers/Admin/Board_helper.php index 5fcc491..ec41ee4 100644 --- a/app/Helpers/Admin/Board_helper.php +++ b/app/Helpers/Admin/Board_helper.php @@ -12,15 +12,15 @@ function getFieldLabel_BoardHelper($field, array $fieldRules, array $attributes } //header.php에서 getFieldForm_Helper사용 -function getFieldForm_BoardHelper($field, $value, array $formOptions, array $attributes = array()) +function getFieldForm_BoardHelper($field, $value, array $fieldFormOptions, array $attributes = array()) { $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { - case 'board_category': + case 'board_config_uid': case 'user_uid': case 'status': - $formOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/Board.label.{$field}") . " 선택", ...$formOptions[$field]]; - return form_dropdown($field, $formOptions[$field], $value, $attributes); + $fieldFormOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/Board.label.{$field}") . " 선택", ...$fieldFormOptions[$field]]; + return form_dropdown($field, $fieldFormOptions[$field], $value, $attributes); break; case 'updated_at': case 'created_at': @@ -57,12 +57,12 @@ function getFieldView_BoardHelper($field, $entity, array $fieldFilters, array $f } } // -function getFieldFilter_BoardHelper($field, $value, array $formOptions, array $attributes = array()) +function getFieldFilter_BoardHelper($field, $value, array $fieldFormOptions, array $attributes = array()) { $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { default: - return getFieldForm_BoardHelper($field, $value, $formOptions, $attributes); + return getFieldForm_BoardHelper($field, $value, $fieldFormOptions, $attributes); break; } } // diff --git a/app/Helpers/Admin/Logger_helper.php b/app/Helpers/Admin/Logger_helper.php index 4b66080..8de3288 100644 --- a/app/Helpers/Admin/Logger_helper.php +++ b/app/Helpers/Admin/Logger_helper.php @@ -12,14 +12,14 @@ function getFieldLabel_LoggerHelper($field, array $fieldRules, array $attributes } //header.php에서 getFieldForm_Helper사용 -function getFieldForm_LoggerHelper($field, $value, array $formOptions, array $attributes = array()) +function getFieldForm_LoggerHelper($field, $value, array $fieldFormOptions, array $attributes = array()) { $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { case 'user_uid': case 'status': - $formOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/Logger.label.{$field}") . " 선택", ...$formOptions[$field]]; - return form_dropdown($field, $formOptions[$field], $value, $attributes); + $fieldFormOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/Logger.label.{$field}") . " 선택", ...$fieldFormOptions[$field]]; + return form_dropdown($field, $fieldFormOptions[$field], $value, $attributes); break; case 'updated_at': case 'created_at': @@ -46,12 +46,12 @@ function getFieldView_LoggerHelper($field, $entity, array $fieldFilters, array $ } } // -function getFieldFilter_LoggerHelper($field, $value, array $formOptions, array $attributes = array()) +function getFieldFilter_LoggerHelper($field, $value, array $fieldFormOptions, array $attributes = array()) { $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { default: - return getFieldForm_LoggerHelper($field, $value, $formOptions, $attributes); + return getFieldForm_LoggerHelper($field, $value, $fieldFormOptions, $attributes); break; } } // diff --git a/app/Helpers/Admin/UserSNS_helper.php b/app/Helpers/Admin/UserSNS_helper.php index d615e6e..a462692 100644 --- a/app/Helpers/Admin/UserSNS_helper.php +++ b/app/Helpers/Admin/UserSNS_helper.php @@ -12,14 +12,14 @@ function getFieldLabel_UserSNSHelper($field, array $fieldRules, array $attribute } //header.php에서 getFieldForm_Helper사용 -function getFieldForm_UserSNSHelper($field, $value, array $formOptions, array $attributes = array()) +function getFieldForm_UserSNSHelper($field, $value, array $fieldFormOptions, array $attributes = array()) { $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { case 'user_uid': case 'status': - $formOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/UserSNS.label.{$field}") . " 선택", ...$formOptions[$field]]; - return form_dropdown($field, $formOptions[$field], $value, $attributes); + $fieldFormOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/UserSNS.label.{$field}") . " 선택", ...$fieldFormOptions[$field]]; + return form_dropdown($field, $fieldFormOptions[$field], $value, $attributes); break; case 'updated_at': case 'created_at': @@ -43,12 +43,12 @@ function getFieldView_UserSNSHelper($field, $entity, array $fieldFilters, array } } // -function getFieldFilter_UserSNSHelper($field, $value, array $formOptions, array $attributes = array()) +function getFieldFilter_UserSNSHelper($field, $value, array $fieldFormOptions, array $attributes = array()) { $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { default: - return getFieldForm_UserSNSHelper($field, $value, $formOptions, $attributes); + return getFieldForm_UserSNSHelper($field, $value, $fieldFormOptions, $attributes); break; } } // diff --git a/app/Helpers/Admin/User_helper.php b/app/Helpers/Admin/User_helper.php index b04778e..22699c8 100644 --- a/app/Helpers/Admin/User_helper.php +++ b/app/Helpers/Admin/User_helper.php @@ -12,14 +12,14 @@ function getFieldLabel_UserHelper($field, array $fieldRules, array $attributes = } //header.php에서 getFieldForm_Helper사용 -function getFieldForm_UserHelper($field, $value, array $formOptions, array $attributes = array()) +function getFieldForm_UserHelper($field, $value, array $fieldFormOptions, array $attributes = array()) { $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { case 'role': case 'status': - $formOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/User.label.{$field}") . " 선택", ...$formOptions[$field]]; - return form_dropdown($field, $formOptions[$field], $value, $attributes); + $fieldFormOptions[$field] = [DEFAULTS['EMPTY'] => lang("Admin/User.label.{$field}") . " 선택", ...$fieldFormOptions[$field]]; + return form_dropdown($field, $fieldFormOptions[$field], $value, $attributes); break; case 'updated_at': case 'created_at': @@ -47,12 +47,12 @@ function getFieldView_UserHelper($field, $entity, array $fieldFilters, array $fi } } // -function getFieldFilter_UserHelper($field, $value, array $formOptions, array $attributes = array()) +function getFieldFilter_UserHelper($field, $value, array $fieldFormOptions, array $attributes = array()) { $value = $value ?: DEFAULTS['EMPTY']; switch ($field) { default: - return getFieldForm_UserHelper($field, $value, $formOptions, $attributes); + return getFieldForm_UserHelper($field, $value, $fieldFormOptions, $attributes); break; } } // diff --git a/app/Language/en/Admin/Board.php b/app/Language/en/Admin/Board.php deleted file mode 100644 index c86f4ae..0000000 --- a/app/Language/en/Admin/Board.php +++ /dev/null @@ -1,29 +0,0 @@ - "게시판정보", - 'label' => [ - 'uid' => "번호", - 'grpno' => "그룹번호", - 'grpord' => "부모번호", - 'grpdpt' => "그룸Depth", - 'board_category' => "게시판구분", - 'user_uid' => "작성자", - 'title' => "제목", - 'content' => "내용", - 'passwd' => "암호", - 'confirmpassword' => "암호확인", - 'view_cnt' => "조회수", - 'upload_file' => "UploadFile", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일" - ], - "BOARD_CATEGORY" => [ - 'notice' => '공지사항', - 'faq' => 'FAQ', - 'qna' => '1:1문의', - 'data' => '자료실' - ], - "USER_UID" => [], - "STATUS" => [...STATUS], -]; diff --git a/app/Language/en/Admin/BoardConfig.php b/app/Language/en/Admin/BoardConfig.php deleted file mode 100644 index e8fefdc..0000000 --- a/app/Language/en/Admin/BoardConfig.php +++ /dev/null @@ -1,26 +0,0 @@ - "계정정보", - 'label' => [ - 'uid' => "번호", - 'name' => "이름", - 'isaccess' => "접속권한", - 'isread' => "일기권한", - 'iswrite' => "쓰기권한", - 'isreply' => "답변권한", - 'isupload' => "Upload권한", - 'isdownload' => "Download권한", - 'head' => "머리글", - 'tail' => "아래글", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일" - ], - "ISACCESS" => [...ROLES], - "ISREAD" => [...ROLES], - "ISWRITE" => [...ROLES], - "ISREPLY" => [...ROLES], - "ISUPLOAD" => [...ROLES], - "ISDOWNLOAD" => [...ROLES], - "STATUS" => [...STATUS], -]; diff --git a/app/Language/en/Admin/HPILO.php b/app/Language/en/Admin/HPILO.php deleted file mode 100644 index 88ebc8a..0000000 --- a/app/Language/en/Admin/HPILO.php +++ /dev/null @@ -1,30 +0,0 @@ - "HP Server 정보", - 'label' => [ - 'uid' => "번호", - 'customer' => "고객", - 'id' => "계정", - 'passwd' => "암호", - 'ip' => "IP", - 'port' => "Port", - 'model' => "Model", - 'processor' => "CPU", - 'memory' => "Memory", - 'health' => "기타장비상태", - 'power' => "전원", - 'detail' => "상세내용", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일" - ], - "POWER" => [ - "On" => "On", - "Off" => "Off", - "Restart" => "Restart", - ], - "STATUS" => [ - "use" => "사용", - "unuse" => "사용않함", - ] -]; diff --git a/app/Language/en/Admin/Logger.php b/app/Language/en/Admin/Logger.php deleted file mode 100644 index fa118a7..0000000 --- a/app/Language/en/Admin/Logger.php +++ /dev/null @@ -1,18 +0,0 @@ - "Logger 정보", - 'label' => [ - 'uid' => "번호", - 'user_uid' => "사용자명", - 'title' => "제목", - 'content' => "내용", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일" - ], - "USER_UID" => [], - "STATUS" => [ - "use" => "정상", - "unuse" => "오류", - ] -]; diff --git a/app/Language/en/Admin/User.php b/app/Language/en/Admin/User.php deleted file mode 100644 index 1c249de..0000000 --- a/app/Language/en/Admin/User.php +++ /dev/null @@ -1,18 +0,0 @@ - "계정정보", - 'label' => [ - 'uid' => "번호", - 'id' => "계정", - 'passwd' => "암호", - 'confirmpassword' => "암호확인", - 'email' => "메일", - 'role' => "권한", - 'name' => "이름", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일" - ], - "ROLE" => [...ROLES], - "STATUS" => [...STATUS], -]; diff --git a/app/Language/en/Admin/UserSNS.php b/app/Language/en/Admin/UserSNS.php deleted file mode 100644 index 22db1cc..0000000 --- a/app/Language/en/Admin/UserSNS.php +++ /dev/null @@ -1,18 +0,0 @@ - "SNS 계정정보", - 'label' => [ - 'uid' => "인증번호", - 'user_uid' => "사용자", - 'site' => "SNS명", - 'id' => "SNS ID", - 'name' => "SNS 이름", - 'email' => "SNS 메일", - 'detail' => "SNS 정보", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일" - ], - "USER_UID" => [], - "STATUS" => [...STATUS, "standby" => "승인대기"], -]; diff --git a/app/Language/en/Admin/Validation.php b/app/Language/en/Admin/Validation.php deleted file mode 100644 index 54d1e7a..0000000 --- a/app/Language/en/Admin/Validation.php +++ /dev/null @@ -1,4 +0,0 @@ - "그룹번호", 'grpord' => "부모번호", 'grpdpt' => "그룸Depth", - 'board_category' => "게시판구분", + 'board_config_uid' => "설정", 'user_uid' => "작성자", 'title' => "제목", 'content' => "내용", @@ -18,12 +18,5 @@ return [ 'updated_at' => "수정일", 'created_at' => "작성일" ], - "BOARD_CATEGORY" => [ - 'notice' => '공지사항', - 'faq' => 'FAQ', - 'qna' => '1:1문의', - 'data' => '자료실' - ], - "USER_UID" => [], - "STATUS" => [...STATUS], + "STATUS" => FORM_OPTIONS['STATUS'], ]; diff --git a/app/Language/kr/Admin/BoardConfig.php b/app/Language/kr/Admin/BoardConfig.php index 03b8cdf..bef8822 100644 --- a/app/Language/kr/Admin/BoardConfig.php +++ b/app/Language/kr/Admin/BoardConfig.php @@ -11,16 +11,16 @@ return [ 'isupload' => "Upload권한", 'isdownload' => "Download권한", 'head' => "머리글", - 'tail' => "아래글", + 'tail' => "꼬리글", 'status' => "상태", 'updated_at' => "수정일", 'created_at' => "작성일" ], - "ISACCESS" => [...ROLES], - "ISREAD" => [...ROLES], - "ISWRITE" => [...ROLES], - "ISREPLY" => [...ROLES], - "ISUPLOAD" => [...ROLES], - "ISDOWNLOAD" => [...ROLES], - "STATUS" => [...STATUS], + "ISACCESS" => FORM_OPTIONS['ROLE'], + "ISREAD" => FORM_OPTIONS['ROLE'], + "ISWRITE" => FORM_OPTIONS['ROLE'], + "ISREPLY" => FORM_OPTIONS['ROLE'], + "ISUPLOAD" => FORM_OPTIONS['ROLE'], + "ISDOWNLOAD" => FORM_OPTIONS['ROLE'], + "STATUS" => FORM_OPTIONS['STATUS'], ]; diff --git a/app/Language/kr/Admin/Logger.php b/app/Language/kr/Admin/Logger.php index fa118a7..747395b 100644 --- a/app/Language/kr/Admin/Logger.php +++ b/app/Language/kr/Admin/Logger.php @@ -10,9 +10,4 @@ return [ 'updated_at' => "수정일", 'created_at' => "작성일" ], - "USER_UID" => [], - "STATUS" => [ - "use" => "정상", - "unuse" => "오류", - ] ]; diff --git a/app/Language/kr/Admin/User.php b/app/Language/kr/Admin/User.php index 5226b24..c54c9ba 100644 --- a/app/Language/kr/Admin/User.php +++ b/app/Language/kr/Admin/User.php @@ -1,18 +1,18 @@ "회원 정보", + 'title' => '회원 정보', 'label' => [ - 'uid' => "번호", - 'id' => "계정", - 'passwd' => "암호", - 'confirmpassword' => "암호확인", - 'email' => "메일", - 'role' => "권한", - 'name' => "이름", - 'status' => "상태", - 'updated_at' => "수정일", - 'created_at' => "작성일" + 'uid' => '번호', + 'id' => '계정', + 'passwd' => '암호', + 'confirmpassword' => '암호확인', + 'email' => '메일', + 'role' => '권한', + 'name' => '이름', + 'status' => '상태', + 'updated_at' => '수정일', + 'created_at' => '작성일' ], - "ROLE" => [...ROLES], - "STATUS" => [...STATUS], + 'ROLE' => FORM_OPTIONS['ROLE'], + 'STATUS' => FORM_OPTIONS['STATUS'], ]; diff --git a/app/Language/kr/Admin/UserSNS.php b/app/Language/kr/Admin/UserSNS.php index 22db1cc..8f67e15 100644 --- a/app/Language/kr/Admin/UserSNS.php +++ b/app/Language/kr/Admin/UserSNS.php @@ -13,6 +13,10 @@ return [ 'updated_at' => "수정일", 'created_at' => "작성일" ], - "USER_UID" => [], - "STATUS" => [...STATUS, "standby" => "승인대기"], + "STATUS" => [ + "use" => "승인완료", + "unuse" => "승인취소", + "reject" => "승인거부", + "standby" => "승인대기" + ], ]; diff --git a/app/Libraries/Adapter/API/Adapter.php b/app/Libraries/Adapter/API/Adapter.php index 1f2ce24..adf4c90 100644 --- a/app/Libraries/Adapter/API/Adapter.php +++ b/app/Libraries/Adapter/API/Adapter.php @@ -34,18 +34,6 @@ abstract class Adapter //type: basic , digest return array($this->_serverInfo['id'], $this->_serverInfo['password'], $authType); } - protected function isSSLVerifiy(): bool - { - return getenv('api.ssl') == 'true' ? true : false; - } - protected function getCookieFile() - { - return PATHS['API'] . getenv('api.cookie.file') ?: "api-cookie_" . date("Ymd") . ".log"; - } - protected function getDebugFile() - { - return PATHS['API'] . getenv('api.debug.file') ?: "api-debug_" . date("Ymd") . ".log"; - } final public function get(string $url): object { diff --git a/app/Libraries/Adapter/API/CurlAdapter.php b/app/Libraries/Adapter/API/CurlAdapter.php index 53306f6..73610ed 100644 --- a/app/Libraries/Adapter/API/CurlAdapter.php +++ b/app/Libraries/Adapter/API/CurlAdapter.php @@ -169,8 +169,8 @@ class CurlAdapter extends Adapter curl_setopt($this->getClient(), CURLOPT_POSTFIELDS, json_encode($datas)); curl_setopt($this->getClient(), CURLOPT_HTTPHEADER, array('Content-Type: application/json')); //cookie값 파일저장용 - curl_setopt($this->getClient(), CURLOPT_COOKIEJAR, $this->getCookieFile()); - curl_setopt($this->getClient(), CURLOPT_COOKIEFILE, $this->getCookieFile()); + curl_setopt($this->getClient(), CURLOPT_COOKIEJAR, API['COOKIE_FILE']); + curl_setopt($this->getClient(), CURLOPT_COOKIEFILE, API['COOKIE_FILE']); break; default: break; @@ -180,8 +180,8 @@ class CurlAdapter extends Adapter curl_setopt($this->getClient(), CURLOPT_COOKIELIST, $cookie_line); } //SSL 확인여부용 - curl_setopt($this->getClient(), CURLOPT_SSL_VERIFYPEER, $this->isSSLVerifiy()); - curl_setopt($this->getClient(), CURLOPT_SSL_VERIFYHOST, $this->isSSLVerifiy()); + curl_setopt($this->getClient(), CURLOPT_SSL_VERIFYPEER, API['SSL_VERIFY']); + curl_setopt($this->getClient(), CURLOPT_SSL_VERIFYHOST, API['SSL_VERIFY']); curl_setopt($this->getClient(), CURLOPT_RETURNTRANSFER, true); curl_setopt($this->getClient(), CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($this->getClient(), CURLOPT_USERPWD, implode(":", $this->getAccountInfo())); diff --git a/app/Libraries/Adapter/API/GuzzleAdapter.php b/app/Libraries/Adapter/API/GuzzleAdapter.php index ee7232a..e1949b8 100644 --- a/app/Libraries/Adapter/API/GuzzleAdapter.php +++ b/app/Libraries/Adapter/API/GuzzleAdapter.php @@ -35,8 +35,8 @@ class GuzzleAdapter extends Adapter $options = [ 'base_uri' => $this->getServerInfo(), 'auth' => $this->getAccountInfo(), - 'verify' => $this->isSSLVerifiy(), - 'cookie' => $this->getCookieFile(), + 'verify' => API['SSL_VERIFY'], + 'cookie' => API['COOKIE_FILE'], // \GuzzleHttp\RequestOptions::ALLOW_REDIRECTS => [ // 'max' => 10, // allow at most 10 redirects. // 'strict' => true, // use "strict" RFC compliant redirects. diff --git a/app/Libraries/Adapter/API/LocalAdapter.php b/app/Libraries/Adapter/API/LocalAdapter.php index 3dd0195..9b20475 100644 --- a/app/Libraries/Adapter/API/LocalAdapter.php +++ b/app/Libraries/Adapter/API/LocalAdapter.php @@ -17,11 +17,11 @@ class LocalAdapter extends Adapter $options = [ 'baseURI' => $this->getServerInfo(), 'auth' => $this->getAccountInfo(), - 'verify' => $this->isSSLVerifiy(), - 'cookie' => $this->getCookieFile(), + 'verify' => API['SSL_VERIFY'], + 'cookie' => API['COOKIE_FILE'], ]; if ($this->_debug) { - $options['debug'] = $this->getDebugFile(); + $options['debug'] = API['DEBUG_FILE']; } $this->_client = \Config\Services::curlrequest($options); } diff --git a/app/Libraries/Adapter/Auth/GoogleAdapter.php b/app/Libraries/Adapter/Auth/GoogleAdapter.php index fe50403..8d006d3 100644 --- a/app/Libraries/Adapter/Auth/GoogleAdapter.php +++ b/app/Libraries/Adapter/Auth/GoogleAdapter.php @@ -64,7 +64,7 @@ class GoogleAdapter extends Adapter $this->setAccessToken($formDatas); //Google 서비스 설정 $service = new \Google\Service\Oauth2($this->getClient()); - $result = (array)$service->userinfo->get(); + $result = $service->userinfo->get(); if ($this->_debug) { log_message("debug", var_export($result, true)); } @@ -103,7 +103,14 @@ class GoogleAdapter extends Adapter )->first(); //snsEntity 없으면 신규등록 if (is_null($snsEntity)) { - $snsEntity = $this->getUserSNSModel()->create($this->getSiteName(), $result); + $snsEntity = $this->getUserSNSModel()->create([ + 'site' => $this->getSiteName(), + 'id' => $result['id'], + 'name' => $result['name'], + 'email' => $result['email'], + 'detail' => json_encode($result), + 'status' => 'standby' + ]); } //상태가 use(승인완료)가 아니라면 if ($snsEntity->status !== DEFAULTS['STATUS']) { diff --git a/app/Libraries/Log/DataBase.php b/app/Libraries/Log/DataBase.php index d5834f6..ef8fb50 100644 --- a/app/Libraries/Log/DataBase.php +++ b/app/Libraries/Log/DataBase.php @@ -11,11 +11,11 @@ class DataBase { $this->_model = new LoggerModel(); } - public function save(string $title, bool $status, array $logs) + public function save(string $title, string $status, array $logs) { $datas = array( 'title' => $title, - 'status' => $status ? 'use' : 'unuse', + 'status' => $status, 'content' => implode("\n", $logs) ); return $this->_model->create($datas); diff --git a/app/Libraries/Log/Log.php b/app/Libraries/Log/Log.php index 25903d5..6a74b7a 100644 --- a/app/Libraries/Log/Log.php +++ b/app/Libraries/Log/Log.php @@ -17,12 +17,12 @@ class Log } log_message($level, $content); } - final static public function save(string $title, bool $status = true) + final static public function save(string $title, string $status = 'success') { if (self::$_dbInstance === null) { self::$_dbInstance = new \App\Libraries\Log\DataBase(); } - self::$_dbInstance->save($title, $status, self::$_logs); + // self::$_dbInstance->save($title, $status, self::$_logs); self::$_logs = array(); } } diff --git a/app/Models/BaseModel.php b/app/Models/BaseModel.php index 14f2639..d73676d 100644 --- a/app/Models/BaseModel.php +++ b/app/Models/BaseModel.php @@ -45,115 +45,83 @@ abstract class BaseModel extends Model abstract public function getEntity($uid): ?BaseEntity; abstract public function getFieldFormOptions(): array; - //참고:https://www.delftstack.com/howto/php/php-uuid/#create-a-function-to-generate-v5-uuid-in-php - // $v5_uuid = getUUIDv5_CommonTrait('8fc990b07418d5826d98de952cfb268dee4a23a3', 'delftstack!'); - final public function getUUIDv5_CommonTrait() + final public function getUUID() { - $n_hex = str_replace(array('-', '{', '}'), '', UUIDS['NAMESPACE']); // Getting hexadecimal components of namespace - $binray_str = ''; // Binary value string - //Namespace UUID to bits conversion - for ($i = 0; $i < strlen($n_hex); $i += 2) { - $binray_str .= chr(hexdec($n_hex[$i] . $n_hex[$i + 1])); - } - //hash value - $hashing = sha1($binray_str . UUIDS['SECRET']); - + $randomBytes = bin2hex(random_bytes(16)); return sprintf( - '%08s-%04s-%04x-%04x-%12s', - // 32 bits for the time_low - substr($hashing, 0, 8), - // 16 bits for the time_mid - substr($hashing, 8, 4), - // 16 bits for the time_hi, - (hexdec(substr($hashing, 12, 4)) & 0x0fff) | 0x5000, - // 8 bits and 16 bits for the clk_seq_hi_res, - // 8 bits for the clk_seq_low, - (hexdec(substr($hashing, 16, 4)) & 0x3fff) | 0x8000, - // 48 bits for the node - substr($hashing, 20, 12) + "%s-%s-%s-%s-%s", + substr($randomBytes, 0, 8), + substr($randomBytes, 8, 4), + substr($randomBytes, 12, 4), + substr($randomBytes, 16, 4), + substr($randomBytes, 20) ); } //계층형구조구현 - final protected function setHierarchyCreate($entity) + final protected function create_hierarchy($entity) { - //자기자신이 최상위가 되게 만들기위함 - $entity->grpno = $entity->getPrimaryKey(); - // echo var_export($entity, true); - // exit; - //값변경후 다시 저장 - if (!$this->save($entity)) { - Log::add("error", __FUNCTION__ . "에서 호출:" . $this->getLastQuery()); - Log::add("error", implode("\n", $this->errors())); - throw new \Exception(__FUNCTION__ . " 오류 발생.\n" . var_export($this->errors(), true)); - } + //생성시는 grpno가 primarykey와 같음 + //escape -> false옵션 반드시 있어야함 + $this->builder()->set('grpno', $entity->getPrimaryKey(), false); + $this->builder()->where($this->primaryKey, $entity->getPrimaryKey()); + $this->builder()->update(); return $entity; } - final protected function setHierarchyReply($entity, $replyEntity) + final protected function reply_hierarchy($entity, $parent_entity) { //부모의 그룹과 grpno가 같고, 부모의 grporder보다 1 큰것을 grporder+1을 해서 update //escape -> false옵션 반드시 있어야함 $this->builder()->set('grporder', 'grporder+1', false); $this->builder()->where([ - 'grpno' => $entity->grpno, - 'grporder >' => $entity->grporder + 'grpno' => $parent_entity->grpno, + 'grporder >' => $parent_entity->grporder ]); $this->builder()->update(); - // echo $this->getLastQuery(); - // exit; - //reply용 설정 - $replyEntity->grpno = $entity->grpno; - $replyEntity->grporder = $entity->grporder + 1; - $replyEntity->grpdepth = $entity->grpdepth + 1; - return $replyEntity; + $entity->grpno = $parent_entity->grpno; + $entity->grporder = $parent_entity->grporder + 1; + $entity->grpdepth = $parent_entity->grpdepth + 1; + return $entity; } - protected function changeFormData($field, $value) + protected function changeFormData($field, array $formDatas, $entity) { switch ($field) { + case $this->primaryKey: + if (!$this->useAutoIncrement) { + $entity->$field = $this->getUUID(); + } + break; + case 'user_uid': + if (array_key_exists($field, $formDatas) && $formDatas[$field]) { + $entity->$field = $formDatas[$field]; + } elseif (session()->get(SESSION_NAMES['ISLOGIN'])) { + $auth = session()->get(SESSION_NAMES['AUTH']); + $entity->$field = $auth[AUTH_FIELDS['ID']]; + } + break; case 'passwd': - return $value ? password_hash($value, PASSWORD_DEFAULT) : ""; + if (array_key_exists($field, $formDatas) && $formDatas[$field]) { + $entity->$field = password_hash($formDatas[$field], PASSWORD_DEFAULT); + } break; case 'content': - return htmlentities($value); - break; - case 'status': - return $value ?: DEFAULTS['STATUS']; + if (array_key_exists($field, $formDatas) && $formDatas[$field]) { + $entity->$field = htmlentities($formDatas[$field]); + } break; default: - return $value; + if (array_key_exists($field, $formDatas) && $formDatas[$field]) { + $entity->$field = $formDatas[$field]; + } break; } - } - - final protected function create_process($entity) - { - //primaryKey 할당 - if ($this->useAutoIncrement === false) { - $pk = $this->primaryKey; - $entity->$pk = $this->getUUIDv5_CommonTrait(); - } - // echo var_export($entity, true); - // exit; - if (!$this->save($entity)) { - Log::add("error", __FUNCTION__ . "에서 호출:" . $this->getLastQuery()); - Log::add("error", implode("\n", $this->errors())); - throw new \Exception(__FUNCTION__ . " 오류 발생.\n" . var_export($this->errors(), true)); - } - // echo "
"; - // echo $this->getLastQuery(); - // exit; - //primaryKey 할당 - if ($this->useAutoIncrement === true) { - $pk = $this->primaryKey; - $entity->$pk = $this->insertID(); - } return $entity; } - final protected function modify_process($entity) + + private function save_process($entity) { - $entity->updated_at = time(); if ($entity->hasChanged()) { if (!$this->save($entity)) { Log::add("error", __FUNCTION__ . "에서 호출:" . $this->getLastQuery()); @@ -165,6 +133,23 @@ abstract class BaseModel extends Model } return $entity; } + final protected function create_process($entity, array $formDatas) + { + foreach ($this->allowedFields as $field) { + $entity = $this->changeFormData($field, $formDatas, $entity); + } + return $this->save_process($entity); + } + final protected function modify_process($entity, array $formDatas) + { + foreach ($this->allowedFields as $field) { + if ($field != $this->primaryKey) { + $entity = $this->changeFormData($field, $formDatas, $entity); + } + } + $entity->updated_at = time(); + return $this->save_process($entity); + } //View관련 (게시판등의 조회수 증가함수) final public function increaseViewCount($uid, $field = 'view_cnt', int $cnt = 1) diff --git a/app/Models/BoardConfigModel.php b/app/Models/BoardConfigModel.php index de9d144..b0daa4a 100644 --- a/app/Models/BoardConfigModel.php +++ b/app/Models/BoardConfigModel.php @@ -7,18 +7,18 @@ use App\Entities\BoardConfigEntity; class BoardConfigModel extends BaseModel { protected $table = 'tw_board_config'; - // protected $primaryKey = 'uid'; + protected $primaryKey = 'uid'; protected $useAutoIncrement = false; protected $allowedFields = ['uid', 'name', 'isaccess', 'isread', 'iswrite', 'isreply', 'isupload', 'isdownload', 'head', 'tail', 'status', 'updated_at']; protected $validationRules = [ 'uid' => 'required|regex_match[/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/]', 'name' => 'required|string', - 'isaccess' => 'required|string', - 'isread' => 'required|string', - 'iswrite' => 'required|string', - 'isreply' => 'required|string', - 'isupload' => 'required|string', - 'isdownload' => 'required|string', + 'isaccess' => 'required', + 'isread' => 'required', + 'iswrite' => 'required', + 'isreply' => 'required', + 'isupload' => 'required', + 'isdownload' => 'required', 'head' => 'if_exist|string', 'tail' => 'if_exist|string', 'status' => 'if_exist|string', @@ -46,32 +46,39 @@ class BoardConfigModel extends BaseModel return $temps; } - protected function changeFormData($field, $value) + protected function changeFormData($field, array $formDatas, $entity) { switch ($field) { + case 'isaccess': + case 'isread': + case 'iswrite': + case 'isreply': + case 'isupload': + case 'isdownload': + case 'isaccess': + if (array_key_exists($field, $formDatas) && $formDatas[$field]) { + $entity->$field = is_array($formDatas[$field]) ? implode("|", $formDatas[$field]) : $formDatas[$field]; + } + break; case 'head': case 'tail': - return htmlentities($value); + if (array_key_exists($field, $formDatas) && $formDatas[$field]) { + $entity->$field = htmlentities($formDatas[$field]); + } break; default: - return $value; + return parent::changeFormData($field, $formDatas, $entity); break; } + return $entity; } public function create(array $formDatas): BoardConfigEntity { - $entity = new BoardConfigEntity($formDatas); - foreach ($formDatas as $field => $value) { - $entity->$field = $this->changeFormData($field, $value); - } - return parent::create_process($entity); + return $this->create_process(new BoardConfigEntity(), $formDatas); } public function modify(BoardConfigEntity $entity, array $formDatas): BoardConfigEntity { - foreach ($formDatas as $field => $value) { - $entity->$field = $this->changeFormData($field, $value); - } - return parent::modify_process($entity); + return $this->modify_process($entity, $formDatas); } //Index관련 diff --git a/app/Models/BoardModel.php b/app/Models/BoardModel.php index a800997..3c52fe4 100644 --- a/app/Models/BoardModel.php +++ b/app/Models/BoardModel.php @@ -7,14 +7,14 @@ use App\Entities\BoardEntity; class BoardModel extends BaseModel { protected $table = 'tw_board'; - // protected $primaryKey = 'uid'; - // protected $useAutoIncrement = true; - protected $allowedFields = ['grpno', 'grporder', 'grpdepth', 'board_category', 'user_uid', 'title', 'content', 'passwd', 'view_cnt', 'status', 'updated_at']; + protected $primaryKey = 'uid'; + protected $useAutoIncrement = true; + protected $allowedFields = ['grpno', 'grporder', 'grpdepth', 'board_config_uid', 'user_uid', 'title', 'content', 'passwd', 'view_cnt', 'status', 'updated_at']; protected $validationRules = [ 'grpno' => 'if_exist|numeric', 'grporder' => 'if_exist|numeric', 'grpdepth' => 'if_exist|numeric', - 'board_category' => 'required|string', + 'board_config_uid' => 'required|regex_match[/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/]', 'user_uid' => 'if_exist|regex_match[/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/]', 'title' => 'required|string', 'content' => 'required|string', @@ -47,44 +47,19 @@ class BoardModel extends BaseModel public function create(array $formDatas): BoardEntity { - $entity = new BoardEntity($formDatas); - //로그인 여부 확인후 필요한 데이터 저장 - if (session()->get(SESSION_NAMES['ISLOGIN'])) { - $auth = session()->get(SESSION_NAMES['AUTH']); - $entity->user_uid = $auth[AUTH_FIELDS['ID']]; - } - foreach ($formDatas as $field => $value) { - $entity->$field = $this->changeFormData($field, $value); - } - $entity = parent::create_process($entity); - //계층형 - $entity = $this->setHierarchyCreate($entity); - return $entity; + //계층형 Create + $entity = $this->create_process(new BoardEntity(), $formDatas); + return $this->create_hierarchy($entity); } public function modify(BoardEntity $entity, array $formDatas): BoardEntity { - foreach ($formDatas as $field => $value) { - $entity->$field = $this->changeFormData($field, $value); - } - return parent::modify_process($entity); + return $this->modify_process($entity, $formDatas); } - public function reply(BoardEntity $entity, array $formDatas): BoardEntity + public function reply(BoardEntity $parent_entity, array $formDatas): BoardEntity { - $replyEntity = new BoardEntity($formDatas); - //로그인 여부 확인후 필요한 데이터 저장 - if (session()->get(SESSION_NAMES['ISLOGIN'])) { - $auth = session()->get(SESSION_NAMES['AUTH']); - $replyEntity->user_uid = $auth[AUTH_FIELDS['ID']]; - } - $replyEntity->title = "RE:" . $entity->title; - foreach ($formDatas as $field => $value) { - $replyEntity->$field = $this->changeFormData($field, $value); - } - //계층형 - $replyEntity = $this->setHierarchyReply($entity, $replyEntity); - // echo var_export($replyEntity, true); - // exit; - return $this->create_process($replyEntity); + //계층형 Reply + $entity = $this->reply_hierarchy(new BoardEntity(), $parent_entity); + return $this->create_process($entity, $formDatas); } //Index관련 diff --git a/app/Models/LoggerModel.php b/app/Models/LoggerModel.php index 4b23a6c..04c35b9 100644 --- a/app/Models/LoggerModel.php +++ b/app/Models/LoggerModel.php @@ -7,15 +7,14 @@ use App\Entities\LoggerEntity; class LoggerModel extends BaseModel { protected $table = 'tw_logger'; - // protected $primaryKey = 'uid'; + protected $primaryKey = 'uid'; // protected $useAutoIncrement = true; protected $allowedFields = ['user_uid', 'title', 'content', 'status', 'updated_at']; protected $validationRules = [ - 'uid' => 'if_exist|numeric', - 'user_uid' => 'required|string', + 'user_uid' => 'required|regex_match[/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/]', 'title' => 'required|string', 'content' => 'if_exist|string', - 'status' => 'if_exist|string', + 'status' => 'required|string', 'updated_at' => 'if_exist|valid_date', 'created_at' => 'if_exist|valid_date', ]; @@ -41,23 +40,11 @@ class LoggerModel extends BaseModel } public function create(array $formDatas): LoggerEntity { - $entity = new LoggerEntity($formDatas); - //로그인 여부 확인후 필요한 데이터 저장 - if (session()->get(SESSION_NAMES['ISLOGIN'])) { - $auth = session()->get(SESSION_NAMES['AUTH']); - $entity->user_uid = $auth[AUTH_FIELDS['ID']]; - } - foreach ($formDatas as $field => $value) { - $entity->$field = $this->changeFormData($field, $value); - } - return parent::create_process($entity); + return $this->create_process(new LoggerEntity(), $formDatas); } public function modify(LoggerEntity $entity, array $formDatas): LoggerEntity { - foreach ($formDatas as $field => $value) { - $entity->$field = $this->changeFormData($field, $value); - } - return parent::modify_process($entity); + return $this->modify_process($entity, $formDatas); } //Index관련 diff --git a/app/Models/UserModel.php b/app/Models/UserModel.php index 533884c..b9b6b34 100644 --- a/app/Models/UserModel.php +++ b/app/Models/UserModel.php @@ -7,7 +7,7 @@ use App\Entities\UserEntity; class UserModel extends BaseModel { protected $table = 'tw_user'; - // protected $primaryKey = 'uid'; + protected $primaryKey = 'uid'; protected $useAutoIncrement = false; protected $allowedFields = ['uid', 'id', 'email', 'passwd', 'name', 'role', 'status', 'updated_at']; protected $validationRules = [ @@ -43,18 +43,11 @@ class UserModel extends BaseModel } public function create(array $formDatas): UserEntity { - $entity = new UserEntity($formDatas); - foreach ($formDatas as $field => $value) { - $entity->$field = $this->changeFormData($field, $value); - } - return parent::create_process($entity); + return $this->create_process(new UserEntity(), $formDatas); } public function modify(UserEntity $entity, array $formDatas): UserEntity { - foreach ($formDatas as $field => $value) { - $entity->$field = $this->changeFormData($field, $value); - } - return parent::modify_process($entity); + return $this->modify_process($entity, $formDatas); } //Index관련 diff --git a/app/Models/UserSNSModel.php b/app/Models/UserSNSModel.php index f6dfd6a..f82a16e 100644 --- a/app/Models/UserSNSModel.php +++ b/app/Models/UserSNSModel.php @@ -7,17 +7,17 @@ use App\Entities\UserSNSEntity; class UserSNSModel extends BaseModel { protected $table = 'tw_user_sns'; - // protected $primaryKey = 'uid'; + protected $primaryKey = 'uid'; // protected $useAutoIncrement = true; protected $allowedFields = ['user_uid', 'site', 'id', 'name', 'email', 'detail', 'status', 'updated_at', 'created_at']; protected $validationRules = [ - 'user_uid' => 'if_exist|number', + 'user_uid' => 'if_exist|regex_match[/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/]', 'site' => 'required|string', 'id' => 'required|string', 'name' => 'required|string', 'email' => 'required|valid_email', - 'detail' => 'required|string', - 'status' => 'if_exist|string', + 'detail' => 'if_exist|string', + 'status' => 'required|string', 'updated_at' => 'if_exist|valid_date', 'created_at' => 'if_exist|valid_date', ]; @@ -42,23 +42,13 @@ class UserSNSModel extends BaseModel return $temps; } - public function create(string $site, array $formDatas): UserSNSEntity + public function create(array $formDatas): UserSNSEntity { - $entity = new UserSNSEntity(); - $entity->site = $site; - $entity->detail = json_encode($formDatas); - $entity->status = 'standby'; - foreach ($formDatas as $field => $value) { - $entity->$field = $this->changeFormData($field, $value); - } - return $this->create_process($entity); + return $this->create_process(new UserSNSEntity(), $formDatas); } public function modify(UserSNSEntity $entity, array $formDatas): UserSNSEntity { - foreach ($formDatas as $field => $value) { - $entity->$field = $this->changeFormData($field, $value); - } - return $this->modify_process($entity); + return $this->modify_process($entity, $formDatas); } //Index관련