240 lines
7.1 KiB
PHP
240 lines
7.1 KiB
PHP
<?php
|
|
|
|
if ( is_admin() ) {
|
|
add_action( 'admin_init', 'wpgpxmaps_admin_init' );
|
|
add_action( 'admin_menu', 'wpgpxmaps_admin_menu' );
|
|
}
|
|
|
|
function wpgpxmaps_admin_init() {
|
|
wpgpxmaps_plugin_upgrade();
|
|
|
|
if ( get_site_option( 'wpgpxmaps_show_notice' ) == 1 ) {
|
|
if ( is_multisite() ) {
|
|
add_action( 'network_admin_notices', 'wpgpxmaps_show_update_notice' );
|
|
} else {
|
|
add_action( 'admin_notices', 'wpgpxmaps_show_update_notice' );
|
|
}
|
|
add_action( 'wp_ajax_wpgpxmaps_dismiss_notice', 'wpgpxmaps_dismiss_notice' );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Roles and capabilities
|
|
*
|
|
* Capabilities for each user role that are relevant to this plugin:
|
|
*
|
|
* Admin: Can manage settings. Can show, upload and delete all GPX files.
|
|
* Editor: Can not manage settings. Can show, upload and delete all GPX files.
|
|
* Author: Can not manage settings. Can show, upload and delete his only own files.
|
|
* Contributor: Do not have access to the plugin.
|
|
* Subscriber: Do not have access to the plugin.
|
|
*
|
|
* @see https://wordpress.org/support/article/roles-and-capabilities/
|
|
*/
|
|
function wpgpxmaps_admin_menu() {
|
|
if ( current_user_can( 'manage_options' ) ) {
|
|
// Access only for Super Administrators and Administrators
|
|
add_options_page( 'WP GPX Maps', 'WP GPX Maps', 'manage_options', 'WP-GPX-Maps', 'wpgpxmaps_html_page' );
|
|
} elseif ( current_user_can( 'publish_posts' ) ) {
|
|
// Access for Editors and Authors
|
|
if ( get_option( 'wpgpxmaps_allow_users_upload' ) == 1 ) {
|
|
add_menu_page( 'WP GPX Maps', 'WP GPX Maps', 'publish_posts', 'WP-GPX-Maps', 'wpgpxmaps_html_page' );
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Wrapper for the option 'wpgpxmaps_version'
|
|
*/
|
|
function wpgpxmaps_get_installed_version() {
|
|
return get_option( 'wpgpxmaps_version' );
|
|
}
|
|
|
|
/**
|
|
* Wrapper for the defined constant WPGPXMAPS_CURRENT_VERSION
|
|
*/
|
|
function wpgpxmaps_get_current_version() {
|
|
return WPGPXMAPS_CURRENT_VERSION;
|
|
}
|
|
|
|
/**
|
|
* Plugin upgrade
|
|
*/
|
|
function wpgpxmaps_plugin_upgrade() {
|
|
$installed_version = wpgpxmaps_get_installed_version();
|
|
|
|
if ( wpgpxmaps_get_current_version() == $installed_version ) {
|
|
return;
|
|
}
|
|
|
|
delete_site_option( 'wpgpxmaps_version' );
|
|
update_option( 'wpgpxmaps_version', wpgpxmaps_get_current_version() );
|
|
|
|
delete_option( 'wpgpxmaps_show_notice', 0 );
|
|
update_site_option( 'wpgpxmaps_show_notice', 1 );
|
|
}
|
|
|
|
/**
|
|
* Show the update notice
|
|
*/
|
|
function wpgpxmaps_show_update_notice() {
|
|
if ( ! current_user_can( 'manage_options' ) ) return;
|
|
|
|
?>
|
|
|
|
<div id="wpgpxmaps-notice" class="notice is-dismissible">
|
|
<p>
|
|
<strong>
|
|
<?php echo sprintf(
|
|
/* translators: %1s: Plugin versions number */
|
|
esc_html__( 'What‘s new in WP GPX Maps %1s', 'wp-gpx-maps' ),
|
|
esc_html__(WPGPXMAPS_CURRENT_VERSION)
|
|
) ?>
|
|
|
|
</strong>
|
|
<br/>
|
|
<br/>
|
|
IMPORTANT! this plugin will mifrate to MapBox API.
|
|
<a href="https://console.mapbox.com/account/access-tokens/" target="_blank" rel="noopener noreferrer">
|
|
You need to create an account and get an API key.
|
|
</a>
|
|
This will enable beatifoul 3D maps and more features.
|
|
<em>
|
|
<a href="https://wordpress.org/plugins/wp-gpx-maps/#developers" target="_blank" rel="noopener noreferrer">
|
|
<?php echo esc_html__( 'You can find the complete changelog here.', 'wp-gpx-maps' ) ?>
|
|
</a>
|
|
</em>
|
|
<br/>
|
|
<br/>
|
|
<a id="wpgpxmaps-post-dismiss-notice" href="javascript:wpgpxmaps_dismiss_notice();">
|
|
<?php echo esc_html__( 'Dismiss this notice', 'wp-gpx-maps' ) ?>
|
|
</a>
|
|
|
|
</p>
|
|
</div>
|
|
<script>
|
|
function wpgpxmaps_dismiss_notice() {
|
|
var data = {
|
|
'action': 'wpgpxmaps_dismiss_notice'
|
|
};
|
|
|
|
jQuery.post( ajaxurl, data, function( response ) {
|
|
jQuery( '#wpgpxmaps-notice' ).hide();
|
|
});
|
|
}
|
|
|
|
jQuery( document ).ready( function() {
|
|
jQuery( 'body' ).on( 'click', '.notice-dismiss', function() {
|
|
wpgpxmaps_dismiss_notice();
|
|
});
|
|
});
|
|
</script>
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* Dismiss the update notice
|
|
*/
|
|
function wpgpxmaps_dismiss_notice() {
|
|
if ( !current_user_can( 'manage_options' ) )
|
|
return null;
|
|
|
|
$result = update_site_option( 'wpgpxmaps_show_notice', 0 );
|
|
return $result;
|
|
}
|
|
|
|
function wpgpxmaps_ilc_admin_tabs( $current ) {
|
|
if ( current_user_can( 'manage_options' ) ) {
|
|
// Access for Super Administrators and Administrators
|
|
$tabs = array(
|
|
'tracks' => __( 'Tracks', 'wp-gpx-maps' ),
|
|
'settings' => __( 'Settings', 'wp-gpx-maps' ),
|
|
'administration' => __( 'Administration', 'wp-gpx-maps' ),
|
|
'help' => __( 'Help', 'wp-gpx-maps' ),
|
|
);
|
|
} elseif ( current_user_can( 'publish_posts' ) ) {
|
|
// Access for Editors and Authors
|
|
$tabs = array(
|
|
'tracks' => __( 'Tracks', 'wp-gpx-maps' ),
|
|
'help' => __( 'Help', 'wp-gpx-maps' ),
|
|
);
|
|
}
|
|
|
|
echo '<h2 class="nav-tab-wrapper">';
|
|
foreach ( $tabs as $tab => $name ) {
|
|
$class = ( $tab == $current ) ? ' nav-tab-active' : '';
|
|
echo "<a class='nav-tab".esc_attr($class)."' href='?page=WP-GPX-Maps&tab=" . esc_attr($tab) . "'>".esc_html($name)."</a>";
|
|
}
|
|
echo '</h2>';
|
|
}
|
|
|
|
function wpgpxmaps_html_page() {
|
|
$realGpxPath = gpxFolderPath();
|
|
$cacheGpxPath = gpxCacheFolderPath();
|
|
$relativeGpxPath = relativeGpxFolderPath();
|
|
$relativeGpxPath = str_replace( '\\', '/', $relativeGpxPath );
|
|
$relativeGpxCachePath = relativeGpxCacheFolderPath();
|
|
$relativeGpxCachePath = str_replace( '\\', '/', $relativeGpxCachePath );
|
|
|
|
$tab = array_key_exists('tab', $_GET) ? sanitize_text_field($_GET['tab']) : 'tracks';
|
|
|
|
?>
|
|
|
|
<div class="wrap">
|
|
|
|
<div id="icon-themes" class="icon32"> </div>
|
|
|
|
<h1 class="header-title">
|
|
<?php
|
|
printf(
|
|
/* translators: %1s: Plugin versions number */
|
|
esc_html__( 'WP GPX Maps %1s', 'wp-gpx-maps' ),
|
|
esc_attr(WPGPXMAPS_CURRENT_VERSION)
|
|
);
|
|
?>
|
|
</h1>
|
|
|
|
<!-- The First Div (for body) ends in the respective file for the corresponding tab -->
|
|
|
|
<?php
|
|
|
|
if ( file_exists( $realGpxPath ) && is_dir( $realGpxPath ) ) {
|
|
// Directory exists
|
|
} else {
|
|
if ( ! @mkdir( $realGpxPath, 0755, true ) ) {
|
|
echo '<div class=" notice notice-error"><p>';
|
|
printf(
|
|
/* translators: %1s: Relative path of the GPX folder */
|
|
esc_html__( 'Can‘t create the folder %1s for GPX files. Please create the folder and make it writable! If not, you will must update the files manually!', 'wp-gpx-maps' ),
|
|
'<span class="code"><strong>' . esc_html( $relativeGpxPath ) . '</strong></span>'
|
|
);
|
|
echo '</p></div>';
|
|
}
|
|
}
|
|
if ( file_exists( $cacheGpxPath ) && is_dir( $cacheGpxPath ) ) {
|
|
// Directory exists
|
|
} else {
|
|
if ( ! @mkdir( $cacheGpxPath, 0755, true ) ) {
|
|
echo '<div class=" notice notice-error"><p>';
|
|
printf(
|
|
/* translators: %1s: Relative path of the GPX cache folder */
|
|
esc_html__( 'Can‘t create the cache folder %1s for the GPX files. Please create the folder and make it writable! If not, you will must update the files manually!', 'wp-gpx-maps' ),
|
|
'<span class="code"><strong>' . esc_html( $relativeGpxCachePath ) . '</strong></span>'
|
|
);
|
|
echo '</p></div>';
|
|
}
|
|
}
|
|
|
|
wpgpxmaps_ilc_admin_tabs( $tab );
|
|
|
|
if ( 'tracks' == $tab ) {
|
|
include 'wp-gpx-maps-admin-tracks.php';
|
|
} elseif ( 'settings' == $tab ) {
|
|
include 'wp-gpx-maps-admin-settings.php';
|
|
} elseif ( 'administration' == $tab ) {
|
|
include 'wp-gpx-maps-admin-administration.php';
|
|
} elseif ( 'help' == $tab ) {
|
|
include 'wp-gpx-maps-help.php';
|
|
}
|
|
}
|
|
?>
|