Events
Events allow you add your own functionality to the PyroCMS core by hooking into preset points in the code called triggers. There are several triggers already in place in the PyroCMS core that allow you to do things within your code when other parts of PyroCMS run.
Using Events in your modules
Create an events.php file in the root of your module (it will be autoloaded when PyroCMS starts to run). Below is an example file from a module named "Sample":
In the above example, the Events_Sample registers the function 'run' to run when the public_controller trigger is called in PyroCMS.
It is important to note that some triggers pass data that you can use in your function as well.
PyroCMS Triggers
PyroCMS includes the following event triggers:
System Triggers (In places other than modules)
Events::trigger('public_controller') | This is triggered when the Public_Controller begins to run. |
Events::trigger('admin_controller') | This is triggered when the Admin_Controller runs. |
Events::trigger('admin_notification') | Fired when error, notice or success messages are displayed in the Admin area. |
Blog Triggers
Events::trigger('post_created', $id) | Fired when a blog post is created. A blog post may or may not be live, so do not confuse with published. |
Events::trigger('post_updated', $id) | Fired when a blog post is updated, but much like post_created it may not be live, or may have been put back into draft from live. |
Events::trigger('post_published', $id) | Fired when a blog post has been published. |
Events::trigger('post_deleted', $deleted_ids) | Fired when a one or more blog posts have been deleted. |
Events::trigger('blog_category_created', $id) | Fired when a blog category has been created. |
Events::trigger('blog_category_updated', $id) | Fired when a blog category has been updated. |
Events::trigger('blog_category_deleted', $deleted_ids) | Fired when one or more categories have been deleted. |
Contact Triggers
Events::trigger('email', $data, 'array') | This is used to send an email. The second parameter is the data to send along and the Email Template to use, third parameter is the type of response you expect. The sending is done by an event registered in system/cms/modules/templates/events.php but can be triggered from anywhere in the application. |
Events::trigger('contact_form_success', $_POST, 'array') | Fired when a message has successfully been sent using the contact form plugin. |
Comments Triggers
Events::trigger('comment_approved', $comment) | Fired when a comment has been approved. |
Events::trigger('comment_deleted', $comments) | Fired when one or more comments were deleted. |
Events::trigger('comment_unapproved', $id) | Fired when a comment has been unapproved. |
Events::trigger('comment_updated', $id) | Fired when a comment has been updated. |
Files Triggers
Events::trigger('file_deleted', $deleted) | Fired when one or more files have been deleted. |
Events::trigger('file_updated', $id) | Fired when a file has been updated. |
Events::trigger('file_uploaded', $data) | Fired when a file has been uploaded to a folder. |
Events::trigger('file_folder_created', $id) | Fired when a new folder has been created. |
Events::trigger('file_folder_deleted', $deleted_ids) | Fired when one or more folders have been deleted. |
Events::trigger('file_folder_updated', $id) | Fired when a folder has been updated. |
Groups Triggers
Events::trigger('group_created', $id) | Fired when a new group has been created. |
Events::trigger('group_deleted', $id) | Fired when a group has been updated. |
Events::trigger('group_updated', $id) | Fired when a group has been deleted. |
Keywords Triggers
Events::trigger('keyword_created', $id) | Fired when a new keyword has been added. |
Events::trigger('keyword_deleted', $id) | Fired when a keyword has been deleted. |
Events::trigger('keyword_updated', $id) | Fired when a keyword has been updated. |
Modules Triggers
Events::trigger('module_disabled', $slug) | Fired when a module has been disabled, uninstalled or deleted (by clicking disable, uninstall or delete through the Modules' admin area). |
Events::trigger('module_enabled', $slug) | Fired when a module has been uploaded, installed or enabled (by clicking install or enable through the Modules' admin area). |
Events::trigger('module_upgraded', $slug) | Fired when a module has been upgraded. |
Navigation Triggers
Events::trigger('navigation_group_created', $id) | Fired when a new navigation group has been created. |
Events::trigger('navigation_group_deleted', $deleted_ids) | Fired when one or more navigation groups have been deleted. |
Events::trigger('post_navigation_create', $input) | Fired when a new navigation item has been created. |
Events::trigger('post_navigation_delete', $deleted_ids) | Fired when one or more navigation items have been deleted. | Events::trigger('post_navigation_edit', $input) | Fired when a new navigation item has been edited. |
Events::trigger('post_navigation_order', array($order, $group)) | Fired when a navigation item has been reordered within a group. |
Pages Triggers
Events::trigger('page_created', $id) | Fired when a page has been created. |
Events::trigger('page_updated', $id) | Fired when a page has been edited. |
Events::trigger('page_deleted', $deleted_ids) | Fired when one or more pages have been deleted. |
Events::trigger('page_ordered', array($order, $root_pages)) | Fired when pages have been reordered. |
Events::trigger('page_type_created', $id) | Fired when a page type has been created. |
Events::trigger('page_type_updated', $id) | Fired when a page type has been updated. |
Events::trigger('page_type_deleted', $id) | Fired when a page type has been deleted. |
Permissions Triggers
Events::trigger('permissions_saved', array($group_id, $modules, $roles)) | Fired when permissions have been saved. |
Redirect Triggers
Events::trigger('redirect_created') | Fired when a new redirect is created. |
Events::trigger('redirect_updated', $id) | Fired when a redirect is updated. |
Events::trigger('redirect_deleted', $ids) | Fired when redirect(s) are deleted. |
Settings Triggers
Events::trigger('settings_updated', $settings_stored) | Fired when settings are updated. |
Streams Triggers
These are in the streams core, so the streams module is not required to use these triggers.
Events::trigger('streams_post_insert_entry', $data) | Called immediately after a new entry is added. Passed an array of the following values: 'entry_id' (The ID of the newly-added entry) and 'stream' (An object of the stream we are adding an entry to). |
Events::trigger('streams_post_update_entry', $data) | Called immediately after a new entry is updated. Passed an array of the following values: 'entry_id' (The ID of the newly-added entry) and 'stream' (An object of the stream we are updating an entry in). |
Templates Triggers
Events::trigger('email_template_created', $id) | Fired when a new email template has been created. |
Events::trigger('email_template_deleted', $id) | Fired when an email template has been deleted. |
Events::trigger('email_template_updated', $id) | Fired when an email template has been updated. |
Themes Triggers
Events::trigger('theme_deleted', $deleted_names) | Fired when one or more themes have been deleted. |
Events::trigger('theme_options_updated', $options_array) | Fired when theme options have been updated. |
Events::trigger('theme_set_default', $theme) | Fired when a default theme has been set. |
Users Triggers
Events::trigger('post_user_activation', $id) | Triggered when a user successfully activates by following the activation link in the welcome email. The user's id is passed to your event. |
Events::trigger('post_user_login') | This is triggered immediately after a user successfully logs in via domain.com/users/login |
Events::trigger('post_admin_login') | This is triggered immediately after a user successfully logs in via domain.com/admin/login |
Events::trigger('post_user_register', $id) | This is triggered immediately after a user registers. The newly created user id is passed along. |
Events::trigger('post_user_update') | Runs after a user's profile edits have been saved. |
Events::trigger('pre_user_logout') | Triggered right before the user's session is destroyed. |
Events::trigger('user_created', $user_id) | Fired when a new user has been created. |
Events::trigger('user_deleted', $deleted_ids) | Fired when one or more users have been deleted. |
Events::trigger('user_updated', $id) | Fired when a user has been updated. |
Widgets Triggers
Events::trigger('widget_area_created') | Fired when a widget area has been created. |
Events::trigger('widget_area_deleted', $id) | Fired when a widget area has been deleted. |
Events::trigger('widget_area_updated', $id) | Fired when a widget area has been updated. |
Events::trigger('widget_disabled', $ids) | Fired when one or more widget instances have been disabled. |
Events::trigger('widget_enabled', $ids) | Fired when one or more widget instances have been enabled. |
Events::trigger('widget_instance_created', $id) | Fired when a widget instance has been created. |
Events::trigger('widget_instance_deleted', $id) | Fired when a widget instance has been deleted. |
Events::trigger('widget_instance_updated', $id) | Fired when a widget instance has been updated. |