'. esc_html__('Read more detail at', 'aesirx-analytics') .' %s
'. esc_html__('Note: Please set Permalink structure is NOT plain.', 'aesirx-analytics') .'
', 'https://github.com/aesirxio/analytics#in-ssr-site', 'https://github.com/aesirxio/analytics#in-ssr-site') ); }, 'aesirx_analytics_plugin' ); function aesirx_analytics_warning_missing_license() { $options = get_option('aesirx_analytics_plugin_options'); if (empty($options['license'])) { ?> ' . esc_html__('Internal', 'aesirx-analytics') . ' '); echo ''; $manifest = json_decode( file_get_contents(plugin_dir_path(__DIR__) . 'assets-manifest.json', true) ); if ($manifest->entrypoints->plugin->assets) { foreach ($manifest->entrypoints->plugin->assets->js as $js) { wp_enqueue_script('aesrix_bi' . md5($js), plugins_url($js, __DIR__), false, '1.0', true); } } }, 'aesirx_analytics_plugin', 'aesirx_analytics_settings' ); add_settings_field( 'aesirx_analytics_domain', __('domain (Use next format: http://example.com:1000/)', 'aesirx-analytics'), function () { $options = get_option('aesirx_analytics_plugin_options', []); // using custom function to escape HTML echo aesirx_analytics_escape_html("" /* translators: %s: URL to aesir.io */ /* translators: %s: URL to aesir.io */ . sprintf(__("You can setup 1st party server at %2\$s.
", 'aesirx-analytics'), 'https://github.com/aesirxio/analytics-1stparty', 'https://github.com/aesirxio/analytics-1stparty') ); }, 'aesirx_analytics_plugin', 'aesirx_analytics_settings' ); add_settings_field( 'aesirx_analytics_consent', __('Consent', 'aesirx-analytics'), function () { $options = get_option('aesirx_analytics_plugin_options', []); $checked = 'checked="checked"'; $storage = $options['consent'] ?? 'true'; // using custom function to escape HTML echo aesirx_analytics_escape_html(' '); }, 'aesirx_analytics_plugin', 'aesirx_analytics_settings' ); add_settings_field( 'aesirx_analytics_clientid', esc_html__('Client ID', 'aesirx-analytics'), function () { $options = get_option('aesirx_analytics_plugin_options', []); echo aesirx_analytics_escape_html(""); }, 'aesirx_analytics_plugin', 'aesirx_analytics_settings' ); add_settings_field( 'aesirx_analytics_secret', esc_html__('Client secret', 'aesirx-analytics'), function () { $options = get_option('aesirx_analytics_plugin_options', []); // using custom function to escape HTML echo aesirx_analytics_escape_html(""); }, 'aesirx_analytics_plugin', 'aesirx_analytics_settings' ); add_settings_field( 'aesirx_analytics_license', esc_html__('License', 'aesirx-analytics'), function () { $options = get_option('aesirx_analytics_plugin_options', []); // using custom function to escape HTML echo aesirx_analytics_escape_html("Register to AesirX and get your client id, client secret and license here: https://web3id.aesirx.io.
"); }, 'aesirx_analytics_plugin', 'aesirx_analytics_settings' ); add_settings_field( 'aesirx_analytics_geo_cron_time', esc_html__('Geo cron time', 'aesirx-analytics'), function () { $options = get_option('aesirx_analytics_plugin_options', []); // using custom function to escape HTML echo aesirx_analytics_escape_html(""); }, 'aesirx_analytics_plugin', 'aesirx_analytics_settings' ); add_settings_field( 'aesirx_analytics_enable_cronjob', esc_html__('Enable cronjob', 'aesirx-analytics'), function () { $options = get_option('aesirx_analytics_plugin_options', []); $checked = 'checked="checked"'; $storage = $options['enable_cronjob'] ?? 'true'; // using custom function to escape HTML echo aesirx_analytics_escape_html(' '); }, 'aesirx_analytics_plugin', 'aesirx_analytics_settings' ); add_settings_field( 'aesirx_analytics_track_ecommerce', esc_html__('Track ecommerce', 'aesirx-analytics'), function () { $options = get_option('aesirx_analytics_plugin_options', []); $checked = 'checked="checked"'; $storage = $options['track_ecommerce'] ?? 'true'; // using custom function to escape HTML echo aesirx_analytics_escape_html(' '); }, 'aesirx_analytics_plugin', 'aesirx_analytics_settings' ); add_settings_section( 'aesirx_analytics_info', '', function () { // using custom function to escape HTML echo aesirx_analytics_escape_html('at the AesirX Shield of Privacy dApp
'); }, 'aesirx_analytics_info' ); }); add_action('admin_menu', function () { add_options_page( esc_html__('Aesirx Analytics', 'aesirx-analytics'), esc_html__('Aesirx Analytics', 'aesirx-analytics'), 'manage_options', 'aesirx-analytics-plugin', function () { ?> get_bloginfo('name'), 'domain' => $domain]]; $endpoint = ($options['storage'] ?? 'internal') == 'internal' ? get_bloginfo('url') : rtrim($options['domain'] ?? '', '/'); $manifest = json_decode( file_get_contents(plugin_dir_path(__DIR__) . 'assets-manifest.json', true) ); if ($manifest->entrypoints->bi->assets) { foreach ($manifest->entrypoints->bi->assets->js as $js) { wp_enqueue_script('aesrix_bi' . md5($js), plugins_url($js, __DIR__), false, '1.0', true); } } $clientId = $options['clientid']; $clientSecret = $options['secret']; $jwt = $options['storage'] === "external" ? 'window.env.REACT_APP_HEADER_JWT="true"' : ''; wp_register_script( 'aesrix_bi_window', '', array(), '1.0', false ); wp_enqueue_script('aesrix_bi_window'); wp_add_inline_script( 'aesrix_bi_window', 'window.env = {}; window.aesirxClientID = "' . esc_html($clientId) . '"; window.aesirxClientSecret = "' . esc_html($clientSecret) . '"; window.env.REACT_APP_ENDPOINT_URL = "' . esc_url($endpoint) . '"; window.env.REACT_APP_DATA_STREAM = JSON.stringify(' . wp_json_encode($streams) . '); window.env.PUBLIC_URL= "' . esc_url(plugin_dir_url(__DIR__)) . '"; window.env.STORAGE= "' . esc_html($options['storage']) . '"; window.env.REACT_APP_WOOCOMMERCE_MENU= "' . esc_html($options['track_ecommerce']) . '"; ' . esc_html($jwt), ); } }); /** * Custom escape function for Aesirx Analytics. * Escapes HTML attributes in a string using a specified list of allowed HTML elements and attributes. * * @param string $string The input string to escape HTML attributes from. * @return string The escaped HTML string. */ function aesirx_analytics_escape_html($string) { $allowed_html = array( 'input' => array( 'type' => array(), 'id' => array(), 'name' => array(), 'value' => array(), 'class' => array(), 'checked' => array(), ), 'a' => array(), 'p' => array(), 'h3' => array(), 'div' => array( 'class' => array(), ), 'button' => array( 'type' => array(), 'id' => array(), 'name' => array(), 'value' => array(), 'class' => array(), ), ); return wp_kses($string, $allowed_html); } function aesirx_analytics_add_nonce_menu_item() { ?>