PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/bettingbin.com/wp-content/plugins/optinmonster/OMAPI/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : /home/trave494/bettingbin.com/wp-content/plugins/optinmonster/OMAPI/Support.php |
<?php /** * Support Class, handles generating info for support. * * @since 1.9.10 * * @package OMAPI * @author Justin Sternberg */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Rest Api class. * * @since 1.9.10 */ class OMAPI_Support { /** * The Base OMAPI Object * * @since 1.9.10 * * @var OMAPI */ protected $base; /** * Class constructor. * * @since 1.9.10 */ public function __construct() { $this->base = OMAPI::get_instance(); } /** * Combine Support data together. * * @since 1.9.10 * * @param string $format The format to return the data in. * * @return array */ public function get_support_data( $format = 'raw' ) { return array( 'server' => $this->get_server_data( $format ), 'settings' => $this->get_settings_data( $format ), 'campaigns' => $this->get_campaign_data( $format ), ); } /** * Build Current Optin data array to localize * * @since 1.9.10 * * @param string $format The format to return the data in. * * @return array */ public function get_campaign_data( $format = 'raw' ) { $campaigns = $this->base->get_optins( array( 'post_status' => 'any' ) ); $data = array(); if ( empty( $campaigns ) ) { return $data; } foreach ( (array) $campaigns as $campaign ) { if ( empty( $campaign->ID ) ) { continue; } $slug = $campaign->post_name; $design_type = get_post_meta( $campaign->ID, '_omapi_type', true ); $data[ $slug ] = array( 'Campaign Type' => $design_type, 'WordPress ID' => $campaign->ID, 'Associated IDs' => get_post_meta( $campaign->ID, '_omapi_ids', true ), 'Current Status' => get_post_meta( $campaign->ID, '_omapi_enabled', true ) ? 'Enabled' : 'Disabled', 'User Settings' => get_post_meta( $campaign->ID, '_omapi_users', true ), 'Pages to Never show on' => get_post_meta( $campaign->ID, '_omapi_never', true ), 'Pages to Only show on' => get_post_meta( $campaign->ID, '_omapi_only', true ), 'Categories' => get_post_meta( $campaign->ID, '_omapi_categories', true ), 'Taxonomies' => get_post_meta( $campaign->ID, '_omapi_taxonomies', true ), 'Template types to Show on' => get_post_meta( $campaign->ID, '_omapi_show', true ), 'Shortcodes Synced and Recognized' => get_post_meta( $campaign->ID, '_omapi_shortcode', true ) ? htmlspecialchars_decode( get_post_meta( $campaign->ID, '_omapi_shortcode_output', true ) ) : 'None recognized', ); if ( OMAPI_Utils::is_inline_type( $design_type ) ) { $data[ $slug ]['Automatic Output Status'] = get_post_meta( $campaign->ID, '_omapi_automatic', true ) ? 'Enabled' : 'Disabled'; $data[ $slug ]['Automatic Output Location'] = get_post_meta( $campaign->ID, '_omapi_auto_location', true ); } if ( 'raw' === $format ) { $data[ $slug ]['raw'] = $this->base->collect_campaign_data( $campaign ); } } return $data; } /** * Build array of server information to localize * * @since 1.9.10 * * @param string $format The format to return the data in. * * @return array */ public function get_server_data( $format = 'raw' ) { if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $theme_data = wp_get_theme(); // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase $theme = 'raw' === $format ? array( 'Name' => $theme_data->Name, 'Author' => $theme_data->Author, 'Author Name' => $theme_data->{'Author Name'}, 'Author URI' => $theme_data->{'Author URI'}, 'Description' => $theme_data->Description, 'Version' => $theme_data->Version, 'Template' => $theme_data->Template, 'Stylesheet' => $theme_data->Stylesheet, 'Template Files' => $theme_data->{'Template Files'}, 'Stylesheet Files' => $theme_data->{'Stylesheet Files'}, 'Template Dir' => $theme_data->{'Template Dir'}, 'Stylesheet Dir' => $theme_data->{'Stylesheet Dir'}, 'Screenshot' => $theme_data->Screenshot, 'Tags' => $theme_data->Tags, 'Theme Root' => $theme_data->{'Theme Root'}, 'Theme Root URI' => $theme_data->{'Theme Root URI'}, 'Parent Theme' => $theme_data->{'Parent Theme'}, ) : $theme_data->Name . ' ' . $theme_data->Version; // phpcs:enable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase $active_plugins = get_option( 'active_plugins', array() ); $plugins = 'raw' === $format ? array() : "\n"; foreach ( get_plugins() as $plugin_path => $plugin ) { if ( ! in_array( $plugin_path, $active_plugins, true ) ) { continue; } if ( 'raw' === $format ) { $plugins[] = $plugin; } else { $plugins .= $plugin['Name'] . ': ' . $plugin['Version'] . "\n"; } } $api_ping = wp_remote_request( OPTINMONSTER_APP_URL . '/v1/ping' ); $array = array( 'Plugin Version' => esc_html( $this->base->version ), // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized 'Server Info' => esc_html( wp_unslash( $_SERVER['SERVER_SOFTWARE'] ) ), 'PHP Version' => function_exists( 'phpversion' ) ? esc_html( phpversion() ) : 'Unable to check.', 'Error Log Location' => function_exists( 'ini_get' ) ? ini_get( 'error_log' ) : 'Unable to locate.', 'Default Timezone' => date_default_timezone_get(), 'Site Timezone' => wp_timezone_string(), 'Site Name' => esc_html( get_option( 'blogname' ) ), 'Admin Email' => esc_html( get_site_option( 'admin_email' ) ), 'WordPress Home URL' => esc_url_raw( get_home_url() ), 'WordPress Site URL' => esc_url_raw( get_site_url() ), 'WordPress REST URL' => esc_url_raw( get_rest_url() ), 'WordPress Admin URL' => esc_url_raw( OMAPI_Urls::admin() ), 'WordPress Version' => $GLOBALS['wp_version'], 'Multisite' => is_multisite(), 'Language' => get_locale(), 'API Ping Response' => wp_remote_retrieve_response_code( $api_ping ), 'Active Theme' => $theme, 'Active Plugins' => $plugins, ); if ( 'raw' !== $format ) { $array['Multisite'] = $array['Multisite'] ? 'Multisite Enabled' : 'Not Multisite'; } return $array; } /** * Includes the plugin settings. * * @since 2.4.0 * * @return array Array of plugin settings. */ public function get_settings_data() { $options = $this->base->get_option(); // Remove the optins key. We don't need this in the settings data. unset( $options['optins'] ); // List of keys to mask in the settings array. $sensitive_keys = array( array( 'api', 'apikey' ), array( 'api', 'key' ), array( 'api', 'user' ), array( 'edd', 'key' ), array( 'edd', 'token' ), array( 'woocommerce', 'key_id' ), ); /** * Filters the extra keys array, allowing additional keys to be added. * * @since 2.16.3 * * @param array $extra_keys The list of sensitive keys. Defaults to an empty array. */ $extra_keys = (array) apply_filters( 'optin_monster_redacted_sensitive_keys', array() ); $this->mask_sensitive_data_recursive( $options, array_merge( $sensitive_keys, $extra_keys ) ); return $options; } /** * Recursively mask sensitive data in an array. * * @since 2.16.3 * * @param array $data The data array. * @param array $sensitive_keys The list of sensitive keys. * * @return void */ public function mask_sensitive_data_recursive( &$data, $sensitive_keys = array() ) { foreach ( $sensitive_keys as $path ) { $ref = &$data; $path_count = 0; foreach ( (array) $path as $key ) { $path_count++; // If the key doesn't exist, break out of the loop. if ( ! isset( $ref[ $key ] ) ) { break; } // Set a reference to the next level of the array. $ref = &$ref[ $key ]; // If we're at the end of the path array, mask the value. if ( count( $path ) === $path_count && ! empty( $ref ) ) { $ref = substr( (string) $ref, 0, 2 ) . str_repeat( '*', strlen( (string) $ref ) - 4 ) . substr( (string) $ref, -2 ); } } } } }