PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.0
Independent Analytics – WordPress Analytics Plugin v2.15.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 / ViewsColumn / UpdateTotalViewsPostMeta.php
independent-analytics / IAWP / ViewsColumn Last commit date
UpdateTotalViewsPostMeta.php 4 days ago ViewsColumn.php 4 days ago
UpdateTotalViewsPostMeta.php
106 lines
1 <?php
2
3 namespace IAWP\ViewsColumn;
4
5 use IAWP\Illuminate_Builder;
6 use IAWP\Models\Page;
7 use IAWP\Models\Page_Home;
8 use IAWP\Models\Page_Post_Type_Archive;
9 use IAWP\Models\Page_Singular;
10 use IAWP\Query;
11 use IAWPSCOPED\Illuminate\Database\Query\JoinClause;
12 /** @internal */
13 class UpdateTotalViewsPostMeta
14 {
15 private function update_singular(int $singular_id) : void
16 {
17 $views_table = Query::get_table_name(Query::VIEWS);
18 $resources_table = Query::get_table_name(Query::RESOURCES);
19 $total_views = Illuminate_Builder::new()->selectRaw('COUNT(*) AS views')->from("{$resources_table} as resources")->join("{$views_table} AS views", function (JoinClause $join) {
20 $join->on('resources.id', '=', 'views.resource_id');
21 })->where('singular_id', '=', $singular_id)->value('views');
22 \update_post_meta($singular_id, \IAWP\ViewsColumn\ViewsColumn::$meta_key, $total_views);
23 }
24 private function update_home() : void
25 {
26 $id = $this->get_home_id();
27 if ($id === null) {
28 return;
29 }
30 $views_table = Query::get_table_name(Query::VIEWS);
31 $resources_table = Query::get_table_name(Query::RESOURCES);
32 $total_views = Illuminate_Builder::new()->selectRaw('COUNT(*) AS views')->from("{$resources_table} as resources")->join("{$views_table} AS views", function (JoinClause $join) {
33 $join->on('resources.id', '=', 'views.resource_id');
34 })->where('resource', '=', 'home')->value('views');
35 \update_post_meta($id, \IAWP\ViewsColumn\ViewsColumn::$meta_key, $total_views);
36 }
37 private function get_home_id() : ?int
38 {
39 $id = \get_option('page_for_posts');
40 if (\is_string($id) && \ctype_digit($id)) {
41 $id = \intval($id);
42 }
43 $blog_page = \get_post($id);
44 if ($blog_page === null) {
45 return null;
46 }
47 return $id;
48 }
49 private function update_shop() : void
50 {
51 try {
52 $id = $this->get_shop_id();
53 if ($id === null) {
54 return;
55 }
56 $views_table = Query::get_table_name(Query::VIEWS);
57 $resources_table = Query::get_table_name(Query::RESOURCES);
58 $total_views = Illuminate_Builder::new()->selectRaw('COUNT(*) AS views')->from("{$resources_table} as resources")->join("{$views_table} AS views", function (JoinClause $join) {
59 $join->on('resources.id', '=', 'views.resource_id');
60 })->where('resource', '=', 'post_type_archive')->where('post_type', '=', 'product')->value('views');
61 \update_post_meta($id, \IAWP\ViewsColumn\ViewsColumn::$meta_key, $total_views);
62 } catch (\Throwable $e) {
63 }
64 }
65 private function get_shop_id() : ?int
66 {
67 if (!\function_exists('IAWPSCOPED\\wc_get_page_id')) {
68 return null;
69 }
70 $id = wc_get_page_id('shop');
71 if ($id === -1) {
72 return null;
73 }
74 return $id;
75 }
76 public static function update_all() : void
77 {
78 $updater = new \IAWP\ViewsColumn\UpdateTotalViewsPostMeta();
79 $updater->update_home();
80 $updater->update_shop();
81 $ids = \get_posts(['post_type' => 'any', 'post_status' => 'any', 'numberposts' => -1, 'fields' => 'ids', 'no_found_rows' => \true]);
82 foreach ($ids as $id) {
83 $id = (int) $id;
84 // Skip these as they're handled separately
85 if ($updater->get_home_id() === $id || $updater->get_shop_id() === $id) {
86 continue;
87 }
88 $updater->update_singular($id);
89 }
90 }
91 public static function for_page(Page $page) : void
92 {
93 $updater = new \IAWP\ViewsColumn\UpdateTotalViewsPostMeta();
94 if ($page instanceof Page_Singular) {
95 $singular_id = $page->get_singular_id();
96 if (\is_int($singular_id)) {
97 $updater->update_singular($singular_id);
98 }
99 } elseif ($page instanceof Page_Home) {
100 $updater->update_home();
101 } elseif ($page instanceof Page_Post_Type_Archive && $page->post_type() === 'product') {
102 $updater->update_shop();
103 }
104 }
105 }
106