PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.8.9
Independent Analytics – WordPress Analytics Plugin v2.8.9
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 All 120 releases
independent-analytics / IAWP / Resource_Identifier.php
Resource_Identifier.php
181 lines 5.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IAWP;
4
5 use IAWP\Utils\Request;
6 /** @internal */
7 class Resource_Identifier
8 {
9 private $type;
10 private $meta_key;
11 private $meta_value;
12 /**
13 * @param string $type
14 * @param string|null $meta_key
15 * @param int|string|null $meta_value
16 */
17 private function __construct(string $type, ?string $meta_key = null, $meta_value = null)
18 {
19 $this->type = $type;
20 $this->meta_key = $meta_key;
21 $this->meta_value = $meta_value;
22 }
23 /**
24 * @return string
25 */
26 public function type() : string
27 {
28 return $this->type;
29 }
30 /**
31 * @return string|null
32 */
33 public function meta_key() : ?string
34 {
35 return $this->meta_key;
36 }
37 /**
38 * @return int|string|null
39 */
40 public function meta_value()
41 {
42 return $this->meta_value;
43 }
44 /**
45 * @return bool
46 */
47 public function has_meta() : bool
48 {
49 return !\is_null($this->meta_key) && !\is_null($this->meta_value);
50 }
51 /**
52 * @return self|null
53 */
54 public static function for_resource_being_viewed() : ?self
55 {
56 if (self::is_searchiq_results()) {
57 $type = 'search';
58 $meta_key = 'search_query';
59 $meta_value = \get_query_var(\get_option('_siq_search_query_param_name', 'q'));
60 } elseif (\is_string(self::get_virtual_page_id())) {
61 $type = 'virtual_page';
62 $meta_key = 'virtual_page_id';
63 $meta_value = self::get_virtual_page_id();
64 } elseif (\is_singular()) {
65 $type = 'singular';
66 $meta_key = 'singular_id';
67 $meta_value = \get_queried_object_id();
68 } elseif (\is_author()) {
69 $type = 'author_archive';
70 $meta_key = 'author_id';
71 $meta_value = \get_queried_object_id();
72 } elseif (\is_date()) {
73 $type = 'date_archive';
74 $meta_key = 'date_archive';
75 $meta_value = self::get_date_archive_date();
76 } elseif (\is_post_type_archive()) {
77 $type = 'post_type_archive';
78 $meta_key = 'post_type';
79 $meta_value = \get_queried_object()->name;
80 } elseif (\is_category() || \is_tag() || \is_tax()) {
81 $type = 'term_archive';
82 $meta_key = 'term_id';
83 $meta_value = \get_queried_object_id();
84 } elseif (\is_search()) {
85 $type = 'search';
86 $meta_key = 'search_query';
87 $meta_value = \get_search_query();
88 } elseif (\is_home()) {
89 $type = 'home';
90 $meta_key = null;
91 $meta_value = null;
92 } elseif (\is_404()) {
93 $path = Request::path_relative_to_site_url();
94 if (\is_null($path)) {
95 return null;
96 }
97 $type = '404';
98 $meta_key = 'not_found_url';
99 $meta_value = $path;
100 } else {
101 return null;
102 }
103 return new self($type, $meta_key, $meta_value);
104 }
105 /**
106 * @return self|null
107 */
108 public static function for_resource_being_edited() : ?self
109 {
110 if (!\is_admin()) {
111 return null;
112 }
113 $screen = \get_current_screen();
114 // Check if the current screen is post editing page
115 if (!\is_null($screen) && $screen->base === 'post') {
116 $singular_id = \get_the_ID();
117 if (\is_int($singular_id)) {
118 $singular_id = \strval($singular_id);
119 } else {
120 return null;
121 }
122 return new self('singular', 'singular_id', $singular_id);
123 }
124 return null;
125 }
126 public static function for_post_id(int $post_id) : ?self
127 {
128 return new self('singular', 'singular_id', $post_id);
129 }
130 private static function get_virtual_page_id() : ?string
131 {
132 $post = \get_post();
133 if (\IAWPSCOPED\iawp()->is_woocommerce_support_enabled() && is_checkout() && is_wc_endpoint_url('order-received')) {
134 return 'wc_checkout_success';
135 }
136 if (\IAWPSCOPED\iawp()->is_surecart_support_enabled() && $post->post_type === 'sc_product' && \property_exists($post, 'sc_id')) {
137 return 'sc_product_' . $post->sc_id;
138 }
139 if (\IAWPSCOPED\iawp()->is_surecart_support_enabled() && $post->post_type === 'sc_collection' && \property_exists($post, 'sc_id')) {
140 return 'sc_collection_' . $post->sc_id;
141 }
142 if (\IAWPSCOPED\iawp()->is_surecart_support_enabled() && $post->post_type === 'sc_upsell' && \property_exists($post, 'sc_id')) {
143 return 'sc_upsell_' . $post->sc_id;
144 }
145 return null;
146 }
147 /**
148 * Build a date archive string with the year and possibly a month and date
149 *
150 * Examples would be "2023", "2023-01", or "2023-01-21"
151 *
152 * @return mixed|string
153 */
154 private static function get_date_archive_date()
155 {
156 $str = \get_query_var('year');
157 if (\is_month() || \is_day()) {
158 $month = \get_query_var('monthnum');
159 $str = $str . '-' . \str_pad($month, 2, '0', \STR_PAD_LEFT);
160 }
161 if (\is_day()) {
162 $day = \get_query_var('day');
163 $str = $str . '-' . \str_pad($day, 2, '0', \STR_PAD_LEFT);
164 }
165 return $str;
166 }
167 private static function is_searchiq_results()
168 {
169 if (!\is_plugin_active('searchiq/searchiq.php')) {
170 return \false;
171 }
172 if (\get_query_var(\get_option('_siq_search_query_param_name', 'q')) !== '') {
173 $post = \get_post(\get_queried_object_id());
174 if (\has_shortcode($post->post_content, 'siq_ajax_search')) {
175 return \true;
176 }
177 }
178 return \false;
179 }
180 }
181