This commit is contained in:
Javier Casares 2026-10-12 13:25:09 +00:00
commit e1f5a47c96
22 changed files with 3155 additions and 0 deletions

View file

@ -0,0 +1,64 @@
<?php
/**
* Single station card template.
*
* @package FontdelboscCombustible
*/
declare( strict_types=1 );
defined( 'ABSPATH' ) || exit;
/**
* Template data.
*
* @var array<string,mixed> $fontdelbosc_data
* @var array<string,mixed> $fontdelbosc_options
*/
$fontdelbosc_station = is_array( $fontdelbosc_data['station'] ?? null ) ? $fontdelbosc_data['station'] : array();
$fontdelbosc_options = Fontdelbosc_Combustible_Data_Manager::options();
$fontdelbosc_brand = Fontdelbosc_Combustible_Payload::str( Fontdelbosc_Combustible_Payload::get( $fontdelbosc_station, 'brand' ) ) ?? '';
$fontdelbosc_muni = Fontdelbosc_Combustible_Payload::str( Fontdelbosc_Combustible_Payload::get( $fontdelbosc_station, 'municipality' ) ) ?? '';
$fontdelbosc_sched = Fontdelbosc_Combustible_Payload::str( Fontdelbosc_Combustible_Payload::get( $fontdelbosc_station, 'schedule' ) ) ?? '';
$fontdelbosc_dist = Fontdelbosc_Combustible_Payload::float( Fontdelbosc_Combustible_Payload::get( $fontdelbosc_station, 'distance' ) );
$fontdelbosc_lat = Fontdelbosc_Combustible_Payload::float( Fontdelbosc_Combustible_Payload::get( $fontdelbosc_station, 'lat' ) );
$fontdelbosc_lon = Fontdelbosc_Combustible_Payload::float( Fontdelbosc_Combustible_Payload::get( $fontdelbosc_station, 'lon' ) );
$fontdelbosc_maps = ( null !== $fontdelbosc_lat && null !== $fontdelbosc_lon )
? 'https://www.google.com/maps/search/?api=1&query=' . rawurlencode( $fontdelbosc_lat . ',' . $fontdelbosc_lon )
: null;
?>
<div class="fdbc-card">
<p class="fdbc-card__brand"><strong><?php echo esc_html( $fontdelbosc_brand ); ?></strong></p>
<p class="fdbc-card__place">
<?php
echo esc_html( $fontdelbosc_muni );
if ( ! empty( $fontdelbosc_options['show_distance'] ) && null !== $fontdelbosc_dist ) {
/* translators: %s: distance in kilometers. */
echo ' ' . esc_html( sprintf( __( '(%s km away)', 'fontdelbosc-combustible' ), number_format_i18n( $fontdelbosc_dist, 1 ) ) );
}
?>
</p>
<?php if ( null !== $fontdelbosc_maps ) : ?>
<p class="fdbc-card__links">
<a class="fdbc-card__map" href="<?php echo esc_url( $fontdelbosc_maps ); ?>" target="_blank" rel="nofollow noopener"><?php esc_html_e( 'Open in Google Maps', 'fontdelbosc-combustible' ); ?></a>
</p>
<?php endif; ?>
<?php if ( ! empty( $fontdelbosc_options['show_schedule'] ) && '' !== $fontdelbosc_sched ) : ?>
<p class="fdbc-card__schedule">
<?php
/* translators: %s: station opening hours. */
echo esc_html( sprintf( __( 'Schedule: %s', 'fontdelbosc-combustible' ), $fontdelbosc_sched ) );
?>
</p>
<?php endif; ?>
<ul class="fdbc-card__prices">
<?php foreach ( Fontdelbosc_Combustible_Payload::arr( Fontdelbosc_Combustible_Payload::get( $fontdelbosc_station, 'selected_prices' ) ) as $fontdelbosc_label => $fontdelbosc_price ) : ?>
<li class="fdbc-card__price">
<span class="fdbc-card__fuel"><?php echo esc_html( Fontdelbosc_Combustible_Fuels::label( (string) $fontdelbosc_label ) ); ?></span>
<span class="fdbc-card__value"><?php echo esc_html( number_format_i18n( Fontdelbosc_Combustible_Payload::float( $fontdelbosc_price ) ?? 0.0, 3 ) ); ?> €/l</span>
</li>
<?php endforeach; ?>
</ul>
</div>

View file

@ -0,0 +1,56 @@
<?php
/**
* Station list template (card grid).
*
* @package FontdelboscCombustible
*/
declare( strict_types=1 );
defined( 'ABSPATH' ) || exit;
/**
* Template data.
*
* @var array{stations:array<int,array<mixed>>,fecha:string,stale:bool,radius:int,fuels:array<int>,fields:array<int,string>} $fontdelbosc_data
*/
?>
<div class="fdbc-list">
<?php if ( array() === $fontdelbosc_data['stations'] ) : ?>
<p class="fdbc-list__empty">
<?php
/* translators: %d: search radius in kilometers. */
echo esc_html( sprintf( __( 'No stations found within %d km.', 'fontdelbosc-combustible' ), $fontdelbosc_data['radius'] ) );
?>
</p>
<?php else : ?>
<ul class="fdbc-list__items">
<?php foreach ( $fontdelbosc_data['stations'] as $fontdelbosc_station ) : ?>
<li class="fdbc-list__item"><?php echo wp_kses_post( Fontdelbosc_Combustible_Shortcode::view( 'station-card', array( 'station' => $fontdelbosc_station ) ) ); ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php if ( '' !== $fontdelbosc_data['fecha'] ) : ?>
<p class="fdbc-list__updated">
<?php
/* translators: %s: data timestamp from the API. */
echo esc_html( sprintf( __( 'Last update: %s', 'fontdelbosc-combustible' ), $fontdelbosc_data['fecha'] ) );
?>
<?php if ( $fontdelbosc_data['stale'] ) : ?>
<em><?php esc_html_e( 'Showing cached data.', 'fontdelbosc-combustible' ); ?></em>
<?php endif; ?>
</p>
<?php elseif ( array() === $fontdelbosc_data['stations'] ) : ?>
<p class="fdbc-list__updated"><?php esc_html_e( 'Data unavailable.', 'fontdelbosc-combustible' ); ?></p>
<?php endif; ?>
<details class="fdbc-list__source">
<summary><?php esc_html_e( 'Source: Ministry of Ecological Transition (MITECO), Spain.', 'fontdelbosc-combustible' ); ?></summary>
<p>
<a href="https://datos.gob.es/es/catalogo/e05068001-precio-de-carburantes-en-las-gasolineras-espanolas" rel="nofollow noopener" target="_blank">
<?php esc_html_e( 'Open data catalog (datos.gob.es)', 'fontdelbosc-combustible' ); ?>
</a>
</p>
</details>
</div>