Developer Events & Hooks
If you wish to extend the capabilities of Calendar, you can use any of the events and hooks below:
Events for Calendar Events
onBeforeSave#- Called before saving the event data
- Contains these parameters:
event- theCalendar_EventModelisNewEvent- boolean value
onAfterSave#- Called after saving the event data
- Contains these parameters:
event- theCalendar_EventModelisNewEvent- boolean value
onBeforeDelete#- Called before deleting an event
- Contains these parameters:
event- theCalendar_EventModel
onAfterDelete#- Called after deleting an event
- Contains these parameters:
event- theCalendar_EventModel
Usage Instructions
In your plugin's ::init() method, subscribe to any of these events by using the craft()->on() method. For example, to subscribe to the onBeforeSave you would have to have this code in place:
<?php
namespace Craft;
class YourPlugin extends BasePlugin
{
public function init()
{
parent::init();
craft()->on(
"calendar_events.onBeforeSave",
function(Event $event) {
$calendarEvent = $event->params["event"];
// Do something with this data
}
)
}
}
Events for Calendars
onBeforeSave#- Called before saving the calendar data
- Contains these parameters:
calendar- theCalendar_CalendarModelisNewCalendar- boolean value
onAfterSave#- Called after saving the calendar data
- Contains these parameters:
calendar- theCalendar_CalendarModelisNewCalendar- boolean value
onBeforeDelete#- Called before deleting a calendar
- Contains these parameters:
calendar- theCalendar_CalendarModel
onAfterDelete#- Called after deleting a calendar
- Contains these parameters:
calendar- theCalendar_CalendarModel
Usage Instructions
In your plugin's ::init() method, subscribe to any of these events by using the craft()->on() method. For examples, to subscribe to the onAfterDelete you would have to have this code in place:
<?php
namespace Craft;
class YourPlugin extends BasePlugin
{
public function init()
{
parent::init();
craft()->on(
"calendar_calendars.onAfterDelete",
function(Event $event) {
$calendar = $event->params["calendar"];
// Do something with this data
}
)
}
}
Examples
To listen to Craft Commerce order save event, you must make a new plugin (or use an existing one) and in it's ::init() method, listen to the commerce_orders.onSaveOrder event:
class TestPlugin extends BasePlugin
{
public function init()
{
parent::init();
craft()->on(
"commerce_orders.onSaveOrder",
function (Commerce_OrderModel $order) {
// Create the event
$event = new Calendar_EventModel();
$event->getContent()->title = "New Event Title";
$event->slug = "new-event-title";
// Any custom fields go through the ::getContent() model
$event->getContent()->body = "This is a custom rich text field";
// Do whatever you need to do with the order data
// By using the $order OrderModel
// For example:
//
// $event->getContent()->body = "Order total: " . $order->totalPrice;
// Mandatory fields
$event->calendarId = 1;
$event->authorId = craft()->getUser()->id;
$event->startDate = new DateTime();
$event->endDate = new DateTime();
$event->allDay = true;
// Save the event using Calendar Events service ::saveEvent() method
craft()->calendar_events->saveEvent($event);
}
);
}
}