From 91e69cee7f8c707298a5bf445a04bce79ef2aa51 Mon Sep 17 00:00:00 2001 From: Mark Johnson Date: Wed, 3 Apr 2024 14:28:11 +0100 Subject: [PATCH] MDL-81714 progress: Add new \core\progress\stored class This progress class updates a stored_progress_bar in a similar way to how \core\progress\display updates a regular progress_bar, but it does not produce any output unless the progress bar does. --- lib/classes/progress/stored.php | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 lib/classes/progress/stored.php 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); + } +}