<?php if ( is_admin() ) { add_action( 'admin_menu', 'wpgpxmaps_admin_menu' ); } /** * Roles and capabilities * * Capabilities for each user role that are relevant to this plugin: * * Super Admin: can manage settings; can publish, edit and delete all posts; can upload and delete all GPX files * Admin: can manage settings; can publish, edit and delete all posts; can upload and delete all GPX files * Editor: can not manage settings; can publish, edit and delete all posts; can upload and delete all GPX files * Author: can not manage settings; can publish, edit and delete his own posts; can upload and delete his own files * Contributor: can not manage settings; can edit and delete his own posts; can not manage GPX files * Subscriber: can not manage settings; can not manage posts; can not manage GPX files (has read status everywhere) * * @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', 'WP_GPX_Maps_html_page' ); } elseif ( current_user_can( 'publish_posts' ) ) { /* Access for Editors and Authors */ /* Contributor Authors and */ $allow_users_upload = get_option( 'wpgpxmaps_allow_users_view' ) === 'true'; if ( $allow_users_upload == 1 ) { add_menu_page( 'WP GPX Maps', 'WP GPX Maps', 'publish_posts', 'WP-GPX-Maps', 'WP_GPX_Maps_html_page' ); } } } 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' ), '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$class' href='?page=WP-GPX-Maps&tab=$tab'>$name</a>"; } echo '</h2>'; } function WP_GPX_Maps_html_page() { $realGpxPath = gpxFolderPath(); $cacheGpxPath = gpxCacheFolderPath(); $relativeGpxPath = relativeGpxFolderPath(); $relativeGpxPath = str_replace( '\\', '/', $relativeGpxPath ); $relativeGpxCachePath = relativeGpxCacheFolderPath(); $relativeGpxCachePath = str_replace( '\\', '/', $relativeGpxCachePath ); $tab = $_GET['tab']; if ( $tab == '' ) $tab = 'tracks'; ?> <div id="icon-themes" class="icon32"><br></div> <h2> <?php _e( 'Settings', 'wp-gpx-maps' ); ?> </h2> <?php if ( file_exists( $realGpxPath ) && is_dir( $realGpxPath ) ) { /* Directory exist! */ } else { if ( ! @mkdir( $realGpxPath, 0755, true ) ) { echo '<div class=" notice notice-error"><p>'; printf( /* translators: Relative path of the GPX folder */ __( 'Can not 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 exist! */ } else { if ( ! @mkdir( $cacheGpxPath, 0755, true ) ) { echo '<div class=" notice notice-error"><p>'; printf( /* translators: Relative path of the GPX cache folder */ __( 'Can not 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 ( $tab == 'tracks' ) { include 'wp-gpx-maps_admin_tracks.php'; } elseif ( $tab == 'settings' ) { include 'wp-gpx-maps_admin_settings.php'; } elseif ( $tab == 'help' ) { include 'wp-gpx-maps_help.php'; } } ?>