Files

107 lines
3.9 KiB
PHP

<?php
// ================================================================
// Konfigurasi Global Aplikasi
// ================================================================
// Simple .env parser (for local use)
$envFile = __DIR__ . '/../.env';
if (file_exists($envFile)) {
$lines = file($envFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
if (strpos(trim($line), '#') === 0) continue;
list($name, $value) = explode('=', $line, 2);
$name = trim($name);
$value = trim($value, " \t\n\r\0\x0B\"'"); // Strip whitespace and quotes
if (!array_key_exists($name, $_SERVER) && !array_key_exists($name, $_ENV)) {
putenv(sprintf('%s=%s', $name, $value));
$_ENV[$name] = $value;
$_SERVER[$name] = $value;
}
}
}
// Path dasar aplikasi
define('BASE_PATH', dirname(__DIR__));
// Base URL aplikasi (Deteksi Dinamis)
if (isset($_SERVER['HTTP_HOST'])) {
// Deteksi protokol (HTTP / HTTPS) dengan dukungan reverse proxy (SSL Offloading)
$scheme = 'http';
if (
(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] === 'on' || $_SERVER['HTTPS'] == 1)) ||
(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') ||
(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443)
) {
$scheme = 'https';
}
// Deteksi sub-direktori jika ada (misal: /webjir/poverty_map)
$docRoot = rtrim(str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']), '/');
$basePath = rtrim(str_replace('\\', '/', BASE_PATH), '/');
$subDir = '';
if (strpos($basePath, $docRoot) === 0) {
$subDir = substr($basePath, strlen($docRoot));
}
define('BASE_URL', $scheme . '://' . $_SERVER['HTTP_HOST'] . $subDir);
} else {
// Fallback untuk CLI / Cron
$defaultBaseUrl = 'http://ygo4ck40cossgcww4ooc400w.203.24.51.230.sslip.io';
define('BASE_URL', getenv('BASE_URL') ?: $defaultBaseUrl);
}
// Koordinat default peta (Pontianak)
define('MAP_DEFAULT_LAT', -0.0263);
define('MAP_DEFAULT_LNG', 109.3425);
define('MAP_DEFAULT_ZOOM', 13);
// Radius default rumah ibadah (meter)
define('RADIUS_DEFAULT', 300);
define('RADIUS_MIN', 100);
define('RADIUS_MAX', 5000);
// Upload settings
define('UPLOAD_DIR', BASE_PATH . '/assets/uploads/');
define('UPLOAD_URL', BASE_URL . '/assets/uploads/');
define('UPLOAD_MAX_SIZE', 10 * 1024 * 1024); // 10 MB
define('UPLOAD_ALLOWED', ['jpg','jpeg','png','gif','pdf','doc','docx']);
// App info
define('APP_NAME', 'WebGIS Sebaran Penduduk Miskin');
define('APP_VERSION', '2.0.0');
// Session
define('SESSION_NAME', 'poverty_map_sess');
// Emoji shorthand (digunakan di view layer)
define('JENIS_EMOJI', [
'Masjid' => '🕌',
'Musholla' => '🕌',
'Gereja' => '⛪',
'Katolik' => '⛪',
'Pura' => '🛕',
'Vihara' => '🛕',
'Klenteng' => '⛩️',
'Lainnya' => '🙏',
]);
// Jenis rumah ibadah dengan emoji
define('JENIS_IBADAH', [
'Masjid' => ['emoji' => '🕌', 'color' => '#10b981'],
'Musholla' => ['emoji' => '🕌', 'color' => '#34d399'],
'Gereja' => ['emoji' => '⛪', 'color' => '#3b82f6'],
'Katolik' => ['emoji' => '⛪', 'color' => '#60a5fa'],
'Pura' => ['emoji' => '🛕', 'color' => '#f59e0b'],
'Vihara' => ['emoji' => '🛕', 'color' => '#fbbf24'],
'Klenteng' => ['emoji' => '⛩️', 'color' => '#ef4444'],
'Lainnya' => ['emoji' => '🙏', 'color' => '#8b5cf6'],
]);
// Status bantuan
define('STATUS_BANTUAN', [
'belum' => ['label' => 'Belum Dibantu', 'color' => '#ef4444', 'badge' => 'danger'],
'sudah' => ['label' => 'Sudah Dibantu', 'color' => '#22c55e', 'badge' => 'success'],
'menunggu' => ['label' => 'Menunggu Verif', 'color' => '#f59e0b', 'badge' => 'warning'],
'darurat' => ['label' => 'Bantuan Darurat (Musibah)', 'color' => '#a855f7', 'badge' => 'secondary'],
]);