PluginProbe ʕ •ᴥ•ʔ
Hostinger Tools / 3.0.71
Hostinger Tools v3.0.71
3.0.71 3.0.70 3.0.69 3.0.68 3.0.67 3.0.66 1.8.1 1.8.2 1.8.3 1.9.1 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.4 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.2 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 3.0.0 3.0.10 3.0.11 3.0.12 3.0.13 3.0.14 3.0.15 3.0.16 3.0.17 3.0.18 3.0.19 3.0.2 3.0.20 3.0.21 3.0.22 3.0.23 3.0.24 3.0.25 3.0.26 3.0.27 3.0.28 3.0.29 3.0.3 3.0.30 3.0.31 3.0.32 3.0.33 3.0.34 3.0.35 3.0.36 3.0.37 3.0.38 3.0.39 3.0.4 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.0.46 3.0.47 3.0.48 3.0.49 3.0.5 3.0.50 3.0.51 3.0.52 3.0.53 3.0.54 3.0.55 3.0.56 3.0.57 3.0.58 3.0.59 3.0.6 3.0.60 3.0.61 3.0.62 3.0.65 3.0.7 3.0.8 3.0.9 trunk 1.8.0
hostinger / includes / Admin / Jobs / AbstractBatchedJob.php
hostinger / includes / Admin / Jobs Last commit date
AbstractBatchedJob.php 10 months ago AbstractJob.php 10 months ago ActionScheduler.php 11 months ago JobInitializer.php 10 months ago JobInterface.php 10 months ago LlmsTxtInjectContentJob.php 10 months ago NotifyMcpJob.php 11 months ago
AbstractBatchedJob.php
75 lines
1 <?php
2
3 namespace Hostinger\Admin\Jobs;
4
5 use Hostinger\LlmsTxtGenerator\LlmsTxtParser;
6
7 defined( 'ABSPATH' ) || exit;
8
9 abstract class AbstractBatchedJob extends AbstractJob {
10
11 public function init(): void {
12 add_action( $this->get_create_batch_hook(), array( $this, 'handle_create_batch_action' ), 10, 2 );
13 parent::init();
14 }
15
16 protected function get_create_batch_hook(): string {
17 return "{$this->get_hook_base_name()}create_batch";
18 }
19
20 public function schedule( array $args = array() ): void {
21 $this->schedule_create_batch_action( 1, $args );
22 }
23
24 public function handle_create_batch_action( int $batch_number, array $args ): void {
25 $items = $this->get_batch( $batch_number, $args );
26
27 if ( empty( $items ) ) {
28 $this->handle_complete( $batch_number, $args );
29 } else {
30 $this->schedule_process_action( $items, $args );
31 $this->schedule_create_batch_action( $batch_number + 1, $args );
32 }
33 }
34
35 protected function get_batch_size(): int {
36 return apply_filters( 'hostinger_batch_item_limit', LlmsTxtParser::DEFAULT_LIMIT );
37 }
38
39 protected function get_query_offset( int $batch_number ): int {
40 return $this->get_batch_size() * ( $batch_number - 1 );
41 }
42
43 protected function schedule_create_batch_action( int $batch_number, array $args ): void {
44 if ( $this->can_schedule( array( $batch_number ) ) ) {
45 $this->action_scheduler->schedule_immediate(
46 $this->get_create_batch_hook(),
47 array(
48 $batch_number,
49 $args,
50 )
51 );
52 }
53 }
54
55 protected function schedule_process_action( array $items = array(), array $args = array() ): void {
56 $job_data = array(
57 'items' => $items,
58 'args' => $args,
59 );
60 if ( ! $this->is_processing( $job_data ) ) {
61 $this->action_scheduler->schedule_immediate( $this->get_process_item_hook(), array( $job_data ) );
62 }
63 }
64
65 protected function is_processing( array $args = array() ): bool {
66 return $this->action_scheduler->has_scheduled_action( $this->get_process_item_hook(), array( $args ) );
67 }
68
69 protected function handle_complete( int $final_batch_number, array $args ): void {
70 return;
71 }
72
73 abstract protected function get_batch( int $batch_number, array $args ): array;
74 }
75