161 lines
5.9 KiB
PHP
161 lines
5.9 KiB
PHP
<?php
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
function statpress_settings_page() {
|
|
?>
|
|
<div class="wrap">
|
|
<?php
|
|
if ( get_transient( 'statpress_migration_reset_notice' ) ) {
|
|
echo '<div class="notice notice-success is-dismissible"><p>Status migracji został zresetowany. Wróć do <a href="' . esc_url( admin_url( 'admin.php?page=statpress-dashboard' ) ) . '">głównego panelu</a>, aby ponownie uruchomić migrację.</p></div>';
|
|
delete_transient( 'statpress_migration_reset_notice' );
|
|
}
|
|
?>
|
|
<h1>Ustawienia Wtyczki Statystyk</h1>
|
|
<form method="post" action="options.php">
|
|
<?php
|
|
settings_fields( 'statpress_settings_group' );
|
|
do_settings_sections( 'statpress_settings_page' );
|
|
submit_button();
|
|
?>
|
|
</form>
|
|
|
|
<hr>
|
|
<h2>Narzędzia deweloperskie</h2>
|
|
<div class="postbox">
|
|
<div class="postbox-header"><h3 class="hndle">Resetowanie migracji</h3></div>
|
|
<div class="inside">
|
|
<p>Jeśli migracja danych nie powiodła się, a przycisk do jej ponownego uruchomienia zniknął, możesz użyć tego narzędzia, aby zresetować status migracji. Po kliknięciu, przycisk w głównym panelu wtyczki pojawi się ponownie.</p>
|
|
<form method="post">
|
|
<input type="hidden" name="statpress_action" value="reset_migration"><?php wp_nonce_field( 'statpress_reset_migration_nonce', '_wpnonce' ); ?><?php submit_button( 'Zresetuj status migracji', 'delete' ); ?></form>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
function statpress_register_settings() {
|
|
// Define a single group and page for all settings on this form.
|
|
$option_group = 'statpress_settings_group';
|
|
$page_slug = 'statpress_settings_page';
|
|
|
|
// Register Privacy settings under the main group.
|
|
register_setting(
|
|
$option_group,
|
|
'statpress_privacy_options',
|
|
'statpress_sanitize_privacy_options'
|
|
);
|
|
|
|
// Register API settings under the same main group.
|
|
register_setting(
|
|
$option_group,
|
|
'statpress_api_options',
|
|
'statpress_sanitize_api_options'
|
|
);
|
|
|
|
// Add the Privacy section to the main page.
|
|
add_settings_section(
|
|
'statpress_privacy_zone_section',
|
|
'Strefa Prywatności GPX',
|
|
'statpress_privacy_section_callback',
|
|
$page_slug
|
|
);
|
|
|
|
add_settings_field(
|
|
'statpress_privacy_latitude',
|
|
'Szerokość geograficzna (Latitude)',
|
|
'statpress_render_lat_field',
|
|
$page_slug,
|
|
'statpress_privacy_zone_section'
|
|
);
|
|
|
|
add_settings_field(
|
|
'statpress_privacy_longitude',
|
|
'Długość geograficzna (Longitude)',
|
|
'statpress_render_lon_field',
|
|
$page_slug,
|
|
'statpress_privacy_zone_section'
|
|
);
|
|
|
|
add_settings_field(
|
|
'statpress_privacy_radius',
|
|
'Promień strefy (w metrach)',
|
|
'statpress_render_radius_field',
|
|
$page_slug,
|
|
'statpress_privacy_zone_section'
|
|
);
|
|
|
|
// Add the API section to the same main page.
|
|
add_settings_section(
|
|
'statpress_api_section',
|
|
'Ustawienia API',
|
|
'statpress_api_section_callback',
|
|
$page_slug
|
|
);
|
|
|
|
add_settings_field(
|
|
'statpress_enable_api',
|
|
'REST API',
|
|
'statpress_render_enable_api_field',
|
|
$page_slug,
|
|
'statpress_api_section'
|
|
);
|
|
}
|
|
|
|
function statpress_privacy_section_callback() {
|
|
echo '<p>Zdefiniuj strefę prywatności, aby ukryć początek i koniec swoich tras GPX. Punkty wewnątrz tego okręgu nie będą wyświetlane na mapie.</p>';
|
|
echo '<p>Aby znaleźć swoje współrzędne, kliknij prawym przyciskiem myszy na mapie Google w wybranym miejscu - współrzędne pojawią się jako pierwsza pozycja w menu.</p>';
|
|
}
|
|
|
|
function statpress_render_lat_field() {
|
|
$options = get_option( 'statpress_privacy_options' );
|
|
$latitude = isset( $options['latitude'] ) ? esc_attr( $options['latitude'] ) : '';
|
|
echo "<input type='text' name='statpress_privacy_options[latitude]' value='{$latitude}' placeholder='np. 52.2297' class='regular-text' />";
|
|
}
|
|
|
|
function statpress_render_lon_field() {
|
|
$options = get_option( 'statpress_privacy_options' );
|
|
$longitude = isset( $options['longitude'] ) ? esc_attr( $options['longitude'] ) : '';
|
|
echo "<input type='text' name='statpress_privacy_options[longitude]' value='{$longitude}' placeholder='np. 21.0122' class='regular-text' />";
|
|
}
|
|
|
|
function statpress_render_radius_field() {
|
|
$options = get_option( 'statpress_privacy_options' );
|
|
$radius = isset( $options['radius'] ) ? esc_attr( $options['radius'] ) : '500';
|
|
echo "<input type='number' name='statpress_privacy_options[radius]' value='{$radius}' class='small-text' /> metrów";
|
|
}
|
|
|
|
function statpress_sanitize_privacy_options( $input ) {
|
|
$sanitized_input = array();
|
|
if ( isset( $input['latitude'] ) ) {
|
|
$sanitized_input['latitude'] = floatval( str_replace( ',', '.', $input['latitude'] ) );
|
|
}
|
|
if ( isset( $input['longitude'] ) ) {
|
|
$sanitized_input['longitude'] = floatval( str_replace( ',', '.', $input['longitude'] ) );
|
|
}
|
|
if ( isset( $input['radius'] ) ) {
|
|
$sanitized_input['radius'] = abs( intval( $input['radius'] ) );
|
|
}
|
|
return $sanitized_input;
|
|
}
|
|
|
|
function statpress_api_section_callback() {
|
|
echo '<p>Ustawienia związane z integracją wtyczki z zewnętrznymi aplikacjami, np. mobilnymi.</p>';
|
|
}
|
|
|
|
function statpress_render_enable_api_field() {
|
|
$options = get_option( 'statpress_api_options' );
|
|
$checked = isset( $options['enable_api'] ) && $options['enable_api'] ? 'checked' : '';
|
|
echo "<label><input type='checkbox' name='statpress_api_options[enable_api]' value='1' {$checked} /> Włącz REST API</label>";
|
|
echo '<p class="description">Umożliwia zewnętrznym aplikacjom (np. na Androida) komunikację z wtyczką w celu dodawania i odczytywania aktywności. Jeśli nie korzystasz z takich integracji, możesz to wyłączyć dla większego bezpieczeństwa.</p>';
|
|
}
|
|
|
|
function statpress_sanitize_api_options( $input ) {
|
|
$sanitized_input = array();
|
|
// If the checkbox is not checked, it won't be in the $input array.
|
|
// So we check for its existence to determine if it's on or off.
|
|
$sanitized_input['enable_api'] = isset( $input['enable_api'] ) ? 1 : 0;
|
|
return $sanitized_input;
|
|
}
|