You are here

public function GroupContentVisibilityUpdate::updateVisibility in Open Social 10.2.x

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_group/src/GroupContentVisibilityUpdate.php \Drupal\social_group\GroupContentVisibilityUpdate::updateVisibility()
  2. 8.4 modules/social_features/social_group/src/GroupContentVisibilityUpdate.php \Drupal\social_group\GroupContentVisibilityUpdate::updateVisibility()
  3. 8.5 modules/social_features/social_group/src/GroupContentVisibilityUpdate.php \Drupal\social_group\GroupContentVisibilityUpdate::updateVisibility()
  4. 8.6 modules/social_features/social_group/src/GroupContentVisibilityUpdate.php \Drupal\social_group\GroupContentVisibilityUpdate::updateVisibility()
  5. 8.7 modules/social_features/social_group/src/GroupContentVisibilityUpdate.php \Drupal\social_group\GroupContentVisibilityUpdate::updateVisibility()
  6. 8.8 modules/social_features/social_group/src/GroupContentVisibilityUpdate.php \Drupal\social_group\GroupContentVisibilityUpdate::updateVisibility()
  7. 10.3.x modules/social_features/social_group/src/GroupContentVisibilityUpdate.php \Drupal\social_group\GroupContentVisibilityUpdate::updateVisibility()
  8. 10.0.x modules/social_features/social_group/src/GroupContentVisibilityUpdate.php \Drupal\social_group\GroupContentVisibilityUpdate::updateVisibility()
  9. 10.1.x modules/social_features/social_group/src/GroupContentVisibilityUpdate.php \Drupal\social_group\GroupContentVisibilityUpdate::updateVisibility()

Update visibility for all Group Content based on a new group type.

Parameters

\Drupal\node\Entity\Node|\Drupal\social_post\Entity\Post|\Drupal\group\GroupMembership|\Drupal\group\Entity\GroupContentInterface $entity: The content we are updating.

string $new_type: The new Group type.

array $context: Passed on by reference.

Throws

\Drupal\Core\Entity\EntityStorageException

File

modules/social_features/social_group/src/GroupContentVisibilityUpdate.php, line 115

Class

GroupContentVisibilityUpdate
Class GroupContentVisibilityUpdate.

Namespace

Drupal\social_group

Code

public function updateVisibility($entity, $new_type, array &$context) {

  // Find the corresponding visibility for the new group_type.
  $default_visibility = SocialGroupHelperService::getDefaultGroupVisibility($new_type);

  // Store some results for post-processing in the 'finished' callback.
  // The contents of 'results' will be available as $results in the
  // 'finished' function updateVisibilityFinishedCallback().
  if ($entity instanceof Post) {
    $entity
      ->setVisibility($default_visibility);
    $entity
      ->save();
  }
  if ($entity instanceof Node) {
    $entity
      ->set('field_content_visibility', $default_visibility);
    $entity
      ->save();
  }

  // For GroupMembers we have to update the GroupContent.
  if ($entity instanceof GroupMembership) {
    $new_group_type = $new_type . '-group_membership';
    $membershipEntity = $entity
      ->getGroupContent();
    $membershipEntity
      ->set('type', $new_group_type);
    $membershipEntity
      ->save();
    $entity = $membershipEntity;
  }

  // Make sure our GroupContent referenced entities also get invalidated.
  $tags = $entity
    ->getCacheTagsToInvalidate();
  Cache::invalidateTags($tags);

  // Add referenced entity to results. Might want to add it to the result.
  $context['results'][] = $entity;

  // Optional message displayed under the progressbar.
  $context['message'] = t('Updating group content (@id)', [
    '@id' => $entity
      ->id(),
  ]);
}