original_string: 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);
      }
code: 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);
      }
code_tokens: 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 ) ; }
docstring: Deletes user data from the provided user context.
  
  @param expired_context $expiredctx
docstring_tokens: Deletes user data from the provided user context .