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
- Time Format
- Original event content type
- eEvent Mailhandler content type
- eEvent content type
- Mailhandler Mailbox
- Setup the Feeds Importer
- Create content of type eEvent Mailhandler Source
- Role - Setup Roles with associated permissions
- Rules - send notification when an event is created, send notification when an event has been approved and published, sending email to sister sites.
- Views to display the information in blocks
- 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
- 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
- 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
- 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
- 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
- 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
- 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.
- 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.
- 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.
- 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.