587 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			587 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace WpAssetCleanUp;
 | |
| 
 | |
| /**
 | |
|  * Class PluginTracking
 | |
|  * @package WpAssetCleanUp
 | |
|  */
 | |
| class PluginTracking
 | |
| {
 | |
| 	/**
 | |
| 	 * The data to send to the Asset CleanUp site
 | |
| 	 *
 | |
| 	 * @access private
 | |
| 	 */
 | |
| 	public $data;
 | |
| 
 | |
| 	/**
 | |
| 	 * Initiate Settings Class
 | |
| 	 *
 | |
| 	 * @var Settings
 | |
| 	 */
 | |
| 	public $settings;
 | |
| 
 | |
| 	/**
 | |
| 	 * @var bool
 | |
| 	 */
 | |
| 	public $showTrackingNotice = false;
 | |
| 
 | |
| 	/**
 | |
| 	 * PluginTracking constructor.
 | |
| 	 */
 | |
| 	public function __construct()
 | |
| 	{
 | |
| 		$this->settings = new Settings();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *
 | |
| 	 */
 | |
| 	public function init()
 | |
| 	{
 | |
| 		// Schedule
 | |
| 		add_action('wp',   array($this, 'scheduleEvents' ));
 | |
| 		add_action('init', array($this, 'scheduleSend' ));
 | |
| 
 | |
| 		// Triggers when Buttons from the Top Notice are clicked and page is reloaded (non-AJAX call)
 | |
|         // This is a fallback in case there are JS errors and the AJAX call is not triggering
 | |
|         if (isset($_GET['wpacu_is_page_reload']) && $_GET['wpacu_is_page_reload']) {
 | |
| 	        add_action('admin_init', array($this, 'optInOut' ));
 | |
|         }
 | |
| 
 | |
| 		// Before "Settings" are saved in the database, right after form submit
 | |
|         // Check "Allow Usage Tracking" value and take action if it's enabled
 | |
| 		add_action('wpacu_before_save_settings', array($this, 'checkForSettingsOptIn' ));
 | |
| 
 | |
|         // Notice on the top screen within the Dashboard to get permission from the user to allow tracking
 | |
|         add_action('admin_notices', array($this, 'adminNotice'));
 | |
| 
 | |
|         add_action('admin_head',   array($this, 'noticeStyles' ));
 | |
|         add_action('admin_footer', array($this, 'noticeScripts' ));
 | |
| 
 | |
| 		// Close the notice when action is taken by AJAX call
 | |
| 		add_action('wp_ajax_' . WPACU_PLUGIN_ID . '_close_tracking_notice', array($this, 'ajaxCloseTrackingNoticeCallback'));
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
|      * @param bool $isAjaxCall
 | |
| 	 * @return bool|string|void
 | |
| 	 */
 | |
| 	public function optInOut($isAjaxCall = false)
 | |
| 	{
 | |
| 	    if ( ! isset($_REQUEST['wpacu_action']) ) {
 | |
| 	        return false;
 | |
|         }
 | |
| 
 | |
| 		$response = '';
 | |
| 		$redirect = true;
 | |
| 
 | |
| 	    if ($isAjaxCall) {
 | |
| 	        $redirect = false;
 | |
|         }
 | |
| 
 | |
| 	    $wpacuAction = isset($_REQUEST['wpacu_action']) ? $_REQUEST['wpacu_action'] : '';
 | |
| 
 | |
| 	    if ($wpacuAction === 'wpacu_opt_into_tracking') {
 | |
| 		    $response = $this->checkForOptIn();
 | |
| 	    }
 | |
| 
 | |
| 	    if ($wpacuAction === 'wpacu_opt_out_of_tracking') {
 | |
|             $response = $this->checkForOptOut();
 | |
| 
 | |
|             if ($redirect) {
 | |
| 	            // Reload the same page without the Asset CleanUp query action
 | |
| 	            wp_redirect(remove_query_arg(array('wpacu_action', 'wpacu_is_page_reload')));
 | |
| 	            exit();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return $response;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Trigger scheduling
 | |
| 	 */
 | |
| 	public function scheduleEvents()
 | |
| 	{
 | |
| 		$this->weeklyEvents();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Schedule weekly events
 | |
| 	 *
 | |
| 	 * @access private
 | |
| 	 * @since 1.6
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	private function weeklyEvents()
 | |
| 	{
 | |
| 		if (! wp_next_scheduled('wpacu_weekly_scheduled_events')) {
 | |
| 			wp_schedule_event(current_time('timestamp', true), 'weekly', 'wpacu_weekly_scheduled_events');
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Check if the user has opted into tracking
 | |
| 	 *
 | |
| 	 * @access private
 | |
| 	 * @return bool
 | |
| 	 */
 | |
| 	private function trackingAllowed()
 | |
| 	{
 | |
| 		$allowUsageTracking = $this->settings->getOption('allow_usage_tracking');
 | |
| 		return (bool) $allowUsageTracking;
 | |
| 	}
 | |
| 	/**
 | |
| 	 * Set up the data that is going to be tracked
 | |
| 	 *
 | |
| 	 * @access private
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function setupData()
 | |
| 	{
 | |
| 		$data = array();
 | |
| 
 | |
| 		// Retrieve current theme info
 | |
| 		$themeData = wp_get_theme();
 | |
| 		$theme     = $themeData->get('Name') . ' ' . $themeData->get('Version');
 | |
| 
 | |
| 		$settingsClass = new Settings();
 | |
| 
 | |
| 		$data['php_version']       = PHP_VERSION;
 | |
| 		$data['wpacu_version']     = WPACU_PLUGIN_VERSION;
 | |
| 		$data['wpacu_settings']    = $settingsClass->getAll();
 | |
| 		$data['wpacu_first_usage'] = get_option(WPACU_PLUGIN_ID.'_first_usage');
 | |
| 		$data['wpacu_review_info'] = get_option(WPACU_PLUGIN_ID.'_review_notice_status');
 | |
| 		$data['wp_version']        = get_bloginfo('version');
 | |
| 		$data['server']            = isset( $_SERVER['SERVER_SOFTWARE'] ) ? $_SERVER['SERVER_SOFTWARE'] : '';
 | |
| 		$data['multisite']         = is_multisite() ? 'Yes' : 'No';
 | |
| 		$data['theme']             = $theme;
 | |
| 
 | |
| 		// Retrieve current plugin information
 | |
| 		$adminPluginFile = ABSPATH . '/wp-admin/includes/plugin.php';
 | |
| 		if (! function_exists( 'get_plugins') && is_file($adminPluginFile)) {
 | |
| 			include $adminPluginFile;
 | |
| 		}
 | |
| 
 | |
| 		$plugins        = array_keys(get_plugins());
 | |
| 		$active_plugins = Misc::getActivePlugins();
 | |
| 
 | |
| 		foreach ($plugins as $key => $plugin) {
 | |
| 			if (in_array($plugin, $active_plugins)) {
 | |
| 				// Remove active plugins from list, so we can show active and inactive separately
 | |
| 				unset($plugins[$key]);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		$data['active_plugins']   = $active_plugins;
 | |
| 		$data['inactive_plugins'] = $plugins;
 | |
| 		$data['locale']           = get_locale();
 | |
| 
 | |
| 		$this->data = $data;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Send the data to the Asset CleanUp server
 | |
| 	 *
 | |
| 	 * @access private
 | |
| 	 *
 | |
| 	 * @param  bool $override If we should override the tracking setting.
 | |
| 	 * @param  bool $ignoreLastCheckIn If we should ignore when the last check in was.
 | |
| 	 *
 | |
| 	 * @return bool
 | |
| 	 */
 | |
| 	public function sendCheckIn($override = false, $ignoreLastCheckIn = false)
 | |
| 	{
 | |
| 		// Allows us to stop the plugin's own site from checking in, and a filter for any related sites
 | |
| 		if (apply_filters('wpacu_disable_tracking_checkin', false)) {
 | |
| 			return false;
 | |
| 		}
 | |
| 
 | |
| 		if (! $override && ! $this->trackingAllowed()) {
 | |
| 			return false;
 | |
| 		}
 | |
| 
 | |
| 		// Send a maximum of once per week
 | |
| 		$lastSend = $this->getLastSend();
 | |
| 
 | |
| 		if ( ! $ignoreLastCheckIn && is_numeric($lastSend) && $lastSend > strtotime('-1 week')) {
 | |
| 			return 'Not Sent: Only Weekly';
 | |
| 		}
 | |
| 
 | |
| 		$this->setupData();
 | |
| 
 | |
| 		$response = wp_remote_post('https://www.assetcleanup.com/tracking/?wpacu_action=checkin', array(
 | |
| 			'method'      => 'POST',
 | |
| 			'timeout'     => 8,
 | |
| 			'redirection' => 5,
 | |
| 			'httpversion' => '1.1',
 | |
| 			'blocking'    => false,
 | |
| 			'body'        => $this->data,
 | |
| 			'user-agent'  => 'WPACU/' . WPACU_PLUGIN_VERSION . '; ' . get_bloginfo('url')
 | |
| 		));
 | |
| 
 | |
| 		Misc::addUpdateOption(WPACU_PLUGIN_ID.'_tracking_last_send', time());
 | |
| 
 | |
| 		return wp_remote_retrieve_body($response);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param $savedSettings
 | |
| 	 *
 | |
| 	 * @return array
 | |
| 	 */
 | |
| 	public function checkForSettingsOptIn($savedSettings)
 | |
| 	{
 | |
| 		// Send an initial check in when "Settings" are saved
 | |
| 		if (isset($savedSettings['allow_usage_tracking']) && $savedSettings['allow_usage_tracking'] == 1) {
 | |
| 			$this->sendCheckIn( true );
 | |
| 		}
 | |
| 
 | |
| 		return $savedSettings;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
|      * Check for a new opt-in via the admin notice or after "Settings" is saved
 | |
|      *
 | |
| 	 * @return bool|void
 | |
| 	 */
 | |
| 	public function checkForOptIn()
 | |
| 	{
 | |
| 		if (! Menu::userCanManageAssets()) {
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		// Update the value in the "Settings" area
 | |
| 		$this->settings->updateOption('allow_usage_tracking', 1);
 | |
| 
 | |
| 		// Send the tracking data
 | |
| 		$response = $this->sendCheckIn(true);
 | |
| 
 | |
| 		// Mark the notice to be hidden
 | |
| 		Misc::addUpdateOption(WPACU_PLUGIN_ID . '_hide_tracking_notice', 1);
 | |
| 
 | |
| 		return $response;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function checkForOptOut()
 | |
| 	{
 | |
| 		if (! Menu::userCanManageAssets()) {
 | |
| 			return 'Unauthorized';
 | |
| 		}
 | |
| 
 | |
| 		// Disable tracking option from "Settings" and mark the notice as hidden (to not show again)
 | |
| 		$this->settings->deleteOption('allow_usage_tracking');
 | |
| 		Misc::addUpdateOption(WPACU_PLUGIN_ID . '_hide_tracking_notice', 1);
 | |
| 
 | |
| 		return 'success';
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get the last time a checkin was sent
 | |
| 	 *
 | |
| 	 * @access private
 | |
| 	 * @return false|string
 | |
| 	 */
 | |
| 	private function getLastSend()
 | |
| 	{
 | |
| 		return get_option(WPACU_PLUGIN_ID . '_tracking_last_send');
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Schedule a weekly checkin
 | |
| 	 *
 | |
| 	 * We send once a week (while tracking is allowed) to check in, which can be
 | |
| 	 * used to determine active sites.
 | |
| 	 *
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function scheduleSend()
 | |
| 	{
 | |
| 		if (Misc::doingCron()) {
 | |
| 			add_action('wpacu_weekly_scheduled_events', array($this, 'sendCheckIn' ));
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns true or false for showing the top tracking notice
 | |
| 	 *
 | |
| 	 * @return bool
 | |
| 	 */
 | |
| 	public function showTrackingNotice()
 | |
| 	{
 | |
| 	    // On URL request (for debugging)
 | |
| 		if ( isset($_GET['wpacu_show_tracking_notice']) ) {
 | |
| 			return true;
 | |
| 		}
 | |
| 
 | |
| 		// If another Asset CleanUp notice (e.g. for plugin review) is already shown
 | |
|         // don't also show this one below/above it
 | |
| 		if (defined('WPACU_ADMIN_REVIEW_NOTICE_SHOWN')) {
 | |
| 		    return false;
 | |
|         }
 | |
| 
 | |
| 		if ($this->settings->getOption('allow_usage_tracking')) {
 | |
| 			return false;
 | |
| 		}
 | |
| 
 | |
| 		if (get_option(WPACU_PLUGIN_ID . '_hide_tracking_notice')) {
 | |
| 			return false;
 | |
| 		}
 | |
| 
 | |
| 		if (! Menu::userCanManageAssets()) {
 | |
| 			return false;
 | |
| 		}
 | |
| 
 | |
| 		if (false !== stripos(network_site_url('/'), 'dev') ||
 | |
| 		    false !== stripos(network_site_url('/'), 'localhost') ||
 | |
| 		    false !== strpos(network_site_url('/'), ':8888') // This is common with MAMP on OS X
 | |
| 		) {
 | |
| 			update_option(WPACU_PLUGIN_ID . '_tracking_notice', '1');
 | |
| 			return false;
 | |
| 		}
 | |
| 
 | |
| 		return true;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *
 | |
| 	 */
 | |
| 	public function ajaxCloseTrackingNoticeCallback()
 | |
| 	{
 | |
| 		check_ajax_referer('wpacu_plugin_tracking_nonce', 'wpacu_security');
 | |
| 
 | |
| 		$action = isset($_POST['action']) ? $_POST['action'] : false;
 | |
| 
 | |
| 		if ($action !== WPACU_PLUGIN_ID . '_close_tracking_notice' || ! $action) {
 | |
| 			exit('Invalid Action');
 | |
| 		}
 | |
| 
 | |
| 		$wpacuAction = isset($_POST['wpacu_action']) ? $_POST['wpacu_action'] : false;
 | |
| 
 | |
| 		if (! $wpacuAction) {
 | |
| 			exit('Invalid Asset CleanUp Action');
 | |
| 		}
 | |
| 
 | |
| 		// Allow to Disallow (depending on the action chosen)
 | |
| 		$response = $this->optInOut(true);
 | |
| 		echo esc_html($response);
 | |
| 
 | |
| 		exit();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *
 | |
| 	 */
 | |
| 	public function noticeStyles()
 | |
| 	{
 | |
| 		?>
 | |
|         <style <?php echo Misc::getStyleTypeAttribute(); ?>>
 | |
|             .wpacu-tracking-notice {
 | |
|                 border-left-color: #008f9c;
 | |
|             }
 | |
| 
 | |
|             .wpacu-tracking-notice .wpacu-action-links {
 | |
|                 margin: 0 0 8px;
 | |
|             }
 | |
| 
 | |
|             .wpacu-tracking-notice .wpacu-action-links ul {
 | |
|                 list-style: none;
 | |
|                 margin: 0;
 | |
|             }
 | |
| 
 | |
|             .wpacu-tracking-notice .wpacu-action-links ul li.wpacu-optin {
 | |
|                 float: left;
 | |
|                 margin-right: 10px;
 | |
|             }
 | |
| 
 | |
|             .wpacu-tracking-notice .wpacu-action-links ul li.wpacu-optout {
 | |
|                 float: left;
 | |
|                 margin-right: 5px;
 | |
|             }
 | |
| 
 | |
|             .wpacu-tracking-notice .wpacu-action-links ul li.wpacu-more-info {
 | |
|                 float: left;
 | |
|                 margin-top: 5px;
 | |
|                 margin-left: 5px;
 | |
|             }
 | |
| 
 | |
|             #wpacu-tracked-data-list {
 | |
|                 margin: 14px 0;
 | |
|             }
 | |
| 
 | |
|             #wpacu-tracked-data-list .table-striped {
 | |
|                 border: none;
 | |
|                 border-spacing: 0;
 | |
|             }
 | |
| 
 | |
|             #wpacu-tracked-data-list .wpacu_table_wrap .table.table-striped th,
 | |
|             #wpacu-tracked-data-list .wpacu_table_wrap .table.table-striped td {
 | |
|                 padding: 0.62rem;
 | |
|                 vertical-align: top;
 | |
|                 border-top: 1px solid #eceeef;
 | |
|             }
 | |
| 
 | |
|             #wpacu-tracked-data-list .table-striped tbody tr:nth-of-type(even) {
 | |
|                 background-color: rgba(0, 143, 156, 0.05);
 | |
|             }
 | |
| 
 | |
|             #wpacu-tracked-data-list .table-striped tbody tr td:first-child {
 | |
|                 font-weight: bold;
 | |
|             }
 | |
|         </style>
 | |
| 		<?php
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 *
 | |
| 	 */
 | |
| 	public function noticeScripts()
 | |
| 	{
 | |
| 		if (! $this->showTrackingNotice) {
 | |
| 			return;
 | |
| 		}
 | |
| 		?>
 | |
|         <script type="text/javascript">
 | |
|             jQuery(document).ready(function($) {
 | |
|                 var $wpacuTrackedDataList = $('#wpacu-tracked-data-list');
 | |
| 
 | |
|                 // Tracking Info Link Clicked
 | |
|                 $('#wpacu-show-tracked-data').on('click', function(e) {
 | |
|                     e.preventDefault();
 | |
| 
 | |
|                     if ($wpacuTrackedDataList.is(':hidden')) {
 | |
|                         $wpacuTrackedDataList.slideDown('fast');
 | |
|                     } else {
 | |
|                         $wpacuTrackedDataList.slideUp('fast');
 | |
|                     }
 | |
|                 });
 | |
| 
 | |
|                 // 'x' click from the top right of the notice
 | |
|                 $(document).on('click', '.wpacu-tracking-notice .notice-dismiss', function(event) {
 | |
|                     $('[data-wpacu-close-action="wpacu_opt_out_of_tracking"]').trigger('click');
 | |
|                 });
 | |
| 
 | |
|                 // button click
 | |
|                 $('.wpacu-close-tracking-notice').on('click', function(e) {
 | |
|                     e.preventDefault();
 | |
| 
 | |
|                     $('.wpacu-tracking-notice').fadeOut('fast');
 | |
| 
 | |
|                     var wpacuXhr = new XMLHttpRequest(),
 | |
|                         wpacuCloseAction = $(this).attr('data-wpacu-close-action'),
 | |
|                         wpacuSecurityNonce = '<?php echo wp_create_nonce('wpacu_plugin_tracking_nonce'); ?>';
 | |
| 
 | |
|                     wpacuXhr.open('POST', '<?php echo esc_url(admin_url('admin-ajax.php')); ?>');
 | |
|                     wpacuXhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 | |
|                     wpacuXhr.onload = function () {
 | |
|                         if (wpacuXhr.status === 200) {
 | |
|                             } else if (wpacuXhr.status !== 200) {
 | |
|                             }
 | |
|                     };
 | |
| 
 | |
|                     wpacuXhr.send(encodeURI('action=<?php echo WPACU_PLUGIN_ID . '_close_tracking_notice'; ?>&wpacu_action=' + wpacuCloseAction + '&wpacu_security='+ wpacuSecurityNonce));
 | |
|                 });
 | |
|             });
 | |
|         </script>
 | |
| 		<?php
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Display the admin notice to users that have not opted-in or out
 | |
| 	 *
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function adminNotice()
 | |
| 	{
 | |
| 	    if (! $this->showTrackingNotice()) {
 | |
| 		    return;
 | |
|         }
 | |
| 
 | |
| 		$this->setupData();
 | |
| 
 | |
| 		$optin_url  = add_query_arg(array('wpacu_action' => 'wpacu_opt_into_tracking', 'wpacu_is_page_reload' => true));
 | |
| 		$optout_url = add_query_arg(array('wpacu_action' => 'wpacu_opt_out_of_tracking', 'wpacu_is_page_reload' => true));
 | |
| 
 | |
| 		?>
 | |
| 		<div class="wpacu-tracking-notice notice is-dismissible">
 | |
| 			<p><?php _e('Allow Asset CleanUp to anonymously track plugin usage in order to help us make the plugin better? No sensitive or personal data is collected.', 'wp-asset-clean-up'); ?></p>
 | |
| 			<div class="wpacu-action-links">
 | |
| 				<ul>
 | |
| 					<li class="wpacu-optin">
 | |
|                         <a href="<?php echo esc_url($optin_url); ?>"
 | |
|                            data-wpacu-close-action="wpacu_opt_into_tracking"
 | |
|                            class="wpacu-close-tracking-notice button-primary"><?php _e('Allow, I\'m happy to help', 'easy-digital-downloads'); ?></a>
 | |
|                     </li>
 | |
| 					<li class="wpacu-optout">
 | |
|                         <a href="<?php echo esc_url($optout_url); ?>"
 | |
|                            data-wpacu-close-action="wpacu_opt_out_of_tracking"
 | |
|                            class="wpacu-close-tracking-notice button-secondary"><?php _e('No, do not allow', 'easy-digital-downloads'); ?></a></li>
 | |
| 			        <li class="wpacu-more-info"><span style="color: #004567;" class="dashicons dashicons-info"></span> <a id="wpacu-show-tracked-data" href="#">What kind of data will be sent for the tracking?</a></li>
 | |
| 				</ul>
 | |
| 				<div style="clear: both;"></div>
 | |
|                 <div style="display: none;" id="wpacu-tracked-data-list">
 | |
| 					<?php self::showSentInfoDataTable($this->data); ?>
 | |
|                 </div>
 | |
|                 <hr />
 | |
|                 <p><strong>Note:</strong> This option can always be turned ON & OFF in <a style="text-decoration: none;" target="_blank" href="<?php echo admin_url('admin.php?page=wpassetcleanup_settings&wpacu_selected_tab_area=wpacu-setting-plugin-usage-settings#wpacu-settings-allow-usage-tracking'); ?>">"Settings" → "Plugin Usage Preferences" → "Allow Usage Tracking"</a></p>
 | |
| 			</div>
 | |
| 		</div>
 | |
| 		<?php
 | |
|         if (! defined('WPACU_ADMIN_TRACKING_NOTICE_SHOWN')) {
 | |
| 	        define('WPACU_ADMIN_TRACKING_NOTICE_SHOWN', true);
 | |
|         }
 | |
| 
 | |
|         // Only mark it as shown after it was printed
 | |
| 		$this->showTrackingNotice = true;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param $data
 | |
| 	 */
 | |
| 	public static function showSentInfoDataTable($data)
 | |
|     {
 | |
|         ?>
 | |
|         <div class="wpacu_table_wrap">
 | |
|             <table class="table table-striped">
 | |
|                 <tr>
 | |
|                     <td style="width: 182px;">PHP Version:</td>
 | |
|                     <td><?php echo esc_html($data['php_version']); ?></td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td>Asset CleanUp Info:</td>
 | |
|                     <td>Version: <?php echo esc_html($data['wpacu_version']); ?>, Settings & Usage Information</td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td>WordPress Version:</td>
 | |
|                     <td><?php echo esc_html($data['wp_version']); ?></td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td>Server:</td>
 | |
|                     <td><?php echo esc_html($data['server']); ?></td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td>Multisite:</td>
 | |
|                     <td><?php echo esc_html($data['multisite']); ?></td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td>Theme:</td>
 | |
|                     <td><?php echo esc_html($data['theme']); ?></td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td>Locale:</td>
 | |
|                     <td><?php echo esc_html($data['locale']); ?></td>
 | |
|                 </tr>
 | |
|                 <tr>
 | |
|                     <td>Plugins:</td>
 | |
|                     <td>The list of active & inactive plugins</td>
 | |
|                 </tr>
 | |
|             </table>
 | |
|         </div>
 | |
|         <?php
 | |
|     }
 | |
| }
 |