Sharing an event across sites without sharing a database is a unique challenge. Here is how I handled this challenge. I realize that there are probably other ways, this is the way that worked for me.

The one thing I have not covered is when an event is deleted. What happens to sister sites? Right now I am leaning towards adding a cancel field, which would then show canceled on sister sites.

Overview:

Add an event to a site. Once that event has been approved and published, send the event out to sister sites to publish.

Coding Setup

I have three sites sharing events. I have base cases I use for testing, once my code is working there, then I install it in my working sites. My goal is to start with site A, and set it up to send/receive events. Then I expanded to Site B and tested it to send/receive events to/from A, then C testing all connections.

Testing Algorithms:

Testing: AB and BA

Testing 2: AB AC, BA, BC, CA, CB

Structure Configurations:

The areas to set up when creating the block to show external events

  1. Time Format
  2. Original event content type
  3. eEvent Mailhandler content type
  4. eEvent content type
  5. Mailhandler Mailbox
  6. Setup the Feeds Importer
  7. Create content of type eEvent Mailhandler Source
  8. Role - Setup Roles with associated permissions
  9. Rules - send notification when an event is created, send notification when an event has been approved and published, sending email to sister sites.
  10. Views to display the information in blocks
  1. Time Format
    • What format do you want to display the time in? Make sure it is set up first.
    • Set up the correct format at System->Regional and Language->Date and Time->Formats-Add Formats.
    • Set up the Display at $baseurl/admin/config/regional/date-time/formats Then set up the Display.
    • Clear the cache
  2. Original Content Type
    • This content type is an event. Events are shown on the each sites own calendar. The title, time and link are shared on sister sites.
    • Title
    • Event Date (Date ISO format, select)
    • Event Category (Term Reference)
    • Age Group (Select List)
    • Event Description (Body)
    • Event Websites (Link)
    • Contact Name (Text)
    • Phone Number (Phone Number - make sure local is shown)
    • email Address (email)
    • URL Path settings
  3. A eEvent Mailhandler content type
    • A content type that creates the connection between feeds and the mailhandler.
    • Title
    • Feed (This will show up when the Feed Importer is created)
    • URL Path settings
  4. eEvent content type
    • Sister sites use this content type to show events on external sites.
    • Title
    • Feed
    • URL path settings
    • Body
    • referring city
    • Event Date
    • Referring URL
  5. Add the Mailhandler mailbox
    Mailbox connection
    • Clone of test and change appropriate fields
    • admin title - email address
    • Mailbox connection settings
      • Protocol: imap
      • Folder: Inbox
      • Domain:
      • username:
      • password:
      • Extra commands
    • More Settings
      • Max messages to retrieve 0
      • Default character encoding UTF-8
      • Mark messages as seen/read after they are processed? (checked)
      • Delete messages after they are processed? (checked)
      • From header: From
      • Security: Disabled
      • Send error replies: Disabled
      • retrieval Library: PHP IMAP
  6. Set up the feed importer
    • Pulls the information from the email and creates the actual node.
    • Basic Settings
      • Attached to: eEvents Mailhandler Source
      • Name: eEvents Mailhandler
      • attach to content type: eEvents Mailhandler Source
      • Periodic Import: As often as possible CHANGE THIS LATER IF DESIRED.
      • Import on submission (checked)
      • Process in background (checked)
      • Fetcher: Mailhandler fetcher (selected)
      • Mailhandler fetcher Settings (Nodes only)
      • Parser Mailhandler IMAP (selected)
      • Mailhandler IMAP Stream Parser
      • Authentication plugin - "From" address authentication
      • Available commands
        • status
        • title
        • url
        • edate
        • sistersite
        • Processor: Node processor (select)
        • Node processor settings
        • Replace existing nodes
        • Text format: Full HTML
        • Content type: eEvents
        • Author: anonymous
        • Authorize (checked)
        • Expire nodes - After 3 months
        • Mapping
        • URL -> GUID unique (Note: this is unique, and if it is updated, then the node update will come through and be correct as well)
        • Subject -> title
        • UserId -> User ID
        • Status-> status
        • Body(text) -> body
        • URL->referring URL
        • title-> title
        • sistersite-> referring site
        • edate-> Event Date: Start
  7. Create content of type eEvent Mailhandler Source
    • Create a content of type eEvent Mailhandler Source
    • If there is not a dropdown of mailboxes go back to the feedhandler eEvents Processor and make sure that the type eEvent is choosen.
  8. Roles
    • Roles simplifies website management by allowing managers to add a user to a role in one place, instead of changing email address settings in several places.
    • Content Monitor Role
      • This role is responsible for approving events
    • eEvent Group
      • Sister sites are members of this role. Use the sister site mailbox email address.
  9. Rules
    • Three rules are set up Event Thank You, Event Notify and event Email to Sites.
    • Event Thank you
      • Events on the sites can be submitted by anonymous users. Once an event is submitted, the user is taken to a thank you page where they are notified that events are approved before posting.
      • New Rule
      • Event: Node: After saving new content
      • Conditions: Content is of type (Event)
      • Actions: Page redirect
    • Event Notify
      • Notifies all users of a role that there is an event to review.
      • New Rule
      • Event: After saving new content
      • Conditions: Content is of type (Event)
      • Actions: Send mail to all users of a role
    • Event Email to Sites
      • Emails events to sister sites
      • Event: After updating existing content
      • Conditions: Content is of type (event) AND Content is published
      • Actions: Send mail to users of a role.
        • Roles: choose role
        • Subject: [node:title]
        • Message:

          Title: [node:title]

          URL: [node:url]

          edate:[node:field_date]

          SisterSite: Name

        • From: email address associated with the email mailbox.
  10. Views
    • For my users I have created a view block to streamline processing and displaying events. I doubt you could get this far without understanding views, so I am only going to outline what I have done.
    • View - Event Management
      • A block showing any event that is unpublished.
    • View - Display eEvents
      • A block showing eEvents ordered by date, sort able by sister site name.