You are here

public function MentionsFilter::getMentions in Open Social 8

Same name and namespace in other branches
  1. 8.9 modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  2. 8.2 modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  3. 8.3 modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  4. 8.4 modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  5. 8.5 modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  6. 8.6 modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  7. 8.7 modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  8. 8.8 modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  9. 10.3.x modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  10. 10.0.x modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  11. 10.1.x modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()
  12. 10.2.x modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php \Drupal\mentions\Plugin\Filter\MentionsFilter::getMentions()

Gets the mentions in text.

Parameters

string $text: The text to find mentions in.

Return value

array A list of mentions.

1 call to MentionsFilter::getMentions()
MentionsFilter::filterMentions in modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php
Filters mentions in a text.

File

modules/custom/mentions/src/Plugin/Filter/MentionsFilter.php, line 152

Class

MentionsFilter
Class FilterMentions.

Namespace

Drupal\mentions\Plugin\Filter

Code

public function getMentions($text) {
  $mentions = [];
  $config_names = $this->mentionTypes;
  foreach ($config_names as $config_name) {
    $settings = $this->config
      ->get('mentions.mentions_type.' . $config_name);
    $input_settings = [
      'prefix' => $settings
        ->get('input.prefix'),
      'suffix' => $settings
        ->get('input.suffix'),
      'entity_type' => $settings
        ->get('input.entity_type'),
      'value' => $settings
        ->get('input.inputvalue'),
    ];
    $this->inputSettings[$config_name] = $input_settings;
    if (!isset($input_settings['entity_type']) || empty($this->settings['mentions_filter'][$config_name])) {
      continue;
    }
    $output_settings = [
      'value' => $settings
        ->get('output.outputvalue'),
      'renderlink' => (bool) $settings
        ->get('output.renderlink'),
      'rendertextbox' => $settings
        ->get('output.renderlinktextbox'),
    ];
    $this->outputSettings[$config_name] = $output_settings;
    $mention_type = $settings
      ->get('mention_type');
    $mention = $this->mentionsManager
      ->createInstance($mention_type);
    if ($mention instanceof MentionsPluginInterface) {
      $pattern = '/(?:' . preg_quote($input_settings['prefix']) . ')([a-zA-Z0-9_]+)' . preg_quote($input_settings['suffix']) . '/';
      preg_match_all($pattern, $text, $matches, PREG_SET_ORDER);
      foreach ($matches as $match) {
        $target = $mention
          ->targetCallback($match[1], $input_settings);
        if ($target !== FALSE) {
          $mentions[$match[0]] = [
            'type' => $mention_type,
            'source' => [
              'string' => $match[0],
              'match' => $match[1],
            ],
            'target' => $target,
            'config_name' => $config_name,
          ];
        }
      }
    }
  }
  return $mentions;
}