UserHooks.php in Drupal 7 to 8/9 Module Upgrader 8
File
src/Plugin/DMU/Converter/UserHooks.php
View source
<?php
namespace Drupal\drupalmoduleupgrader\Plugin\DMU\Converter;
use Drupal\Core\StringTranslation\TranslationInterface;
use Drupal\drupalmoduleupgrader\ConverterBase;
use Drupal\drupalmoduleupgrader\RewriterInterface;
use Drupal\drupalmoduleupgrader\TargetInterface;
use Pharborist\DocCommentNode;
use Pharborist\Types\NullNode;
use Psr\Log\LoggerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class UserHooks extends ConverterBase {
protected $rewriter;
public function __construct(array $configuration, $plugin_id, $plugin_definition, TranslationInterface $translator, LoggerInterface $log, RewriterInterface $rewriter) {
parent::__construct($configuration, $plugin_id, $plugin_definition, $translator, $log);
$this->rewriter = $rewriter;
}
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('string_translation'), $container
->get('logger.factory')
->get('drupalmoduleupgrader'), $container
->get('plugin.manager.drupalmoduleupgrader.rewriter')
->createInstance('_rewriter:user'));
}
public function convert(TargetInterface $target) {
$indexer = $target
->getIndexer('function');
$hooks = array_filter($this->pluginDefinition['hook'], [
$indexer,
'has',
]);
foreach ($hooks as $hook) {
$function = $indexer
->get($hook);
$edit = $function
->getParameterList()
->shift()
->setReference(FALSE)
->setValue(NullNode::create());
$function
->appendParameter($edit);
$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);
}
}
}
Classes
Name |
Description |
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",
… |