File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/app/Models/AdminCreationRequest.php
Back
<?php /** * AdminCreationRequest Model * Maps to `admin_creation_requests` table * Workflow: Existing admin requests → Super Admin approves/rejects */ require_once __DIR__ . '/../Core/Model.php'; class AdminCreationRequest extends Model { protected string $table = 'admin_creation_requests'; public function createRequest(int $requesterId, string $targetEmail, string $requestedRole, string $reason): int { return $this->insert([ 'requester_user_id' => $requesterId, 'target_email' => $targetEmail, 'requested_role' => $requestedRole, 'reason' => $reason, 'status' => 'pending', 'created_at' => date('Y-m-d H:i:s'), ]); } public function getPendingRequests(): array { $sql = "SELECT acr.*, u.username as requester_username, u.first_name as requester_first_name FROM `admin_creation_requests` acr LEFT JOIN `users` u ON acr.requester_user_id = u.id WHERE acr.status = 'pending' ORDER BY acr.created_at ASC"; return $this->fetchAll($sql); } public function getAllRequests(int $limit = 30, int $offset = 0): array { $sql = "SELECT acr.*, u.username as requester_username FROM `admin_creation_requests` acr LEFT JOIN `users` u ON acr.requester_user_id = u.id ORDER BY acr.created_at DESC LIMIT :limit OFFSET :offset"; $stmt = $this->db->prepare($sql); $stmt->bindValue(':limit', $limit, PDO::PARAM_INT); $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); $stmt->execute(); return $stmt->fetchAll(); } public function reviewRequest(int $requestId, string $status, int $reviewedBy): bool { $sql = "UPDATE `admin_creation_requests` SET status = :status, reviewed_by = :by, reviewed_at = NOW() WHERE id = :id AND status = 'pending'"; $stmt = $this->query($sql, [':status' => $status, ':by' => $reviewedBy, ':id' => $requestId]); return $stmt->rowCount() > 0; } public function hasPendingForEmail(string $email): bool { $sql = "SELECT id FROM `admin_creation_requests` WHERE target_email = :email AND status = 'pending' LIMIT 1"; return (bool)$this->fetchOne($sql, [':email' => $email]); } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.5 |
proxy
|
phpinfo
|
Settings