setFlashdata('success', 'Definições guardadas.'); header('Location: ' . base_url('views/admin/reviews/index.php')); exit; } if ($action === 'refresh') { $r = reviews_refresh(); session()->setFlashdata(!empty($r['error']) ? 'error' : 'success', !empty($r['error']) ? 'Falhou: ' . $r['error'] : 'Reviews atualizadas (' . count($r['reviews'] ?? []) . ' recebidas da Google).'); header('Location: ' . base_url('views/admin/reviews/index.php')); exit; } if ($action === 'search') { $apiKey = reviews_config()['api_key']; $q = trim((string) ($_POST['query'] ?? '')); $search = ($apiKey === '') ? ['error' => 'Guarda primeiro a chave da API.', 'places' => []] : ($q === '' ? ['error' => 'Escreve o nome do ginásio.', 'places' => []] : reviews_find_place($q, $apiKey)); } } $cfg = reviews_config(); $env_key = (string) env('GOOGLE_PLACES_API_KEY', '') !== ''; $cache = reviews_cache_read(); $preview = site_reviews(); $info = site_info($pdo, (int) $rgym['id']); $page_title = 'Reviews Google'; include __DIR__ . '/../../../includes/header.php'; ?>
A secção mostra as melhores reviews do ginásio no Google, obtidas pela Places API. A Google devolve no máximo 5 reviews (escolhidas por relevância); o site mostra as que têm a classificação mínima definida. Se nenhuma se qualificar, a secção fica escondida.
= htmlspecialchars($p['id']) ?>Por configurar — a secção não aparece no site.
Última atualização: = !empty($cache['fetched_at']) ? date('d/m/Y H:i', (int) $cache['fetched_at']) : '—' ?> · = htmlspecialchars(number_format((float) $cache['rating'], 1, ',', '')) ?> ★ em = (int) ($cache['total'] ?? 0) ?> avaliações
No site aparecem = count($preview['reviews']) ?>:
Nenhuma review qualifica neste momento — a secção está escondida.