3 namespace Drupal\drupalmoduleupgrader\Plugin\DMU\Converter;
5 use Drupal\Component\Plugin\PluginManagerInterface;
6 use Drupal\Core\StringTranslation\TranslationInterface;
7 use Drupal\drupalmoduleupgrader\ConverterBase;
8 use Drupal\drupalmoduleupgrader\TargetInterface;
9 use Psr\Log\LoggerInterface;
13 * id = "entity_hooks",
14 * description = @Translation("Rewrites various entity-related hooks."),
16 * "hook_comment_delete",
17 * "hook_comment_insert",
18 * "hook_comment_presave",
19 * "hook_comment_update",
21 * "hook_node_access_records",
22 * "hook_node_access_records_alter",
25 * "hook_node_grants_alter",
27 * "hook_node_presave",
28 * "hook_node_revision_delete",
29 * "hook_node_search_result",
32 * "hook_node_update_index",
33 * "hook_node_validate",
34 * "hook_taxonomy_term_delete",
35 * "hook_taxonomy_term_insert",
36 * "hook_taxonomy_term_presave",
37 * "hook_taxonomy_term_update",
41 * dependencies = { "plugin.manager.drupalmoduleupgrader.rewriter" }
44 class EntityHooks extends ConverterBase {
47 * @var \Drupal\Component\Plugin\PluginManagerInterface
51 public function __construct(array $configuration, $plugin_id, $plugin_definition, TranslationInterface $translator, LoggerInterface $log, PluginManagerInterface $rewriters) {
52 parent::__construct($configuration, $plugin_id, $plugin_definition, $translator, $log);
53 $this->rewriters = $rewriters;
59 public function convert(TargetInterface $target, $hook = NULL, $index = 0, $rewriter_id = NULL) {
60 $indexer = $target->getIndexer('function');
63 if ($indexer->has($hook)) {
64 if (empty($rewriter_id)) {
65 // Extract the entity type from the hook (e.g. 'hook_node_delete').
66 preg_match('/^hook_(.+)_[a-z]+$/', $hook, $matches);
67 $rewriter_id = '_rewriter:' . $matches[1];
69 $rewriter = $this->rewriters->createInstance($rewriter_id);
70 $this->rewriteFunction($rewriter, $indexer->get($hook)->getParameterAtIndex($index), $target);
74 $this->convert($target, 'hook_comment_delete');
75 $this->convert($target, 'hook_comment_insert');
76 $this->convert($target, 'hook_comment_presave');
77 $this->convert($target, 'hook_comment_update');
78 $this->convert($target, 'hook_node_access');
79 $this->convert($target, 'hook_node_access', 2, '_rewriter:account');
80 $this->convert($target, 'hook_node_access_records', 0, '_rewriter:node');
81 $this->convert($target, 'hook_node_access_records_alter', 1, '_rewriter:node');
82 $this->convert($target, 'hook_node_delete');
83 $this->convert($target, 'hook_node_grants', 0, '_rewriter:account');
84 $this->convert($target, 'hook_node_grants_alter', 1, '_rewriter:account');
85 $this->convert($target, 'hook_node_insert');
86 $this->convert($target, 'hook_node_presave');
87 $this->convert($target, 'hook_node_revision_delete');
88 $this->convert($target, 'hook_node_search_result');
89 $this->convert($target, 'hook_node_submit');
90 $this->convert($target, 'hook_node_submit', 2, 'form_state');
91 $this->convert($target, 'hook_node_update');
92 $this->convert($target, 'hook_node_update_index');
93 $this->convert($target, 'hook_node_validate');
94 $this->convert($target, 'hook_node_validate', 2, 'form_state');
95 $this->convert($target, 'hook_taxonomy_term_delete');
96 $this->convert($target, 'hook_taxonomy_term_insert');
97 $this->convert($target, 'hook_taxonomy_term_presave');
98 $this->convert($target, 'hook_taxonomy_term_update');
99 $this->convert($target, 'hook_user_delete');
100 $this->convert($target, 'hook_user_logout');