107 lines
3.9 KiB
PHP
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'],
|
|
]);
|