_memberIds = []; $values = $form->getSearchFormValues(); $form->_task = $values['task']; $tasks = CRM_Member_Task::permissionedTaskTitles(CRM_Core_Permission::getPermission()); if (!array_key_exists($form->_task, $tasks)) { CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.')); } $ids = $form->getSelectedIDs($values); if (!$ids) { $queryParams = $form->get('queryParams'); $sortOrder = NULL; if ($form->get(CRM_Utils_Sort::SORT_ORDER)) { $sortOrder = $form->get(CRM_Utils_Sort::SORT_ORDER); } $query = new CRM_Contact_BAO_Query($queryParams, NULL, NULL, FALSE, FALSE, CRM_Contact_BAO_Query::MODE_MEMBER ); $query->_distinctComponentClause = ' civicrm_membership.id'; $query->_groupByComponentClause = ' GROUP BY civicrm_membership.id '; $result = $query->searchQuery(0, 0, $sortOrder); while ($result->fetch()) { $ids[] = $result->membership_id; } } if (!empty($ids)) { $form->_componentClause = ' civicrm_membership.id IN ( ' . implode(',', $ids) . ' ) '; $form->assign('totalSelectedMembers', count($ids)); } $form->_memberIds = $form->_componentIds = $ids; $form->setNextUrl('member'); } /** * Given the membership id, compute the contact id * since its used for things like send email */ public function setContactIDs() { $this->_contactIds = CRM_Core_DAO::getContactIDsFromComponent($this->_memberIds, 'civicrm_membership' ); } /** * Get the token processor schema required to list any tokens for this task. * * @return array */ public function getTokenSchema(): array { return ['membershipId', 'contactId']; } }