You are here

public function UserHooks::convert in Drupal 7 to 8/9 Module Upgrader 8

Performs required conversions.

Parameters

TargetInterface $target: The target module to convert.

Overrides ConverterInterface::convert

File

src/Plugin/DMU/Converter/UserHooks.php, line 54

Class

UserHooks
Plugin annotation @Converter( id = "user_hooks", description = @Translation("Alters implementations of hook_user_insert(), hook_user_presave(), and hook_user_update()."), hook = { "hook_user_insert", "hook_user_presave", …

Namespace

Drupal\drupalmoduleupgrader\Plugin\DMU\Converter

Code

public function convert(TargetInterface $target) {
  $indexer = $target
    ->getIndexer('function');
  $hooks = array_filter($this->pluginDefinition['hook'], [
    $indexer,
    'has',
  ]);
  foreach ($hooks as $hook) {

    /** @var \Pharborist\Functions\FunctionDeclarationNode $function */
    $function = $indexer
      ->get($hook);

    // The $edit parameter is defunct in Drupal 8, but we'll leave it in
    // there as an empty array to prevent errors, and move it to the back
    // of the line.

    /** @var \Pharborist\Functions\ParameterNode $edit */
    $edit = $function
      ->getParameterList()
      ->shift()
      ->setReference(FALSE)
      ->setValue(NullNode::create());
    $function
      ->appendParameter($edit);

    // Slap a FIXME on the hook implementation, informing the developer that
    // $edit and $category are dead.
    $comment = $function
      ->getDocComment();
    $comment_text = $comment ? $comment
      ->getCommentText() : '';
    if ($comment_text) {
      $comment_text .= "\n\n";
    }
    $comment_text .= <<<'END'
@FIXME
The $edit and $category parameters are gone in Drupal 8. They have been left
here in order to prevent 'undefined variable' errors, but they will never
actually be passed to this hook. You'll need to modify this function and
remove every reference to them.
END;
    $function
      ->setDocComment(DocCommentNode::create($comment_text));
    $this
      ->rewriteFunction($this->rewriter, $function
      ->getParameterAtIndex(0), $target);
    $target
      ->save($function);
  }
}