PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.8.4
Independent Analytics – WordPress Analytics Plugin v2.8.4
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 / Resource_Identifier.php
independent-analytics / IAWP Last commit date
AJAX 1 year ago Admin_Page 1 year ago Custom_WordPress_Columns 2 years ago Data_Pruning 1 year ago Date_Picker 1 year ago Date_Range 1 year ago Ecommerce 1 year ago Email_Reports 1 year ago Filter_Lists 2 years ago Form_Submissions 1 year ago Interval 2 years ago Menu_Bar_Stats 1 year ago Migrations 1 year ago Models 1 year ago Public_API 2 years ago Rows 1 year ago Statistics 1 year ago Tables 1 year ago Utils 1 year ago Campaign_Builder.php 2 years ago Capability_Manager.php 1 year ago Chart.php 1 year ago Chart_Geo.php 1 year ago Cron_Job.php 1 year ago Cron_Job_Autoloader.php 1 year ago Cron_Manager.php 2 years ago Current_Traffic_Finder.php 2 years ago Dashboard_Options.php 2 years ago Dashboard_Widget.php 2 years ago Database.php 2 years ago Database_Manager.php 2 years ago Empty_Report_Option.php 2 years ago Env.php 1 year ago Filters.php 1 year ago Geo_Database_Background_Job.php 2 years ago Geo_Database_Manager.php 1 year ago Geoposition.php 2 years ago Icon_Directory.php 2 years ago Icon_Directory_Factory.php 2 years ago Illuminate_Builder.php 1 year ago Independent_Analytics.php 1 year ago Interrupt.php 1 year ago Known_Referrers.php 2 years ago Patch.php 1 year ago Plugin_Conflict_Detector.php 1 year ago Plugin_Group.php 1 year ago Plugin_Group_Option.php 2 years ago Query.php 1 year ago Query_Taps.php 1 year ago Quick_Stats.php 2 years ago REST_API.php 1 year ago Real_Time.php 1 year ago Report.php 2 years ago Report_Finder.php 2 years ago Report_Options_Parser.php 1 year ago Resource_Identifier.php 1 year ago Settings.php 1 year ago Sort_Configuration.php 2 years ago Track_Resource_Changes.php 2 years ago View.php 2 years ago View_Counter.php 1 year ago Visitors_Over_Time_Finder.php 2 years ago WP_Option_Cache_Bust.php 2 years ago
Resource_Identifier.php
181 lines
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