MDL-73703 auth_ldap: Break apart sync_task
Extracted code from sync_users() into separate functions in order to enable ad-hoc sheduling, and chunking. Co-authored-by: David Woloszyn <[email protected]>
This commit is contained in:
committed by
David Woloszyn
co-authored by
David Woloszyn
parent
810554ee83
commit
3079896480
@@ -21,6 +21,7 @@
|
||||
* @copyright 2015 Vadim Dvorovenko <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace auth_ldap\task;
|
||||
|
||||
/**
|
||||
@@ -31,6 +32,9 @@ namespace auth_ldap\task;
|
||||
*/
|
||||
class sync_task extends \core\task\scheduled_task {
|
||||
|
||||
/** @var string Message prefix for mtrace */
|
||||
protected const MTRACE_MSG = 'Synced ldap users';
|
||||
|
||||
/**
|
||||
* Get a descriptive name for this task (shown to admins).
|
||||
*
|
||||
@@ -44,11 +48,22 @@ class sync_task extends \core\task\scheduled_task {
|
||||
* Run users sync.
|
||||
*/
|
||||
public function execute() {
|
||||
global $CFG;
|
||||
if (is_enabled_auth('ldap')) {
|
||||
/** @var auth_plugin_ldap $auth */
|
||||
$auth = get_auth_plugin('ldap');
|
||||
$auth->sync_users(true);
|
||||
$count = 0;
|
||||
$auth->sync_users_update_callback(function ($users, $updatekeys) use (&$count) {
|
||||
$asynctask = new asynchronous_sync_task();
|
||||
$asynctask->set_custom_data([
|
||||
'users' => $users,
|
||||
'updatekeys' => $updatekeys,
|
||||
]);
|
||||
\core\task\manager::queue_adhoc_task($asynctask);
|
||||
|
||||
$count++;
|
||||
mtrace(sprintf(" %s (%d)", self::MTRACE_MSG, $count));
|
||||
sleep(1);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user