protected function delete_expired_user_context(expired_context $expiredctx) {
        global $DB;

        $contextid = $expiredctx->get('contextid');
        $context = \context::instance_by_id($contextid);
        $user = \core_user::get_user($context->instanceid, '*', MUST_EXIST);

        $privacymanager = $this->get_privacy_manager();

        // Delete all child contexts of the user context.
        $parentpath = $DB->sql_concat('ctxuser.path', "'/%'");

        $params = [
            'contextlevel'  => CONTEXT_USER,
            'contextid'     => $expiredctx->get('contextid'),
        ];

        $fields = \context_helper::get_preload_record_columns_sql('ctx');
        $sql = "SELECT ctx.id, $fields
                  FROM {context} ctxuser
                  JOIN {context} ctx ON ctx.path LIKE {$parentpath}
                 WHERE ctxuser.contextlevel = :contextlevel AND ctxuser.id = :contextid
              ORDER BY ctx.path DESC";

        $children = $DB->get_recordset_sql($sql, $params);
        foreach ($children as $child) {
            \context_helper::preload_from_record($child);
            $context = \context::instance_by_id($child->id);

            $privacymanager->delete_data_for_all_users_in_context($context);
        }
        $children->close();

        // Delete all unprotected data that the user holds.
        $approvedlistcollection = new \core_privacy\local\request\contextlist_collection($user->id);
        $contextlistcollection = $privacymanager->get_contexts_for_userid($user->id);

        foreach ($contextlistcollection as $contextlist) {
            $contextids = [];
            $approvedlistcollection->add_contextlist(new \core_privacy\local\request\approved_contextlist(
                    $user,
                    $contextlist->get_component(),
                    $contextlist->get_contextids()
                ));
        }
        $privacymanager->delete_data_for_user($approvedlistcollection, $this->get_progress());

        // Delete the user context.
        $context = \context::instance_by_id($expiredctx->get('contextid'));
        $privacymanager->delete_data_for_all_users_in_context($context);

        // This user is now fully expired - finish by deleting the user.
        delete_user($user);
    }
protected function delete_expired_user_context(expired_context $expiredctx) {
        global $DB;

        $contextid = $expiredctx->get('contextid');
        $context = \context::instance_by_id($contextid);
        $user = \core_user::get_user($context->instanceid, '*', MUST_EXIST);

        $privacymanager = $this->get_privacy_manager();

        // Delete all child contexts of the user context.
        $parentpath = $DB->sql_concat('ctxuser.path', "'/%'");

        $params = [
            'contextlevel'  => CONTEXT_USER,
            'contextid'     => $expiredctx->get('contextid'),
        ];

        $fields = \context_helper::get_preload_record_columns_sql('ctx');
        $sql = "SELECT ctx.id, $fields
                  FROM {context} ctxuser
                  JOIN {context} ctx ON ctx.path LIKE {$parentpath}
                 WHERE ctxuser.contextlevel = :contextlevel AND ctxuser.id = :contextid
              ORDER BY ctx.path DESC";

        $children = $DB->get_recordset_sql($sql, $params);
        foreach ($children as $child) {
            \context_helper::preload_from_record($child);
            $context = \context::instance_by_id($child->id);

            $privacymanager->delete_data_for_all_users_in_context($context);
        }
        $children->close();

        // Delete all unprotected data that the user holds.
        $approvedlistcollection = new \core_privacy\local\request\contextlist_collection($user->id);
        $contextlistcollection = $privacymanager->get_contexts_for_userid($user->id);

        foreach ($contextlistcollection as $contextlist) {
            $contextids = [];
            $approvedlistcollection->add_contextlist(new \core_privacy\local\request\approved_contextlist(
                    $user,
                    $contextlist->get_component(),
                    $contextlist->get_contextids()
                ));
        }
        $privacymanager->delete_data_for_user($approvedlistcollection, $this->get_progress());

        // Delete the user context.
        $context = \context::instance_by_id($expiredctx->get('contextid'));
        $privacymanager->delete_data_for_all_users_in_context($context);

        // This user is now fully expired - finish by deleting the user.
        delete_user($user);
    }
protected function delete_expired_user_context ( expired_context $ expiredctx ) { global $ DB ; $ contextid = $ expiredctx -> get ( 'contextid' ) ; $ context = \ context :: instance_by_id ( $ contextid ) ; $ user = \ core_user :: get_user ( $ context -> instanceid , '*' , MUST_EXIST ) ; $ privacymanager = $ this -> get_privacy_manager ( ) ; // Delete all child contexts of the user context. $ parentpath = $ DB -> sql_concat ( 'ctxuser.path' , "'/%'" ) ; $ params = [ 'contextlevel' => CONTEXT_USER , 'contextid' => $ expiredctx -> get ( 'contextid' ) , ] ; $ fields = \ context_helper :: get_preload_record_columns_sql ( 'ctx' ) ; $ sql = "SELECT ctx.id, $fields
                  FROM {context} ctxuser
                  JOIN {context} ctx ON ctx.path LIKE {$parentpath}
                 WHERE ctxuser.contextlevel = :contextlevel AND ctxuser.id = :contextid
              ORDER BY ctx.path DESC" ; $ children = $ DB -> get_recordset_sql ( $ sql , $ params ) ; foreach ( $ children as $ child ) { \ context_helper :: preload_from_record ( $ child ) ; $ context = \ context :: instance_by_id ( $ child -> id ) ; $ privacymanager -> delete_data_for_all_users_in_context ( $ context ) ; } $ children -> close ( ) ; // Delete all unprotected data that the user holds. $ approvedlistcollection = new \ core_privacy \ local \ request \ contextlist_collection ( $ user -> id ) ; $ contextlistcollection = $ privacymanager -> get_contexts_for_userid ( $ user -> id ) ; foreach ( $ contextlistcollection as $ contextlist ) { $ contextids = [ ] ; $ approvedlistcollection -> add_contextlist ( new \ core_privacy \ local \ request \ approved_contextlist ( $ user , $ contextlist -> get_component ( ) , $ contextlist -> get_contextids ( ) ) ) ; } $ privacymanager -> delete_data_for_user ( $ approvedlistcollection , $ this -> get_progress ( ) ) ; // Delete the user context. $ context = \ context :: instance_by_id ( $ expiredctx -> get ( 'contextid' ) ) ; $ privacymanager -> delete_data_for_all_users_in_context ( $ context ) ; // This user is now fully expired - finish by deleting the user. delete_user ( $ user ) ; }
Deletes user data from the provided user context.

@param expired_context $expiredctx
Deletes user data from the provided user context .