PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.2.0
Independent Analytics – WordPress Analytics Plugin v2.2.0
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 / Tables / Table_Pages.php
independent-analytics / IAWP / Tables Last commit date
Columns 2 years ago Groups 2 years ago Table.php 2 years ago Table_Campaigns.php 2 years ago Table_Devices.php 2 years ago Table_Geo.php 2 years ago Table_Pages.php 2 years ago Table_Referrers.php 2 years ago
Table_Pages.php
79 lines
1 <?php
2
3 namespace IAWP_SCOPED\IAWP\Tables;
4
5 use IAWP_SCOPED\IAWP\Rows\Pages;
6 use IAWP_SCOPED\IAWP\Statistics\Page_Statistics;
7 use IAWP_SCOPED\IAWP\Tables\Columns\Column;
8 use IAWP_SCOPED\IAWP\Tables\Groups\Group;
9 use IAWP_SCOPED\IAWP\Tables\Groups\Groups;
10 /** @internal */
11 class Table_Pages extends Table
12 {
13 protected function table_name() : string
14 {
15 return 'views';
16 }
17 protected function groups() : Groups
18 {
19 $groups = [];
20 $groups[] = new Group('page', \__('Page', 'independent-analytics'), Pages::class, Page_Statistics::class);
21 return new Groups($groups);
22 }
23 protected function local_columns() : array
24 {
25 return [new Column(['id' => 'title', 'label' => \esc_html__('Title', 'independent-analytics'), 'visible' => \true, 'type' => 'string', 'database_column' => 'cached_title']), new Column(['id' => 'visitors', 'label' => \esc_html__('Visitors', 'independent-analytics'), 'visible' => \true, 'type' => 'int']), new Column(['id' => 'views', 'label' => \esc_html__('Views', 'independent-analytics'), 'visible' => \true, 'type' => 'int']), new Column(['id' => 'sessions', 'label' => \esc_html__('Sessions', 'independent-analytics'), 'visible' => \false, 'type' => 'int']), new Column(['id' => 'average_view_duration', 'label' => \esc_html__('View Duration', 'independent-analytics'), 'visible' => \true, 'type' => 'int', 'filter_placeholder' => 'Seconds']), new Column(['id' => 'bounce_rate', 'label' => \esc_html__('Bounce Rate', 'independent-analytics'), 'visible' => \true, 'type' => 'int']), new Column(['id' => 'visitors_growth', 'label' => \esc_html__('Visitors Growth', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'exportable' => \false]), new Column(['id' => 'views_growth', 'label' => \esc_html__('Views Growth', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'exportable' => \false]), new Column(['id' => 'entrances', 'label' => \esc_html__('Entrances', 'independent-analytics'), 'visible' => \false, 'type' => 'int']), new Column(['id' => 'exits', 'label' => \esc_html__('Exits', 'independent-analytics'), 'visible' => \false, 'type' => 'int']), new Column(['id' => 'exit_percent', 'label' => \esc_html__('Exit Rate', 'independent-analytics'), 'visible' => \false, 'type' => 'int']), new Column(['id' => 'url', 'label' => \esc_html__('URL', 'independent-analytics'), 'visible' => \true, 'type' => 'string', 'database_column' => 'cached_url']), new Column(['id' => 'author', 'label' => \esc_html__('Author', 'independent-analytics'), 'visible' => \false, 'type' => 'select', 'options' => $this->author_options(), 'database_column' => 'cached_author_id', 'is_nullable' => \true]), new Column(['id' => 'type', 'label' => \esc_html__('Page Type', 'independent-analytics'), 'visible' => \true, 'type' => 'select', 'options' => $this->type_options(), 'database_column' => 'cached_type', 'is_nullable' => \true]), new Column(['id' => 'date', 'label' => \esc_html__('Publish Date', 'independent-analytics'), 'visible' => \false, 'type' => 'date', 'database_column' => 'cached_date', 'is_nullable' => \true]), new Column(['id' => 'category', 'label' => \esc_html__('Post Category', 'independent-analytics'), 'visible' => \false, 'type' => 'select', 'options' => $this->category_options(), 'database_column' => 'cached_category', 'is_nullable' => \true]), new Column(['id' => 'comments', 'label' => \esc_html__('Comments', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'is_nullable' => \true]), new Column(['id' => 'wc_orders', 'label' => \esc_html__('Orders', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'requires_woocommerce' => \true]), new Column(['id' => 'wc_gross_sales', 'label' => \esc_html__('Gross Sales', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'requires_woocommerce' => \true]), new Column(['id' => 'wc_refunds', 'label' => \esc_html__('Refunds', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'requires_woocommerce' => \true]), new Column(['id' => 'wc_refunded_amount', 'label' => \esc_html__('Refunded Amount', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'requires_woocommerce' => \true]), new Column(['id' => 'wc_net_sales', 'label' => \esc_html__('Net Sales', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'requires_woocommerce' => \true]), new Column(['id' => 'wc_conversion_rate', 'label' => \esc_html__('Conversion Rate', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'requires_woocommerce' => \true]), new Column(['id' => 'wc_earnings_per_visitor', 'label' => \esc_html__('Earnings Per Visitor', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'requires_woocommerce' => \true]), new Column(['id' => 'wc_average_order_volume', 'label' => \esc_html__('Average Order Volume', 'independent-analytics'), 'visible' => \false, 'type' => 'int', 'requires_woocommerce' => \true])];
26 }
27 private function author_options() : array
28 {
29 return \array_map(function ($author) {
30 return [$author->ID, $author->display_name];
31 }, $this->get_authors());
32 }
33 private function get_authors() : array
34 {
35 $roles_that_can_edit_posts = [];
36 foreach (\wp_roles()->roles as $role_name => $role_obj) {
37 if ($role_obj['capabilities']['edit_posts'] ?? \false) {
38 $roles_that_can_edit_posts[] = $role_name;
39 }
40 }
41 return \get_users(['role__in' => $roles_that_can_edit_posts]);
42 }
43 private function type_options() : array
44 {
45 $options = [];
46 $options[] = ['post', \esc_html__('Post', 'independent-analytics')];
47 $options[] = ['page', \esc_html__('Page', 'independent-analytics')];
48 $options[] = ['attachment', \esc_html__('Attachment', 'independent-analytics')];
49 foreach (\get_post_types(['public' => \true, '_builtin' => \false]) as $custom_type) {
50 $options[] = [$custom_type, \get_post_type_object($custom_type)->labels->singular_name];
51 }
52 $options[] = ['category', \esc_html__('Category', 'independent-analytics')];
53 $options[] = ['post_tag', \esc_html__('Tag', 'independent-analytics')];
54 foreach (\get_taxonomies(['public' => \true, '_builtin' => \false]) as $taxonomy) {
55 $label = \get_taxonomy_labels(\get_taxonomy($taxonomy))->singular_name;
56 /**
57 * WooCommerce category and tag taxonomies have the same singular name as WordPress
58 * category and tag taxonomies, so use the name here instead
59 */
60 if (\in_array($taxonomy, ['product_cat', 'product_tag'])) {
61 $label = \get_taxonomy_labels(\get_taxonomy($taxonomy))->name;
62 }
63 $options[] = [$taxonomy, \ucwords($label)];
64 }
65 $options[] = ['blog-archive', \esc_html__('Blog Home', 'independent-analytics')];
66 $options[] = ['author-archive', \esc_html__('Author Archive', 'independent-analytics')];
67 $options[] = ['date-archive', \esc_html__('Date Archive', 'independent-analytics')];
68 $options[] = ['search-archive', \esc_html__('Search Results', 'independent-analytics')];
69 $options[] = ['not-found', \esc_html__('404', 'independent-analytics')];
70 return $options;
71 }
72 private function category_options() : array
73 {
74 return \array_map(function ($category) {
75 return [$category->term_id, $category->name];
76 }, \get_categories());
77 }
78 }
79