3

For our use-case, individuals never directly hold memberships, only organizations do, so we force the On Behalf Of Organization part of the contribution page. There's a different contribution page for New Membership than for Membership Renewal, but they both behave identically more or less for users that already have memberships.

We need the New Membership profile to ALWAYS create a new Organization and a new membership for the created org; currently when a logged-in user with existing current or expired memberships goes to the New Membership page, the membership section shows the renewal options instead of the New Membership options. When a user selects "Create A New Organization" and fills in the details, the membership part of the page just picks the existing membership that is uppermost in the Organization Name dropdown and renews it for another year instead of creating a new membership.

Is this the expected behaviour, and can it be suppressed? Is there a URL parameter I can pass in that will force a new membership?

Edit:

I should say, this is with version 4.4.10 for Drupal.

It looks like it makes the decision in civicrm/CRM/Member/Form/Membership.php, line 205:

if ($this->_contactID) { //check whether contact has a current membership so we can alert user that they may want to do a renewal instead

Any thoughts about how to programmatically suppress this without hacking core? My unhealthy temptation would be to do something along these lines:

if ($this->_contactID AND !($_REQUEST["forceNew"]=1)) { //check whether contact has a current membership so we can alert user that they may want to do a renewal instead, check for "forceNew" flag in request params

which of course would be a maintenance nightmare. Is there a hook I can use instead that will allow me to change the form's behaviour? Unsetting $this->_contactID with a hook sounds unwise, but that's how it makes the call.

Thanks!

3
  • 2
    I admit to not fully following this - but this code function github.com/eileenmcnaughton/… is one I use to force a new membership rather than a renewal in the post hook. You might be better off using a form hook of course wiki.civicrm.org/confluence/display/CRMDOC/Hook+Reference since that would kick in for all membership changes.
    – eileen
    Jul 27, 2015 at 23:11
  • @EileenMcNaughton: I think it is a valid answer rather than a comment
    – samuelsov
    Jul 28, 2015 at 23:24
  • I feel like choosing answer obliges me to have a real answer - comments seem to much less threatening (I miss our cosy forum :-)
    – eileen
    Jul 29, 2015 at 23:53

1 Answer 1

1

I think you can add cid=0 to your url.

For example, https://example.com/civicrm/contribute/transact?reset=1&id=1&cid=0 will force the creation of a new contact and new membership even you are logged in and already have a membership.

1
  • This is super interesting; it does suppress the membership renewal behaviour, but it also causes this message to appear: "You are completing this form on behalf of someone else. Please enter their details. Click here to select someone already in our database." We are also using CiviRelate to create a relationship between the user's individual contact and the Organization they create in the membership signup process; this is still created successfully, but only if the user enters their registered email address in the email field in the membership block.
    – poorhaus
    Jul 31, 2015 at 12:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.