<?php
// BEGIN CHANGE: API lista de Guilds (paridade com guilds.php legado)
require __DIR__ . '/lib.php';
waHeaders();

$pdo = waConnect();

// BEGIN CHANGE: nao rodar cleanup destrutivo em GET publico; use guild-admin cleanup_guilds (admin)
$cleaned = 0;
// END CHANGE

$sql = "SELECT g.id, g.name, g.motd, g.description, g.creationdata, g.logo_gfx_name,
               g.real_castle, g.favela,
               o.name AS owner,
               o.looktype, o.lookhead, o.lookbody, o.looklegs, o.lookfeet, o.lookaddons, o.lookmount,
               (SELECT COUNT(*) FROM players p
                  JOIN guild_ranks r ON p.rank_id = r.id
                 WHERE r.guild_id = g.id AND p.deleted = 0 AND COALESCE(p.salvar, 0) < 1) AS members
        FROM guilds g
        LEFT JOIN players o ON o.id = g.ownerid
        ORDER BY members DESC, g.name ASC
        LIMIT 100';

$rows = array();
foreach ($pdo->query($sql) as $r) {
    $logo = isset($r['logo_gfx_name']) ? trim($r['logo_gfx_name']) : '';
    // Sanitiza path (igual legado: remove / \\ ..)
    $logo = str_replace(array('/', '\\', '..'), '', $logo);
    if ($logo === '') $logo = 'default_main_logo.gif';

    $rows[] = array(
        'id' => (int) $r['id'],
        'name' => $r['name'],
        'owner' => $r['owner'] !== null ? $r['owner'] : '-',
        'ownerLook' => $r['owner'] !== null ? waLook($r) : null,
        'members' => (int) $r['members'],
        'motd' => $r['motd'] !== null ? $r['motd'] : '',
        'description' => $r['description'] !== null ? $r['description'] : '',
        'logo' => $logo,
        'created' => (int) $r['creationdata'],
        'castle' => (int) $r['real_castle'] === 1,
        'favela' => (int) $r['favela'] === 1,
    );
}

echo json_encode(array(
    'data' => $rows,
    'cleanedGuilds' => $cleaned,
), JSON_UNESCAPED_UNICODE);
// END CHANGE
