zZzzZ.
home2
/
zrzvbdry
/
discountplusoffer.com
/
wp-content
/
plugins
/
ultimate-post
/
includes
/
durbin
New Folder
Editing: class-durbin-client.php
Save
Cancel
<?php namespace ULTP\Includes\Durbin; defined( 'ABSPATH' ) || exit; /** * Class Durbin_Client */ class DurbinClient { // Do not change these constants const DEACTIVATE_ACTION = 'deactive'; const ACTIVATE_ACTION = 'active'; const WIZARD_ACTION = 'wizard'; const PLUGIN_SLUG = 'ultimate-post'; const URL = 'https://inside.wpxpo.com/wp-json/durbin/v1/analytics'; /** * Send data to Durbin * * @param DurbinClient::DEACTIVATE_ACTION|DurbinClient::ACTIVATE_ACTION|DurbinClient::WIZARD_ACTION $action_type action type. * @return void */ public static function send( $action_type ) { if ( ! current_user_can( 'manage_options' ) ) { return; } if ( ! in_array( $action_type, array( self::DEACTIVATE_ACTION, self::ACTIVATE_ACTION, self::WIZARD_ACTION ), true ) ) { return; } $data = self::get_common_data(); $data['action_type'] = $action_type; if ( self::DEACTIVATE_ACTION === $action_type ) { $id = isset( $_POST['cause_id'] ) ? sanitize_key( wp_unslash( $_POST['cause_id'] ) ) : null; if ( ! empty( $id ) ) { $data['feedback'] = array( 'id' => $id, 'details' => isset( $_POST['cause_details'] ) ? sanitize_text_field( wp_unslash( $_POST['cause_details'] ) ) : null, ); } } if ( self::WIZARD_ACTION === $action_type ) { $data['data'] = array( 'site_type' => isset( $_POST['siteType'] ) ? sanitize_text_field( wp_unslash( $_POST['siteType'] ) ) : get_option( '__ultp_site_type', 'other' ), ); } wp_remote_post( self::URL, array( 'timeout' => 30, 'redirection' => 5, 'headers' => array( 'user-agent' => 'wpxpo/' . md5( esc_url( home_url() ) ) . ';', 'Accept' => 'application/json', ), 'blocking' => true, 'httpversion' => '1.0', 'body' => $data, ) ); } /** * Get All the Installed Plugin Data * * @return array */ private static function get_installed_plugins() { if ( ! function_exists( 'get_plugins' ) ) { include ABSPATH . '/wp-admin/includes/plugin.php'; } $active = array(); $inactive = array(); $all_plugins = get_plugins(); $active_plugins = get_option( 'active_plugins', array() ); if ( is_multisite() ) { $active_plugins = array_merge( $active_plugins, array_keys( get_site_option( 'active_sitewide_plugins', array() ) ) ); } foreach ( $all_plugins as $key => $plugin ) { $slug = dirname( $key ); if ( empty( $slug ) || self::PLUGIN_SLUG === $slug ) { continue; } $arr = array( 'title' => $plugin['Name'] ?? null, 'slug' => $slug, ); if ( in_array( $key, $active_plugins ) ) { $active[] = $arr; } else { $inactive[] = $arr; } } return array( 'active' => $active, 'inactive' => $inactive, ); } /** * Get Country Code * * @return string|null */ private static function get_country_code() { $cached = get_transient( 'durbin_country_code' ); if ( false !== $cached ) { return $cached; } $res = wp_remote_get( 'https://ipinfo.io/json', array( 'timeout' => 30 ) ); if ( is_wp_error( $res ) || 200 !== wp_remote_retrieve_response_code( $res ) ) { return null; } $body = wp_remote_retrieve_body( $res ); $data = json_decode( $body, true ); $country = isset( $data['country'] ) ? $data['country'] : null; if ( ! empty( $country ) ) { set_transient( 'durbin_country_code', $country, 180 * DAY_IN_SECONDS ); } return $country; } /** * Get common data * * @return array */ private static function get_common_data() { $user = wp_get_current_user(); $plugins_data = self::get_installed_plugins(); $user_name = $user->user_firstname ? $user->user_firstname . ( $user->user_lastname ? ' ' . $user->user_lastname : '' ) : $user->display_name; $data = array( 'email' => $user->user_email, 'name' => $user_name, 'site_url' => esc_url( home_url() ), 'plugin' => self::PLUGIN_SLUG, 'theme' => get_stylesheet(), 'plugins' => $plugins_data, 'country_code' => self::get_country_code(), ); return $data; } }