/var/www/hkosl.com/aga/wp-content/plugins/wordpress-seo/admin/tracking/class-tracking.php


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;
    }
}