You are here

public function ResultManager::getResults in Linkit 8.4

Gets the results.

Parameters

ProfileInterface $linkitProfile: The linkit profile.

$search_string: The string ro use in the matchers.

Return value

array An array of matches.

File

src/ResultManager.php, line 30
Contains \Drupal\linkit\ResultManager.

Class

ResultManager
Result service to handle autocomplete matcher results.

Namespace

Drupal\linkit

Code

public function getResults(ProfileInterface $linkitProfile, $search_string) {
  $matches = array();
  if (empty(trim($search_string))) {
    return [
      [
        'title' => t('No results'),
      ],
    ];
  }

  // Special for link to front page.
  if (strpos($search_string, 'front') !== FALSE) {
    $matches[] = [
      'title' => t('Front page'),
      'description' => 'The front page for this site.',
      'path' => Url::fromRoute('<front>')
        ->toString(),
      'group' => t('System'),
    ];
  }
  foreach ($linkitProfile
    ->getMatchers() as $plugin) {
    $matches = array_merge($matches, $plugin
      ->getMatches($search_string));
  }

  // Check for an e-mail address then return an e-mail match and create a
  // mail-to link if appropriate.
  if (filter_var($search_string, FILTER_VALIDATE_EMAIL)) {
    $matches[] = [
      'title' => t('E-mail @email', [
        '@email' => $search_string,
      ]),
      'description' => t('Opens your mail client ready to e-mail @email', [
        '@email' => $search_string,
      ]),
      'path' => 'mailto:' . Html::escape($search_string),
      'group' => t('E-mail'),
    ];
  }

  // If there is still no matches, return a "no results" array.
  if (empty($matches)) {
    return [
      [
        'title' => t('No results'),
      ],
    ];
  }
  return $matches;
}