You are here

class BlockedUsers in Open Social 10.1.x

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  2. 8 modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  3. 8.2 modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  4. 8.3 modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  5. 8.4 modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  6. 8.5 modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  7. 8.6 modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  8. 8.7 modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  9. 8.8 modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  10. 10.3.x modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  11. 10.0.x modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers
  12. 10.2.x modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php \Drupal\social_search\Plugin\search_api\processor\BlockedUsers

Ignores blocked users in index and queries.

Makes sure blocked users are no longer indexed AND also filters out blocked users from queries.

Plugin annotation


@SearchApiProcessor(
  id = "blocked_users",
  label = @Translation("Skip Blocked users"),
  description = @Translation("Makes sure that blocked users are not added to the index."),
  stages = {
    "alter_items" = 0,
    "preprocess_query" = -30,
  },
)

Hierarchy

  • class \Drupal\social_search\Plugin\search_api\processor\BlockedUsers extends \Drupal\search_api\Processor\ProcessorPluginBase

Expanded class hierarchy of BlockedUsers

File

modules/social_features/social_search/src/Plugin/search_api/processor/BlockedUsers.php, line 27

Namespace

Drupal\social_search\Plugin\search_api\processor
View source
class BlockedUsers extends ProcessorPluginBase {

  /**
   * {@inheritdoc}
   */
  public static function supportsIndex(IndexInterface $index) {
    $entity_types = [
      'profile',
    ];
    foreach ($index
      ->getDatasources() as $datasource) {
      if (in_array($datasource
        ->getEntityTypeId(), $entity_types)) {
        return TRUE;
      }
    }
    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function alterIndexedItems(array &$items) {
    foreach ($items as $item_id => $item) {
      $object = $item
        ->getOriginalObject()
        ->getValue();
      if ($object instanceof ProfileInterface) {

        // Profile ownedId is the userId.
        if ($object
          ->getOwner()
          ->isBlocked() === TRUE) {
          unset($items[$item_id]);
        }
      }
      elseif ($object instanceof UserInterface) {
        if ($object
          ->isBlocked() === TRUE) {
          unset($items[$item_id]);
        }
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public function preprocessSearchQuery(QueryInterface $query) {
    if (!$query
      ->getOption('search_api_bypass_access')) {

      // Add a condition to filter out users through the status field.
      $conditions = $query
        ->createConditionGroup('AND');
      $conditions
        ->addCondition('user_status', 0, '<>');

      // Add the conditions.
      $query
        ->addConditionGroup($conditions);
    }
  }

}

Members