You are here

function social_event_type_preprocess_node in Open Social 10.3.x

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  2. 8 modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  3. 8.2 modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  4. 8.3 modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  5. 8.4 modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  6. 8.5 modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  7. 8.6 modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  8. 8.7 modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  9. 8.8 modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  10. 10.0.x modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  11. 10.1.x modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()
  12. 10.2.x modules/social_features/social_event/modules/social_event_type/social_event_type.module \social_event_type_preprocess_node()

Preprocess event node.

Parameters

array $variables: Array with variables of a node.

File

modules/social_features/social_event/modules/social_event_type/social_event_type.module, line 66
The Social event type module.

Code

function social_event_type_preprocess_node(array &$variables) {

  /** @var \Drupal\node\Entity\NodeInterface $node */
  $node = $variables['node'];
  if ($node
    ->getType() === 'event') {
    $event_type = $node
      ->get('field_event_type');
    $event_type_entities = $event_type
      ->referencedEntities();
    if (count($event_type_entities) === 1) {

      /** @var \Drupal\node\Entity\Node $event */
      foreach ($event_type_entities as $event) {
        if ($event instanceof Node) {
          $variables['metadata'] = t('in @event', [
            '@event' => $event
              ->toLink()
              ->toString(),
          ]);

          // Set event type link.
          $now = strtotime("now");
          $end = strtotime($node
            ->get('field_event_date_end')
            ->getString());

          // 1 are upcoming events.
          // 2 are ones that have started or are finished.
          $datetype = $now > $end ? 2 : 1;
          $event_type_url = Url::fromRoute('view.upcoming_events.page_community_events', [
            'field_event_date_value' => $datetype,
            'event_type_id' => $event
              ->id(),
          ]);
          $event_type_link = Link::fromTextAndUrl($event
            ->label(), $event_type_url)
            ->toString();
          $variables['event_type'] = $event_type_link;
        }
        if ($event
          ->hasField('field_event_type_icon') && !$event
          ->get('field_event_type_icon')
          ->isEmpty()) {
          $variables['event_type_icon'] = $event
            ->get('field_event_type_icon')->value;
        }
        $variables['#cache']['tags'][] = $event
          ->getEntityTypeId() . ':' . $event
          ->id();
      }
    }
    else {
      $variables['metadata'] = NULL;
      $variables['event_type'] = NULL;
    }
  }
}