Files
roi-theme/wp-content/plugins/thrive-visual-editor/thrive-dashboard/inc/metrics/class-main.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

130 lines
3.3 KiB
PHP
Executable File

<?php
/**
* Thrive Themes - https://thrivethemes.com
*
* @package thrive-dashboard
*/
namespace TVE\Dashboard\Metrics;
use function apply_filters;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Silence is golden!
}
class Main {
const SCRIPT_HANDLE = 'td-metrics';
const APP_ID = 'td-metrics-wrapper';
const NONCE = 'td-metrics-nonce';
public static function init() {
static::includes();
static::hooks();
}
public static function get_class_name_from_filename( $filename ) {
$name = str_replace( 'class-', '', basename( $filename, '.php' ) );
return str_replace( '-', '_', ucwords( $name, '-' ) );
}
/**
* Function that requires all the files needed for the metrics
*
* @return void
*/
public static function includes() {
foreach ( glob( __DIR__ . '/*.php' ) as $file ) {
if ( strpos( $file, 'class-main.php' ) !== false ) {
continue;
}
require_once $file;
$class = 'TVE\Dashboard\Metrics\\' . static::get_class_name_from_filename( $file );
if ( method_exists( $class, 'init' ) ) {
$class::init();
}
}
}
public static function hooks() {
add_action( 'admin_footer', [ __CLASS__, 'print_wrapper' ] );
add_action( 'rest_api_init', [ __CLASS__, 'rest_api_init' ] );
add_action( 'admin_enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
}
/**
* Print the wrapper for the Vue app
*
* @return void
*/
public static function print_wrapper() {
if ( static::should_enqueue() ) {
echo '<div id="' . static::APP_ID . '"></div>';
}
}
/**
* Enqueue the scripts for the metrics app
*
* @return void
*/
public static function enqueue_scripts() {
if ( static::should_enqueue() ) {
tve_dash_enqueue_vue();
tve_dash_enqueue_script( static::SCRIPT_HANDLE, TVE_DASH_URL . '/assets/dist/js/metrics.js', [], TVE_DASH_VERSION, true );
if ( is_file( TVE_DASH_PATH . '/assets/dist/css/metrics.css' ) ) {
tve_dash_enqueue_style( static::SCRIPT_HANDLE, TVE_DASH_URL . '/assets/dist/css/metrics.css' );
}
wp_localize_script( static::SCRIPT_HANDLE, 'TD_Metrics', static::localize_data() );
}
}
/**
* Whether we should enqueue the scripts for the metrics app
*
* @return mixed|null
*/
public static function should_enqueue() {
return apply_filters( 'tve_dash_metrics_should_enqueue', Deactivate::should_enqueue() || Tracking::should_enqueue() );
}
/**
* Data to be passed to the frontend
*
* @return mixed|null
*/
public static function localize_data() {
$data = [
'app_id' => static::APP_ID,
'tracking_consent_notice' => Tracking::TRACKING_NOTICE_ID,
'routes' => get_rest_url( get_current_blog_id(), Rest_Controller::REST_NAMESPACE ),
'wp_rest_nonce' => wp_create_nonce( 'wp_rest' ),
'td_metrics_nonce' => wp_create_nonce( static::NONCE ),
'is_plugin_screen' => Utils::is_plugins_screen(),
'plugins' => Utils::get_products(),
'i18n' => [],
'tracking_setting_id' => Tracking::SETTING_ID,
'tracking_enabled' => Tracking::get_tracking_allowed(),
];
return apply_filters( 'tve_metrics_localize_data', $data );
}
/**
* Initialize the REST API routes
*
* @return void
*/
public static function rest_api_init() {
$rest = new Rest_Controller();
$rest->register_routes();
}
}