PluginProbe
Packeta / trunk
Packeta vtrunk
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 trunk, at src/Packetery/Module/CronService.php

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