File Editor
Directories:
.. (Back)
EasyDigitalDownloads
Elementor
Integrations
MemberPress
Plugins
Promos
Rules
Shortcodes
WPForms
WooCommerce
Files:
Actions.php
Ajax.php
Api.php
ApiAuth.php
ApiKey.php
AssetLoader.php
BaseRestApi.php
Blocks.php
ClassicEditor.php
ConstantContact.php
Debug.php
EasyDigitalDownloads.php
Elementor.php
Inserter.php
InstallSkin.php
InstallSkinCompat.php
MailPoet.php
MemberPress.php
Menu.php
Notifications.php
OmuApi.php
Output.php
Pages.php
Partners.php
Plugins.php
Promos.php
Refresh.php
RestApi.php
RevenueAttribution.php
Review.php
Rules.php
Save.php
Shortcode.php
Sites.php
Support.php
Type.php
Urls.php
Utils.php
Validate.php
WPForms.php
Welcome.php
Widget.php
WooCommerce.php
WpErrorException.php
Create New File
Create
Edit File: 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 ); } } } } }
Save Changes
Rename File
Rename