short-link-helper.php
3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
namespace Yoast\WP\SEO\Helpers;
/**
* Helper to get shortlinks for Yoast SEO.
*/
class Short_Link_Helper {
/**
* The options helper.
*
* @var Options_Helper
*/
protected $options_helper;
/**
* The product helper.
*
* @var Product_Helper
*/
protected $product_helper;
/**
* Short_Link_Helper constructor.
*
* @param Options_Helper $options_helper The options helper.
* @param Product_Helper $product_helper The product helper.
*/
public function __construct(
Options_Helper $options_helper,
Product_Helper $product_helper
) {
$this->options_helper = $options_helper;
$this->product_helper = $product_helper;
}
/**
* Builds a URL to use in the plugin as shortlink.
*
* @param string $url The URL to build upon.
*
* @return string The final URL.
*/
public function build( $url ) {
return \add_query_arg( $this->collect_additional_shortlink_data(), $url );
}
/**
* Returns a version of the URL with a utm_content with the current version.
*
* @param string $url The URL to build upon.
*
* @return string The final URL.
*/
public function get( $url ) {
return $this->build( $url );
}
/**
* Echoes a version of the URL with a utm_content with the current version.
*
* @param string $url The URL to build upon.
*/
public function show( $url ) {
echo \esc_url( $this->get( $url ) );
}
/**
* Gets the shortlink's query params.
*
* @return array The shortlink's query params.
*/
public function get_query_params() {
return $this->collect_additional_shortlink_data();
}
/**
* Gets the current site's PHP version, without the extra info.
*
* @return string The PHP version.
*/
private function get_php_version() {
$version = \explode( '.', \PHP_VERSION );
return (int) $version[0] . '.' . (int) $version[1];
}
/**
* Gets the current site's platform version.
*
* @return string The wp_version.
*/
protected function get_platform_version() {
return $GLOBALS['wp_version'];
}
/**
* Collects the additional data necessary for the shortlink.
*
* @return array The shortlink data.
*/
protected function collect_additional_shortlink_data() {
$data = [
'php_version' => $this->get_php_version(),
'platform' => 'wordpress',
'platform_version' => $this->get_platform_version(),
'software' => $this->get_software(),
'software_version' => \WPSEO_VERSION,
'days_active' => $this->get_days_active(),
'user_language' => \get_user_locale(),
];
// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information.
if ( isset( $_GET['page'] ) && \is_string( $_GET['page'] ) ) {
// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information.
$admin_page = \sanitize_text_field( \wp_unslash( $_GET['page'] ) );
if ( ! empty( $admin_page ) ) {
$data['screen'] = $admin_page;
}
}
return $data;
}
/**
* Get our software and whether it's active or not.
*
* @return string The software name.
*/
protected function get_software() {
if ( $this->product_helper->is_premium() ) {
return 'premium';
}
return 'free';
}
/**
* Gets the number of days the plugin has been active.
*
* @return int The number of days the plugin is active.
*/
protected function get_days_active() {
$date_activated = $this->options_helper->get( 'first_activated_on' );
$datediff = ( \time() - $date_activated );
return (int) \round( $datediff / \DAY_IN_SECONDS );
}
}