Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor/migrations/QuizAttemptMigrator.php
Keine Baseline-Datei – Diff nur gegen leer.
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
+