222 lines
3.3 KiB
PHP
222 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace Analyst;
|
|
|
|
use Analyst\Contracts\AnalystContract;
|
|
|
|
/**
|
|
* Class Collector is a set of getters
|
|
* to retrieve some data from wp site
|
|
*/
|
|
class Collector
|
|
{
|
|
/**
|
|
* @var AnalystContract
|
|
*/
|
|
protected $sdk;
|
|
|
|
/**
|
|
* @var \WP_User
|
|
*/
|
|
protected $user;
|
|
|
|
public function __construct(AnalystContract $sdk)
|
|
{
|
|
$this->sdk = $sdk;
|
|
}
|
|
|
|
/**
|
|
* Load current user into memory
|
|
*/
|
|
public function loadCurrentUser()
|
|
{
|
|
$this->user = wp_get_current_user();
|
|
}
|
|
|
|
/**
|
|
* Get site url
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getSiteUrl()
|
|
{
|
|
return get_option('siteurl');
|
|
}
|
|
|
|
/**
|
|
* Get current user email
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getCurrentUserEmail()
|
|
{
|
|
return $this->user->user_email;
|
|
}
|
|
|
|
/**
|
|
* Get's email from general settings
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getGeneralEmailAddress()
|
|
{
|
|
return get_option('admin_email');
|
|
}
|
|
|
|
/**
|
|
* Is this user administrator
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isUserAdministrator()
|
|
{
|
|
return in_array('administrator', $this->user->roles);
|
|
}
|
|
|
|
/**
|
|
* User name
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getCurrentUserName()
|
|
{
|
|
return $this->user ? $this->user->user_nicename : 'unknown';
|
|
}
|
|
|
|
/**
|
|
* WP version
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getWordPressVersion()
|
|
{
|
|
global $wp_version;
|
|
|
|
return $wp_version;
|
|
}
|
|
|
|
/**
|
|
* PHP version
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getPHPVersion()
|
|
{
|
|
return phpversion();
|
|
}
|
|
|
|
/**
|
|
* Resolves plugin information
|
|
*
|
|
* @param string $path Absolute path to plugin
|
|
* @return array
|
|
*/
|
|
public function resolvePluginData($path)
|
|
{
|
|
if( !function_exists('get_plugin_data') ){
|
|
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
|
}
|
|
|
|
return get_plugin_data($path);
|
|
}
|
|
|
|
/**
|
|
* Get plugin name by path
|
|
*
|
|
* @param $path
|
|
* @return string
|
|
*/
|
|
public function getPluginName($path)
|
|
{
|
|
$data = $this->resolvePluginData($path);
|
|
|
|
return $data['Name'];
|
|
}
|
|
|
|
/**
|
|
* Get plugin version
|
|
*
|
|
* @param $path
|
|
* @return string
|
|
*/
|
|
public function getPluginVersion($path)
|
|
{
|
|
$data = $this->resolvePluginData($path);
|
|
|
|
return $data['Version'] ? $data['Version'] : null;
|
|
}
|
|
|
|
/**
|
|
* Get server ip
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getServerIp()
|
|
{
|
|
return sanitize_text_field($_SERVER['SERVER_ADDR']);
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getSDKVersion()
|
|
{
|
|
return $this->sdk->version();
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getMysqlVersion()
|
|
{
|
|
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
|
|
|
|
if ($conn) {
|
|
$version = mysqli_get_server_info($conn);
|
|
} else {
|
|
return 'unknown';
|
|
}
|
|
|
|
return $version ? $version : 'unknown';
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getSiteLanguage()
|
|
{
|
|
return get_locale();
|
|
}
|
|
|
|
|
|
/**
|
|
* Current WP theme
|
|
*
|
|
* @return false|string
|
|
*/
|
|
public function getCurrentThemeName()
|
|
{
|
|
return wp_get_theme()->get('Name');
|
|
}
|
|
|
|
/**
|
|
* Get active plugins list
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getActivePluginsList()
|
|
{
|
|
if (!function_exists('get_plugins')) {
|
|
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
|
}
|
|
|
|
$allPlugins = get_plugins();
|
|
|
|
$activePluginsNames = array_map(function ($path) use ($allPlugins) {
|
|
return $allPlugins[$path]['Name'];
|
|
}, get_option('active_plugins'));
|
|
|
|
return $activePluginsNames;
|
|
}
|
|
}
|