HEX
Server: Apache
System: Linux eisbus 6.8.12-9-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-9 (2025-03-16T19:18Z) x86_64
User: www-data (33)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/wordpress/wp-content/plugins/geolocation/geolocation.settings.php
<?php
/**
 * Settings
 *
 * This is the plugin specific settings functionality.
 *
 * @category Components
 * @package geolocation
 * @author Yann Michel <geolocation@yann-michel.de>
 * @license GPL2
 */

/**
 * Initialize the available languages for this plugin.
 *
 * @return void
 */
function languages_init() {
	$plugin_rel_path = basename( __DIR__ ) . '/languages/'; /* Relative to WP_PLUGIN_DIR */
	load_plugin_textdomain( 'geolocation', false, $plugin_rel_path );
}

/**
 * Get the active language for the site this plugin is running at.
 *
 * @return string
 */
function get_site_lang() {
	$language = substr( get_locale(), 0, 2 );
	return $language;
}

/**
 * Register all needed settings for this plugin.
 *
 * @return void
 */
function register_settings() {
	register_setting( 'geolocation-settings-group', 'geolocation_map_width' );
	register_setting( 'geolocation-settings-group', 'geolocation_map_height' );
	register_setting( 'geolocation-settings-group', 'geolocation_default_zoom' );
	register_setting( 'geolocation-settings-group', 'geolocation_map_position' );
	register_setting( 'geolocation-settings-group', 'geolocation_map_display' );
	register_setting( 'geolocation-settings-group', 'geolocation_wp_pin' );
	register_setting( 'geolocation-settings-group', 'geolocation_google_maps_api_key' );
	register_setting( 'geolocation-settings-group', 'geolocation_updateAddresses' );
	register_setting( 'geolocation-settings-group', 'geolocation_map_width_page' );
	register_setting( 'geolocation-settings-group', 'geolocation_map_height_page' );
	register_setting( 'geolocation-settings-group', 'geolocation_provider' );
	register_setting( 'geolocation-settings-group', 'geolocation_shortcode' );
	register_setting( 'geolocation-settings-group', 'geolocation_osm_use_proxy' );
	register_setting( 'geolocation-settings-group', 'geolocation_osm_tiles_url' );
	register_setting( 'geolocation-settings-group', 'geolocation_osm_nominatim_url' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_osm_leaflet_js_url' );
	delete_option( 'geolocation_osm_leaflet_js_url' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_osm_leaflet_css_url' );
	delete_option( 'geolocation_osm_leaflet_css_url' );
}

/**
 * Unregister all settings for this plugin.
 *
 * @return void
 */
function unregister_settings() {
	unregister_setting( 'geolocation-settings-group', 'geolocation_map_width' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_map_height' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_default_zoom' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_map_position' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_map_display' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_wp_pin' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_google_maps_api_key' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_updateAddresses' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_map_width_page' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_map_height_page' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_provider' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_shortcode' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_osm_use_proxy' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_osm_tiles_url' );
	unregister_setting( 'geolocation-settings-group', 'geolocation_osm_nominatim_url' );
}

/**
 * Apply the value for the given setting to be stored.
 *
 * @param [type] $name The name of the attribute to store.
 * @param [type] $value The value of the attribute to be stored.
 * @return void
 */
function default_setting( $name, $value ) {
	if ( ! get_option( $name ) ) {
		update_option( $name, $value );
	}
}

/**
 * Apply all default settings for this Plugin.
 *
 * @return void
 */
function default_settings() {
	default_setting( 'geolocation_map_width', '450' );
	default_setting( 'geolocation_map_height', '200' );
	default_setting( 'geolocation_default_zoom', '16' );
	default_setting( 'geolocation_map_position', 'after' );
	default_setting( 'geolocation_map_display', 'map' );
	update_option( 'geolocation_updateAddresses', false );
	default_setting( 'geolocation_map_width_page', '600' );
	default_setting( 'geolocation_map_height_page', '300' );
	default_setting( 'geolocation_provider', 'osm' );
	default_setting( 'geolocation_shortcode', '[geolocation]' );
	default_setting( 'geolocation_osm_use_proxy', false );
	default_setting( 'geolocation_osm_tiles_url', 'https://tile.openstreetmap.org/{z}/{x}/{y}.png' );
	default_setting( 'geolocation_osm_nominatim_url', 'https://nominatim.openstreetmap.org/' );
}

/**
 * Delete all settings stored for this Plugin.
 *
 * @return void
 */
function delete_settings() {
	delete_option( 'geolocation_map_width' );
	delete_option( 'geolocation_map_height' );
	delete_option( 'geolocation_default_zoom' );
	delete_option( 'geolocation_map_position' );
	delete_option( 'geolocation_map_display' );
	delete_option( 'geolocation_updateAddresses' );
	delete_option( 'geolocation_map_width_page' );
	delete_option( 'geolocation_map_height_page' );
	delete_option( 'geolocation_provider' );
	delete_option( 'geolocation_shortcode' );
	delete_option( 'geolocation_osm_use_proxy' );
	delete_option( 'geolocation_osm_tiles_url' );
	delete_option( 'geolocation_osm_leaflet_js_url' );
	delete_option( 'geolocation_osm_leaflet_css_url' );
	delete_option( 'geolocation_osm_nominatim_url' );
}

/**
 * Delete all posts geo_adress attributes.
 *
 * @return void
 */
function delete_addresses() {
	$args = array(
		'post_type'      => 'post',
		'posts_per_page' => -1,
	);

	$post_query = new WP_Query( $args );
	if ( $post_query->have_posts() ) {
		while ( $post_query->have_posts() ) {
			$post_query->the_post();
			$post = get_post();
			delete_post_meta( $post->ID, 'geo_address' );
		}
	}
}

/**
 * Activate the PLugin and set defaults.
 *
 * @return void
 */
function activate() {
	register_settings();
	default_settings();
}

/**
 * Unregister this Plugin and clean up.
 *
 * @return void
 */
function uninstall() {
	unregister_settings();
	delete_settings();
	delete_addresses();
}

/**
 * Add settings to options and register Plugin.
 *
 * @return void
 */
function add_settings() {
	if ( is_admin() ) {
		require_once GEOLOCATION__PLUGIN_DIR . 'geolocation.settings.page.php';
		add_options_page( __( 'Geolocation Plugin Settings', 'geolocation' ), 'Geolocation', 'manage_options', 'geolocation.php', 'geolocation_settings_page' );
		add_action( 'admin_init', 'register_settings' );
	}
}