* @copyright CiviCRM LLC https://civicrm.org/licensing
*/
+use Civi\Api4\Membership;
+
/**
* Class for member form task actions.
* FIXME: This needs refactoring to properly inherit from CRM_Core_Form_Task and share more functions.
CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.'));
}
- $ids = [];
- if ($values['radio_ts'] === 'ts_sel') {
- foreach ($values as $name => $value) {
- if (substr($name, 0, CRM_Core_Form::CB_PREFIX_LEN) == CRM_Core_Form::CB_PREFIX) {
- $ids[] = substr($name, CRM_Core_Form::CB_PREFIX_LEN);
- }
- }
- }
- else {
+ $ids = $form->getSelectedIDs($values);
+
+ if (!$ids) {
$queryParams = $form->get('queryParams');
$sortOrder = NULL;
if ($form->get(CRM_Utils_Sort::SORT_ORDER)) {
}
$form->_memberIds = $form->_componentIds = $ids;
-
- //set the context for redirection for any task actions
- $session = CRM_Core_Session::singleton();
-
- $qfKey = CRM_Utils_Request::retrieve('qfKey', 'String', $form);
- $urlParams = 'force=1';
- if (CRM_Utils_Rule::qfKey($qfKey)) {
- $urlParams .= "&qfKey=$qfKey";
- }
-
- $searchFormName = strtolower($form->get('searchFormName'));
- if ($searchFormName === 'search') {
- $session->replaceUserContext(CRM_Utils_System::url('civicrm/member/search', $urlParams));
- }
- else {
- $session->replaceUserContext(CRM_Utils_System::url("civicrm/contact/search/$searchFormName",
- $urlParams
- ));
- }
+ $form->setNextUrl('member');
}
/**
);
}
+ /**
+ * @return array
+ */
+ protected function getIDS() {
+ return $this->_memberIds;
+ }
+
+ /**
+ * Get the rows form the search, keyed to make the token processor happy.
+ *
+ * @throws \API_Exception
+ */
+ protected function getRows(): array {
+ if (empty($this->rows)) {
+ // checkPermissions set to false - in case form is bypassing in some way.
+ $memberships = Membership::get(FALSE)
+ ->addWhere('id', 'IN', $this->getIDs())
+ ->setSelect(['id', 'contact_id'])->execute();
+ foreach ($memberships as $membership) {
+ $this->rows[] = [
+ 'contact_id' => $membership['contact_id'],
+ 'membership_id' => $membership['id'],
+ 'schema' => [
+ 'contactId' => $membership['contact_id'],
+ 'membershipId' => $membership['id'],
+ ],
+ ];
+ }
+ }
+ return $this->rows;
+ }
+
+ /**
+ * Get the token processor schema required to list any tokens for this task.
+ *
+ * @return array
+ */
+ public function getTokenSchema(): array {
+ return ['membershipId', 'contactId'];
+ }
+
}