Files
torebki-fabiola.pl/wp-content/plugins/mapster-wp-maps/admin/class-mapster-wordpress-maps-admin.php
2026-03-05 13:07:40 +01:00

1325 lines
55 KiB
PHP

<?php
/**
* The admin-specific functionality of the plugin.
*
* @link https://mapster.me
* @since 1.0.0
*
* @package Mapster_Wordpress_Maps
* @subpackage Mapster_Wordpress_Maps/admin
*/
/**
* The admin-specific functionality of the plugin.
*
* Defines the plugin name, version, and two examples hooks for how to
* enqueue the admin-specific stylesheet and JavaScript.
*
* @package Mapster_Wordpress_Maps
* @subpackage Mapster_Wordpress_Maps/admin
* @author Mapster Technology Inc <hello@mapster.me>
*/
class Mapster_Wordpress_Maps_Admin
{
/**
* The ID of this plugin.
*
* @since 1.0.0
* @access private
* @var string $plugin_name The ID of this plugin.
*/
private $plugin_name ;
/**
* The version of this plugin.
*
* @since 1.0.0
* @access private
* @var string $version The current version of this plugin.
*/
private $version ;
/**
* Initialize the class and set its properties.
*
* @since 1.0.0
* @param string $plugin_name The name of this plugin.
* @param string $version The version of this plugin.
*/
public function __construct( $plugin_name, $version )
{
$this->plugin_name = $plugin_name;
$this->version = $version;
}
/**
* ACF loading and integration
*
* @since 1.0.0
*/
public function mapster_load_acf()
{
if ( !class_exists( 'ACF' ) ) {
include_once plugin_dir_path( __FILE__ ) . '../includes/acf/acf.php';
add_filter( 'acf/settings/url', 'my_acf_settings_url' );
function my_acf_settings_url( $url )
{
return plugin_dir_url( __FILE__ ) . '../includes/acf/';
}
if ( !MAPSTER_LOCAL_TESTING ) {
add_filter( 'acf/settings/show_admin', 'my_acf_settings_show_admin' );
function my_acf_settings_show_admin( $show_admin )
{
if ( is_plugin_active( 'advanced-custom-fields/acf.php' ) || is_plugin_active( 'advanced-custom-fields-pro/acf.php' ) ) {
return true;
} else {
return false;
}
}
}
}
include_once plugin_dir_path( __FILE__ ) . '../includes/acf-mapster-map/acf-mapster-map.php';
include_once plugin_dir_path( __FILE__ ) . '../includes/acf-photo-gallery-field/navz-photo-gallery.php';
if ( !MAPSTER_LOCAL_TESTING ) {
include_once plugin_dir_path( __FILE__ ) . '../admin/includes/acf-map-fields.php';
}
}
/**
* Register the stylesheets for the admin area.
*
* @since 1.0.0
*/
public function enqueue_styles()
{
wp_enqueue_style( 'wp-pointer' );
$current_screen = get_current_screen();
if ( $current_screen->id == "mapster-wp-map_page_wordpress-maps-settings" ) {
wp_enqueue_style(
'mapster_map_settings',
plugin_dir_url( __FILE__ ) . "css/mapster-wordpress-settings.css",
array(),
$this->version
);
}
if ( $current_screen->id === "mapster-wp-popup" ) {
wp_enqueue_style(
$this->plugin_name . '-popup',
plugin_dir_url( __FILE__ ) . "css/dist/mwp-popup.css",
array(),
$this->version
);
}
wp_enqueue_style(
"mapster_general_admin",
plugin_dir_url( __FILE__ ) . 'css/mapster-general-admin.css',
array(),
$this->version,
'all'
);
}
/**
* Get the right delimiter for all permalink types
*
* @since 1.0.0
*/
function mapster_get_rest_url_delimiter()
{
$qd = '?';
$rest_url = get_rest_url();
if ( str_contains( $rest_url, '?' ) ) {
$qd = '&';
}
return $qd;
}
/**
* Register the JavaScript for the admin area.
*
* @since 1.0.0
*/
public function enqueue_scripts( $hook_suffix )
{
wp_enqueue_script( 'wp-pointer' );
wp_register_script(
'mapster_map_tutorial',
plugin_dir_url( __FILE__ ) . "js/mapster-wordpress-maps-tutorial.js",
array( 'quicktags', 'wp-pointer' ),
$this->version,
true
);
wp_localize_script( 'mapster_map_tutorial', 'mapster_tutorial', array(
'tutorial' => get_option( 'mapster_tutorial' ),
'nonce' => wp_create_nonce( 'wp_rest' ),
'rest_url' => get_rest_url(),
'qd' => $this->mapster_get_rest_url_delimiter(),
) );
wp_enqueue_script( 'mapster_map_tutorial' );
$current_screen = get_current_screen();
$i18n = new Mapster_Wordpress_Maps_i18n();
if ( $current_screen->id == "mapster-wp-map" ) {
$settings_page_id = get_option( 'mapster_settings_page' );
$access_token = get_field( 'default_access_token', $settings_page_id );
$default_latitude = get_field( 'pro_default_map_view_default_latitude', $settings_page_id );
$default_longitude = get_field( 'pro_default_map_view_default_longitude', $settings_page_id );
$default_zoom = get_field( 'pro_default_map_view_default_zoom', $settings_page_id );
$injectedParams = array(
'strings' => $i18n->get_mapster_strings()['admin_js'],
'public' => false,
'activated' => ( mwm_fs()->can_use_premium_code() ? '1' : '0' ),
'rest_url' => get_rest_url(),
'qd' => $this->mapster_get_rest_url_delimiter(),
'directory' => plugin_dir_url( __FILE__ ),
'mapbox_access_token' => $access_token,
'mapster_default_lat' => $default_latitude,
'mapster_default_lng' => $default_longitude,
'mapster_default_zoom' => $default_zoom,
);
// register & include JS
global $post ;
$map_type = get_field( 'map_type', $post->ID );
$map_provider = ( $map_type && $map_type['map_provider'] ? $map_type['map_provider'] : "maplibre" );
$model_3d_library = get_field( 'load_3d_model_libraries', $post->ID );
$elevation_chart_enabled = get_field( 'elevation_line_chart_enable_elevation_chart', $post->ID );
$store_locator_enabled = ( get_field( 'list', $post->ID ) ? get_field( 'list', $post->ID )['store_locator_options']['enable'] : false );
$last_dependency = 'jquery';
if ( MAPSTER_LOCAL_TESTING ) {
$this->mapster_wordpress_maps_script_loading_dev(
$last_dependency,
$map_provider,
$settings_page_id,
$model_3d_library,
$elevation_chart_enabled,
$store_locator_enabled,
$injectedParams
);
} else {
$scripts_to_load = "";
if ( $map_provider === 'maplibre' || $map_provider === 'custom-image' ) {
$scripts_to_load = "maplibre-geocoding-mwp";
}
if ( $map_provider === 'mapbox' ) {
$scripts_to_load = "mapbox-geocoding-mwp";
}
if ( $map_provider === 'google-maps' ) {
$google_api_key = get_field( 'google_maps_api_key', $settings_page_id );
wp_enqueue_script(
'mapster_map_' . $map_provider,
"https://maps.googleapis.com/maps/api/js?key=" . $google_api_key . "&libraries=places",
array( $last_dependency ),
$this->version
);
$last_dependency = 'mapster_map_' . $map_provider;
$scripts_to_load = "google-mwp";
}
if ( $store_locator_enabled ) {
wp_enqueue_style( 'mapster_map_store_locator' );
}
wp_register_script(
$this->plugin_name,
plugin_dir_url( __FILE__ ) . '../admin/js/dist/compiled/' . $scripts_to_load . '.js',
array( $last_dependency ),
$this->version,
true
);
wp_localize_script( $this->plugin_name, 'mapster_params', $injectedParams );
wp_enqueue_script( $this->plugin_name );
wp_register_style(
$this->plugin_name,
plugin_dir_url( __FILE__ ) . '../public/css/dist/' . $scripts_to_load . '.css',
array(),
$this->version,
'all'
);
wp_enqueue_style( $this->plugin_name );
}
}
if ( $current_screen->id == "mapster-wp-map_page_wordpress-maps-settings" ) {
$settings_page_id = get_option( 'mapster_settings_page' );
if ( MAPSTER_LOCAL_TESTING ) {
wp_register_script(
'turf',
plugin_dir_url( __FILE__ ) . '../admin/js/vendor/turf.js',
array( 'jquery' ),
$this->version,
false
);
wp_register_script(
'csvtojson',
plugin_dir_url( __FILE__ ) . '../admin/js/vendor/csvtojson.min.js',
array( 'turf' ),
$this->version,
false
);
wp_register_script(
'togeojson',
plugin_dir_url( __FILE__ ) . '../admin/js/vendor/togeojson.js',
array( 'csvtojson' ),
$this->version,
false
);
wp_register_script(
'proj4',
plugin_dir_url( __FILE__ ) . '../admin/js/vendor/proj4.js',
array( 'togeojson' ),
$this->version,
false
);
wp_register_script(
'shp',
plugin_dir_url( __FILE__ ) . '../admin/js/vendor/shp.js',
array( 'proj4' ),
$this->version,
false
);
wp_register_script(
'mapster_map_settings_js',
plugin_dir_url( __FILE__ ) . '../admin/js/mapster-wordpress-maps-settings.js',
array( 'shp' ),
$this->version,
false
);
} else {
wp_register_script(
'mapster_map_settings_js',
plugin_dir_url( __FILE__ ) . '../admin/js/dist/mwp-settings.js',
array( 'jquery' ),
$this->version,
false
);
}
wp_localize_script( 'mapster_map_settings_js', 'mapster_settings', array(
'strings' => $i18n->get_mapster_strings()['settings_js'],
'mapbox_username' => get_field( 'mapbox_username', $settings_page_id ),
'mapbox_secret_token' => get_field( 'mapbox_secret_token', $settings_page_id ),
'rest_url' => get_rest_url(),
'qd' => $this->mapster_get_rest_url_delimiter(),
'tutorial' => get_option( 'mapster_tutorial' ),
'nonce' => wp_create_nonce( 'wp_rest' ),
) );
wp_enqueue_script( 'mapster_map_settings_js' );
}
if ( $current_screen->id == "mapster-wp-popup" ) {
wp_enqueue_script(
$this->plugin_name . '-popup',
plugin_dir_url( __FILE__ ) . '/js/dist/mwp-popup.js',
array( 'acf-input' ),
$this->version
);
}
if ( $current_screen->id == "edit-mapster-wp-user-sub" || $current_screen->id == "edit-mapster-wp-popup" || $current_screen->id == "edit-mapster-wp-map" || $current_screen->id == "edit-mapster-wp-location" || $current_screen->id == "edit-mapster-wp-line" || $current_screen->id == "edit-mapster-wp-polygon" ) {
wp_register_script(
$this->plugin_name . '-general',
plugin_dir_url( __FILE__ ) . '/js/mapster-wordpress-maps-general.js',
array( 'quicktags' ),
$this->version,
true
);
wp_localize_script( $this->plugin_name . '-general', 'mapster_general', array(
'rest_url' => get_rest_url(),
'qd' => $this->mapster_get_rest_url_delimiter(),
'nonce' => wp_create_nonce( 'wp_rest' ),
) );
wp_enqueue_script( $this->plugin_name . '-general' );
}
}
/**
* Strictly for faster testing during development
*
* @since 1.0.0
*/
public function mapster_wordpress_maps_script_loading_dev(
$last_dependency,
$map_provider,
$settings_page_id,
$model_3d_library,
$elevation_chart_enabled,
$store_locator_enabled,
$injectedParams
)
{
wp_register_style(
'mapster_map_mapbox_css',
plugin_dir_url( __FILE__ ) . "../admin/css/vendor/mapbox-gl-2.9.1.css",
array(),
$this->version
);
wp_register_style(
'mapster_map_maplibre_css',
plugin_dir_url( __FILE__ ) . "../admin/css/vendor/maplibre-1.15.2.css",
array(),
$this->version
);
wp_register_style(
'mapster_map_directions_css',
plugin_dir_url( __FILE__ ) . "../admin/css/vendor/directions.css",
array(),
$this->version
);
wp_register_style(
'mapster_map_geocoder_css',
plugin_dir_url( __FILE__ ) . "../admin/css/vendor/mapbox-gl-geocoder-4.7.2.css",
array(),
$this->version
);
wp_register_style(
$this->plugin_name,
plugin_dir_url( __FILE__ ) . '../admin/css/mapster-wordpress-maps.css',
array(),
$this->version,
'all'
);
wp_register_style(
'mapster_map_public_css',
plugin_dir_url( __FILE__ ) . 'css/mapster-wordpress-maps-public.css',
array(),
$this->version,
'all'
);
wp_register_style(
'mapster_map_threebox_css',
plugin_dir_url( __FILE__ ) . "../admin/css/vendor/threebox.css",
array(),
$this->version
);
if ( $map_provider === 'maplibre' || $map_provider === 'custom-image' ) {
wp_enqueue_script(
'mapster_map_' . $map_provider,
plugin_dir_url( __FILE__ ) . "../admin/js/vendor/maplibre-1.15.2.js",
array( $last_dependency ),
$this->version
);
wp_enqueue_style( "mapster_map_maplibre_css" );
$last_dependency = 'mapster_map_' . $map_provider;
}
if ( $map_provider === 'mapbox' ) {
wp_enqueue_script(
'mapster_map_' . $map_provider,
plugin_dir_url( __FILE__ ) . "../admin/js/vendor/mapbox-gl-2.9.1.js",
array( $last_dependency ),
$this->version
);
wp_enqueue_style( "mapster_map_" . $map_provider . "_css" );
$last_dependency = 'mapster_map_' . $map_provider;
}
if ( $map_provider === 'google-maps' ) {
$google_api_key = get_field( 'google_maps_api_key', $settings_page_id );
wp_enqueue_script(
'mapster_map_' . $map_provider,
"https://maps.googleapis.com/maps/api/js?key=" . $google_api_key . "&libraries=places",
array( $last_dependency ),
$this->version
);
wp_enqueue_style( "mapster_map_" . $map_provider . "_css" );
$last_dependency = 'mapster_map_' . $map_provider;
}
wp_enqueue_script(
'mapster_map_turf',
plugin_dir_url( __FILE__ ) . "../admin/js/vendor/custom-turf.js",
array( $last_dependency ),
$this->version
);
$last_dependency = 'mapster_map_turf';
wp_enqueue_style( "mapster_map_directions_css" );
wp_enqueue_script(
'mapster_map_directions_js',
plugin_dir_url( __FILE__ ) . "../admin/js/vendor/mapbox-gl-directions-4.1.0.js",
array( $last_dependency ),
$this->version
);
$last_dependency = 'mapster_map_directions_js';
wp_enqueue_style( "mapster_map_geocoder_css" );
wp_enqueue_script(
'mapster_map_geocoder_js',
plugin_dir_url( __FILE__ ) . "../admin/js/vendor/mapbox-gl-geocoder-4.7.2.js",
array( $last_dependency ),
$this->version
);
$last_dependency = 'mapster_map_geocoder_js';
if ( $model_3d_library ) {
wp_enqueue_style( "mapster_map_threebox_css" );
wp_enqueue_script(
'mapster_map_threebox_js',
plugin_dir_url( __FILE__ ) . "../admin/js/vendor/threebox.min.js",
array( $last_dependency ),
$this->version
);
$last_dependency = 'mapster_map_threebox_js';
}
if ( $elevation_chart_enabled ) {
wp_enqueue_script(
'mapster_map_chart_js',
plugin_dir_url( __FILE__ ) . "../admin/js/vendor/chart.min.js",
array( $last_dependency ),
$this->version
);
$last_dependency = 'mapster_map_chart_js';
}
if ( $store_locator_enabled ) {
wp_enqueue_style( 'mapster_map_store_locator' );
}
wp_enqueue_script(
$this->plugin_name . "-ElevationControl",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/controls/ElevationControl.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-ElevationControl";
wp_enqueue_script(
$this->plugin_name . "-StyleControl",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/controls/StyleControl.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-StyleControl";
wp_enqueue_script(
$this->plugin_name . "-LayerControl",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/controls/LayerControl.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-LayerControl";
wp_enqueue_script(
$this->plugin_name . "-CustomHTMLControl",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/controls/CustomHTMLControl.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-CustomHTMLControl";
wp_enqueue_script(
$this->plugin_name . "-DownloadControl",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/controls/DownloadControl.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-DownloadControl";
wp_enqueue_script(
$this->plugin_name . "-CategoryControl",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/controls/CategoryControl.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-CategoryControl";
wp_enqueue_script(
$this->plugin_name . "-ListControl",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/controls/ListControl.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-ListControl";
wp_enqueue_script(
$this->plugin_name . "-PitchToggle",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/controls/PitchToggle.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-PitchToggle";
wp_enqueue_script(
$this->plugin_name . "-constants",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/MapsterConstants.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-constants";
wp_enqueue_script(
$this->plugin_name . "-helpers",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/MapsterHelpers.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-helpers";
wp_enqueue_script(
$this->plugin_name . "-core",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/MapsterCore.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-core";
wp_enqueue_script(
$this->plugin_name . "-container",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/MapsterContainer.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-container";
wp_enqueue_script(
$this->plugin_name . "-map",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/MapsterMap.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-map";
wp_register_script(
$this->plugin_name . "-main-js",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/MapsterLoader.js',
array( $last_dependency ),
$this->version,
true
);
if ( $map_provider == 'google-maps' ) {
wp_enqueue_script(
$this->plugin_name . "-google-label",
plugin_dir_url( __FILE__ ) . '../admin/js/vendor/google-maps-label.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-google-label";
wp_enqueue_script(
$this->plugin_name . "-google-clustering",
plugin_dir_url( __FILE__ ) . '../admin/js/vendor/google-maps-clustering.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-google-clustering";
wp_enqueue_script(
$this->plugin_name . "-google-category-control",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/google/CategoryControlGoogle.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-google-category-control";
wp_enqueue_script(
$this->plugin_name . "-google-list-control",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/google/ListControlGoogle.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-google-list-control";
wp_enqueue_script(
$this->plugin_name . "-core-google",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/google/MapsterCoreGoogle.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-core-google";
wp_enqueue_script(
$this->plugin_name . "-helpers-google",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/google/MapsterHelpersGoogle.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-helpers-google";
wp_enqueue_script(
$this->plugin_name . "-map-google",
plugin_dir_url( __FILE__ ) . '../admin/js/dev/google/MapsterMapGoogle.js',
array( $last_dependency ),
$this->version
);
$last_dependency = $this->plugin_name . "-map-google";
}
wp_enqueue_style( $this->plugin_name );
wp_localize_script( $this->plugin_name . "-main-js", 'mapster_params', $injectedParams );
wp_enqueue_script( $this->plugin_name . "-main-js" );
if ( $map_provider == 'google-maps' ) {
wp_enqueue_script( $this->plugin_name . "-google" );
}
wp_enqueue_script( $this->plugin_name );
}
/**
* Create Mapster Wordpress Maps post type
*
* @since 1.0.0
*/
public function create_mapster_wp_maps_post_types()
{
$i18n = new Mapster_Wordpress_Maps_i18n();
$settings_page_id = get_option( 'mapster_settings_page' );
if ( $settings_page_id ) {
$public_pages = get_field( 'public_pages', $settings_page_id );
$permalinks = get_field( 'permalinks', $settings_page_id );
}
register_post_type( 'mapster-wp-map', array(
'labels' => array(
'name' => $i18n->get_mapster_strings()['admin']['Maps'],
'menu_name' => $i18n->get_mapster_strings()['admin']['Maps'],
'singular_name' => $i18n->get_mapster_strings()['admin']['Map'],
'add_new' => $i18n->get_mapster_strings()['admin']['Add New'],
'add_new_item' => $i18n->get_mapster_strings()['admin']['Add New Map'],
'edit' => $i18n->get_mapster_strings()['admin']['Edit'],
'edit_item' => $i18n->get_mapster_strings()['admin']['Edit Map'],
'new_item' => $i18n->get_mapster_strings()['admin']['New Map'],
'view' => $i18n->get_mapster_strings()['admin']['View'],
'view_item' => $i18n->get_mapster_strings()['admin']['View Map'],
'search_items' => $i18n->get_mapster_strings()['admin']['Search Map'],
'not_found' => $i18n->get_mapster_strings()['admin']['No Map found'],
'not_found_in_trash' => $i18n->get_mapster_strings()['admin']['No Map found in Trash'],
'parent' => $i18n->get_mapster_strings()['admin']['Parent Map'],
),
'menu_icon' => "dashicons-location-alt",
'public' => true,
"publicly_queryable" => ( $public_pages['maps'] ? true : false ),
'exclude_from_search' => false,
'show_in_rest' => true,
'menu_position' => 15,
'rewrite' => ( isset( $permalinks['maps'] ) ? array(
'slug' => $permalinks['maps'],
) : array() ),
'supports' => array(
'title',
'thumbnail',
'editor',
'excerpt',
'custom-fields'
),
'taxonomies' => array( 'wp-map-category' ),
'has_archive' => true,
) );
register_taxonomy( 'wp-map-category', 'mapster-wp-map', array(
'hierarchical' => true,
'show_in_rest' => true,
'label' => $i18n->get_mapster_strings()['admin']['Map Categories'],
'query_var' => true,
'show_admin_column' => true,
) );
register_post_type( 'mapster-wp-location', array(
'labels' => array(
'name' => $i18n->get_mapster_strings()['admin']['Locations'],
'menu_name' => $i18n->get_mapster_strings()['admin']['Locations'],
'singular_name' => $i18n->get_mapster_strings()['admin']['Location'],
'add_new' => $i18n->get_mapster_strings()['admin']['Add New'],
'add_new_item' => $i18n->get_mapster_strings()['admin']['Add New Location'],
'edit' => $i18n->get_mapster_strings()['admin']['Edit'],
'edit_item' => $i18n->get_mapster_strings()['admin']['Edit Location'],
'new_item' => $i18n->get_mapster_strings()['admin']['New Location'],
'view' => $i18n->get_mapster_strings()['admin']['View'],
'view_item' => $i18n->get_mapster_strings()['admin']['View Location'],
'search_items' => $i18n->get_mapster_strings()['admin']['Search Location'],
'not_found' => $i18n->get_mapster_strings()['admin']['No Location found'],
'not_found_in_trash' => $i18n->get_mapster_strings()['admin']['No Location found in Trash'],
'parent' => $i18n->get_mapster_strings()['admin']['Parent Location'],
),
'public' => true,
"publicly_queryable" => ( $public_pages['locations'] ? true : false ),
'exclude_from_search' => false,
'show_in_rest' => true,
'menu_position' => 15,
'supports' => array(
'title',
'editor',
'excerpt',
'custom-fields'
),
'taxonomies' => array( 'wp-map-category' ),
'rewrite' => ( isset( $permalinks['locations'] ) ? array(
'slug' => $permalinks['locations'],
) : array() ),
'has_archive' => true,
'show_in_menu' => 'edit.php?post_type=mapster-wp-map',
) );
register_post_type( 'mapster-wp-line', array(
'labels' => array(
'name' => $i18n->get_mapster_strings()['admin']['Lines'],
'menu_name' => $i18n->get_mapster_strings()['admin']['Lines'],
'singular_name' => $i18n->get_mapster_strings()['admin']['Line'],
'add_new' => $i18n->get_mapster_strings()['admin']['Add New'],
'add_new_item' => $i18n->get_mapster_strings()['admin']['Add New Line'],
'edit' => $i18n->get_mapster_strings()['admin']['Edit'],
'edit_item' => $i18n->get_mapster_strings()['admin']['Edit Line'],
'new_item' => $i18n->get_mapster_strings()['admin']['New Line'],
'view' => $i18n->get_mapster_strings()['admin']['View'],
'view_item' => $i18n->get_mapster_strings()['admin']['View Line'],
'search_items' => $i18n->get_mapster_strings()['admin']['Search Line'],
'not_found' => $i18n->get_mapster_strings()['admin']['No Line found'],
'not_found_in_trash' => $i18n->get_mapster_strings()['admin']['No Line found in Trash'],
'parent' => $i18n->get_mapster_strings()['admin']['Parent Line'],
),
'public' => true,
"publicly_queryable" => ( $public_pages['lines'] ? true : false ),
'exclude_from_search' => false,
'show_in_rest' => true,
'menu_position' => 15,
'supports' => array(
'title',
'editor',
'excerpt',
'custom-fields'
),
'taxonomies' => array( 'wp-map-category' ),
'rewrite' => ( isset( $permalinks['lines'] ) ? array(
'slug' => $permalinks['lines'],
) : array() ),
'has_archive' => true,
'show_in_menu' => 'edit.php?post_type=mapster-wp-map',
) );
register_post_type( 'mapster-wp-polygon', array(
'labels' => array(
'name' => $i18n->get_mapster_strings()['admin']['Polygons'],
'menu_name' => $i18n->get_mapster_strings()['admin']['Polygons'],
'singular_name' => $i18n->get_mapster_strings()['admin']['Polygon'],
'add_new' => $i18n->get_mapster_strings()['admin']['Add New'],
'add_new_item' => $i18n->get_mapster_strings()['admin']['Add New Polygon'],
'edit' => $i18n->get_mapster_strings()['admin']['Edit'],
'edit_item' => $i18n->get_mapster_strings()['admin']['Edit Polygon'],
'new_item' => $i18n->get_mapster_strings()['admin']['New Polygon'],
'view' => $i18n->get_mapster_strings()['admin']['View'],
'view_item' => $i18n->get_mapster_strings()['admin']['View Polygon'],
'search_items' => $i18n->get_mapster_strings()['admin']['Search Polygon'],
'not_found' => $i18n->get_mapster_strings()['admin']['No Polygon found'],
'not_found_in_trash' => $i18n->get_mapster_strings()['admin']['No Polygon found in Trash'],
'parent' => $i18n->get_mapster_strings()['admin']['Parent Polygon'],
),
'public' => true,
"publicly_queryable" => ( $public_pages['polygons'] ? true : false ),
'exclude_from_search' => false,
'show_in_rest' => true,
'menu_position' => 15,
'supports' => array(
'title',
'editor',
'excerpt',
'custom-fields'
),
'taxonomies' => array( 'wp-map-category' ),
'rewrite' => ( isset( $permalinks['polygons'] ) ? array(
'slug' => $permalinks['polygons'],
) : array() ),
'has_archive' => true,
'show_in_menu' => 'edit.php?post_type=mapster-wp-map',
) );
register_post_type( 'mapster-wp-popup', array(
'labels' => array(
'name' => $i18n->get_mapster_strings()['admin']['Popup Templates'],
'menu_name' => $i18n->get_mapster_strings()['admin']['Popup Templates'],
'singular_name' => $i18n->get_mapster_strings()['admin']['Popup Template'],
'add_new' => $i18n->get_mapster_strings()['admin']['Add New'],
'add_new_item' => $i18n->get_mapster_strings()['admin']['Add New Popup Template'],
'edit' => $i18n->get_mapster_strings()['admin']['Edit'],
'edit_item' => $i18n->get_mapster_strings()['admin']['Edit Popup Template'],
'new_item' => $i18n->get_mapster_strings()['admin']['New Popup Template'],
'view' => $i18n->get_mapster_strings()['admin']['View'],
'view_item' => $i18n->get_mapster_strings()['admin']['View Popup Template'],
'search_items' => $i18n->get_mapster_strings()['admin']['Search Popup Template'],
'not_found' => $i18n->get_mapster_strings()['admin']['No Popup Template found'],
'not_found_in_trash' => $i18n->get_mapster_strings()['admin']['No Popup Template found in Trash'],
'parent' => $i18n->get_mapster_strings()['admin']['Parent Popup Template'],
),
'public' => true,
"publicly_queryable" => false,
'exclude_from_search' => false,
'show_in_rest' => true,
'menu_position' => 15,
'supports' => array( 'title', 'custom-fields' ),
'taxonomies' => array( '' ),
'has_archive' => true,
'show_in_menu' => 'edit.php?post_type=mapster-wp-map',
) );
register_post_type( 'mapster-wp-settings', array(
'labels' => array(
'name' => $i18n->get_mapster_strings()['admin']['Mapster Settings'],
'menu_name' => $i18n->get_mapster_strings()['admin']['Mapster Settings'],
'singular_name' => $i18n->get_mapster_strings()['admin']['Mapster Settings'],
'add_new' => $i18n->get_mapster_strings()['admin']['Add New'],
'add_new_item' => $i18n->get_mapster_strings()['admin']['Add New Mapster Settings'],
'edit' => $i18n->get_mapster_strings()['admin']['Edit'],
'edit_item' => $i18n->get_mapster_strings()['admin']['Edit Mapster Settings'],
'new_item' => $i18n->get_mapster_strings()['admin']['New Mapster Settings'],
'view' => $i18n->get_mapster_strings()['admin']['View'],
'view_item' => $i18n->get_mapster_strings()['admin']['View Mapster Settings'],
'search_items' => $i18n->get_mapster_strings()['admin']['Search Mapster Settings'],
'not_found' => $i18n->get_mapster_strings()['admin']['No Mapster Settings found'],
'not_found_in_trash' => $i18n->get_mapster_strings()['admin']['No Mapster Settings found in Trash'],
'parent' => $i18n->get_mapster_strings()['admin']['Parent Mapster Settings'],
),
'public' => true,
"publicly_queryable" => false,
'exclude_from_search' => true,
'show_in_rest' => false,
'supports' => array( 'custom-fields' ),
'taxonomies' => array( '' ),
'has_archive' => false,
'show_in_menu' => false,
) );
$settings_page_id = get_option( 'mapster_settings_page' );
if ( $settings_page_id ) {
$user_submission = get_field( 'pro_mwm_user_submission', $settings_page_id );
if ( $user_submission ) {
}
}
$set = get_option( 'post_type_rules_flushed_mapster_wp_maps' );
if ( $set !== true ) {
flush_rewrite_rules( false );
update_option( 'post_type_rules_flushed_mapster_wp_maps', true );
}
}
/**
* Disable gutenberg for custom post types
*
* @since 1.0.0
*/
function mapster_maps_disable_gutenberg( $current_status, $post_type )
{
$mapster_post_types = array(
'mapster-wp-map',
'mapster-wp-line',
'mapster-wp-polygon',
'mapster-wp-location'
);
$settings_page_id = get_option( 'mapster_settings_page' );
$gutenberg_on = get_field( 'gutenberg_editor', $settings_page_id );
if ( !$gutenberg_on && in_array( $post_type, $mapster_post_types ) ) {
$current_status = false;
}
return $current_status;
}
/**
* Add shortcode column to Mapster Map, Locations, Lines, Polygons type
*
* @since 1.0.0
*/
function set_custom_mapster_map_column( $columns )
{
$i18n = new Mapster_Wordpress_Maps_i18n();
unset( $columns['date'] );
$columns['shortcode'] = $i18n->get_mapster_strings()['admin']['Shortcode'];
$columns['date'] = $i18n->get_mapster_strings()['admin']['Date'];
return $columns;
}
/**
* Add shortcode output to Mapster map column
*
* @since 1.0.0
*/
function custom_mapster_map_shortcode_column( $column, $post_id )
{
switch ( $column ) {
case 'shortcode':
echo '[mapster_wp_map id="' . $post_id . '"]' ;
break;
}
}
/**
* Add shortcode column to Locations, Lines, Polygons type
*
* @since 1.0.0
*/
function set_custom_mapster_map_features_column( $columns )
{
$i18n = new Mapster_Wordpress_Maps_i18n();
unset( $columns['date'] );
$columns['shortcode'] = $i18n->get_mapster_strings()['admin']['Shortcode'] . ' <span class="dashicons dashicons-editor-help mapster-shortcode-help"></span><div id="mapster-shortcode-help-text">This shortcode will only show if you have selected a template map or a default template map for this feature.</div>';
$columns['date'] = $i18n->get_mapster_strings()['admin']['Date'];
return $columns;
}
/**
* Add shortcode output to Mapster features column
*
* @since 1.0.0
*/
function custom_mapster_map_features_shortcode_column( $column, $post_id )
{
$output_shortcode = "";
$settings_page_id = get_option( 'mapster_settings_page' );
$base_map = false;
$post_template = get_field( 'field_6264930aed194', $post_id, true );
if ( $post_template ) {
$base_map = $post_template;
}
if ( $base_map ) {
$output_shortcode = '[mapster_wp_map id="' . $base_map . '" single_feature_id="' . $post_id . '"]';
}
switch ( $column ) {
case 'shortcode':
echo $output_shortcode ;
break;
}
}
/**
* Add Mapster Map Metabox for main map editing
*
* @since 1.0.0
*/
public function add_mapster_wp_map_metabox()
{
$i18n = new Mapster_Wordpress_Maps_i18n();
add_meta_box(
'mapster-wp-maps-preview',
$i18n->get_mapster_strings()['admin']['Map Preview'],
'my_meta_box_callback',
'mapster-wp-map',
'normal',
'core',
array(
'__block_editor_compatible_meta_box' => true,
)
);
function my_meta_box_callback()
{
echo '<div id="mapster-wp-maps-map" style="width: 100%; height: 400px;"></div>' ;
}
}
/**
* Register default options
*
* @since 1.0.0
*/
function mapster_set_position_infobox( $priority, $field_group )
{
if ( 'Mapster Help' === $field_group['title'] ) {
$priority = 'high';
}
return $priority;
}
/**
* Register default options
*
* @since 1.0.0
*/
public function add_mapster_wp_maps_default_options()
{
// Create default option
if ( !get_option( 'mapster_settings_page' ) ) {
$settings_page_id = wp_insert_post( array(
'post_type' => "mapster-wp-settings",
) );
update_field( 'public_pages', array(
'maps' => true,
'locations' => true,
'lines' => true,
'polygons' => true,
), $settings_page_id );
update_field( 'pro_mwm_hover_effects', true, $settings_page_id );
update_option( 'mapster_settings_page', $settings_page_id );
}
}
/**
* Add default popup types
*
* @since 1.0.0
*/
function mapster_add_default_popups()
{
$default_popup = get_option( 'mapster_default_popup' );
if ( !$default_popup || !get_post( $default_popup ) ) {
$simple_mapbox = wp_insert_post( array(
'post_title' => "Default",
'post_type' => "mapster-wp-popup",
'post_status' => "publish",
) );
mapster_setDefaults( acf_get_fields( 'group_6169ff23a6e6d' ), $simple_mapbox );
update_field( 'enable_header', false, $simple_mapbox );
update_field( 'enable_image', false, $simple_mapbox );
update_field( 'enable_footer', false, $simple_mapbox );
update_field( 'close_button', true, $simple_mapbox );
update_option( 'mapster_default_popup', $simple_mapbox );
}
$default_image = get_option( 'mapster_default_image_text' );
if ( !$default_image || !get_post( $default_image ) ) {
$default_image_post = wp_insert_post( array(
'post_title' => "Default Thumbnail",
'post_type' => "mapster-wp-popup",
'post_status' => "publish",
) );
mapster_setDefaults( acf_get_fields( 'group_6169ff23a6e6d' ), $default_image_post );
update_field( 'enable_header', false, $default_image_post );
update_field( 'image_height', 100, $default_image_post );
update_field( 'max_width', 150, $default_image_post );
update_field( 'enable_footer', false, $default_image_post );
update_option( 'mapster_default_image_text', $default_image_post );
}
$default_header = get_option( 'mapster_default_header' );
if ( !$default_header || !get_post( $default_header ) ) {
$default_header_post = wp_insert_post( array(
'post_title' => "Default Header",
'post_type' => "mapster-wp-popup",
'post_status' => "publish",
) );
mapster_setDefaults( acf_get_fields( 'group_6169ff23a6e6d' ), $default_header_post );
update_field( 'enable_image', false, $default_header_post );
update_field( 'enable_body', false, $default_header_post );
update_field( 'enable_footer', false, $default_header_post );
update_option( 'mapster_default_header', $default_header_post );
}
}
/**
* Add row action link
*
* @since 1.0.0
*/
public function mapster_wp_maps_row_action_menu( $actions, $post )
{
$i18n = new Mapster_Wordpress_Maps_i18n();
if ( $post->post_type == 'mapster-wp-popup' || $post->post_type == 'mapster-wp-polygon' || $post->post_type == 'mapster-wp-location' || $post->post_type == 'mapster-wp-line' || $post->post_type == 'mapster-wp-map' ) {
$actions['mapster-wp-maps-duplicate'] = '<a id="mapster-' . $post->ID . '" class="mapster-duplicate" href="#">' . $i18n->get_mapster_strings()['admin']['Duplicate'] . '</a>';
}
return $actions;
}
/**
* Create backend menu
*
* @since 1.0.0
*/
public function mapster_wp_maps_settings_menu()
{
$i18n = new Mapster_Wordpress_Maps_i18n();
add_submenu_page(
'edit.php?post_type=mapster-wp-map',
$i18n->get_mapster_strings()['admin']['Categories'],
$i18n->get_mapster_strings()['admin']['Categories'],
'manage_options',
'edit-tags.php?taxonomy=wp-map-category&post_type=mapster-wp-map'
);
add_submenu_page(
'edit.php?post_type=mapster-wp-map',
$i18n->get_mapster_strings()['admin']['Settings'],
$i18n->get_mapster_strings()['admin']['Settings'],
'manage_options',
'wordpress-maps-settings',
function () {
include 'partials/mapster-wordpress-maps-settings-page.php';
}
);
}
/**
* Create custom select block for Gutenberg
*
* @since 1.0.0
*/
public function load_mapster_map_block()
{
wp_register_script(
'mapster-select-map-block',
plugin_dir_url( __FILE__ ) . 'js/blocks/mapster-select-map-block.js',
array( 'wp-blocks', 'wp-editor' ),
true
);
register_block_type( 'mapster/mapster-select-map-block', [
'editor_script' => 'mapster-select-map-block',
'render_callback' => 'render_mapster_select_map_block',
] );
function render_mapster_select_map_block( $attr, $content )
{
if ( !isset( $attr["map_id"] ) ) {
return "<p>Please select a map in the Wordpress editor.</p>";
} else {
$output_shortcode = do_shortcode( '[mapster_wp_map id="' . $attr["map_id"] . '"]' );
return $output_shortcode;
}
}
// wp_register_script(
// 'mapster-create-map-block',
// plugin_dir_url(__FILE__) . 'js/blocks/mapster-create-map-block.js',
// array('wp-blocks','wp-editor'),
// true
// );
// register_block_type('mapster/mapster-create-map-block', [
// 'editor_script' => 'mapster-create-map-block',
// 'render_callback' => 'render_mapster_create_map_block'
// ]);
// function render_mapster_select_map_block($attr, $content) {
// if(!isset($attr["map_id"])) {
// return "<p>Please select a map in the Wordpress editor.</p>";
// } else {
// $output_shortcode = do_shortcode( '[mapster_wp_map id="' . $attr["map_id"] . '"]' );
// return $output_shortcode;
// }
// }
}
/**
* Set ACF Form Head before headers in admin screen
*
* @since 1.0.0
*/
public function mapster_wp_maps_settings_form_init()
{
$current_get_vars = $_GET;
if ( isset( $current_get_vars['post_type'] ) && isset( $current_get_vars['page'] ) && $current_get_vars['post_type'] == 'mapster-wp-map' && $current_get_vars['page'] == 'wordpress-maps-settings' ) {
acf_form_head();
}
}
/**
* Welcome message
*
* @since 1.0.0
*/
function mapster_wp_maps_admin_notice()
{
if ( !get_option( 'mapster_welcome_message' ) ) {
update_option( 'mapster_welcome_message', true );
?>
<div class="notice notice-success is-dismissible">
<img style="width: 50px;margin-top:10px;float:left;margin-right: 10px;" src="<?php
echo plugin_dir_url( __FILE__ ) ;
?>/images/logo-Mapster.png" />
<h2>Thanks for installing Mapster Wordpress Maps!</h2>
<p>We have MapLibre (no API key), Mapbox, and Google Maps available. Head to "Maps" on the left to check it out and get started.</p>
<p><a href="https://wpmaps.mapster.me/documentation" target="_blank">Plugin Documentation</a></p>
</div>
<?php
}
}
/**
* Custom header a la ACF
*
* @since 1.0.0
*/
function mapster_wp_maps_custom_header()
{
$i18n = new Mapster_Wordpress_Maps_i18n();
$current_screen = get_current_screen();
if ( strpos( $current_screen->id, "mapster" ) !== false || strpos( $current_screen->post_type, "mapster" ) !== false ) {
?>
<div class="mapster-admin-toolbar">
<h2><i class="acf-tab-icon dashicons dashicons-location-alt"></i> <?php
echo $i18n->get_mapster_strings()['admin']['Top Menu Header'] ;
?></h2>
<a class="acf-tab <?php
echo ( $current_screen->id == 'edit-mapster-wp-map' || $current_screen->id === 'mapster-wp-map' ? "is-active" : "" ) ;
?>" href="edit.php?post_type=mapster-wp-map"><?php
echo $i18n->get_mapster_strings()['admin']['Maps'] ;
?></a>
<a class="acf-tab <?php
echo ( $current_screen->post_type == 'mapster-wp-location' ? "is-active" : "" ) ;
?>" href="edit.php?post_type=mapster-wp-location"><?php
echo $i18n->get_mapster_strings()['admin']['Locations'] ;
?></a>
<a class="acf-tab <?php
echo ( $current_screen->post_type == 'mapster-wp-line' ? "is-active" : "" ) ;
?>" href="edit.php?post_type=mapster-wp-line"><?php
echo $i18n->get_mapster_strings()['admin']['Lines'] ;
?></a>
<a class="acf-tab <?php
echo ( $current_screen->post_type == 'mapster-wp-polygon' ? "is-active" : "" ) ;
?>" href="edit.php?post_type=mapster-wp-polygon"><?php
echo $i18n->get_mapster_strings()['admin']['Polygons'] ;
?></a>
<a class="acf-tab <?php
echo ( $current_screen->post_type == 'mapster-wp-popup' ? "is-active" : "" ) ;
?>" href="edit.php?post_type=mapster-wp-popup"><?php
echo $i18n->get_mapster_strings()['admin']['Popup Templates'] ;
?></a>
<?php
if ( mwm_fs()->can_use_premium_code() ) {
$settings_page_id = get_option( 'mapster_settings_page' );
if ( $settings_page_id ) {
$user_submission = get_field( 'pro_mwm_user_submission', $settings_page_id );
if ( $user_submission ) {
?>
<a class="acf-tab <?php
echo ( $current_screen->post_type == 'mapster-wp-user-sub' ? "is-active" : "" ) ;
?>" href="edit.php?post_type=mapster-wp-user-sub"><?php
echo $i18n->get_mapster_strings()['admin']['User Submission'] ;
?></a>
<?php
}
}
}
?>
<?php
if ( mwm_fs()->can_use_premium_code() ) {
?>
<a class="acf-tab <?php
echo ( $current_screen->id == 'mapster-wp-map_page_wordpress-maps-mass-edit' ? "is-active" : "" ) ;
?>" href="edit.php?post_type=mapster-wp-map&page=wordpress-maps-mass-edit"><?php
echo $i18n->get_mapster_strings()['admin']['Mass Edit'] ;
?></a>
<?php
}
?>
<a class="acf-tab <?php
echo ( $current_screen->id == 'edit-wp-map-category' ? "is-active" : "" ) ;
?>" href="edit-tags.php?taxonomy=wp-map-category&post_type=mapster-wp-map"><?php
echo $i18n->get_mapster_strings()['admin']['Categories'] ;
?></a>
<a class="acf-tab <?php
echo ( $current_screen->id == 'mapster-wp-map_page_wordpress-maps-settings' || $current_screen->id == 'mapster-wp-map_page_wordpress-maps-settings-pricing' || $current_screen->id == 'mapster-wp-map_page_wordpress-maps-settings-account' ? "is-active" : "" ) ;
?>" href="edit.php?post_type=mapster-wp-map&page=wordpress-maps-settings"><?php
echo $i18n->get_mapster_strings()['admin']['Settings'] ;
?></a>
<?php
if ( !mwm_fs()->can_use_premium_code() ) {
?>
<a target="_blank" href="https://wpmaps.mapster.me/pro" class="btn-upgrade">
<i style="margin-top: 5px;" class="dashicons dashicons-star-filled"></i>
<p><?php
echo $i18n->get_mapster_strings()['admin']['Download Pro'] ;
?></p>
</a>
<?php
}
?>
</div>
<?php
}
}
}