Further modules included.
[yaffs-website] / web / modules / contrib / drupalmoduleupgrader / src / Plugin / DMU / Converter / EntityHooks.php
1 <?php
2
3 namespace Drupal\drupalmoduleupgrader\Plugin\DMU\Converter;
4
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;
10
11 /**
12  * @Converter(
13  *  id = "entity_hooks",
14  *  description = @Translation("Rewrites various entity-related hooks."),
15  *  hook = {
16  *    "hook_comment_delete",
17  *    "hook_comment_insert",
18  *    "hook_comment_presave",
19  *    "hook_comment_update",
20  *    "hook_node_access",
21  *    "hook_node_access_records",
22  *    "hook_node_access_records_alter",
23  *    "hook_node_delete",
24  *    "hook_node_grants",
25  *    "hook_node_grants_alter",
26  *    "hook_node_insert",
27  *    "hook_node_presave",
28  *    "hook_node_revision_delete",
29  *    "hook_node_search_result",
30  *    "hook_node_submit",
31  *    "hook_node_update",
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",
38  *    "hook_user_delete",
39  *    "hook_user_logout"
40  *  },
41  *  dependencies = { "plugin.manager.drupalmoduleupgrader.rewriter" }
42  * )
43  */
44 class EntityHooks extends ConverterBase {
45
46   /**
47    * @var \Drupal\Component\Plugin\PluginManagerInterface
48    */
49   protected $rewriters;
50
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;
54   }
55
56   /**
57    * {@inheritdoc}
58    */
59   public function convert(TargetInterface $target, $hook = NULL, $index = 0, $rewriter_id = NULL) {
60     $indexer = $target->getIndexer('function');
61
62     if (isset($hook)) {
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];
68         }
69         $rewriter = $this->rewriters->createInstance($rewriter_id);
70         $this->rewriteFunction($rewriter, $indexer->get($hook)->getParameterAtIndex($index), $target);
71       }
72     }
73     else {
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');
101     }
102   }
103
104 }