PluginProbe
Packeta / 1.6.4
Packeta v1.6.4
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.6.4, at src/Packetery/Module/CronService.php

121 lines 3.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 public const CRON_LOG_AUTO_DELETION_HOOK = 'packetery_cron_log_auto_deletion_hook';
21 public const CRON_CARRIERS_HOOK = 'packetery_cron_carriers_hook';
22 public const CRON_PACKET_STATUS_SYNC_HOOK = 'packetery_cron_packet_status_sync_hook';
23 private const CRON_PACKET_STATUS_SYNC_HOOK_WEEKEND = 'packetery_cron_packet_status_sync_hook_weekend';
24
25 /**
26 * Log purger.
27 *
28 * @var Log\Purger
29 */
30 private $logPurger;
31
32 /**
33 * Carrier downloader.
34 *
35 * @var Carrier\Downloader
36 */
37 private $carrierDownloader;
38
39 /**
40 * Packet synchronizer.
41 *
42 * @var Order\PacketSynchronizer
43 */
44 private $packetSynchronizer;
45
46 /**
47 * Constructor.
48 *
49 * @param Log\Purger $logPurger Log purger.
50 * @param Carrier\Downloader $carrierDownloader Carrier downloader.
51 * @param Order\PacketSynchronizer $packetSynchronizer Packet synchronizer.
52 */
53 public function __construct( Log\Purger $logPurger, Carrier\Downloader $carrierDownloader, Order\PacketSynchronizer $packetSynchronizer ) {
54 $this->logPurger = $logPurger;
55 $this->carrierDownloader = $carrierDownloader;
56 $this->packetSynchronizer = $packetSynchronizer;
57 }
58
59 /**
60 * Registers service.
61 *
62 * @return void
63 */
64 public function register(): void {
65 add_action(
66 'init',
67 function () {
68 add_action( self::CRON_LOG_AUTO_DELETION_HOOK, [ $this->logPurger, 'autoDeleteHook' ] );
69 if ( false === as_has_scheduled_action( self::CRON_LOG_AUTO_DELETION_HOOK ) ) {
70 as_schedule_recurring_action( ( new \DateTime( 'next day 02:00', wp_timezone() ) )->getTimestamp(), DAY_IN_SECONDS, self::CRON_LOG_AUTO_DELETION_HOOK );
71 }
72 }
73 );
74
75 add_action(
76 'init',
77 function () {
78 add_action( self::CRON_CARRIERS_HOOK, [ $this->carrierDownloader, 'runAndRender' ] );
79 if ( false === as_has_scheduled_action( self::CRON_CARRIERS_HOOK ) ) {
80 as_schedule_recurring_action( ( new \DateTime( 'next day 09:10', wp_timezone() ) )->getTimestamp(), DAY_IN_SECONDS, self::CRON_CARRIERS_HOOK );
81 }
82 }
83 );
84
85 add_action(
86 'init',
87 function () {
88 add_action( self::CRON_PACKET_STATUS_SYNC_HOOK, [ $this->packetSynchronizer, 'syncStatuses' ] );
89 if ( false === as_has_scheduled_action( self::CRON_PACKET_STATUS_SYNC_HOOK ) ) {
90 // phpcs:ignore Squiz.PHP.CommentedOutCode.Found
91 // Monday to Friday at 02:10, 06:10, 10:10, 14:10, 18:10, 22:10.
92 as_schedule_cron_action( ( new \DateTime() )->getTimestamp(), '10 2,6,10,14,18,22 * * 1-5', self::CRON_PACKET_STATUS_SYNC_HOOK );
93 }
94 }
95 );
96
97 add_action(
98 'init',
99 function () {
100 add_action( self::CRON_PACKET_STATUS_SYNC_HOOK_WEEKEND, [ $this->packetSynchronizer, 'syncStatuses' ] );
101 if ( false === as_has_scheduled_action( self::CRON_PACKET_STATUS_SYNC_HOOK_WEEKEND ) ) {
102 // Saturday, Sunday at 03:10.
103 as_schedule_cron_action( ( new \DateTime() )->getTimestamp(), '10 3 * * 6,0', self::CRON_PACKET_STATUS_SYNC_HOOK_WEEKEND );
104 }
105 }
106 );
107 }
108
109 /**
110 * Unregisters purger and synchronizer.
111 *
112 * @return void
113 */
114 public static function deactivate(): void {
115 as_unschedule_action( self::CRON_LOG_AUTO_DELETION_HOOK );
116 as_unschedule_action( self::CRON_CARRIERS_HOOK );
117 as_unschedule_action( self::CRON_PACKET_STATUS_SYNC_HOOK );
118 as_unschedule_action( self::CRON_PACKET_STATUS_SYNC_HOOK_WEEKEND );
119 }
120 }
121