original_string: protected function update_expired_context(expired_context $expiredctx) {
          // Fetch the context from the expired_context record.
          $context = \context::instance_by_id($expiredctx->get('contextid'));
  
          // Fetch the current nested expiry data.
          $expiryrecords = self::get_nested_expiry_info($context->path);
  
          if (empty($expiryrecords[$context->path])) {
              $expiredctx->delete();
              return null;
          }
  
          // Refresh the record.
          // Note: Use the returned expiredctx.
          $expiredctx = $this->update_from_expiry_info($expiryrecords[$context->path]);
          if (empty($expiredctx)) {
              return null;
          }
  
          if (!$context instanceof \context_user) {
              // Where the target context is not a user, we check all children of the context.
              // The expiryrecords array only contains children, fetched from the get_nested_expiry_info call above.
              // No need to check that these _are_ children.
              foreach ($expiryrecords as $expiryrecord) {
                  if ($expiryrecord->context->id === $context->id) {
                      // This is record for the context being tested that we checked earlier.
                      continue;
                  }
  
                  if (empty($expiryrecord->record->expiredctxid)) {
                      // There is no expired context record for this context.
                      // If there is no record, then this context cannot have been approved for removal.
                      return null;
                  }
  
                  // Fetch the expired_context object for this record.
                  // This needs to be updated from the expiry_info data too as there may be child changes to consider.
                  $expiredcontext = new expired_context(null, expired_context::extract_record($expiryrecord->record, 'expiredctx'));
                  $expiredcontext->update_from_expiry_info($expiryrecord->info);
                  if (!$expiredcontext->is_complete()) {
                      return null;
                  }
              }
          }
  
          return $expiredctx;
      }
code: protected function update_expired_context(expired_context $expiredctx) {
          // Fetch the context from the expired_context record.
          $context = \context::instance_by_id($expiredctx->get('contextid'));
  
          // Fetch the current nested expiry data.
          $expiryrecords = self::get_nested_expiry_info($context->path);
  
          if (empty($expiryrecords[$context->path])) {
              $expiredctx->delete();
              return null;
          }
  
          // Refresh the record.
          // Note: Use the returned expiredctx.
          $expiredctx = $this->update_from_expiry_info($expiryrecords[$context->path]);
          if (empty($expiredctx)) {
              return null;
          }
  
          if (!$context instanceof \context_user) {
              // Where the target context is not a user, we check all children of the context.
              // The expiryrecords array only contains children, fetched from the get_nested_expiry_info call above.
              // No need to check that these _are_ children.
              foreach ($expiryrecords as $expiryrecord) {
                  if ($expiryrecord->context->id === $context->id) {
                      // This is record for the context being tested that we checked earlier.
                      continue;
                  }
  
                  if (empty($expiryrecord->record->expiredctxid)) {
                      // There is no expired context record for this context.
                      // If there is no record, then this context cannot have been approved for removal.
                      return null;
                  }
  
                  // Fetch the expired_context object for this record.
                  // This needs to be updated from the expiry_info data too as there may be child changes to consider.
                  $expiredcontext = new expired_context(null, expired_context::extract_record($expiryrecord->record, 'expiredctx'));
                  $expiredcontext->update_from_expiry_info($expiryrecord->info);
                  if (!$expiredcontext->is_complete()) {
                      return null;
                  }
              }
          }
  
          return $expiredctx;
      }
code_tokens: protected function update_expired_context ( expired_context $ expiredctx ) { // Fetch the context from the expired_context record. $ context = \ context :: instance_by_id ( $ expiredctx -> get ( 'contextid' ) ) ; // Fetch the current nested expiry data. $ expiryrecords = self :: get_nested_expiry_info ( $ context -> path ) ; if ( empty ( $ expiryrecords [ $ context -> path ] ) ) { $ expiredctx -> delete ( ) ; return null ; } // Refresh the record. // Note: Use the returned expiredctx. $ expiredctx = $ this -> update_from_expiry_info ( $ expiryrecords [ $ context -> path ] ) ; if ( empty ( $ expiredctx ) ) { return null ; } if ( ! $ context instanceof \ context_user ) { // Where the target context is not a user, we check all children of the context. // The expiryrecords array only contains children, fetched from the get_nested_expiry_info call above. // No need to check that these _are_ children. foreach ( $ expiryrecords as $ expiryrecord ) { if ( $ expiryrecord -> context -> id === $ context -> id ) { // This is record for the context being tested that we checked earlier. continue ; } if ( empty ( $ expiryrecord -> record -> expiredctxid ) ) { // There is no expired context record for this context. // If there is no record, then this context cannot have been approved for removal. return null ; } // Fetch the expired_context object for this record. // This needs to be updated from the expiry_info data too as there may be child changes to consider. $ expiredcontext = new expired_context ( null , expired_context :: extract_record ( $ expiryrecord -> record , 'expiredctx' ) ) ; $ expiredcontext -> update_from_expiry_info ( $ expiryrecord -> info ) ; if ( ! $ expiredcontext -> is_complete ( ) ) { return null ; } } } return $ expiredctx ; }
docstring: Update the expired context record.
  
  Note: You should use the return value as the provided value will be used to fetch data only.
  
  @param   expired_context $expiredctx The record to update
  @return  expired_context|null
docstring_tokens: Update the expired context record .