Loading mailgroup.module +6 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,12 @@ function mailgroup_views_data_alter(array &$data) { 'title' => new TranslatableMarkup('Mail Group Memberships'), 'help' => new TranslatableMarkup("The User's Mail Group Memberships."), ], 'filter' => [ 'id' => 'mailgroup_memberships', 'real field' => 'uid', 'title' => new TranslatableMarkup('Mail Group Memberships'), 'help' => new TranslatableMarkup("The User's Mail Group Memberships."), ], ]; } Loading src/Plugin/views/field/MailGroupMemberships.php +1 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ use Drupal\views\Plugin\views\field\PrerenderList; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides the Mail Group Memberships of the User. * Provides the Mail Group Memberships of User. * * @ingroup views_field_handlers * Loading src/Plugin/views/filter/MailGroupMemberships.php 0 → 100644 +49 −0 Original line number Diff line number Diff line <?php namespace Drupal\mailgroup\Plugin\views\filter; use Drupal\Core\Database\Database; use Drupal\mailgroup\Entity\MailGroup; use Drupal\views\Plugin\views\filter\InOperator; /** * Mail Group Memberships filter by Mail Group for User. * * @ingroup views_filter_handlers * * @ViewsFilter("mailgroup_memberships") */ class MailGroupMemberships extends InOperator { /** * {@inheritdoc} */ public function getValueOptions() { $mailgroups = MailGroup::loadMultiple(); foreach ($mailgroups as $id => $mailgroup) { $this->valueOptions[$id] = $mailgroup->label(); } return $this->valueOptions; } /** * {@inheritdoc} */ protected function opSimple() { if (empty($this->value)) { return; } $this->ensureMyTable(); // Using a sub query avoids having to work with table joins or views // relationship definitions. $subselect = Database::getConnection()->select('mailgroup_membership', 'mm'); $subselect->addField('mm', 'uid'); $subselect->condition('mm.gid', $this->value, 'IN'); $this->query->addWhere($this->options['group'], "$this->tableAlias.$this->realField", $subselect, $this->operator); } } Loading
mailgroup.module +6 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,12 @@ function mailgroup_views_data_alter(array &$data) { 'title' => new TranslatableMarkup('Mail Group Memberships'), 'help' => new TranslatableMarkup("The User's Mail Group Memberships."), ], 'filter' => [ 'id' => 'mailgroup_memberships', 'real field' => 'uid', 'title' => new TranslatableMarkup('Mail Group Memberships'), 'help' => new TranslatableMarkup("The User's Mail Group Memberships."), ], ]; } Loading
src/Plugin/views/field/MailGroupMemberships.php +1 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,7 @@ use Drupal\views\Plugin\views\field\PrerenderList; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides the Mail Group Memberships of the User. * Provides the Mail Group Memberships of User. * * @ingroup views_field_handlers * Loading
src/Plugin/views/filter/MailGroupMemberships.php 0 → 100644 +49 −0 Original line number Diff line number Diff line <?php namespace Drupal\mailgroup\Plugin\views\filter; use Drupal\Core\Database\Database; use Drupal\mailgroup\Entity\MailGroup; use Drupal\views\Plugin\views\filter\InOperator; /** * Mail Group Memberships filter by Mail Group for User. * * @ingroup views_filter_handlers * * @ViewsFilter("mailgroup_memberships") */ class MailGroupMemberships extends InOperator { /** * {@inheritdoc} */ public function getValueOptions() { $mailgroups = MailGroup::loadMultiple(); foreach ($mailgroups as $id => $mailgroup) { $this->valueOptions[$id] = $mailgroup->label(); } return $this->valueOptions; } /** * {@inheritdoc} */ protected function opSimple() { if (empty($this->value)) { return; } $this->ensureMyTable(); // Using a sub query avoids having to work with table joins or views // relationship definitions. $subselect = Database::getConnection()->select('mailgroup_membership', 'mm'); $subselect->addField('mm', 'uid'); $subselect->condition('mm.gid', $this->value, 'IN'); $this->query->addWhere($this->options['group'], "$this->tableAlias.$this->realField", $subselect, $this->operator); } }