contribution_status_id)) { // Find and cancel any pending memberships. $connectedMemberships = (array) LineItem::get(FALSE)->setWhere([ ['contribution_id', '=', $objectId], ['entity_table', '=', 'civicrm_membership'], ])->execute()->indexBy('entity_id'); if (empty($connectedMemberships)) { return; } // @todo we don't have v4 membership api yet so v3 for now. $connectedMemberships = array_keys(civicrm_api3('Membership', 'get', [ 'status_id' => 'Pending', 'id' => ['IN' => array_keys($connectedMemberships)], ])['values']); if (empty($connectedMemberships)) { return; } foreach ($connectedMemberships as $membershipID) { civicrm_api3('Membership', 'create', ['status_id' => 'Cancelled', 'id' => $membershipID, 'is_override' => 1]); } } } }