File "class-xmlrpc-provider.php"
Full Path: /home/warrior1/public_html/languages/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-stats/src/class-xmlrpc-provider.php
File size: 3.02 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* The Stats XMLRPC Provider class
*
* @package automattic/jetpack-stats
*/
namespace Automattic\Jetpack\Stats;
use Automattic\Jetpack\Connection\Manager as Connection_Manager;
use Automattic\Jetpack\Modules;
/**
* Stats XMLRPC Provider.
*
* Adds additional methods to the WordPress XML-RPC API for handling Stats specific features.
*
* @since 0.1.0
*/
class XMLRPC_Provider {
/**
* Singleton XMLRPC_Provider instance.
*
* @var XMLRPC_Provider
**/
private static $instance = null;
/**
* Private XMLRPC_Provider constructor.
*
* Use the XMLRPC_Provider::init() method to get an instance.
*/
private function __construct() {
add_filter( 'jetpack_xmlrpc_unauthenticated_methods', array( $this, 'xmlrpc_methods' ), 10, 3 );
}
/**
* Initialize class and get back a singleton instance.
*
* @return XMLRPC_Provider
*/
public static function init() {
if ( null === self::$instance ) {
self::$instance = new XMLRPC_Provider();
}
return self::$instance;
}
/**
* Adds additional methods to the WordPress xmlrpc API for handling Stats specific features.
*
* @param array $methods The Jetpack API methods.
*
* @return array
*/
public function xmlrpc_methods( $methods ) {
if ( ! ( new Connection_Manager() )->is_connected() ) {
return $methods;
}
if ( ! ( new Modules() )->is_active( 'stats' ) ) {
return $methods;
}
$methods['jetpack.getBlog'] = array( $this, 'get_blog' );
return $methods;
}
/**
* Stats Get Blog.
*
* @return array
*/
public function get_blog() {
$home = wp_parse_url( trailingslashit( get_option( 'home' ) ) );
$blog = array(
'host' => $home['host'],
'path' => $home['path'],
'blogname' => get_option( 'blogname' ),
'blogdescription' => get_option( 'blogdescription' ),
'siteurl' => get_option( 'siteurl' ),
'gmt_offset' => get_option( 'gmt_offset' ),
'timezone_string' => get_option( 'timezone_string' ),
'stats_version' => Main::STATS_VERSION,
'stats_api' => 'jetpack',
'page_on_front' => get_option( 'page_on_front' ),
'permalink_structure' => get_option( 'permalink_structure' ),
'category_base' => get_option( 'category_base' ),
'tag_base' => get_option( 'tag_base' ),
);
$blog = array_merge( Options::get_options(), $blog );
unset( $blog['roles'], $blog['blog_id'] );
add_filter( 'esc_html', array( $this, 'filter_esc_html_check_if_string' ), 10, 2 );
$blog = map_deep( $blog, 'esc_html' );
remove_filter( 'esc_html', array( $this, 'filter_esc_html_check_if_string' ) );
return $blog;
}
/**
* Make sure we are only escaping html if the input is a string.
* Used for `esc_html` filter-hook.
*
* @param string $safe_text The output after esc_html has been applied.
* @param mixed $text The initial input.
* @return mixed
*/
public function filter_esc_html_check_if_string( $safe_text, $text ) {
if ( is_string( $text ) ) {
return $safe_text;
}
return $text;
}
}