diff --git a/lib/classes/progress/stored.php b/lib/classes/progress/stored.php new file mode 100644 index 00000000000..baeb53c3ccd --- /dev/null +++ b/lib/classes/progress/stored.php @@ -0,0 +1,60 @@ +. + +namespace core\progress; + +use core\output\stored_progress_bar; + +/** + * Progress handler which updates a stored progress bar. + * + * @package core + * @copyright 2024 Catalyst IT Europe Ltd. + * @author Mark Johnson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class stored extends base { + /** + * Constructs the progress reporter. + * + * @param stored_progress_bar $bar The stored progress bar to update. + */ + public function __construct( + /** + * @var stored_progress_bar $bar The stored progress bar to update. + */ + protected stored_progress_bar $bar, + ) { + } + + /** + * Updates the progress in the database. + * Database update frequency is set by $interval. + * + * @see \core\progress\base::update_progress() + */ + public function update_progress() { + // Get progress. + [$min] = $this->get_progress_proportion_range(); + + $message = ''; + if ($this->is_in_progress_section()) { + $message = $this->get_current_description(); + } + // Update progress bar. + $this->bar->update_full($min * 100, $message); + } +}