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
|
<?php /** * WPSEO plugin file. * * @package WPSEO\Admin\Tracking */
/** * This class handles the tracking routine. */ class WPSEO_Tracking {
/** * @var string */ protected $option_name = 'wpseo_tracking_last_request';
/** * @var int */ protected $threshold = 0;
/** * @var string */ protected $endpoint = '';
/** * Constructor setting the threshold. * * @param string $endpoint The endpoint to send the data to. * @param int $threshold The limit for the option. */ public function __construct( $endpoint, $threshold ) { $this->endpoint = $endpoint; $this->threshold = $threshold; }
/** * Registers all hooks to WordPress. */ public function send() {
$current_time = time(); if ( ! $this->should_send_tracking( $current_time ) ) { return; }
$collector = $this->get_collector();
$request = new WPSEO_Remote_Request( $this->endpoint ); $request->set_body( $collector->get_as_json() ); $request->send();
update_option( $this->option_name, $current_time, 'yes' ); }
/** * Returns true when last tracking data was send more than two weeks ago. * * @param int $current_time The current timestamp. * * @return bool True when tracking data should be send. */ protected function should_send_tracking( $current_time ) { $last_time = get_option( $this->option_name );
// When there is no data being set. if ( ! $last_time ) { return true; }
return $this->exceeds_treshhold( $current_time - $last_time ); }
/** * Checks if the given amount of seconds exceeds the set threshold. * * @param int $seconds The amount of seconds to check. * * @return bool True when seconds is bigger than threshold. */ protected function exceeds_treshhold( $seconds ) { return ( $seconds > $this->threshold ); }
/** * Returns the collector for collecting the data. * * @return WPSEO_Collector The instance of the collector. */ protected function get_collector() { $collector = new WPSEO_Collector(); $collector->add_collection( new WPSEO_Tracking_Default_Data() ); $collector->add_collection( new WPSEO_Tracking_Server_Data() ); $collector->add_collection( new WPSEO_Tracking_Theme_Data() ); $collector->add_collection( new WPSEO_Tracking_Plugin_Data() );
return $collector; } }
|