Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor/migrations/QuizAttemptMigrator.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + <?php
2 + /**
3 + * Migration quiz attempt for generate result column data.
4 + *
5 + * @package Tutor
6 + * @author Themeum <support@themeum.com>
7 + * @link https://themeum.com
8 + * @since 3.8.0
9 + */
10 +
11 + namespace Tutor\Migrations;
12 +
13 + use Tutor\Helpers\QueryHelper;
14 + use Tutor\Migrations\Contracts\SingleProcessor;
15 + use Tutor\Models\QuizModel;
16 +
17 + /**
18 + * Class QuizAttemptMigrator
19 + *
20 + * @since 3.8.0
21 + */
22 + class QuizAttemptMigrator extends BatchProcessor implements SingleProcessor {
23 + /**
24 + * Name of the migration
25 + *
26 + * @since 3.8.0
27 + *
28 + * @var string
29 + */
30 + protected $name = 'Quiz Attempt Migration';
31 +
32 + /**
33 + * Action
34 + *
35 + * @since 3.8.0
36 + *
37 + * @var string
38 + */
39 + protected $action = 'quiz_attempt_migrator';
40 +
41 + /**
42 + * Batch size
43 + *
44 + * @since 3.8.0
45 + *
46 + * @var integer
47 + */
48 + protected $batch_size = 100;
49 +
50 + /**
51 + * Schedule interval.
52 + *
53 + * @since 3.8.0
54 + *
55 + * @var integer
56 + */
57 + protected $schedule_interval = 10;
58 +
59 + /**
60 + * Get total unprocessed result.
61 + *
62 + * @since 3.8.0
63 + *
64 + * @return int
65 + */
66 + protected function get_total_items(): int {
67 + return QueryHelper::get_count( 'tutor_quiz_attempts', array( 'result' => array( 'IS', 'NULL' ) ), array(), 'attempt_id' );
68 + }
69 +
70 + /**
71 + * Get items to batch process.
72 + *
73 + * @since 3.8.0
74 + *
75 + * @param int $offset offset.
76 + * @param int $limit limit.
77 + *
78 + * @return array
79 + */
80 + protected function get_items( $offset, $limit ) : array {
81 + global $wpdb;
82 + return $wpdb->get_results(
83 + $wpdb->prepare(
84 + "SELECT * FROM {$wpdb->prefix}tutor_quiz_attempts
85 + WHERE result IS NULL
86 + ORDER BY attempt_id DESC
87 + LIMIT %d, %d",
88 + $offset,
89 + $limit
90 + )
91 + );
92 + }
93 +
94 + /**
95 + * Process each quiz attempt record to prepare result.
96 + *
97 + * @since 3.8.0
98 + *
99 + * @param object $item item.
100 + *
101 + * @return void
102 + */
103 + public function process_item( $item ) : void {
104 + QuizModel::update_attempt_result( $item->attempt_id );
105 + }
106 +
107 + /**
108 + * On migration complete event.
109 + *
110 + * @since 3.8.0
111 + *
112 + * @return void
113 + */
114 + protected function on_complete() {
115 + error_log( 'Quiz attempt migration completed!' );
116 + }
117 + }
118 +
119 +