<?php
/** AURA FARMING — Etapa 22: perfil público com bloqueio seguro */
require_once __DIR__.'/../config/config.php';
require_once __DIR__.'/../config/database.php';
require_once __DIR__.'/../includes/functions.php';
require_once __DIR__.'/../includes/match_functions.php';require_once __DIR__.'/../includes/personal_score_functions.php';
requireLogin();
$u=usuarioAtual();
$auraId=strtoupper(trim((string)($_GET['aura']??'')));
if(!preg_match('/^AURA-[0-9]{4}$/',$auraId)){setFlash('error','Jogador inválido.');header('Location: '.SITE_URL.'/pages/ranking.php');exit;}
$st=$pdo->prepare("SELECT u.*,pr.bio,pr.cidade,pr.estado,pr.pais,pr.perfil_privado,ag.status_idade,ag.tipo_conta FROM af_usuarios u LEFT JOIN af_perfis pr ON pr.usuario_id=u.id LEFT JOIN af_user_age_profiles ag ON ag.usuario_id=u.id WHERE u.aura_id=? AND u.status=1 LIMIT 1");
$st->execute([$auraId]);$j=$st->fetch();
if(!$j){setFlash('error','Jogador não encontrado.');header('Location: '.SITE_URL.'/pages/ranking.php');exit;}
$self=(int)$u['id']===(int)$j['id'];
if($_SERVER['REQUEST_METHOD']==='POST'){
    try{
        if(!validarCsrfToken($_POST[CSRF_TOKEN_NAME]??''))throw new RuntimeException('Sessão expirada.');
        if($self)throw new RuntimeException('Ação indisponível no próprio perfil.');
        $postAction=(string)($_POST['acao']??'seguir');
        if($postAction==='bloquear'){
            afModerationBlockUser($pdo,(int)$u['id'],(int)$j['id'],'user',null,'Bloqueio pelo perfil público');
            setFlash('success','Jogador bloqueado.');
        }elseif($postAction==='desbloquear'){
            afModerationUnblockUser($pdo,(int)$u['id'],(int)$j['id']);
            setFlash('success','Jogador desbloqueado.');
        }else{
            if(!afCanUseAgeFeature($pdo,(int)$u['id'],'social_follow'))throw new RuntimeException('Interações sociais públicas estão bloqueadas pela política de segurança desta conta.');
            if(!afCanPublishUserContent($pdo,(int)$j['id']))throw new RuntimeException('Este perfil está protegido por classificação etária.');
            if(afModerationIsBlocked($pdo,(int)$u['id'],(int)$j['id']))throw new RuntimeException('Esta interação não está disponível entre as contas.');
            $seguir=$postAction!=='deixar';
            $seguindo=afDefinirSeguindo($pdo,(int)$u['id'],(int)$j['id'],$seguir);
            setFlash('success',$seguindo?'Você agora segue este jogador.':'Você deixou de seguir este jogador.');
        }
    }catch(Throwable $e){setFlash('error',$e->getMessage());}
    header('Location: '.SITE_URL.'/pages/jogador.php?aura='.urlencode($auraId));exit;
}
$blockedByMe=!$self&&afModerationHasBlocked($pdo,(int)$u['id'],(int)$j['id']);
$blockedMe=!$self&&afModerationHasBlocked($pdo,(int)$j['id'],(int)$u['id']);
$blocked=$blockedByMe||$blockedMe;
$ageProtected=!$self&&!afCanPublishUserContent($pdo,(int)$j['id']);
$contentProtected=$ageProtected||$blocked;
$seguindo=!$self&&!$contentProtected&&afSeguindo($pdo,(int)$u['id'],(int)$j['id']);
$social=$contentProtected?['seguidores'=>0,'seguindo'=>0]:afContadoresSociais($pdo,(int)$j['id']);
$stats=$contentProtected?['melhor_pontuacao'=>0,'total_partidas'=>0,'combo_maximo'=>0,'likes'=>0,'superlikes'=>0]:afEstatisticasUsuario($pdo,(int)$j['id']);if(!$contentProtected){$stats['melhor_pontuacao']=afMaiorNotaPessoal($pdo,(int)$j['id']);}
$posicao=$contentProtected?0:afCalcularPosicaoPeriodo($pdo,(int)$j['id'],'global');
$ultimas=[];
if(!$contentProtected){$st=$pdo->prepare("SELECT sessao_id,pontuacao_total,aura_gerada,likes_recebidos,superlikes_recebidos,combo_maximo,novo_recorde,finalizada_em,share_token FROM af_partidas WHERE usuario_id=? AND status='finalizada' AND COALESCE(admin_status,'normal')='normal' ORDER BY finalizada_em DESC LIMIT 5");$st->execute([(int)$j['id']]);$ultimas=$st->fetchAll()?:[];}
$equipJ=afEquipamentoUsuario($pdo,(int)$j['id']);
$pageTitle=$contentProtected?$j['username']:$j['nome'];$activePage='ranking';require_once __DIR__.'/../includes/header.php';
?>
<header class="app-header"><a class="btn-back" href="<?=SITE_URL?>/pages/ranking.php">← Ranking</a><div class="logo-inline"><span class="logo-main">JOGADOR</span><span class="logo-sub"><?=esc($j['aura_id'])?></span></div><span></span></header>
<main class="page-content player-public-page"><?=renderFlash()?>
<section class="card card--glow player-public-hero"><div class="avatar-wrapper frame-<?=esc($equipJ['moldura_valor']??'none')?>" style="--player-aura-color:<?=esc($equipJ['cor_aura_valor']??'#00d4ff')?>"><img class="avatar" src="<?=urlAvatar($contentProtected?null:($j['foto_perfil']??null),$contentProtected?null:($j['foto_externa']??null))?>" alt=""><div class="avatar-ring"></div><?php if(!$contentProtected):?><div class="avatar-level">Nv <?=calcularNivel((int)$j['xp_total'])?></div><?php endif;?></div><div class="player-public-main"><h1><?=esc($contentProtected?$j['username']:$j['nome'])?></h1><div class="aura-player-id" data-id="<?=esc($j['aura_id'])?>"><?=esc($j['aura_id'])?> 📋</div><?php if(!$contentProtected):?><span class="badge-titulo">⭐ <?=esc($equipJ['titulo_valor']??$j['titulo'])?></span><div class="player-social-counts"><span><strong><?=$social['seguidores']?></strong> seguidores</span><span><strong><?=$social['seguindo']?></strong> seguindo</span></div><?php endif;?></div></section>
<?php if(!$contentProtected&&!empty($j['bio'])):?><p class="card player-public-bio"><?=esc($j['bio'])?></p><?php endif;?>
<?php if($contentProtected):?>
  <div class="card empty-inline mb-16">🛡️ <?=$ageProtected?'Este perfil está protegido por classificação etária.':'Este perfil não está disponível devido a um bloqueio entre as contas.'?> Dados pessoais, estatísticas e partidas não são exibidos.</div>
  <?php if($blockedByMe):?><form method="post" class="mb-16" onsubmit="return confirm('Desbloquear este jogador?')"><?=camposCsrf()?><input type="hidden" name="acao" value="desbloquear"><button class="btn btn-outline-cyan">🔓 DESBLOQUEAR JOGADOR</button></form><?php endif;?>
  <?php if(!$self):?><a class="btn btn-secondary mb-16" href="<?=SITE_URL?>/pages/denunciar.php?usuario=<?=(int)$j['id']?>">🚩 DENUNCIAR JOGADOR</a><?php endif;?>
<?php elseif(!$self):?>
  <form method="post" class="mb-16"><?=camposCsrf()?><input type="hidden" name="acao" value="<?=$seguindo?'deixar':'seguir'?>"><button class="btn <?=$seguindo?'btn-secondary':'btn-primary'?>"><?=$seguindo?'✓ SEGUINDO — DEIXAR DE SEGUIR':'＋ SEGUIR JOGADOR'?></button></form>
  <a class="btn btn-secondary mb-16" href="<?=SITE_URL?>/pages/denunciar.php?usuario=<?=(int)$j['id']?>">🚩 DENUNCIAR JOGADOR</a>
  <form method="post" class="mb-16" onsubmit="return confirm('Bloquear este jogador e impedir interações?')"><?=camposCsrf()?><input type="hidden" name="acao" value="bloquear"><button class="btn btn-outline-cyan">🛡️ BLOQUEAR JOGADOR</button></form>
<?php else:?><a class="btn btn-outline-cyan mb-16" href="<?=SITE_URL?>/pages/perfil.php">EDITAR MEU PERFIL</a><?php endif;?>
<?php if(!$contentProtected):?><div class="history-stats-grid"><article><small>MAIOR NOTA PESSOAL</small><strong>🏆 <?=$stats['melhor_pontuacao']>0?formatarNumero((float)$stats['melhor_pontuacao']):'Ainda sem pontuação'?></strong></article><article><small>RANKING</small><strong><?=$posicao>0?$posicao.'º':'—'?></strong></article><article><small>PARTIDAS</small><strong><?=(int)$stats['total_partidas']?></strong></article><article><small>COMBO</small><strong>x<?=(int)$stats['combo_maximo']?></strong></article><article><small>LIKES</small><strong><?=formatarNumero((float)$stats['likes'])?></strong></article><article><small>SUPER LIKES</small><strong><?=formatarNumero((float)$stats['superlikes'])?></strong></article></div>
<?php if(!(int)($j['perfil_privado']??0)||$self):?><div class="section-title">🔥 Últimas farmadas</div><div class="card public-matches"><?php if(!$ultimas):?><p class="empty-inline">Nenhuma partida concluída.</p><?php else:foreach($ultimas as $p):?><a href="<?=SITE_URL?>/pages/compartilhar.php?t=<?=urlencode($p['share_token'])?>"><span><?=date('d/m/Y',strtotime($p['finalizada_em']))?></span><strong>🏆 <?=number_format((float)$p['pontuacao_total'],2,',','.')?> Aura</strong><small>🔥 x<?=(int)$p['combo_maximo']?> • ❤️ <?=(int)$p['likes_recebidos']?></small></a><?php endforeach;endif;?></div><?php else:?><div class="card empty-inline">🔒 Este jogador mantém as partidas privadas.</div><?php endif;?><?php endif;?>
</main>
<?php require_once __DIR__.'/../includes/navbar.php';require_once __DIR__.'/../includes/footer.php';?>
