Loading src/Plugin/views/field/ApproveMembership.php +1 −12 Original line number Diff line number Diff line Loading @@ -2,9 +2,6 @@ namespace Drupal\grequest\Plugin\views\field; use Drupal\views\Plugin\views\field\EntityLink; use Drupal\views\ResultRow; /** * Field handler to present a link to approve a membership request. * Loading @@ -12,7 +9,7 @@ use Drupal\views\ResultRow; * * @ViewsField("approve_membership_request") */ class ApproveMembership extends EntityLink { class ApproveMembership extends MembershipEntityLink { /** * {@inheritdoc} Loading @@ -21,14 +18,6 @@ class ApproveMembership extends EntityLink { return 'group-approve-membership'; } /** * {@inheritdoc} */ protected function renderLink(ResultRow $row) { $this->options['alter']['query'] = $this->getDestinationArray(); return parent::renderLink($row); } /** * {@inheritdoc} */ Loading src/Plugin/views/field/MembershipEntityLink.php 0 → 100644 +46 −0 Original line number Diff line number Diff line <?php namespace Drupal\grequest\Plugin\views\field; use Drupal\grequest\Plugin\GroupContentEnabler\GroupMembershipRequest; use Drupal\views\Plugin\views\field\EntityLink; use Drupal\views\ResultRow; /** * Field handler to present an entity link. */ abstract class MembershipEntityLink extends EntityLink { /** * {@inheritdoc} */ protected function renderLink(ResultRow $row) { $plugin_id = 'group_membership_request'; /** @var \Drupal\group\Entity\GroupContent $group_content */ $group_content = $row->_entity; $group = $group_content->getGroup(); $link = NULL; // Check if plugin exists. if (!$group->getGroupType()->hasContentPlugin($plugin_id)) { return $link; } // Check if current group content is type of group_membership_request. if ($group_content->getContentPlugin()->getPluginId() !== $plugin_id) { return $link; } $user = $group_content->getEntity(); if (!empty($group->getMember($user))) { $link = $this->t('Already member'); } elseif ($group_content->get(GroupMembershipRequest::STATUS_FIELD)->first()->value === GroupMembershipRequest::REQUEST_PENDING && $group->hasPermission('administer membership requests', $this->currentUser)) { $this->options['alter']['query'] = $this->getDestinationArray(); $link = parent::renderLink($row); } return $link; } } src/Plugin/views/field/RejectMembership.php +1 −12 Original line number Diff line number Diff line Loading @@ -2,9 +2,6 @@ namespace Drupal\grequest\Plugin\views\field; use Drupal\views\Plugin\views\field\EntityLink; use Drupal\views\ResultRow; /** * Field handler to present a link to reject a membership request. * Loading @@ -12,7 +9,7 @@ use Drupal\views\ResultRow; * * @ViewsField("reject_membership_request") */ class RejectMembership extends EntityLink { class RejectMembership extends MembershipEntityLink { /** * {@inheritdoc} Loading @@ -21,14 +18,6 @@ class RejectMembership extends EntityLink { return 'group-reject-membership'; } /** * {@inheritdoc} */ protected function renderLink(ResultRow $row) { $this->options['alter']['query'] = $this->getDestinationArray(); return parent::renderLink($row); } /** * {@inheritdoc} */ Loading src/Plugin/views/field/RequestMembership.php +12 −5 Original line number Diff line number Diff line Loading @@ -3,6 +3,8 @@ namespace Drupal\grequest\Plugin\views\field; use Drupal\Core\Session\AccountInterface; use Drupal\grequest\Plugin\GroupContentEnabler\GroupMembershipRequest; use Drupal\group\Entity\GroupInterface; use Drupal\views\Plugin\views\field\FieldPluginBase; use Drupal\views\ResultRow; use Symfony\Component\DependencyInjection\ContainerInterface; Loading Loading @@ -74,14 +76,20 @@ final class RequestMembership extends FieldPluginBase { public function render(ResultRow $values) { /** @var \Drupal\group\Entity\Group $group */ $group = $values->_entity; if (!($group instanceof GroupInterface) && !empty($values->_relationship_entities['gid'])) { $group = $values->_relationship_entities['gid']; } $build = NULL; if (empty($group) || !$group->getGroupType()->hasContentPlugin('group_membership_request')) { return $build; } $membership_requests = $group->getContentByEntityId('group_membership_request', $this->currentUser->id()); if (!empty($group->getMember($this->currentUser))) { $build['#markup'] = $this->t('Already member'); } elseif (empty($membership_requests) && $group->getGroupType()->hasContentPlugin('group_membership_request') ) { elseif (empty($membership_requests)) { if ($group->hasPermission('request group membership', $this->currentUser)) { $build = $group->toLink($this->t('Request Membership'), 'group-request-membership') ->toString(); Loading @@ -89,14 +97,13 @@ final class RequestMembership extends FieldPluginBase { } else { $membership_request = reset($membership_requests); if ($membership_request->grequest_status->value == 0) { if ($membership_request->get(GroupMembershipRequest::STATUS_FIELD)->first()->value == GroupMembershipRequest::REQUEST_PENDING) { $build['#markup'] = $this->t('Pending membership request'); } else { $build['#markup'] = $this->t('Rejected membership request'); } } return $build; } Loading Loading
src/Plugin/views/field/ApproveMembership.php +1 −12 Original line number Diff line number Diff line Loading @@ -2,9 +2,6 @@ namespace Drupal\grequest\Plugin\views\field; use Drupal\views\Plugin\views\field\EntityLink; use Drupal\views\ResultRow; /** * Field handler to present a link to approve a membership request. * Loading @@ -12,7 +9,7 @@ use Drupal\views\ResultRow; * * @ViewsField("approve_membership_request") */ class ApproveMembership extends EntityLink { class ApproveMembership extends MembershipEntityLink { /** * {@inheritdoc} Loading @@ -21,14 +18,6 @@ class ApproveMembership extends EntityLink { return 'group-approve-membership'; } /** * {@inheritdoc} */ protected function renderLink(ResultRow $row) { $this->options['alter']['query'] = $this->getDestinationArray(); return parent::renderLink($row); } /** * {@inheritdoc} */ Loading
src/Plugin/views/field/MembershipEntityLink.php 0 → 100644 +46 −0 Original line number Diff line number Diff line <?php namespace Drupal\grequest\Plugin\views\field; use Drupal\grequest\Plugin\GroupContentEnabler\GroupMembershipRequest; use Drupal\views\Plugin\views\field\EntityLink; use Drupal\views\ResultRow; /** * Field handler to present an entity link. */ abstract class MembershipEntityLink extends EntityLink { /** * {@inheritdoc} */ protected function renderLink(ResultRow $row) { $plugin_id = 'group_membership_request'; /** @var \Drupal\group\Entity\GroupContent $group_content */ $group_content = $row->_entity; $group = $group_content->getGroup(); $link = NULL; // Check if plugin exists. if (!$group->getGroupType()->hasContentPlugin($plugin_id)) { return $link; } // Check if current group content is type of group_membership_request. if ($group_content->getContentPlugin()->getPluginId() !== $plugin_id) { return $link; } $user = $group_content->getEntity(); if (!empty($group->getMember($user))) { $link = $this->t('Already member'); } elseif ($group_content->get(GroupMembershipRequest::STATUS_FIELD)->first()->value === GroupMembershipRequest::REQUEST_PENDING && $group->hasPermission('administer membership requests', $this->currentUser)) { $this->options['alter']['query'] = $this->getDestinationArray(); $link = parent::renderLink($row); } return $link; } }
src/Plugin/views/field/RejectMembership.php +1 −12 Original line number Diff line number Diff line Loading @@ -2,9 +2,6 @@ namespace Drupal\grequest\Plugin\views\field; use Drupal\views\Plugin\views\field\EntityLink; use Drupal\views\ResultRow; /** * Field handler to present a link to reject a membership request. * Loading @@ -12,7 +9,7 @@ use Drupal\views\ResultRow; * * @ViewsField("reject_membership_request") */ class RejectMembership extends EntityLink { class RejectMembership extends MembershipEntityLink { /** * {@inheritdoc} Loading @@ -21,14 +18,6 @@ class RejectMembership extends EntityLink { return 'group-reject-membership'; } /** * {@inheritdoc} */ protected function renderLink(ResultRow $row) { $this->options['alter']['query'] = $this->getDestinationArray(); return parent::renderLink($row); } /** * {@inheritdoc} */ Loading
src/Plugin/views/field/RequestMembership.php +12 −5 Original line number Diff line number Diff line Loading @@ -3,6 +3,8 @@ namespace Drupal\grequest\Plugin\views\field; use Drupal\Core\Session\AccountInterface; use Drupal\grequest\Plugin\GroupContentEnabler\GroupMembershipRequest; use Drupal\group\Entity\GroupInterface; use Drupal\views\Plugin\views\field\FieldPluginBase; use Drupal\views\ResultRow; use Symfony\Component\DependencyInjection\ContainerInterface; Loading Loading @@ -74,14 +76,20 @@ final class RequestMembership extends FieldPluginBase { public function render(ResultRow $values) { /** @var \Drupal\group\Entity\Group $group */ $group = $values->_entity; if (!($group instanceof GroupInterface) && !empty($values->_relationship_entities['gid'])) { $group = $values->_relationship_entities['gid']; } $build = NULL; if (empty($group) || !$group->getGroupType()->hasContentPlugin('group_membership_request')) { return $build; } $membership_requests = $group->getContentByEntityId('group_membership_request', $this->currentUser->id()); if (!empty($group->getMember($this->currentUser))) { $build['#markup'] = $this->t('Already member'); } elseif (empty($membership_requests) && $group->getGroupType()->hasContentPlugin('group_membership_request') ) { elseif (empty($membership_requests)) { if ($group->hasPermission('request group membership', $this->currentUser)) { $build = $group->toLink($this->t('Request Membership'), 'group-request-membership') ->toString(); Loading @@ -89,14 +97,13 @@ final class RequestMembership extends FieldPluginBase { } else { $membership_request = reset($membership_requests); if ($membership_request->grequest_status->value == 0) { if ($membership_request->get(GroupMembershipRequest::STATUS_FIELD)->first()->value == GroupMembershipRequest::REQUEST_PENDING) { $build['#markup'] = $this->t('Pending membership request'); } else { $build['#markup'] = $this->t('Rejected membership request'); } } return $build; } Loading