at path:
ROOT
/
wp-content
/
plugins
/
tutor
/
migrations
/
QuizAttemptMigrator.php
run:
R
W
Run
Contracts
DIR
2026-04-14 05:34:27
R
W
Run
BatchProcessor.php
5.98 KB
2026-04-14 05:34:27
R
W
Run
Delete
Rename
Migration.php
698 By
2026-04-14 05:34:27
R
W
Run
Delete
Rename
ProcessByWcMigrator.php
2.96 KB
2026-04-14 05:34:27
R
W
Run
Delete
Rename
QuizAttemptMigrator.php
1.98 KB
2026-04-14 05:34:27
R
W
Run
Delete
Rename
error_log
up
📄
QuizAttemptMigrator.php
Save
<?php /** * Migration quiz attempt for generate result column data. * * @package Tutor * @author Themeum <support@themeum.com> * @link https://themeum.com * @since 3.8.0 */ namespace Tutor\Migrations; use Tutor\Helpers\QueryHelper; use Tutor\Migrations\Contracts\SingleProcessor; use Tutor\Models\QuizModel; /** * Class QuizAttemptMigrator * * @since 3.8.0 */ class QuizAttemptMigrator extends BatchProcessor implements SingleProcessor { /** * Name of the migration * * @since 3.8.0 * * @var string */ protected $name = 'Quiz Attempt Migration'; /** * Action * * @since 3.8.0 * * @var string */ protected $action = 'quiz_attempt_migrator'; /** * Batch size * * @since 3.8.0 * * @var integer */ protected $batch_size = 100; /** * Schedule interval. * * @since 3.8.0 * * @var integer */ protected $schedule_interval = 10; /** * Get total unprocessed result. * * @since 3.8.0 * * @return int */ protected function get_total_items(): int { return QueryHelper::get_count( 'tutor_quiz_attempts', array( 'result' => array( 'IS', 'NULL' ) ), array(), 'attempt_id' ); } /** * Get items to batch process. * * @since 3.8.0 * * @param int $offset offset. * @param int $limit limit. * * @return array */ protected function get_items( $offset, $limit ) : array { global $wpdb; return $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}tutor_quiz_attempts WHERE result IS NULL ORDER BY attempt_id DESC LIMIT %d, %d", $offset, $limit ) ); } /** * Process each quiz attempt record to prepare result. * * @since 3.8.0 * * @param object $item item. * * @return void */ public function process_item( $item ) : void { QuizModel::update_attempt_result( $item->attempt_id ); } /** * On migration complete event. * * @since 3.8.0 * * @return void */ protected function on_complete() { error_log( 'Quiz attempt migration completed!' ); } }