prepare("UPDATE gyms SET google_place_id = ?, updated_at = NOW() WHERE id = ?") ->execute([mb_substr(trim((string) ($_POST['google_place_id'] ?? '')), 0, 120), (int) $rgym['id']]); db_update_setting($pdo, 'google_reviews_min_rating', (string) max(1, min(5, (int) ($_POST['min_rating'] ?? 4))), $uid); db_update_setting($pdo, 'google_reviews_max', (string) max(1, min(5, (int) ($_POST['max'] ?? 3))), $uid); db_update_setting($pdo, 'google_reviews_cache_hours', (string) max(1, (int) ($_POST['cache_hours'] ?? 24)), $uid); $sort = (string) ($_POST['sort'] ?? 'relevance'); db_update_setting($pdo, 'google_reviews_sort', isset(reviews_sort_options()[$sort]) ? $sort : 'relevance', $uid); db_update_setting($pdo, 'google_reviews_photo_only', !empty($_POST['photo_only']) ? '1' : '0', $uid); // Only a new key / place needs a new (billed) fetch; rating, count, sort // and photo filters are applied to the cached 5 at render time. // (setting() is cached per request, so compare with what was posted.) $key_changed = !empty($_POST['clear_key']) || ($key !== '' && $key !== $before['api_key']); $place_changed = trim((string) ($_POST['google_place_id'] ?? '')) !== $before['place_id']; if ($key_changed || $place_changed) reviews_cache_clear(); session()->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'; ?>

Reviews Google

Ver no site

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.

Configuração

Sem chave de encriptação no .env — a chave fica guardada sem encriptação.
Google Cloud Console → ativar «Places API (New)» → Credenciais. Restringe a chave a essa API.
Não sabes? Usa a pesquisa abaixo.
Cada atualização é um pedido pago à Google.
>
A Google não permite pedir reviews ordenadas nem mais do que 5: filtros e ordem aplicam-se às 5 que ela devolve. «Mais úteis» não existe na API — «Mais completas» é a aproximação.

Encontrar o Place ID

Sem resultados.
  • · ★ ()
Depois de «Usar», carrega em Guardar.

Estado

Por configurar — a secção não aparece no site.

Última atualização: · ★ em avaliações

Último erro:

No site aparecem :

· ·

Nenhuma review qualifica neste momento — a secção está escondida.