Files
SIGE-WEB-snapshot/wp-content/plugins/google-analytics-for-wordpress/includes/options.php

502 lines
13 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Option functions.
*
* @since 6.0.0
*
* @package MonsterInsights
* @subpackage Options
* @author Chris Christoff
*/
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
function monsterinsights_get_options() {
$settings = array();
$option_name = monsterinsights_get_option_name();
//$settings = get_site_option( $option_name );
//$use_network_settings = ! empty( $use_network_settings['use_network_settings'] ) ? true : false;
//$is_network = is_multisite();
//if ( $is_network && $use_network_settings ) {
// return $settings;
//} else if ( $is_network ) {
$settings = get_option( $option_name );
//} else {
// return $settings;
//}
if ( empty( $settings ) || ! is_array( $settings ) ) {
$settings = array();
}
return $settings;
}
/**
* Helper method for getting a setting's value. Falls back to the default
* setting value if none exists in the options table.
*
* @param string $key The setting key to retrieve.
* @param mixed $default The default value of the setting key to retrieve.
*
* @return string The value of the setting.
* @since 6.0.0
* @access public
*
*/
function monsterinsights_get_option( $key = '', $default = false ) {
global $monsterinsights_settings;
$value = ! empty( $monsterinsights_settings[ $key ] ) ? $monsterinsights_settings[ $key ] : $default;
$value = apply_filters( 'monsterinsights_get_option', $value, $key, $default );
return apply_filters( 'monsterinsights_get_option_' . $key, $value, $key, $default );
}
/**
* Helper method for getting the V4 string.
*
* @return string The V4 ID to use.
* @since 6.0.0
* @access public
*
*/
function monsterinsights_get_v4_id() {
// Allow short circuiting (for staging sites)
if ( defined( 'MONSTERINSIGHTS_DISABLE_TRACKING' ) && MONSTERINSIGHTS_DISABLE_TRACKING ) {
return '';
}
// Try getting it from the auth V4
$v4_id = MonsterInsights()->auth->get_v4_id();
// If that didn't work, try the manual V4 at the site level
if ( empty( $v4_id ) ) {
$v4_id = MonsterInsights()->auth->get_manual_v4_id();
// If that didn't work try getting it from the network
if ( empty( $v4_id ) ) {
$v4_id = monsterinsights_get_network_v4_id();
// If that didn't work, try getting it from the overall constant. If it's not there, leave it blank
if ( empty( $v4_id ) ) {
$v4_id = defined( 'MONSTERINSIGHTS_GA_V4_ID' ) && MONSTERINSIGHTS_GA_V4_ID ? monsterinsights_is_valid_v4_id( MONSTERINSIGHTS_GA_V4_ID ) : '';
}
}
}
// Feed through the filter
$pre_filter = $v4_id;
$v4_id = apply_filters( 'monsterinsights_get_v4_id', $v4_id );
// Only run through monsterinsights_is_valid_v4 if it's different than pre-filter
return $pre_filter === $v4_id ? $v4_id : monsterinsights_is_valid_v4_id( $v4_id );
}
/**
* Helper method for getting the network V4 string.
*
* @return string The V4 ID to use.
* @since 6.0.0
* @access public
*
*/
function monsterinsights_get_network_v4_id() {
if ( ! is_multisite() ) {
return '';
}
// First try network auth V4
$v4_id = MonsterInsights()->auth->get_network_v4_id();
if ( ! empty( $v4_id ) ) {
return $v4_id;
}
// Then try manual network V4
$v4_id = MonsterInsights()->auth->get_network_manual_v4_id();
if ( ! empty( $v4_id ) ) {
return $v4_id;
}
// See if the constant is defined
if ( defined( 'MONSTERINSIGHTS_MS_GA_V4_ID' ) && monsterinsights_is_valid_v4_id( MONSTERINSIGHTS_MS_GA_V4_ID ) ) {
return MONSTERINSIGHTS_MS_GA_V4_ID;
}
return '';
}
/**
* Helper method for getting the UA string that's output on the frontend.
*
* @param array $args Allow calling functions to give args to use in future applications.
*
* @return string The UA to use on frontend.
* @since 6.0.0
* @access public
*
*/
function monsterinsights_get_v4_id_to_output( $args = array() ) {
$v4_id = monsterinsights_get_v4_id();
$v4_id = apply_filters( 'monsterinsights_get_v4_id_to_output', $v4_id, $args );
return monsterinsights_is_valid_v4_id( $v4_id );
}
/**
* Helper method for updating a setting's value.
*
* @param string $key The setting key.
* @param string $value The value to set for the key.
*
* @return boolean True if updated, false if not.
* @since 6.0.0
* @access public
*
*/
function monsterinsights_update_option( $key = '', $value = false ) {
// If no key, exit
if ( empty( $key ) ) {
return false;
}
if ( empty( $value ) ) {
$remove_option = monsterinsights_delete_option( $key );
return $remove_option;
}
$option_name = monsterinsights_get_option_name();
// First let's grab the current settings
// if on network panel or if on single site using network settings
//$settings = get_site_option( $option_name );
//$use_network_settings = ! empty( $use_network_settings['use_network_settings'] ) ? true : false;
//$is_network = is_multisite();
//$update_network_option = true;
//if ( ! is_network_admin() && ! ( $is_network && $use_network_settings ) ) {
$settings = get_option( $option_name );
// $update_network_option = false;
//}
if ( ! is_array( $settings ) ) {
$settings = array();
}
// Let's let devs alter that value coming in
$value = apply_filters( 'monsterinsights_update_option', $value, $key );
// Next let's try to update the value
$settings[ $key ] = $value;
$did_update = false;
//if ( $update_network_option ) {
// $did_update = update_site_option( $option_name, $settings );
//} else {
$did_update = update_option( $option_name, $settings );
//}
// If it updated, let's update the global variable
if ( $did_update ) {
global $monsterinsights_settings;
$monsterinsights_settings[ $key ] = $value;
}
return $did_update;
}
/**
* Helper method for deleting a setting's value.
*
* @param string $key The setting key.
*
* @return boolean True if removed, false if not.
* @since 6.0.0
* @access public
*
*/
function monsterinsights_delete_option( $key = '' ) {
// If no key, exit
if ( empty( $key ) ) {
return false;
}
$option_name = monsterinsights_get_option_name();
// First let's grab the current settings
// if on network panel or if on single site using network settings
//$settings = get_site_option( $option_name );
//$use_network_settings = ! empty( $use_network_settings['use_network_settings'] ) ? true : false;
//$is_network = is_multisite();
//$update_network_option = true;
//if ( ! is_network_admin() && ! ( $is_network && $use_network_settings ) ) {
$settings = get_option( $option_name );
// $update_network_option = false;
//}
// Next let's try to remove the key
if ( isset( $settings[ $key ] ) ) {
unset( $settings[ $key ] );
}
$did_update = false;
//if ( $update_network_option ) {
// $did_update = update_site_option( 'monsterinsights_settings', $settings );
//} else {
$did_update = update_option( $option_name, $settings );
//}
// If it updated, let's update the global variable
if ( $did_update ) {
global $monsterinsights_settings;
$monsterinsights_settings = $settings;
}
return $did_update;
}
/**
* Helper method for deleting multiple settings value.
*
* @param string $key The setting key.
*
* @return boolean True if removed, false if not.
* @since 6.0.0
* @access public
*
*/
function monsterinsights_delete_options( $keys = array() ) {
// If no keys, exit
if ( empty( $keys ) || ! is_array( $keys ) ) {
return false;
}
$option_name = monsterinsights_get_option_name();
// First let's grab the current settings
// if on network panel or if on single site using network settings
//$settings = get_site_option( $option_name );
//$use_network_settings = ! empty( $use_network_settings['use_network_settings'] ) ? true : false;
//$is_network = is_multisite();
//$update_network_option = true;
//if ( ! is_network_admin() && ! ( $is_network && $use_network_settings ) ) {
$settings = get_option( $option_name );
// $update_network_option = false;
//}
// Next let's try to remove the keys
foreach ( $keys as $key ) {
if ( isset( $settings[ $key ] ) ) {
unset( $settings[ $key ] );
}
}
$did_update = false;
//if ( $update_network_option ) {
// $did_update = update_site_option( 'monsterinsights_settings', $settings );
//} else {
$did_update = update_option( $option_name, $settings );
//}
// If it updated, let's update the global variable
if ( $did_update ) {
global $monsterinsights_settings;
$monsterinsights_settings = $settings;
}
return $did_update;
}
function monsterinsights_sanitize_tracking_id( $id ) {
$id = (string) $id; // Rare case, but let's make sure it never happens.
$id = trim( $id );
if ( empty( $id ) ) {
return '';
}
// Replace all type of dashes (n-dash, m-dash, minus) with normal dashes.
$id = str_replace( array( '', '—', '' ), '-', $id );
return $id;
}
/**
* Is this a valid GT code
*
* @param string $gt_code
*
* @return bool
*/
function monsterinsights_is_valid_gt( $gt_code = '' ) {
return (bool) preg_match( '/^GT-[a-zA-Z0-9]{5,}$/', $gt_code );
}
function monsterinsights_is_valid_v4_id( $v4_code = '' ) {
$v4_code = monsterinsights_sanitize_tracking_id( $v4_code );
if (
preg_match( '/G-[A-Za-z\d]+/', $v4_code ) ||
monsterinsights_is_valid_gt( $v4_code )
) {
return strtoupper( $v4_code );
}
return '';
}
/**
* Helper method for getting the license information.
*
* @param string $key The setting key to retrieve.
* @param mixed $default_value The default value of the setting key to retrieve.
*
* @return string The value of the setting.
* @since 6.0.0
* @access public
*
*/
function monsterinsights_get_license() {
$license = MonsterInsights()->license->get_site_license();
$license = $license ? $license : MonsterInsights()->license->get_network_license();
$default = MonsterInsights()->license->get_default_license_key();
if ( empty( $license ) && ! empty( $default ) ) {
$license = array();
$license['key'] = MonsterInsights()->license->get_default_license_key();
}
return $license;
}
/**
* Helper method for getting the license key.
*
* @param string $key The setting key to retrieve.
* @param mixed $default_value The default value of the setting key to retrieve.
*
* @return string The value of the setting.
* @since 6.0.0
* @access public
*
*/
function monsterinsights_get_license_key() {
if ( monsterinsights_is_pro_version() ) {
return MonsterInsights()->license->get_license_key();
}
return '';
}
function monsterinsights_get_option_name() {
//if ( monsterinsights_is_pro_version() ) {
return 'monsterinsights_settings';
//} else {
// return 'monsterinsights_settings';
//}
}
/**
* Export necessary settings to export as JSON.
*
* @return string
*/
function monsterinsights_export_settings() {
$settings = monsterinsights_get_options();
$exclude = array(
'analytics_profile',
'analytics_profile_code',
'analytics_profile_name',
'oauth_version',
'cron_last_run',
'monsterinsights_oauth_status',
);
foreach ( $exclude as $e ) {
if ( ! empty( $settings[ $e ] ) ) {
unset( $settings[ $e ] );
}
}
// Get site notes.
$settings['site_notes'] = monsterinsights_get_site_notes_to_export();
return wp_json_encode( $settings );
}
/**
* Always return 'gtag' when grabbing the tracking mode.
*
* @param string $value The value to override.
*
* @return string
*/
function monsterinsights_force_tracking_mode( $value ) {
return 'gtag';
}
add_filter( 'monsterinsights_get_option_tracking_mode', 'monsterinsights_force_tracking_mode' );
/**
* Always return 'js' when grabbing the events mode.
*
* @param string $value The value to override.
*
* @return string
*/
function monsterinsights_force_events_mode( $value ) {
return 'js';
}
add_filter( 'monsterinsights_get_option_events_mode', 'monsterinsights_force_events_mode' );
/**
* Prepare site notes to export.
*/
function monsterinsights_get_site_notes_to_export() {
$notes_db = new MonsterInsights_Site_Notes_DB_Base();
$note_items = $notes_db->get_items( array(
'per_page' => -1,
'orderby' => 'id',
'order' => 'asc',
'page' => 1,
) );
$notes = array();
foreach ( $note_items['items'] as $note_item ) {
$notes[] = array(
'note_title' => $note_item['note_title'],
'note_date' => $note_item['note_date_ymd'],
'important' => $note_item['important'],
'category_name' => empty( $note_item['category']['name'] ) ? '' : html_entity_decode( $note_item['category']['name'] ),
);
}
$categories = $notes_db->get_categories( array(
'per_page' => -1,
'page' => 1,
'orderby' => 'term_id',
'order' => 'asc',
) );
$note_categories = array();
if ( is_array( $categories ) && ! empty( $categories ) ) {
foreach ( $categories as $category ) {
$note_categories[] = array(
'name' => html_entity_decode( $category['name'] ),
'color' => $category['background_color'],
);
}
}
return array(
'notes' => $notes,
'categories' => $note_categories,
);
}