PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.9.4
Tutor LMS – eLearning and online course solution v3.9.4
3.9.15 3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 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.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 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 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / migrations / QuizAttemptMigrator.php
tutor / migrations Last commit date
Contracts 9 months ago BatchProcessor.php 9 months ago Migration.php 7 months ago ProcessByWcMigrator.php 9 months ago QuizAttemptMigrator.php 9 months ago
QuizAttemptMigrator.php
119 lines
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