PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.6.1
Independent Analytics – WordPress Analytics Plugin v2.6.1
2.15.5 2.15.4 2.15.3 2.15.2 2.15.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 / Admin_Page / Analytics_Page.php
independent-analytics / IAWP / Admin_Page Last commit date
Admin_Page.php 2 years ago Analytics_Page.php 2 years ago Campaign_Builder_Page.php 2 years ago Settings_Page.php 2 years ago Support_Page.php 2 years ago Updates_Page.php 2 years ago
Analytics_Page.php
155 lines
1 <?php
2
3 namespace IAWP\Admin_Page;
4
5 use IAWP\Capability_Manager;
6 use IAWP\Chart;
7 use IAWP\Chart_Geo;
8 use IAWP\Dashboard_Options;
9 use IAWP\Database;
10 use IAWP\Env;
11 use IAWP\Plugin_Conflict_Detector;
12 use IAWP\Quick_Stats;
13 use IAWP\Real_Time;
14 use IAWP\Report_Finder;
15 use IAWP\Tables\Table;
16 use IAWP\Tables\Table_Campaigns;
17 use IAWP\Tables\Table_Devices;
18 use IAWP\Tables\Table_Geo;
19 use IAWP\Tables\Table_Pages;
20 use IAWP\Tables\Table_Referrers;
21 use IAWP\Utils\Security;
22 /** @internal */
23 class Analytics_Page extends \IAWP\Admin_Page\Admin_Page
24 {
25 protected function render_page()
26 {
27 $options = Dashboard_Options::getInstance();
28 $date_rage = $options->get_date_range();
29 $tab = (new Env())->get_tab();
30 if ($tab === 'views') {
31 $table = new Table_Pages();
32 $statistics_class = $table->group()->statistics_class();
33 $statistics = new $statistics_class($date_rage, null, $options->chart_interval());
34 $stats = new Quick_Stats($statistics);
35 $chart = new Chart($statistics);
36 $this->interface($table, $stats, $chart);
37 } elseif ($tab === 'referrers') {
38 $table = new Table_Referrers();
39 $statistics_class = $table->group()->statistics_class();
40 $statistics = new $statistics_class($date_rage, null, $options->chart_interval());
41 $stats = new Quick_Stats($statistics);
42 $chart = new Chart($statistics);
43 $this->interface($table, $stats, $chart);
44 } elseif ($tab === 'geo') {
45 $table = new Table_Geo($options->group());
46 $statistics_class = $table->group()->statistics_class();
47 $statistics = new $statistics_class($date_rage, null, $options->chart_interval());
48 $stats = new Quick_Stats($statistics);
49 $table_data_class = $table->group()->rows_class();
50 $geo_data = new $table_data_class($date_rage);
51 $chart = new Chart_Geo($geo_data->rows());
52 $this->interface($table, $stats, $chart);
53 } elseif ($tab === 'campaigns') {
54 $table = new Table_Campaigns();
55 $statistics_class = $table->group()->statistics_class();
56 $statistics = new $statistics_class($date_rage, null, $options->chart_interval());
57 $stats = new Quick_Stats($statistics);
58 $chart = new Chart($statistics);
59 $this->interface($table, $stats, $chart);
60 } elseif ($tab === 'devices') {
61 $table = new Table_Devices($options->group());
62 $statistics_class = $table->group()->statistics_class();
63 $statistics = new $statistics_class($date_rage, null, $options->chart_interval());
64 $stats = new Quick_Stats($statistics);
65 $chart = new Chart($statistics);
66 $this->interface($table, $stats, $chart);
67 } elseif ($tab === 'real-time') {
68 (new Real_Time())->render_real_time_analytics();
69 }
70 }
71 private function interface(Table $table, $stats, $chart)
72 {
73 $options = Dashboard_Options::getInstance();
74 $sort_configuration = $table->sanitize_sort_parameters($options->sort_column(), $options->sort_direction());
75 ?>
76 <div data-controller="report"
77 data-report-name-value="<?php
78 echo Security::string($options->report_name());
79 ?>"
80 data-report-relative-range-id-value="<?php
81 echo Security::attr($options->relative_range_id());
82 ?>"
83 data-report-exact-start-value="<?php
84 echo Security::attr($options->start());
85 ?>"
86 data-report-exact-end-value="<?php
87 echo Security::attr($options->end());
88 ?>"
89 data-report-group-value="<?php
90 echo Security::attr($options->group());
91 ?>"
92 data-report-filters-value="<?php
93 echo \esc_attr(Security::json_encode($options->filters()));
94 ?>"
95 data-report-chart-interval-value="<?php
96 echo Security::attr($options->chart_interval()->id());
97 ?>"
98 data-report-sort-column-value="<?php
99 echo Security::attr($options->sort_column());
100 ?>"
101 data-report-sort-direction-value="<?php
102 echo Security::attr($options->sort_direction());
103 ?>"
104 data-report-columns-value="<?php
105 echo \esc_attr(Security::json_encode($table->visible_column_ids()));
106 ?>"
107 data-report-quick-stats-value="<?php
108 echo \esc_attr(Security::json_encode($options->visible_quick_stats()));
109 ?>"
110 data-report-primary-chart-metric-id-value="<?php
111 echo \esc_attr($options->primary_chart_metric_id());
112 ?>"
113 data-report-secondary-chart-metric-id-value="<?php
114 echo \esc_attr($options->secondary_chart_metric_id());
115 ?>"
116 >
117 <div id="report-header-container" class="report-header-container">
118 <?php
119 echo \IAWPSCOPED\iawp_blade()->run('partials.report-header', ['report' => (new Report_Finder())->current(), 'can_edit' => Capability_Manager::can_edit()]);
120 ?>
121 <?php
122 $table->output_report_toolbar();
123 ?>
124 <div class="modal-background"></div>
125 </div>
126 <?php
127 echo $stats->get_html();
128 ?>
129 <?php
130 echo $chart->get_html();
131 ?>
132 <?php
133 echo $table->get_table_toolbar_markup();
134 ?>
135 <?php
136 echo $table->get_table_markup($sort_configuration->column(), $sort_configuration->direction());
137 ?>
138 </div>
139 <div class="iawp-notices">
140 <?php
141 $plugin_conflict_detector = new Plugin_Conflict_Detector();
142 if (!$plugin_conflict_detector->has_conflict()) {
143 echo \IAWPSCOPED\iawp_blade()->run('settings.notice', ['notice_text' => $plugin_conflict_detector->get_error(), 'button_text' => \false, 'notice' => 'iawp-error', 'url' => 'https://independentwp.com/knowledgebase/tracking/secure-rest-api/']);
144 }
145 if (\get_option('iawp_need_clear_cache')) {
146 echo \IAWPSCOPED\iawp_blade()->run('settings.notice', ['notice_text' => \__('Please clear your cache to ensure tracking works properly.', 'independent-analytics'), 'button_text' => \__('I\'ve cleared the cache', 'independent-analytics'), 'notice' => 'iawp-warning', 'url' => 'https://independentwp.com/knowledgebase/common-questions/views-not-recording/']);
147 }
148 if (\IAWPSCOPED\iawp_db_version() > 0 && !Database::has_correct_database_privileges()) {
149 echo \IAWPSCOPED\iawp_blade()->run('settings.notice', ['notice_text' => \__('Your site is missing the following critical database permissions:', 'independent-analytics') . ' ' . \implode(', ', Database::missing_database_privileges()) . '. ' . \__('There is no issue at this time, but you will need to enable the missing permissions before updating the plugin to a newer version to ensure an error is avoided. Please click this link to read our tutorial:', 'independent-analytics'), 'button_text' => \false, 'notice' => 'iawp-error', 'url' => 'https://independentwp.com/knowledgebase/common-questions/missing-database-permissions/']);
150 }
151 ?>
152 </div><?php
153 }
154 }
155