`post_type`, `post_status`, COUNT(`ID`) `hits`
FROM {$wpdb->posts} `p`
LEFT JOIN {$wpdb->postmeta} `pm` ON(`p`.`ID` = `pm`.`post_id`)
WHERE `post_type` != 'elementor_library'
AND `meta_key` = '_elementor_edit_mode' AND `meta_value` = 'builder'
GROUP BY `post_type`, `post_status`;"
);
if ( $results ) {
foreach ( $results as $result ) {
$usage[ $result->post_type ][ $result->post_status ] = (int) $result->hits;
}
}
return $usage;
}
/**
* Get library usage.
*
* Retrieve the number of Elementor library items saved.
*
* @since 2.0.0
* @access public
* @static
*
* @return array The number of Elementor library items grouped by post types
* and meta value.
*/
public static function get_library_usage() {
global $wpdb;
$usage = [];
$results = $wpdb->get_results(
"SELECT `meta_value`, COUNT(`ID`) `hits`
FROM {$wpdb->posts} `p`
LEFT JOIN {$wpdb->postmeta} `pm` ON(`p`.`ID` = `pm`.`post_id`)
WHERE `post_type` = 'elementor_library'
AND `meta_key` = '_elementor_template_type'
GROUP BY `post_type`, `meta_value`;"
);
if ( $results ) {
foreach ( $results as $result ) {
$usage[ $result->meta_value ] = $result->hits;
}
}
return $usage;
}
/**
* Get usage of general settings.
* 'Elementor->Settings->General'.
*
* @return array
*/
public static function get_settings_general_usage() {
return self::get_tracking_data_from_settings( 'general' );
}
/**
* Get usage of advanced settings.
* 'Elementor->Settings->Advanced'.
*
* @return array
*/
public static function get_settings_advanced_usage() {
return self::get_tracking_data_from_settings( 'advanced' );
}
/**
* Get usage of performance settings.
* 'Elementor->Settings->Performance'.
*
* @return array
*/
public static function get_settings_performance_usage() {
return self::get_tracking_data_from_settings( 'performance' );
}
/**
* Get usage of experiments settings.
*
* 'Elementor->Settings->Experiments'.
*
* @return array
*/
public static function get_settings_experiments_usage() {
$system_info = Plugin::$instance->system_info;
/**
* @var $experiments_report Experiments_Reporter
*/
$experiments_report = $system_info->create_reporter( [
'class_name' => Experiments_Reporter::class,
] );
return $experiments_report->get_experiments()['value'];
}
/**
* Get usage of general tools.
* 'Elementor->Tools->General'.
*
* @return array
*/
public static function get_tools_general_usage() {
return self::get_tracking_data_from_tools( 'general' );
}
/**
* Get usage of 'version control' tools.
* 'Elementor->Tools->Version Control'.
*
* @return array
*/
public static function get_tools_version_control_usage() {
return self::get_tracking_data_from_tools( 'versions' );
}
/**
* Get usage of 'maintenance' tools.
* 'Elementor->Tools->Maintenance'.
*
* @return array
*/
public static function get_tools_maintenance_usage() {
return self::get_tracking_data_from_tools( 'maintenance_mode' );
}
/**
* Get library usage extend.
*
* Retrieve the number of Elementor library items saved.
*
* @return array The number of Elementor library items grouped by post types, post status
* and meta value.
*/
public static function get_library_usage_extend() {
global $wpdb;
$usage = [];
$results = $wpdb->get_results(
"SELECT `meta_value`, COUNT(`ID`) `hits`, `post_status`
FROM {$wpdb->posts} `p`
LEFT JOIN {$wpdb->postmeta} `pm` ON(`p`.`ID` = `pm`.`post_id`)
WHERE `post_type` = 'elementor_library'
AND `meta_key` = '_elementor_template_type'
GROUP BY `post_type`, `meta_value`, `post_status`;"
);
if ( $results ) {
foreach ( $results as $result ) {
if ( empty( $usage[ $result->meta_value ] ) ) {
$usage[ $result->meta_value ] = [];
}
if ( empty( $usage[ $result->meta_value ][ $result->post_status ] ) ) {
$usage[ $result->meta_value ][ $result->post_status ] = 0;
}
$usage[ $result->meta_value ][ $result->post_status ] += $result->hits;
}
}
return $usage;
}
public static function get_events() {
global $wpdb;
$table_name = $wpdb->prefix . Events_DB_Manager::TABLE_NAME;
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
$results = $wpdb->get_results( "SELECT event_data FROM {$table_name}" );
$events_data = [];
foreach ( $results as $event ) {
// Results are stored in the database as a JSON string. Since all tracking data is encoded right before
// being sent, it is now decoded.
$events_data[] = json_decode( $event->event_data, true );
}
return $events_data;
}
/**
* Get the tracking data
*
* Retrieve tracking data and apply filter
*
* @access public
* @static
*
* @param bool $is_first_time
*
* @return array
*/
public static function get_tracking_data( $is_first_time = false ) {
$params = [
'system' => self::get_system_reports_data(),
'site_lang' => get_bloginfo( 'language' ),
'email' => get_option( 'admin_email' ),
'usages' => [
'posts' => self::get_posts_usage(),
'non-elementor-posts' => self::get_non_elementor_posts_usage(),
'library' => self::get_library_usage(),
'settings' => [
'general' => self::get_settings_general_usage(),
'advanced' => self::get_settings_advanced_usage(),
'experiments' => self::get_settings_experiments_usage(),
],
'tools' => [
'general' => self::get_tools_general_usage(),
'version' => self::get_tools_version_control_usage(),
'maintenance' => self::get_tools_maintenance_usage(),
],
'library-details' => self::get_library_usage_extend(),
],
'is_first_time' => $is_first_time,
'install_time' => Plugin::instance()->get_install_time(),
];
$site_key = Api::get_site_key();
if ( ! empty( $site_key ) ) {
$params['site_key'] = $site_key;
}
/**
* Tracker send tracking data params.
*
* Filters the data parameters when sending tracking request.
*
* @param array $params Variable to encode as JSON.
*
* @since 1.0.0
*
*/
$params = apply_filters( 'elementor/tracker/send_tracking_data_params', $params );
return $params;
}
/**
* @param string $tab_name
* @return array
*/
private static function get_tracking_data_from_settings( $tab_name ) {
return self::get_tracking_data_from_settings_page(
Plugin::$instance->settings->get_tabs(),
$tab_name
);
}
/**
* @param string $tab_name
* @return array
*/
private static function get_tracking_data_from_tools( $tab_name ) {
return self::get_tracking_data_from_settings_page(
Plugin::$instance->tools->get_tabs(),
$tab_name
);
}
private static function get_tracking_data_from_settings_page( $tabs, $tab_name ) {
$result = [];
if ( empty( $tabs[ $tab_name ] ) ) {
return $result;
}
$tab = $tabs[ $tab_name ];
foreach ( $tab['sections'] as $section_name => $section ) {
foreach ( $section['fields'] as $field_name => $field ) {
// Skips fields with '_' prefix.
if ( '_' === $field_name[0] ) {
continue;
}
$default_value = null;
$args = $field['field_args'];
switch ( $args['type'] ) {
case 'checkbox':
$default_value = $args['value'];
break;
case 'select':
case 'checkbox_list_cpt':
$default_value = $args['std'];
break;
case 'checkbox_list_roles':
$default_value = null;
break;
// 'raw_html' is used as action and not as data.
case 'raw_html':
continue 2; // Skip fields loop.
default:
trigger_error( 'Invalid type: \'' . $args['type'] . '\'' ); // phpcs:ignore
}
$result[ $field_name ] = get_option( 'elementor_' . $field_name, $default_value );
}
}
return $result;
}
}
Fatal error: Uncaught Error: Class 'Elementor\Tracker' not found in /var/www/html/dportilho.com.br/web/wp-content/plugins/elementor/modules/usage/module.php:647
Stack trace:
#0 /var/www/html/dportilho.com.br/web/wp-content/plugins/elementor/core/base/module.php(85): Elementor\Modules\Usage\Module->__construct()
#1 /var/www/html/dportilho.com.br/web/wp-content/plugins/elementor/core/modules-manager.php(64): Elementor\Core\Base\Module::instance()
#2 /var/www/html/dportilho.com.br/web/wp-content/plugins/elementor/includes/plugin.php(755): Elementor\Core\Modules_Manager->__construct()
#3 /var/www/html/dportilho.com.br/web/wp-content/plugins/elementor/includes/plugin.php(673): Elementor\Plugin->init_components()
#4 /var/www/html/dportilho.com.br/web/wp-includes/class-wp-hook.php(324): Elementor\Plugin->init('')
#5 /var/www/html/dportilho.com.br/web/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array)
#6 /var/www/html/dportilho.com.br/web/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
#7 /var/www/html in /var/www/html/dportilho.com.br/web/wp-content/plugins/elementor/modules/usage/module.php on line 647