PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.18.1
Independent Analytics – WordPress Analytics Plugin v1.18.1
2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / view_counter.php
independent-analytics / IAWP Last commit date
Migrations 3 years ago ajax 3 years ago models 3 years ago queries 3 years ago sql 3 years ago tables 3 years ago utils 3 years ago campaign_builder.php 3 years ago capability_manager.php 3 years ago chart.php 3 years ago chart_geo.php 3 years ago chart_svg.php 3 years ago current_resource.php 3 years ago dashboard_options.php 3 years ago dashboard_widget.php 3 years ago email_reports.php 3 years ago filters.php 3 years ago freemius.php 3 years ago geo_database.php 3 years ago geo_database_download_job.php 3 years ago health_check.php 3 years ago independent_analytics.php 3 years ago known_referrers.php 3 years ago pdf.php 3 years ago query.php 3 years ago quick_stats.php 3 years ago real_time.php 3 years ago rest_api.php 3 years ago settings.php 3 years ago track_resource_changes.php 3 years ago view_counter.php 3 years ago
view_counter.php
123 lines
1 <?php
2
3 namespace IAWP;
4
5 class View_Counter
6 {
7 public function __construct()
8 {
9 add_action('the_content', [$this, 'output_counter']);
10 add_action('init', [$this, 'add_shortcode']);
11 }
12
13 public function output_counter($content)
14 {
15 if (!$this->passes_checks()) {
16 return $content;
17 }
18
19 $position = IAWP()->get_option('iawp_view_counter_position', 'after');
20 $counter = $this->get_counter_html();
21
22 if ($position == 'before' || $position == 'both') {
23 $content = $counter . $content;
24 }
25 if ($position == 'after' || $position == 'both') {
26 $content .= $counter;
27 }
28
29 return $content;
30 }
31
32 public function get_counter_html($label = null, $icon = null)
33 {
34 $current_resource = Current_Resource::get_resource();
35
36 if (is_null($current_resource)) {
37 return;
38 }
39
40 $view_count = $this->get_view_count($current_resource);
41
42 if (is_null($label)) {
43 $label = IAWP()->get_option('iawp_view_counter_label', esc_html__('Views:', 'iawp'));
44 }
45 if (is_null($icon)) {
46 $icon = get_option('iawp_view_counter_icon', true);
47 }
48 if ($icon) {
49 $label = '<span class="dashicons dashicons-chart-bar"></span> ' . $label;
50 }
51
52 return '<div class="iawp-view-counter"><span class="label">' . wp_kses_post($label) . '</span> <span class="count">' . absint($view_count) . '</span></div>';
53 }
54
55 private function passes_checks(): bool
56 {
57 if (!is_singular() || !is_main_query()) {
58 return false;
59 }
60
61 if (IAWP()->get_option('iawp_view_counter_enable', false) == false) {
62 return false;
63 }
64 if (!in_array(get_post_type(), IAWP()->get_option('iawp_view_counter_post_types', []))) {
65 return false;
66 }
67
68 $exclude = IAWP()->get_option('iawp_view_counter_exclude', '');
69 if ($exclude != '') {
70 $exclude = explode(',', $exclude);
71 if (in_array(get_the_ID(), $exclude)) {
72 return false;
73 }
74 }
75
76 return true;
77 }
78
79 private function get_view_count(Current_Resource $resource): int
80 {
81 global $wpdb;
82
83 if ($resource->has_meta()) {
84 $meta_key = $resource->meta_key();
85 $query = $wpdb->prepare("
86 SELECT COUNT(views.id) AS views
87 FROM wp_independent_analytics_resources AS resources
88 LEFT JOIN wp_independent_analytics_views AS views ON resources.id = views.resource_id
89 WHERE resource = %s
90 AND $meta_key = %s
91 GROUP BY resources.id;
92 ", $resource->type(), $resource->meta_value());
93 } else {
94 $query = $wpdb->prepare('
95 SELECT COUNT(views.id) AS views
96 FROM wp_independent_analytics_resources AS resources
97 LEFT JOIN wp_independent_analytics_views AS views ON resources.id = views.resource_id
98 WHERE resource = %s
99 GROUP BY resources.id;
100 ', $resource->type());
101 }
102
103 $views = $wpdb->get_var($query);
104
105 return isset($views) ? $wpdb->get_var($query) : 0;
106 }
107
108 public function add_shortcode()
109 {
110 add_shortcode('iawp_view_counter', [$this, 'shortcode']);
111 }
112
113 public function shortcode($atts)
114 {
115 $a = shortcode_atts([
116 'label' => IAWP()->get_option('iawp_view_counter_label', esc_html__('Views:', 'iawp')),
117 'icon' => true,
118 ], $atts);
119
120 return $this->get_counter_html($a['label'], $a['icon']);
121 }
122 }
123