__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
namespace WP_Statistics\Service;
use WP_STATISTICS\Menus;
use WP_Statistics\Components\AssetNameObfuscator;
use WP_Statistics\Globals\Context;
use WP_Statistics\Service\Admin\LicenseManagement\LicenseHelper;
class HooksManager
{
public function __construct()
{
add_action('admin_init', [$this, 'setWpsPage']);
add_filter('kses_allowed_protocols', [$this, 'updateAllowedProtocols']);
add_filter('plugin_action_links_' . plugin_basename(WP_STATISTICS_MAIN_FILE), [$this, 'addActionLinks']);
add_filter('plugins_loaded', [$this, 'serveObfuscatedAsset'], PHP_INT_MAX);
}
/**
* Sets the current page, view and tab in the context.
*
* @return void
*/
public function setWpsPage()
{
$wpsPage = ['slug' => null, 'view' => null, 'tab' => null];
$page = Menus::getCurrentPage();
$className = $page['callback'] ?? '';
if (class_exists($className)) {
$class = $className::instance();
if (method_exists($class, 'getPageSlug')) {
$wpsPage['slug'] = $class->getPageSlug();
}
if (method_exists($class, 'getCurrentView')) {
$wpsPage['view'] = $class->getCurrentView();
}
if (method_exists($class, 'getCurrentViewClass')) {
$view = $class->getCurrentViewClass();
if (method_exists($view, 'getCurrentTab')) {
$wpsPage['tab'] = $view->getCurrentTab();
}
}
Context::add('wps_page', $wpsPage);
}
}
/**
* Adds custom links to the plugin action links in the WordPress admin plugins page.
*
* @param array $links The existing plugin action links.
*
* @return array The modified links with the custom links added.
*/
public function addActionLinks($links)
{
$isPremium = (bool)LicenseHelper::isPremiumLicenseAvailable();
$customLinks = [
'<a href="' . Menus::admin_url('settings') . '">' . esc_html__('Settings', 'wp-statistics') . '</a>',
'<a target="_blank" href="https://wp-statistics.com/documentation/?utm_source=wp-statistics&utm_medium=link&utm_campaign=plugins">' . esc_html__('Docs', 'wp-statistics') . '</a>',
];
if (!$isPremium) {
$premiumLink = '<a class="wps-premium-link-btn" target="_blank" href="https://wp-statistics.com/pricing/?utm_source=wp-statistics&utm_medium=link&utm_campaign=plugins">' . esc_html__('Get Premium', 'wp-statistics') . '</a>';
array_unshift($customLinks, $premiumLink);
}
return array_merge($customLinks, $links);
}
/**
* Modifies the list of allowed protocols.
*
* @param array $protocols The list of allowed protocols.
*/
public function updateAllowedProtocols($defaultProtocols)
{
$customProtocols = [
'android-app'
];
$customProtocols = apply_filters('wp_statistics_allowed_protocols', $customProtocols);
return array_merge($defaultProtocols, $customProtocols);
}
/**
* Proxies requested asset files through PHP to serve them securely.
*
* @return void
*/
public function serveObfuscatedAsset()
{
$assetNameObfuscator = new AssetNameObfuscator();
$dynamicAssetKey = $assetNameObfuscator->getDynamicAssetKey();
if (isset($_GET[$dynamicAssetKey])) {
$asset = sanitize_text_field($_GET[$dynamicAssetKey]);
$assetNameObfuscator->serveAssetByHash($asset);
}
}
}| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Admin | Folder | 0755 |
|
|
| Analytics | Folder | 0755 |
|
|
| Charts | Folder | 0755 |
|
|
| CustomEvent | Folder | 0755 |
|
|
| Database | Folder | 0755 |
|
|
| Debugger | Folder | 0755 |
|
|
| Geolocation | Folder | 0755 |
|
|
| Integrations | Folder | 0755 |
|
|
| Logger | Folder | 0755 |
|
|
| Summary | Folder | 0755 |
|
|
| ThirdParty | Folder | 0755 |
|
|
| CronEventManager.php | File | 1.46 KB | 0644 |
|
| HooksManager.php | File | 3.55 KB | 0644 |
|