Contracts
4 years ago
Enum
4 years ago
Events
4 years ago
Helpers
4 years ago
Repositories
4 years ago
TrackingData
4 years ago
AccessToken.php
4 years ago
AdminActionHandler.php
4 years ago
AdminSettings.php
4 years ago
TrackClient.php
4 years ago
TrackJob.php
4 years ago
TrackJobScheduler.php
4 years ago
TrackRegisterer.php
4 years ago
TrackingServiceProvider.php
4 years ago
UsageTrackingOnBoarding.php
4 years ago
TrackJobScheduler.php
56 lines
| 1 | <?php |
| 2 | |
| 3 | namespace Give\Tracking; |
| 4 | |
| 5 | use Give\Tracking\Repositories\TrackEvents; |
| 6 | |
| 7 | /** |
| 8 | * Class TrackJobScheduler |
| 9 | * @package Give\Tracking |
| 10 | * @since 2.10.0 |
| 11 | */ |
| 12 | class TrackJobScheduler |
| 13 | { |
| 14 | const CRON_JOB_HOOK_NAME = 'give_telemetry_send_requests'; |
| 15 | |
| 16 | /** |
| 17 | * @var TrackRegisterer |
| 18 | */ |
| 19 | private $track; |
| 20 | |
| 21 | /** |
| 22 | * @var TrackEvents |
| 23 | */ |
| 24 | private $trackEvents; |
| 25 | |
| 26 | /** |
| 27 | * TrackJobScheduler constructor. |
| 28 | * |
| 29 | * @param TrackRegisterer $track |
| 30 | * @param TrackEvents $trackEvents |
| 31 | */ |
| 32 | public function __construct(TrackRegisterer $track, TrackEvents $trackEvents) |
| 33 | { |
| 34 | $this->track = $track; |
| 35 | $this->trackEvents = $trackEvents; |
| 36 | } |
| 37 | |
| 38 | /** |
| 39 | * Schedule cron job to send request to telemetry server. |
| 40 | * |
| 41 | * @since 2.10.0 |
| 42 | */ |
| 43 | public function schedule() |
| 44 | { |
| 45 | if ( ! $this->track->hasNewTracks()) { |
| 46 | return; |
| 47 | } |
| 48 | |
| 49 | $hookName = self::CRON_JOB_HOOK_NAME; |
| 50 | $this->trackEvents->saveTrackList(); |
| 51 | if ( ! wp_next_scheduled($hookName)) { |
| 52 | wp_schedule_single_event(strtotime('+24 hours', current_time('timestamp')), $hookName); |
| 53 | } |
| 54 | } |
| 55 | } |
| 56 |