121 lines
3.9 KiB
PHP
121 lines
3.9 KiB
PHP
<?php
|
|
// Generated by setup_mariadb_project.sh — edit as needed.
|
|
require_once __DIR__ . '/../includes/dotenv.php';
|
|
|
|
define('DB_HOST', getenv('DB_HOST') ?: '127.0.0.1');
|
|
define('DB_NAME', getenv('DB_NAME') ?: 'app_38384');
|
|
define('DB_USER', getenv('DB_USER') ?: 'app_38384');
|
|
define('DB_PASS', getenv('DB_PASS') ?: '5561099f-23a3-43d8-b1a2-54739c50721b');
|
|
|
|
function db() {
|
|
static $pdo;
|
|
if (!$pdo) {
|
|
try {
|
|
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8mb4', DB_USER, DB_PASS, [
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
]);
|
|
} catch (PDOException $e) {
|
|
die("Database Connection Error: " . $e->getMessage());
|
|
}
|
|
}
|
|
return $pdo;
|
|
}
|
|
|
|
function check_permission($page = null, $user_id = null) {
|
|
// Safely access session
|
|
if (!$user_id) {
|
|
if (isset($_SESSION) && isset($_SESSION['user_id'])) {
|
|
$user_id = $_SESSION['user_id'];
|
|
} else {
|
|
$user_id = null;
|
|
}
|
|
}
|
|
|
|
if (!$page) $page = basename($_SERVER['PHP_SELF']);
|
|
if (!$user_id) return ['view' => 0, 'add' => 0, 'edit' => 0, 'delete' => 0];
|
|
|
|
static $permissions_cache = [];
|
|
$cache_key = $user_id . '_' . $page;
|
|
if (isset($permissions_cache[$cache_key])) return $permissions_cache[$cache_key];
|
|
|
|
try {
|
|
// First check if user is super_admin
|
|
$role = null;
|
|
if (isset($_SESSION) && isset($_SESSION['user_id']) && $_SESSION['user_id'] == $user_id && isset($_SESSION['role'])) {
|
|
$role = $_SESSION['role'];
|
|
} else {
|
|
$stmt = db()->prepare("SELECT role FROM users WHERE id = ?");
|
|
$stmt->execute([$user_id]);
|
|
$role = $stmt->fetchColumn();
|
|
}
|
|
|
|
if ($role === 'super_admin') {
|
|
$result = ['view' => 1, 'add' => 1, 'edit' => 1, 'delete' => 1];
|
|
$permissions_cache[$cache_key] = $result;
|
|
return $result;
|
|
}
|
|
|
|
$stmt = db()->prepare("SELECT can_view as view, can_add as `add`, can_edit as edit, can_delete as `delete` FROM user_permissions WHERE user_id = ? AND page = ?");
|
|
$stmt->execute([$user_id, $page]);
|
|
$perms = $stmt->fetch();
|
|
|
|
if (!$perms) {
|
|
return ['view' => 0, 'add' => 0, 'edit' => 0, 'delete' => 0];
|
|
}
|
|
|
|
$result = [
|
|
'view' => (int)$perms['view'],
|
|
'add' => (int)$perms['add'],
|
|
'edit' => (int)$perms['edit'],
|
|
'delete' => (int)$perms['delete']
|
|
];
|
|
$permissions_cache[$cache_key] = $result;
|
|
return $result;
|
|
} catch (Exception $e) {
|
|
return ['view' => 0, 'add' => 0, 'edit' => 0, 'delete' => 0];
|
|
}
|
|
}
|
|
|
|
function get_setting($key, $default = null) {
|
|
try {
|
|
$stmt = db()->prepare('SELECT setting_value FROM settings WHERE setting_key = ?');
|
|
$stmt->execute([$key]);
|
|
$val = $stmt->fetchColumn();
|
|
return ($val !== false) ? $val : $default;
|
|
} catch (Exception $e) {
|
|
return $default;
|
|
}
|
|
}
|
|
|
|
function set_setting($key, $value) {
|
|
$stmt = db()->prepare('INSERT INTO settings (setting_key, setting_value) VALUES (?, ?) ON DUPLICATE KEY UPDATE setting_value = ?, updated_at = CURRENT_TIMESTAMP');
|
|
$stmt->execute([$key, $value, $value]);
|
|
}
|
|
|
|
function has_permission($action, $page = null, $user_id = null) {
|
|
$perms = check_permission($page, $user_id);
|
|
return !empty($perms[$action]);
|
|
}
|
|
|
|
if (!function_exists('getStatusColor')) {
|
|
function getStatusColor($status) {
|
|
return [
|
|
'received' => 'secondary',
|
|
'processing' => 'primary',
|
|
'ready' => 'success',
|
|
'delivered' => 'dark',
|
|
'cancelled' => 'danger',
|
|
][$status] ?? 'info';
|
|
}
|
|
}
|
|
|
|
if (!function_exists('getPaymentStatusColor')) {
|
|
function getPaymentStatusColor($status) {
|
|
return [
|
|
'unpaid' => 'danger',
|
|
'partially_paid' => 'warning',
|
|
'paid' => 'success',
|
|
][$status] ?? 'info';
|
|
}
|
|
} |