protected function FollowTaxonomyActivityContext::haveAccessToNode in Open Social 10.3.x
Same name and namespace in other branches
- 10.2.x modules/social_features/social_follow_taxonomy/src/Plugin/ActivityContext/FollowTaxonomyActivityContext.php \Drupal\social_follow_taxonomy\Plugin\ActivityContext\FollowTaxonomyActivityContext::haveAccessToNode()
Checks if recipient have access to view related node.
Parameters
\Drupal\user\UserInterface $recipient: The user who receives the message.
string|int $nid: Node ID.
Return value
bool Returns TRUE if have access.
2 calls to FollowTaxonomyActivityContext::haveAccessToNode()
- FollowTagActivityContext::getRecipientsWhoFollowTaxonomy in modules/
social_features/ social_follow_taxonomy/ modules/ social_follow_tag/ src/ Plugin/ ActivityContext/ FollowTagActivityContext.php - Returns recipients from followed taxonomies.
- FollowTaxonomyActivityContext::getRecipientsWhoFollowTaxonomy in modules/
social_features/ social_follow_taxonomy/ src/ Plugin/ ActivityContext/ FollowTaxonomyActivityContext.php - Returns recipients from followed taxonomies.
File
- modules/
social_features/ social_follow_taxonomy/ src/ Plugin/ ActivityContext/ FollowTaxonomyActivityContext.php, line 251
Class
- FollowTaxonomyActivityContext
- Provides a 'FollowTaxonomyActivityContext' activity context plugin.
Namespace
Drupal\social_follow_taxonomy\Plugin\ActivityContextCode
protected function haveAccessToNode(UserInterface $recipient, $nid) {
$query = $this->connection
->select('node_field_data', 'nfd');
$query
->leftJoin('node__field_content_visibility', 'nfcv', 'nfcv.entity_id = nfd.nid');
$query
->leftJoin('group_content_field_data', 'gcfd', 'gcfd.entity_id = nfd.nid');
$or = $query
->orConditionGroup();
$community_access = $or
->andConditionGroup()
->condition('nfcv.field_content_visibility_value', [
'community',
'public',
], 'IN')
->isNull('gcfd.entity_id');
$or
->condition($community_access);
// Node visibility by group.
$memberships = $this->groupHelperService
->getAllGroupsForUser($recipient
->id());
if (count($memberships) > 0) {
$access_by_group = $or
->andConditionGroup();
$access_by_group
->condition('nfcv.field_content_visibility_value', [
'group',
'community',
'public',
], 'IN');
$access_by_group
->condition('gcfd.type', '%-group_node-%', 'LIKE');
$access_by_group
->condition('gcfd.gid', $memberships, 'IN');
$or
->condition($access_by_group);
}
$or
->isNull('nfcv.entity_id');
$query
->condition($or);
$query
->condition('nfd.nid', $nid);
$query
->groupBy('nfd.nid');
$query
->addExpression('COUNT(*)');
$nids = $query
->execute()
->fetchField();
return !empty($nids);
}