Skip to content

Commit c08824b

Browse files
committed
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.
1 parent ecb159d commit c08824b

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

lib/classes/progress/stored.php

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
// This file is part of Moodle - http://moodle.org/
3+
//
4+
// Moodle is free software: you can redistribute it and/or modify
5+
// it under the terms of the GNU General Public License as published by
6+
// the Free Software Foundation, either version 3 of the License, or
7+
// (at your option) any later version.
8+
//
9+
// Moodle is distributed in the hope that it will be useful,
10+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
// GNU General Public License for more details.
13+
//
14+
// You should have received a copy of the GNU General Public License
15+
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
16+
17+
/**
18+
* Progress handler that updates a database table with the progress.
19+
*
20+
* @package core
21+
* @copyright 2018 Matt Porritt <[email protected]>
22+
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23+
*/
24+
25+
namespace core\progress;
26+
27+
use core\stored_progress_bar;
28+
29+
defined('MOODLE_INTERNAL') || die();
30+
31+
/**
32+
* Progress handler that updates a database table with the progress.
33+
*
34+
* @package core
35+
* @copyright 2018 Matt Porritt <[email protected]>
36+
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
37+
*/
38+
class stored extends base {
39+
40+
/**
41+
* Constructs the progress reporter.
42+
*
43+
* @param stored_progress_bar $bar The stored progress bar to update.
44+
*/
45+
public function __construct(protected stored_progress_bar $bar) {
46+
}
47+
48+
/**
49+
* Updates the progress in the database.
50+
* Database update frequency is set by $interval.
51+
*
52+
* @see \core\progress\base::update_progress()
53+
*/
54+
public function update_progress() {
55+
// Get progress.
56+
[$min] = $this->get_progress_proportion_range();
57+
58+
$message = '';
59+
if ($this->is_in_progress_section()) {
60+
$message = $this->get_current_description();
61+
}
62+
// Update progress bar.
63+
$this->bar->update_full($min * 100, $message);
64+
}
65+
}

0 commit comments

Comments
 (0)