PluginProbe
Packeta / 2.1
Packeta v2.1
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
← All changes | src/Packetery/Module/CronService.php +43 -30 1.6.22.1 View file →
@@ -6,10 +6,11 @@
6 6 */
7 7
8 8 declare( strict_types=1 );
9 9
10 +namespace Packetery\Module;
10 11
11 -namespace Packetery\Module;
12 +use Packetery\Module\Options\TransientPurger;
12 13
13 14 /**
14 15 * Class CronService
15 16 *
@@ -20,8 +21,9 @@
20 21 public const CRON_LOG_AUTO_DELETION_HOOK = 'packetery_cron_log_auto_deletion_hook';
21 22 public const CRON_CARRIERS_HOOK = 'packetery_cron_carriers_hook';
22 23 public const CRON_PACKET_STATUS_SYNC_HOOK = 'packetery_cron_packet_status_sync_hook';
23 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';
24 26
25 27 /**
26 28 * Log purger.
27 29 *
@@ -43,18 +45,32 @@
43 45 */
44 46 private $packetSynchronizer;
45 47
46 48 /**
49 + * Transient purger.
50 + *
51 + * @var TransientPurger
52 + */
53 + private $transientPurger;
54 +
55 + /**
47 56 * Constructor.
48 57 *
49 - * @param Log\Purger $logPurger Log purger.
50 - * @param Carrier\Downloader $carrierDownloader Carrier downloader.
58 + * @param Log\Purger $logPurger Log purger.
59 + * @param Carrier\Downloader $carrierDownloader Carrier downloader.
51 60 * @param Order\PacketSynchronizer $packetSynchronizer Packet synchronizer.
61 + * @param TransientPurger $transientPurger Transient purger.
52 62 */
53 - public function __construct( Log\Purger $logPurger, Carrier\Downloader $carrierDownloader, Order\PacketSynchronizer $packetSynchronizer ) {
63 + public function __construct(
64 + Log\Purger $logPurger,
65 + Carrier\Downloader $carrierDownloader,
66 + Order\PacketSynchronizer $packetSynchronizer,
67 + TransientPurger $transientPurger
68 + ) {
54 69 $this->logPurger = $logPurger;
55 70 $this->carrierDownloader = $carrierDownloader;
56 71 $this->packetSynchronizer = $packetSynchronizer;
72 + $this->transientPurger = $transientPurger;
57 73 }
58 74
59 75 /**
60 76 * Registers service.
@@ -61,45 +77,41 @@
61 77 *
62 78 * @return void
63 79 */
64 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 +
65 88 add_action(
66 89 'init',
67 90 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 ) ) {
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 ) {
70 96 as_schedule_recurring_action( ( new \DateTime( 'next day 02:00', wp_timezone() ) )->getTimestamp(), DAY_IN_SECONDS, self::CRON_LOG_AUTO_DELETION_HOOK );
71 97 }
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 ) ) {
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 ) {
80 106 as_schedule_recurring_action( ( new \DateTime( 'next day 09:10', wp_timezone() ) )->getTimestamp(), DAY_IN_SECONDS, self::CRON_CARRIERS_HOOK );
81 107 }
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 ) ) {
108 + if ( as_has_scheduled_action( self::CRON_PACKET_STATUS_SYNC_HOOK ) === false ) {
90 109 // phpcs:ignore Squiz.PHP.CommentedOutCode.Found
91 110 // Monday to Friday at 02:10, 06:10, 10:10, 14:10, 18:10, 22:10.
92 111 as_schedule_cron_action( ( new \DateTime() )->getTimestamp(), '10 2,6,10,14,18,22 * * 1-5', self::CRON_PACKET_STATUS_SYNC_HOOK );
93 112 }
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 ) ) {
113 + if ( as_has_scheduled_action( self::CRON_PACKET_STATUS_SYNC_HOOK_WEEKEND ) === false ) {
102 114 // Saturday, Sunday at 03:10.
103 115 as_schedule_cron_action( ( new \DateTime() )->getTimestamp(), '10 3 * * 6,0', self::CRON_PACKET_STATUS_SYNC_HOOK_WEEKEND );
104 116 }
105 117 }
@@ -112,8 +124,9 @@
112 124 * @return void
113 125 */
114 126 public static function deactivate(): void {
115 127 as_unschedule_action( self::CRON_LOG_AUTO_DELETION_HOOK );
128 + as_unschedule_action( self::CRON_PURGE_TRANSIENTS );
116 129 as_unschedule_action( self::CRON_CARRIERS_HOOK );
117 130 as_unschedule_action( self::CRON_PACKET_STATUS_SYNC_HOOK );
118 131 as_unschedule_action( self::CRON_PACKET_STATUS_SYNC_HOOK_WEEKEND );
119 132 }