protected function OgContext::getBestCandidate in Organic groups 8
Returns information about the group which best matches the current context.
Return value
array|null An associative array with information about the chosen candidate. It has the following keys:
- entity: the group entity.
 - votes: an array of votes that have been cast for this entity.
 - cache_contexts: an array of cache contexts that were used to discover this group.
 
If no group was found in the current context, NULL is returned.
See also
\Drupal\og\OgGroupResolverInterface
1 call to OgContext::getBestCandidate()
- OgContext::getOgContext in src/
ContextProvider/ OgContext.php  - Returns the context object containing the relevant group.
 
File
- src/
ContextProvider/ OgContext.php, line 129  
Class
- OgContext
 - Provides the group that best matches the current context.
 
Namespace
Drupal\og\ContextProviderCode
protected function getBestCandidate() {
  $collection = new OgResolvedGroupCollection();
  // Retrieve the list of group resolvers. These are stored in config, and are
  // ordered by priority.
  $group_resolvers = $this->configFactory
    ->get('og.settings')
    ->get('group_resolvers');
  $priority = 0;
  foreach ($group_resolvers as $plugin_id) {
    /** @var \Drupal\og\OgGroupResolverInterface $plugin */
    if ($plugin = $this->pluginManager
      ->createInstance($plugin_id)) {
      // Set the default vote weight according to the plugin's priority.
      $collection
        ->setVoteWeight($priority);
      // Let the plugin do its magic.
      $plugin
        ->resolve($collection);
      // If the plugin is certain that the candidate belongs to the current
      // context, it can declare the search to be over.
      if ($plugin
        ->isPropagationStopped()) {
        break;
      }
      // The next plugin we try will have a lower priority.
      $priority--;
    }
  }
  // Sort the resolved groups and retrieve the first result, this will be the
  // best candidate.
  $collection
    ->sort();
  $group_info = $collection
    ->getGroupInfo();
  if (!empty($group_info)) {
    return reset($group_info);
  }
  return NULL;
}