PluginProbe
Packeta / 1.5.2
Packeta v1.5.2
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / src / Packetery / Module / CronService.php

CronService.php in Packeta 1.5.2, at src/Packetery/Module/CronService.php

95 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class CronService
4 *
5 * @package Packetery
6 */
7
8 declare( strict_types=1 );
9
10
11 namespace Packetery\Module;
12
13 /**
14 * Class CronService
15 *
16 * @package Packetery
17 */
18 class CronService {
19
20 private const CRON_LOG_AUTO_DELETION_HOOK = 'packetery_cron_log_auto_deletion_hook';
21 public const CRON_CARRIERS_HOOK = 'packetery_cron_carriers_hook';
22 private const CRON_PACKET_STATUS_SYNC_HOOK = 'packetery_cron_packet_status_sync_hook';
23
24 /**
25 * Log purger.
26 *
27 * @var Log\Purger
28 */
29 private $logPurger;
30
31 /**
32 * Carrier downloader.
33 *
34 * @var Carrier\Downloader
35 */
36 private $carrierDownloader;
37
38 /**
39 * Packet synchronizer.
40 *
41 * @var Order\PacketSynchronizer
42 */
43 private $packetSynchronizer;
44
45 /**
46 * Constructor.
47 *
48 * @param Log\Purger $logPurger Log purger.
49 * @param Carrier\Downloader $carrierDownloader Carrier downloader.
50 * @param Order\PacketSynchronizer $packetSynchronizer Packet synchronizer.
51 */
52 public function __construct( Log\Purger $logPurger, Carrier\Downloader $carrierDownloader, Order\PacketSynchronizer $packetSynchronizer ) {
53 $this->logPurger = $logPurger;
54 $this->carrierDownloader = $carrierDownloader;
55 $this->packetSynchronizer = $packetSynchronizer;
56 }
57
58 /**
59 * Registers service.
60 *
61 * @return void
62 */
63 public function register(): void {
64 add_action( self::CRON_LOG_AUTO_DELETION_HOOK, [ $this->logPurger, 'autoDeleteHook' ] );
65 if ( ! wp_next_scheduled( self::CRON_LOG_AUTO_DELETION_HOOK ) ) {
66 wp_schedule_event( ( new \DateTime( 'next day 02:00', wp_timezone() ) )->getTimestamp(), 'daily', self::CRON_LOG_AUTO_DELETION_HOOK );
67 }
68
69 add_action(
70 'init',
71 function () {
72 add_action( self::CRON_CARRIERS_HOOK, [ $this->carrierDownloader, 'runAndRender' ] );
73 if ( false === as_has_scheduled_action( self::CRON_CARRIERS_HOOK ) ) {
74 as_schedule_recurring_action( ( new \DateTime( 'next day 09:10', wp_timezone() ) )->getTimestamp(), 86400, self::CRON_CARRIERS_HOOK );
75 }
76 }
77 );
78
79 add_action( self::CRON_PACKET_STATUS_SYNC_HOOK, [ $this->packetSynchronizer, 'syncStatuses' ] );
80 if ( ! wp_next_scheduled( self::CRON_PACKET_STATUS_SYNC_HOOK ) ) {
81 wp_schedule_event( ( new \DateTime( 'next day 03:00:00', wp_timezone() ) )->getTimestamp(), 'daily', self::CRON_PACKET_STATUS_SYNC_HOOK );
82 }
83 }
84
85 /**
86 * Unregisters purger and synchronizer.
87 *
88 * @return void
89 */
90 public static function deactivate(): void {
91 wp_clear_scheduled_hook( self::CRON_LOG_AUTO_DELETION_HOOK );
92 wp_clear_scheduled_hook( self::CRON_PACKET_STATUS_SYNC_HOOK );
93 }
94 }
95