You are here

function social_activity_preprocess_block in Open Social 8.9

Same name and namespace in other branches
  1. 10.3.x modules/social_features/social_activity/social_activity.module \social_activity_preprocess_block()
  2. 10.0.x modules/social_features/social_activity/social_activity.module \social_activity_preprocess_block()
  3. 10.1.x modules/social_features/social_activity/social_activity.module \social_activity_preprocess_block()
  4. 10.2.x modules/social_features/social_activity/social_activity.module \social_activity_preprocess_block()

Implements hook_preprocess_HOOK().

File

modules/social_features/social_activity/social_activity.module, line 244
The Social activity module.

Code

function social_activity_preprocess_block(&$variables) {
  $route_match = \Drupal::routeMatch();
  $allowed_routes = [
    'entity.node.canonical',
    'layout_builder.overrides.node.view',
  ];
  $allowed_bundles = [
    'dashboard',
    'landing_page',
  ];
  $allowed_content_names = [
    'activity_stream',
    'community_activities',
    'activity_stream_profile',
    'activity_stream_group',
  ];
  if (($node = $route_match
    ->getParameter('node')) && $node instanceof NodeInterface) {

    // Use lazy builder for stream blocks only if:
    // 1. It on the node or landing builder page.
    // 2. Node is a Dashboard or a Landing page
    // 3. This block is from views.
    // 4. View one of the stream views.
    if (in_array($route_match
      ->getRouteName(), $allowed_routes) && in_array($node
      ->bundle(), $allowed_bundles) && $variables['base_plugin_id'] === 'views_block' && isset($variables['content']['#name']) && in_array($variables['content']['#name'], $allowed_content_names)) {
      if ($node
        ->bundle() === 'dashboard') {
        $variables['attributes']['class'][] = 'block-dashboard-activity-stream card';
      }

      /** @var \Drupal\views\ViewExecutable $view */
      $view = $variables['content']['#view'];
      $variables['content'] = [
        '#create_placeholder' => TRUE,
        '#lazy_builder' => [
          'social_activity.lazy_builder:viewsLazyBuild',
          [
            $variables['content']['#name'],
            $variables['content']['#display_id'],
            $node
              ->bundle(),
            $view
              ->getItemsPerPage(),
          ],
        ],
      ];
    }
  }
}