3 namespace Drupal\drupalmoduleupgrader\Plugin\DMU\Analyzer;
5 use Drupal\Core\StringTranslation\TranslationInterface;
6 use Drupal\drupalmoduleupgrader\DeriverBase;
7 use Symfony\Component\DependencyInjection\ContainerInterface;
9 class FunctionCallDeriver extends DeriverBase {
16 public function __construct(TranslationInterface $translator, array $config) {
17 parent::__construct($translator);
18 $this->config = $config;
24 public static function create(ContainerInterface $container, $base_plugin_id) {
26 $container->get('string_translation'),
27 $container->get('config.factory')->get('drupalmoduleupgrader.functions')->get('definitions')
34 public function getDerivativeDefinitions($base_definition) {
37 foreach ($this->config as $key => $info) {
38 // $key can either be the name of a single function, or an arbitrary string
39 // identifying a group of functions to handle.
40 if (empty($info['functions'])) {
41 $info['functions'] = [$key];
44 foreach ($info['functions'] as $function) {
45 $variables = ['@function' => $function . '()'];
47 $derivative = array_merge($base_definition, $info);
48 $derivative['function'] = $function;
49 $derivative['message'] = $this->t($derivative['message'], $variables);
50 $derivative['description'] = $this->t('Analyzes calls to @function.', $variables);
51 foreach ($derivative['documentation'] as &$doc) {
52 $doc['title'] = $this->t($doc['title'], $variables);
54 unset($derivative['functions']);
56 $derivatives[$function] = $derivative;