You are here

function _social_group_get_join_methods in Open Social 10.3.x

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_group/social_group.module \_social_group_get_join_methods()
  2. 8.6 modules/social_features/social_group/social_group.module \_social_group_get_join_methods()
  3. 8.7 modules/social_features/social_group/social_group.module \_social_group_get_join_methods()
  4. 8.8 modules/social_features/social_group/social_group.module \_social_group_get_join_methods()
  5. 10.0.x modules/social_features/social_group/social_group.module \_social_group_get_join_methods()
  6. 10.1.x modules/social_features/social_group/social_group.module \_social_group_get_join_methods()
  7. 10.2.x modules/social_features/social_group/social_group.module \_social_group_get_join_methods()

Get the join methods of a group.

Parameters

\Drupal\group\Entity\GroupInterface $group: the Group interface.

Return value

array Returns join methods of a group.

2 calls to _social_group_get_join_methods()
social_group_preprocess_group in modules/social_features/social_group/social_group.module
Prepares variables for profile templates.
_social_group_render_group_settings_hero in modules/social_features/social_group/social_group.module
Renders the group settings based on available fields for the hero.

File

modules/social_features/social_group/social_group.module, line 440
The Social group module.

Code

function _social_group_get_join_methods(GroupInterface $group) {
  $group_type = $group
    ->getGroupType();
  $group_type_id = $group_type
    ->id();
  $join_methods = [];
  $group_types = [
    'flexible_group',
  ];
  \Drupal::moduleHandler()
    ->alter('social_group_settings', $group_types);
  if (in_array($group_type_id, $group_types)) {

    // Try to retrieve join methods from Group directly.
    if ($group
      ->hasField('field_group_allowed_join_method')) {
      $allowed_options = $group
        ->get('field_group_allowed_join_method')
        ->getValue();
      foreach ($allowed_options as $option) {

        // Lets grab the value from the selected radio item.
        if (!empty($option['value']) && is_string($option['value'])) {
          $join_methods[$option['value']] = social_group_allowed_join_method_description($option['value']);
        }
      }
    }
  }

  // Get join method based on group type. TODO get it programmatically.
  switch ($group_type_id) {
    case 'secret_group':
    case 'closed_group':
      $join_methods['added'] = social_group_allowed_join_method_description('added');
      break;
    case 'public_group':
    case 'open_group':
      $join_methods['direct'] = social_group_allowed_join_method_description('direct');
      $join_methods['added'] = social_group_allowed_join_method_description('added');
      break;
  }
  return $join_methods;
}