From e3a98cc8fd2660eaff8bf52fcbcc217691007e57 Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Wed, 18 Mar 2020 18:42:20 -0500 Subject: [PATCH] MigrationMoodle: Add task for track_e_login - refs BT#15992 --- plugin/migrationmoodle/admin.php | 1 + plugin/migrationmoodle/lang/english.php | 1 + plugin/migrationmoodle/run_cli.php | 1 + .../src/Loader/TrackLoginLoader.php | 33 ++++++++++ .../src/Task/TrackLoginTask.php | 63 +++++++++++++++++++ 5 files changed, 99 insertions(+) create mode 100644 plugin/migrationmoodle/src/Loader/TrackLoginLoader.php create mode 100644 plugin/migrationmoodle/src/Task/TrackLoginTask.php diff --git a/plugin/migrationmoodle/admin.php b/plugin/migrationmoodle/admin.php index a9dd50f65e..82af3d9edd 100644 --- a/plugin/migrationmoodle/admin.php +++ b/plugin/migrationmoodle/admin.php @@ -94,6 +94,7 @@ $menu = [ ], 'users' => [ 'users_last_login', + 'track_login', 'user_sessions', ], 'user_sessions' => [ diff --git a/plugin/migrationmoodle/lang/english.php b/plugin/migrationmoodle/lang/english.php index 04e3223632..b8306b7e14 100644 --- a/plugin/migrationmoodle/lang/english.php +++ b/plugin/migrationmoodle/lang/english.php @@ -73,3 +73,4 @@ $strings['UserQuestionAttemptsShortanswerTask'] = 'Question attempts of users fo $strings['UserQuestionAttemptsGapselectTask'] = 'Question attempts of users for gapselect'; $strings['UserQuestionAttemptsTruefalseTask'] = 'Question attempts of users for truefalse'; $strings['UsersLastLoginTask'] = 'Last logins for users'; +$strings['TrackLoginTask'] = 'First login and last logout'; diff --git a/plugin/migrationmoodle/run_cli.php b/plugin/migrationmoodle/run_cli.php index 6d03501e4a..b36698625a 100644 --- a/plugin/migrationmoodle/run_cli.php +++ b/plugin/migrationmoodle/run_cli.php @@ -63,6 +63,7 @@ $taskNames = [ /**//**//**/'files_for_scorm_scoes', 'users', /**/'users_last_login', + /**/'track_login', /**/'user_sessions', /**//**/'users_learn_paths', /**//**//**/'users_learn_paths_lesson_timer', diff --git a/plugin/migrationmoodle/src/Loader/TrackLoginLoader.php b/plugin/migrationmoodle/src/Loader/TrackLoginLoader.php new file mode 100644 index 0000000000..b76307c3ee --- /dev/null +++ b/plugin/migrationmoodle/src/Loader/TrackLoginLoader.php @@ -0,0 +1,33 @@ +format('Y-m-d H:i:s'); + + if ($incomingData['logout_date']) { + $incomingData['logout_date'] = $incomingData['logout_date']->format('Y-m-d H:i:s'); + } + + $incomingData['user_ip'] = ''; + + return \Database::insert( + \Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN), + $incomingData + ); + } +} diff --git a/plugin/migrationmoodle/src/Task/TrackLoginTask.php b/plugin/migrationmoodle/src/Task/TrackLoginTask.php new file mode 100644 index 0000000000..388812feb0 --- /dev/null +++ b/plugin/migrationmoodle/src/Task/TrackLoginTask.php @@ -0,0 +1,63 @@ + LoadedUsersFilterExtractor::class, + 'query' => 'SELECT id, firstaccess, lastaccess FROM mdl_user WHERE firstaccess != 0', + ]; + } + + /** + * @inheritDoc + */ + public function getTransformConfiguration() + { + return [ + 'class' => BaseTransformer::class, + 'map' => [ + 'login_user_id' => [ + 'class' => LoadedUserLookup::class, + 'properties' => ['id'], + ], + 'login_date' => [ + 'class' => DateTimeObject::class, + 'properties' => ['firstaccess'], + ], + 'logout_date' => [ + 'class' => DateTimeObject::class, + 'properties' => ['lastaccess'], + ], + ], + ]; + } + + /** + * @inheritDoc + */ + public function getLoadConfiguration() + { + return [ + 'class' => TrackLoginLoader::class, + ]; + } +}