80 lines
2.7 KiB
PHP
80 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers\Cloudflare;
|
|
|
|
use App\Controllers\MVController;
|
|
use CodeIgniter\HTTP\RedirectResponse;
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
use App\Models\Cloudflare\AccountModel;
|
|
use App\Models\Cloudflare\AuthModel;
|
|
use App\Models\Cloudflare\RecordModel;
|
|
use App\Models\Cloudflare\ZoneModel;
|
|
|
|
abstract class CloudflareController extends MVController
|
|
{
|
|
private $_authModel = null;
|
|
private $_accountModel = null;
|
|
private $_zoneModel = null;
|
|
private $_recordModel = null;
|
|
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
|
|
{
|
|
if ($this->_authModel === null) {
|
|
$this->_authModel = new AuthModel();
|
|
}
|
|
return $this->_authModel;
|
|
}
|
|
final protected function getAccountModel(): AccountModel
|
|
{
|
|
if ($this->_accountModel === null) {
|
|
$this->_accountModel = new AccountModel();
|
|
}
|
|
return $this->_accountModel;
|
|
}
|
|
final protected function getZoneModel(): ZoneModel
|
|
{
|
|
if ($this->_zoneModel === null) {
|
|
$this->_zoneModel = new ZoneModel();
|
|
}
|
|
return $this->_zoneModel;
|
|
}
|
|
final protected function getRecordModel(): RecordModel
|
|
{
|
|
if ($this->_recordModel === null) {
|
|
$this->_recordModel = new RecordModel();
|
|
}
|
|
return $this->_recordModel;
|
|
}
|
|
//Trigger
|
|
protected function trigger_process(): void
|
|
{
|
|
log_message("debug", var_export($this->request->getVar(), true));
|
|
}
|
|
final protected function trigger_procedure(): ResponseInterface
|
|
{
|
|
//Transaction Start
|
|
$this->getModel()->transStart();
|
|
try {
|
|
// 여기에 필요한 로직을 구현하세요
|
|
log_message("debug", var_export($this->request->getVar(), true));
|
|
$this->trigger_process();
|
|
$this->message = "{$this->class_name}: Trigger 작업이 완료되었습니다.";
|
|
$this->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();
|
|
log_message("error", $e->getMessage());
|
|
return $this->response->setJSON(['status' => 500, 'message' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
}
|