function social_group_secret_form_node_form_alter in Open Social 10.3.x
Same name and namespace in other branches
- 8.9 modules/social_features/social_group/modules/social_group_secret/social_group_secret.module \social_group_secret_form_node_form_alter()
- 8.6 modules/social_features/social_group/modules/social_group_secret/social_group_secret.module \social_group_secret_form_node_form_alter()
- 8.7 modules/social_features/social_group/modules/social_group_secret/social_group_secret.module \social_group_secret_form_node_form_alter()
- 8.8 modules/social_features/social_group/modules/social_group_secret/social_group_secret.module \social_group_secret_form_node_form_alter()
- 10.0.x modules/social_features/social_group/modules/social_group_secret/social_group_secret.module \social_group_secret_form_node_form_alter()
- 10.1.x modules/social_features/social_group/modules/social_group_secret/social_group_secret.module \social_group_secret_form_node_form_alter()
- 10.2.x modules/social_features/social_group/modules/social_group_secret/social_group_secret.module \social_group_secret_form_node_form_alter()
Implements hook_form_FORM_ID_alter().
Hides secret groups for users that are not a member unless the content is already in the group.
File
- modules/
social_features/ social_group/ modules/ social_group_secret/ social_group_secret.module, line 159 - The Social group secret module.
Code
function social_group_secret_form_node_form_alter(&$form, FormStateInterface $form_state, $form_id) {
// The is_new field may not be set for new entities.
$editing = isset($form['is_new']) && !$form['is_new']['#value'];
if (!$editing) {
return;
}
$user = \Drupal::currentUser();
if (!empty($form["groups"]["widget"]['#default_value'])) {
$current_group = $form["groups"]["widget"]['#default_value'][0];
}
$secret_group = t('Secret group')
->__toString();
// The options are either a list of group ids when there is only a single
// group type or they're nested per group type.
if (isset($form["groups"]["widget"]["#options"][$secret_group])) {
$group_ids = array_keys($form["groups"]["widget"]["#options"][$secret_group]);
$groups = Group::loadMultiple($group_ids);
/** @var \Drupal\group\Entity\Group $group */
foreach ($groups as $group) {
if (isset($current_group) && $group
->id() === $current_group) {
continue;
}
if (!$group
->hasPermission('view group', $user)) {
unset($form["groups"]["widget"]["#options"][$secret_group][$group
->id()]);
}
}
if (empty($form["groups"]["widget"]["#options"][$secret_group])) {
unset($form["groups"]["widget"]["#options"][$secret_group]);
}
}
else {
$group_ids = array_filter(array_keys($form["groups"]["widget"]["#options"]), 'is_numeric');
$groups = Group::loadMultiple($group_ids);
/** @var \Drupal\group\Entity\Group $group */
foreach ($groups as $group) {
// If this is a list of one group type and it's not a secret group then
// we're done.
if ($group
->bundle() !== 'secret_group') {
break;
}
if (isset($current_group) && $group
->id() === $current_group) {
continue;
}
if (!$group
->hasPermission('view group', $user)) {
unset($form["groups"]["widget"]["#options"][$group
->id()]);
}
}
}
}