Skip to content

Commit

Permalink
introduce filter acf_osm_force_proxy
Browse files Browse the repository at this point in the history
  • Loading branch information
mcguffin committed Dec 23, 2024
1 parent 3d51423 commit 6c5d1d3
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 30 deletions.
1 change: 1 addition & 0 deletions include/ACFFieldOpenstreetmap/Core/Core.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ protected function __construct( $file ) {
add_action( 'acf/include_field_types', [ '\ACFFieldOpenstreetmap\Compat\ACF', 'instance'], 0 );

add_action( 'init', [ '\ACFFieldOpenstreetmap\Core\Templates', 'instance'] );
add_action( 'init', [ '\ACFFieldOpenstreetmap\Core\MapProxy', 'instance'] );

add_action( 'wp_enqueue_scripts', [ $this, 'register_assets' ] );

Expand Down
10 changes: 1 addition & 9 deletions include/ACFFieldOpenstreetmap/Core/LeafletProviders.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ protected function __construct() {
* @return array
*/
public function get_providers( $filters = [], $unfiltered = false ) {
$core = Core::instance();
$proxies = MapProxy::instance()->get_proxies();

if ( is_null( $this->leaflet_providers ) ) {
$core = Core::instance();
$this->leaflet_providers = json_decode( $core->read_file( 'etc/leaflet-providers.json' ), true );
}

Expand All @@ -52,14 +52,6 @@ public function get_providers( $filters = [], $unfiltered = false ) {
}
}

if ( 'proxied' === $filter ) {

$providers = array_filter( $providers, function( $el, $provider_key ) use ( $proxies ) {
return in_array( $provider_key, $proxies );
}, ARRAY_FILTER_USE_BOTH );

}

if ( 'enabled' === $filter ) {

// remove disabled providers
Expand Down
17 changes: 9 additions & 8 deletions include/ACFFieldOpenstreetmap/Core/MapProxy.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,7 @@ class MapProxy extends Singleton {
*/
protected function __construct() {

$this->proxies = array_keys( array_filter( (array) get_option( 'acf_osm_proxy' ) ) );

if ( count( $this->proxies ) ) {
add_filter('acf_osm_leaflet_providers', [ $this, 'proxify_providers' ], 50 );
}
add_filter( 'acf_osm_leaflet_providers', [ $this, 'proxify_providers' ], 50 );

add_action( 'update_option_acf_osm_provider_tokens', [ $this, 'setup_proxies' ] );
add_action( 'update_option_acf_osm_providers', [ $this, 'setup_proxies' ] );
Expand All @@ -29,6 +25,9 @@ protected function __construct() {
* @return array holding keys of proxied providers
*/
public function get_proxies() {
if ( ! isset( $this->proxies ) ) {
$this->proxies = array_keys( array_filter( (array) get_option( 'acf_osm_proxy' ) ) );
}
return $this->proxies;
}

Expand All @@ -38,11 +37,13 @@ public function get_proxies() {
*/
public function proxify_providers( $providers ) {

$proxies = $this->get_proxies();
$force = apply_filters( 'acf_osm_force_proxy', false );

foreach ( $providers as $provider_key => &$provider ) {
if ( ! in_array( $provider_key, $this->proxies ) ) {
continue;
if ( $force || in_array( $provider_key, $proxies ) ) {
$provider = $this->proxify_provider( $provider_key, $provider );
}
$provider = $this->proxify_provider( $provider_key, $provider );
}

return $providers;
Expand Down
27 changes: 14 additions & 13 deletions include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php
Original file line number Diff line number Diff line change
Expand Up @@ -330,20 +330,21 @@ public function print_provider_setting( $provider_key, $provider_data ) {
esc_html_e( sprintf( __('Disable %s', 'acf-openstreeetmap-field' ), $provider_key ) );
?>
</label>
<?php if ( ! apply_filters( 'acf_osm_force_proxy', false ) ) { ?>
<label class="osm-proxy-option">
<?php

<label class="osm-proxy-option">
<?php

printf('<input class="osm-proxy" type="checkbox" name="%s" value="1" %s />',
sprintf('acf_osm_proxy[%s]',
esc_attr( $provider_key )
),
checked( isset( $proxy_option[$provider_key] ) && $proxy_option[$provider_key], true, false )
);
/* translators: %s map tile provider name */
esc_html_e( sprintf( __('Enable Proxy for %s (beta)', 'acf-openstreeetmap-field' ), $provider_key ) );
?>
</label>
printf('<input class="osm-proxy" type="checkbox" name="%s" value="1" %s />',
sprintf('acf_osm_proxy[%s]',
esc_attr( $provider_key )
),
checked( isset( $proxy_option[$provider_key] ) && $proxy_option[$provider_key], true, false )
);
/* translators: %s map tile provider name */
esc_html_e( sprintf( __('Enable Proxy for %s (beta)', 'acf-openstreeetmap-field' ), $provider_key ) );
?>
</label>
<?php } ?>
</div>
<?php

Expand Down

0 comments on commit 6c5d1d3

Please sign in to comment.