![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/.cursor-server/data/User/History/2031cdae/ |
<?php
/**
* The Land - Physical Village Nodes
*/
require_once dirname(__DIR__) . '/private_html/config.php';
$lang = $_GET['lang'] ?? (isset($_COOKIE['lang']) ? $_COOKIE['lang'] : 'en');
if (!in_array($lang, ['en', 'fr'])) $lang = 'en';
setcookie('lang', $lang, time() + (86400 * 365), '/');
$translations = [
'en' => [
'title' => 'The Land',
'subtitle' => 'Physical Embodiment',
'description' => 'Real-world village nodes stewarding ecology, art, and learning',
],
'fr' => [
'title' => 'La Terre',
'subtitle' => 'Incarnation Physique',
'description' => 'Nœuds de villages réels gérant l\'écologie, l\'art et l\'apprentissage',
]
];
$t = $translations[$lang];
// Get all active villages
$db = getDBConnection();
$villagesStmt = $db->prepare("
SELECT v.*, COUNT(DISTINCT vm.user_id) as member_count
FROM villages v
LEFT JOIN village_members vm ON v.id = vm.village_id
WHERE v.status = 'active'
GROUP BY v.id
ORDER BY v.created_at DESC
");
$villagesStmt->execute();
$villages = $villagesStmt->fetchAll();
?>
<!DOCTYPE html>
<html lang="<?= $lang ?>">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= htmlspecialchars($t['title']) ?> - Free Village Network</title>
<link rel="stylesheet" href="/assets/css/main.css">
<link rel="stylesheet" href="/assets/css/themes.css">
</head>
<body>
<?php
require_once __DIR__ . '/includes/auth.php';
include __DIR__ . '/includes/navbar.php';
?>
<section class="hero" style="min-height: 60vh; padding-top: 100px;">
<div class="container">
<div class="hero-content">
<h1 class="hero-title"><?= htmlspecialchars($t['title']) ?></h1>
<p class="hero-subtitle"><?= htmlspecialchars($t['subtitle']) ?></p>
<p class="hero-tagline"><?= htmlspecialchars($t['description']) ?></p>
</div>
</div>
</section>
<section class="villages-preview">
<div class="container">
<h2><?= $lang === 'fr' ? 'Villages Actifs' : 'Active Villages' ?></h2>
<?php if (empty($villages)): ?>
<p style="text-align: center; color: var(--color-text-secondary); padding: 4rem 0;">
<?= $lang === 'fr' ? 'Aucun village actif pour le moment.' : 'No active villages yet.' ?>
</p>
<?php else: ?>
<div class="villages-grid">
<?php foreach ($villages as $village): ?>
<div class="village-card">
<h3><?= htmlspecialchars($lang === 'fr' && $village['name_fr'] ? $village['name_fr'] : $village['name']) ?></h3>
<p><?= htmlspecialchars($lang === 'fr' && $village['description_fr'] ? $village['description_fr'] : $village['description']) ?></p>
<div class="village-meta">
<span>👥 <?= $village['member_count'] ?> <?= $lang === 'fr' ? 'membres' : 'members' ?></span>
<?php if ($village['region']): ?>
<span>📍 <?= htmlspecialchars($village['region']) ?></span>
<?php endif; ?>
</div>
<a href="/land/village/<?= htmlspecialchars($village['slug']) ?>" class="village-link"><?= $lang === 'fr' ? 'En savoir plus' : 'Learn More' ?> →</a>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
</section>
<footer class="footer">
<div class="container">
<p style="text-align: center; color: var(--color-text-secondary);">© <?= date('Y') ?> The Free Village Network</p>
</div>
</footer>
</body>
</html>