File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/app/Controllers/AdminPolicyController.php
Back
<?php /** * AdminPolicyController * Handles Admin Policy Management, Immutability, Versioning, and Acceptance Audits */ require_once __DIR__ . '/../Core/Controller.php'; require_once __DIR__ . '/../Services/PolicyService.php'; require_once __DIR__ . '/../Helpers/Auth.php'; require_once __DIR__ . '/../Helpers/Session.php'; require_once __DIR__ . '/../Helpers/Url.php'; class AdminPolicyController extends Controller { private PolicyService $policyService; public function __construct() { $this->policyService = new PolicyService(); } public function index(): void { $filters = [ 'q' => $_GET['q'] ?? '', 'type' => $_GET['type'] ?? 'all', 'status' => $_GET['status'] ?? 'all' ]; $page = isset($_GET['page']) ? (int)$_GET['page'] : 1; $data = $this->policyService->getAdminPolicies($filters, $page, 20); $this->render('admin/policies/index', array_merge($data, [ 'policyTypes' => UserAgreement::$types, 'pageTitle' => 'จัดการนโยบายและข้อกำหนด - CARGOO Admin', 'activeNav' => 'policies' ]), 'admin'); } public function create(): void { $defaultType = $_GET['type'] ?? 'customer'; $this->render('admin/policies/create', [ 'defaultType' => $defaultType, 'policyTypes' => UserAgreement::$types, 'pageTitle' => 'สร้างแบบร่างนโยบายเวอร์ชันใหม่ - CARGOO Admin', 'activeNav' => 'policies' ], 'admin'); } public function store(): void { $adminId = Auth::id(); $result = $this->policyService->createDraft($_POST, $adminId); if (!$result['success']) { Session::setFlash('danger', $result['message']); $this->redirect('/admin/policies/create'); } Session::setFlash('success', $result['message']); $this->redirect('/admin/policies'); } public function edit(string $id): void { $policy = (new UserAgreement())->findById((int)$id); if (!$policy) { Session::setFlash('danger', 'ไม่พบนโยบาย'); $this->redirect('/admin/policies'); } if ($policy['status'] !== 'draft') { Session::setFlash('warning', 'ไม่อนุญาตให้แก้ไขนโยบายเวอร์ชันที่เผยแพร่แล้ว (Published versions are immutable) หากต้องการเปลี่ยนแปลง กรุณาสร้างเวอร์ชันใหม่'); $this->redirect('/admin/policies'); } $this->render('admin/policies/edit', [ 'policy' => $policy, 'policyTypes' => UserAgreement::$types, 'pageTitle' => 'แก้ไขแบบร่าง: ' . e($policy['title']) . ' (v' . e($policy['version']) . ') - CARGOO Admin', 'activeNav' => 'policies' ], 'admin'); } public function update(string $id): void { $adminId = Auth::id(); $result = $this->policyService->updateDraft((int)$id, $_POST, $adminId); if (!$result['success']) { Session::setFlash('danger', $result['message']); $this->redirect('/admin/policies/' . $id . '/edit'); } Session::setFlash('success', $result['message']); $this->redirect('/admin/policies'); } public function publish(string $id): void { $adminId = Auth::id(); $result = $this->policyService->publish((int)$id, $adminId); if (!$result['success']) { Session::setFlash('danger', $result['message']); } else { Session::setFlash('success', $result['message']); } $this->redirect('/admin/policies'); } public function archive(string $id): void { $adminId = Auth::id(); $result = $this->policyService->archive((int)$id, $adminId); if (!$result['success']) { Session::setFlash('danger', $result['message']); } else { Session::setFlash('success', $result['message']); } $this->redirect('/admin/policies'); } public function history(string $id): void { $policy = (new UserAgreement())->findById((int)$id); if (!$policy) { Session::setFlash('danger', 'ไม่พบนโยบาย'); $this->redirect('/admin/policies'); } $history = $this->policyService->getHistory((int)$id); $this->render('admin/policies/history', [ 'policy' => $policy, 'history' => $history, 'pageTitle' => 'ประวัติการแก้ไขเวอร์ชัน: ' . e($policy['title']) . ' (v' . e($policy['version']) . ') - CARGOO Admin', 'activeNav' => 'policies' ], 'admin'); } public function acceptances(string $id): void { $policy = (new UserAgreement())->findById((int)$id); if (!$policy) { Session::setFlash('danger', 'ไม่พบนโยบาย'); $this->redirect('/admin/policies'); } $page = isset($_GET['page']) ? (int)$_GET['page'] : 1; $data = $this->policyService->getAcceptances((int)$id, $page, 50); $this->render('admin/policies/acceptances', array_merge($data, [ 'policy' => $policy, 'pageTitle' => 'บันทึกการยอมรับข้อกำหนด: ' . e($policy['title']) . ' (v' . e($policy['version']) . ') - CARGOO Admin', 'activeNav' => 'policies' ]), 'admin'); } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings