| 1 |
<?php |
| 2 |
|
| 3 |
defined( 'ABSPATH' ) || exit; |
| 4 |
|
| 5 |
/** |
| 6 |
* Module Name: Map |
| 7 |
* Description: Display Map |
| 8 |
*/ |
| 9 |
|
| 10 |
class TB_Map_Module extends Themify_Builder_Component_Module { |
| 11 |
|
| 12 |
|
| 13 |
public static function get_module_name():string{ |
| 14 |
add_filter( 'themify_builder_active_vars', array(__CLASS__, 'check_map_api')); |
| 15 |
return __('Map', 'themify'); |
| 16 |
} |
| 17 |
|
| 18 |
public static function get_module_icon():string{ |
| 19 |
return 'map-alt'; |
| 20 |
} |
| 21 |
|
| 22 |
/** |
| 23 |
* Handles Ajax request to check map api |
| 24 |
* |
| 25 |
* @since 4.5.0 |
| 26 |
*/ |
| 27 |
public static function check_map_api($values) { |
| 28 |
$googleAPI = themify_builder_get( 'setting-google_map_key', 'builder_settings_google_map_key' ); |
| 29 |
$values['google_api'] = !empty($googleAPI); |
| 30 |
$url = themify_is_themify_theme() ? admin_url( 'admin.php?page=themify#setting-integration-api' ) : admin_url( 'admin.php?page=themify-builder&tab=builder_settings' ); |
| 31 |
if(!$values['google_api']) { |
| 32 |
$values['google_api_err'] = sprintf( __('Please enter the required <a href="%s" target="_blank">Google Maps API key</a>.','themify'), $url ); |
| 33 |
} |
| 34 |
|
| 35 |
$bingAPI = themify_builder_get( 'setting-bing_map_key', 'builder_settings_bing_map_key' ); |
| 36 |
$values['bing_api'] = !empty($bingAPI); |
| 37 |
if(!$values['bing_api']) { |
| 38 |
$values['bing_api_err'] = sprintf( __('Please enter the required <a href="%s" target="_blank">Bing Maps API key</a>.','themify'), $url ); |
| 39 |
} |
| 40 |
|
| 41 |
$azure_key = themify_builder_get( 'setting-azure_map_key', 'builder_settings_azure_map_key' ); |
| 42 |
$values['azure_api'] = !empty( $azure_key ); |
| 43 |
if ( ! $values['azure_api'] ) { |
| 44 |
$values['azure_api_err'] = sprintf( __('Please enter the required <a href="%s" target="_blank">Azure subscription key</a>.','themify'), $url ); |
| 45 |
} |
| 46 |
|
| 47 |
return $values; |
| 48 |
} |
| 49 |
|
| 50 |
|
| 51 |
/** |
| 52 |
* Render plain content |
| 53 |
*/ |
| 54 |
public static function get_static_content(array $module):string { |
| 55 |
$mod_settings = $module['mod_settings']+array( |
| 56 |
'mod_title_map' => '', |
| 57 |
'address_map' => 'Toronto', |
| 58 |
'zoom_map' => 15 |
| 59 |
); |
| 60 |
if (!empty($mod_settings['address_map'])) { |
| 61 |
$mod_settings['address_map'] = preg_replace('/\s+/', ' ', trim($mod_settings['address_map'])); |
| 62 |
} |
| 63 |
$text = sprintf('<h3>%s</h3>', $mod_settings['mod_title_map']); |
| 64 |
$text .= sprintf( |
| 65 |
'<iframe frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com/maps?q=%s&t=m&z=%d&output=embed&iwloc=near"></iframe>', urlencode($mod_settings['address_map']), absint($mod_settings['zoom_map']) |
| 66 |
); |
| 67 |
return $text; |
| 68 |
} |
| 69 |
|
| 70 |
public static function get_translatable_text_fields( $module ) : array { |
| 71 |
return [ 'mod_title_map', 'latlong_map' ]; |
| 72 |
} |
| 73 |
|
| 74 |
public static function get_translatable_textarea_fields( $module ) : array { |
| 75 |
return [ 'address_map', 'info_window_map' ]; |
| 76 |
} |
| 77 |
} |