Skip to main content

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 - the Calendar_EventModel
      • isNewEvent - boolean value
  • onAfterSave #
    • Called after saving the event data
    • Contains these parameters:
      • event - the Calendar_EventModel
      • isNewEvent - boolean value
  • onBeforeDelete #
    • Called before deleting an event
    • Contains these parameters:
      • event - the Calendar_EventModel
  • onAfterDelete #
    • Called after deleting an event
    • Contains these parameters:
      • event - the Calendar_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 - the Calendar_CalendarModel
      • isNewCalendar - boolean value
  • onAfterSave #
    • Called after saving the calendar data
    • Contains these parameters:
      • calendar - the Calendar_CalendarModel
      • isNewCalendar - boolean value
  • onBeforeDelete #
    • Called before deleting a calendar
    • Contains these parameters:
      • calendar - the Calendar_CalendarModel
  • onAfterDelete #
    • Called after deleting a calendar
    • Contains these parameters:
      • calendar - the Calendar_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);
}
);
}
}