You are here

trait SocialProfileTrait in Open Social 8.3

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait
  2. 8.2 modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait
  3. 8.4 modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait
  4. 8.5 modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait
  5. 8.6 modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait
  6. 8.7 modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait
  7. 8.8 modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait
  8. 10.3.x modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait
  9. 10.0.x modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait
  10. 10.1.x modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait
  11. 10.2.x modules/social_features/social_profile/src/SocialProfileTrait.php \Drupal\social_profile\SocialProfileTrait

Trait SocialProfileTrait.

@package Drupal\social_profile

Hierarchy

3 files declare their use of SocialProfileTrait
AutocompleteController.php in modules/social_features/social_mentions/src/Controller/AutocompleteController.php
PrivateMessageMapper.php in modules/social_features/social_private_message/src/Mapper/PrivateMessageMapper.php
UserSelection.php in modules/social_features/social_profile/src/Plugin/EntityReferenceSelection/UserSelection.php

File

modules/social_features/social_profile/src/SocialProfileTrait.php, line 10

Namespace

Drupal\social_profile
View source
trait SocialProfileTrait {

  /**
   * Get a list of account IDs whose account names begin with the given string.
   *
   * @param string $name
   *   The string to search for.
   * @param int $count
   *   The number of results to return.
   * @param string $suggestion_format
   *   (optional) The suggestion format.
   *
   * @return int[]
   *   An array of account IDs for accounts whose account names begin with the
   *   given string.
   */
  public function getUserIdsFromName($name, $count, $suggestion_format = SOCIAL_PROFILE_SUGGESTIONS_ALL) {
    $connection = \Drupal::database();

    // Nickname.
    $addNickName = \Drupal::moduleHandler()
      ->moduleExists('social_profile_fields');
    $query = $connection
      ->select('users', 'u')
      ->fields('u', [
      'uid',
    ]);
    $query
      ->join('users_field_data', 'uf', 'uf.uid = u.uid');
    $query
      ->condition('uf.status', 1);
    $name = $connection
      ->escapeLike($name);
    switch ($suggestion_format) {
      case SOCIAL_PROFILE_SUGGESTIONS_USERNAME:
        $query
          ->condition('uf.name', '%' . $name . '%', 'LIKE');
        break;
      case SOCIAL_PROFILE_SUGGESTIONS_FULL_NAME:
        $query
          ->join('profile', 'p', 'p.uid = u.uid');
        $query
          ->join('profile__field_profile_first_name', 'fn', 'fn.entity_id = p.profile_id');
        $query
          ->join('profile__field_profile_last_name', 'ln', 'ln.entity_id = p.profile_id');

        // Add nickname.
        if ($addNickName === TRUE) {
          $query
            ->leftJoin('profile__field_profile_nick_name', 'nn', 'nn.entity_id = p.profile_id');
        }
        $or = $query
          ->orConditionGroup();
        $or
          ->condition('fn.field_profile_first_name_value', '%' . $name . '%', 'LIKE')
          ->condition('ln.field_profile_last_name_value', '%' . $name . '%', 'LIKE');

        // Add Nickname.
        if ($addNickName === TRUE) {
          $or
            ->condition('nn.field_profile_nick_name_value', '%' . $name . '%', 'LIKE');
        }
        $query
          ->condition($or);
        break;
      case SOCIAL_PROFILE_SUGGESTIONS_ALL:
        $query
          ->leftJoin('profile', 'p', 'p.uid = u.uid');
        $query
          ->leftJoin('profile__field_profile_first_name', 'fn', 'fn.entity_id = p.profile_id');
        $query
          ->leftJoin('profile__field_profile_last_name', 'ln', 'ln.entity_id = p.profile_id');

        // Add nickname.
        if ($addNickName === TRUE) {
          $query
            ->leftJoin('profile__field_profile_nick_name', 'nn', 'nn.entity_id = p.profile_id');
        }
        $or = $query
          ->orConditionGroup();
        $or
          ->condition('uf.name', '%' . $name . '%', 'LIKE')
          ->condition('fn.field_profile_first_name_value', '%' . $name . '%', 'LIKE')
          ->condition('ln.field_profile_last_name_value', '%' . $name . '%', 'LIKE');

        // Add Nickname.
        if ($addNickName === TRUE) {
          $or
            ->condition('nn.field_profile_nick_name_value', '%' . $name . '%', 'LIKE');
        }
        $query
          ->condition($or);
        break;
    }
    $result = $query
      ->range(0, $count)
      ->execute()
      ->fetchCol();
    return !empty($result) ? $result : [];
  }

}

Members

Namesort descending Modifiers Type Description Overrides
SocialProfileTrait::getUserIdsFromName public function Get a list of account IDs whose account names begin with the given string.