The buddylistinvite module demonstrates that there are cool things to be done with the invite API. The buddylistinvite module makes inviter and invitee buddies of each other when the invitee accepts the invitation. What are other modules that could react to invite lifecycles?

  1. the privatemsg module could send the inviter a private message indicating that the invitee has accepted.
  2. a module could add a field to the invite form "message for upon acceptance". This would let the inviter have a message waiting for the invitee when they joing the site. The message could be delivered via the privatemsg module
  3. CiviCRM integration: make a relationship between inviter and invitee
  4. Views: show posts of the invitees of a user (uid = parameter)
  5. Userpoints: get user points for inviting and when people accept invitations.
  6. Your idea here!

Comments

webchick’s picture

The OG module implements invites as well.
And of course there are event invitations - if you're familiar with Evite, there is a strong call for getting that level of invitation tracking into Drupal (who have I invited, who has confirmed, who has not confirmed, etc.)

One of the goals of the GoJoinGo project was to create a standard API for sending/receiving invitations that could be used by any contrib module. This is currently done with GJG's Invite API module, which stores the to/from user ID, as well as a series of callbacks to execute upon either accepting or denying an invitation.

The first time I looked at this particular module (this was back a few months ago now) it looked like it was fairly simplistic and only handled invitations to a site that was still in development. Since then, however, it looks like you've been quite busy. ;) So I'll need to take another look at how this module functions and hopefully we can combine our efforts into one super-kickass invitation module. :D

Thanks for all your work on this, Robert! I'll be installing this and testing it a bit later, and will try and sign up for some of the items on your todo.

robertdouglass’s picture

Cool. I can definitely see moving to a centralized API. Let me know what looks sensible.

allie micka’s picture

Please have a look at the send module, which was designed to be a gathering point for modules like invite.

Send provides an email composition form to send 0-n nodes to an 1 or more targets. It tracks which nodes were sent, to whom, and for what purpose. It notes the send activity in its own table, and adds activities for both parties to CiviCRM.

The intent was to create send sub-modules that use send's functionality and re-theme, form_alter and add new functionality. One such module is News, which turns the send form into a newsletter composition interface. Another is GuestPass, which is a send-to-friend module that adds special tokens to escalate the recipient's role for a fixed period (possibly some invite overlap). I would also like to see postcard, saved searches, events near me, etc.

Send comes with configurable variables - link text, subject line text, message text and a themeable template. Each of these values can be overriden for each module, each nodetype, or each node (e.g. custom message text for a particular action)

I wrote send to be as efficient as possible, keeping most of its code from being included unless you're actually using the send interface. It's also more efficient to re-use this module than to keep implementing similarly-functional modules. The other benefit is that you can write a module that affects *all* send modules. For example, you could write a user points module that adds tokes to all messages that go through the send interface (send to friend, postcard, actions, petitions), not just invite. Or track clickthrus, active senders, etc. globally for all emailed items.

Have a look at News, which shows the minimal amount of work to get a send-submodule running. Basically, it's a _send hook and whatever theme, form_alter, etc. hooks you want to use.

robertdouglass’s picture

@Allie: I've been looking at both of these modules recently and it looks very exciting. Question: can send help invite module in any way if there is no node being sent?

allie micka’s picture

Yes.

You can implement a "default action" operation in the send hook to do anything you like when there are no nodes to send. It won't get linked to nodes, but the sender's message is stored and the sender/recipient activies will be noted and tracked.

News is doing this in 2 lines of code.

robertdouglass’s picture

great work! I'll see if we can get these two hooked up.

darren oh’s picture

It looks like chx started work on a general invite API but abandoned the project. You can read about it in issue 29678 and view the code in the sandbox.

darren oh’s picture

Tagged issues 68009 and 68012 as duplicates of this issue.

darren oh’s picture

Title: Help needed: Identify other modules that could be integrated via the invite API » Integrating modules via the invite API
seaneffel’s picture

RSVP does evite-like invitations to events, who says yes, who says no, who says 'nah dawg homie g' and all that kind of stuff. I think it even bundles in sending out invoices for event registration. I've used it for tons of stuff on community calendars. If you are looking for an inclusive solution for all the modules that need invitation functionality, look closely at RSVP.

AjK’s picture

Version: 4.7.x-1.x-dev » master
Status: Active » Postponed

Need to come back to this but marking postponed while I get the bug issue queue cleaned up

tobias’s picture

this is all good stuff - I came in here looking for info about this module potentially "taking over" organic groups invitation feature, but find much else besides. What's the latest on these ideas?

I use RSVP and OG currently.

Cheers,

Tobias

blakehall’s picture

@Tobias

There's some talk of similar integration in this issue.

I'll be working on Invite -> OG in the next couple of weeks, and would love to come up with a generally useful patch / contrib module.

avpaderno’s picture

Issue summary: View changes
Status: Postponed » Closed (outdated)

I am closing this issue, since it's for a Drupal version no longer supported.