Pull Request: Client and Contact Create, Update and Delete Callbacks
by Adam Brenner · 9 years ago
Problem: Blesta only supports callbacks for when a new client is created. When a client is updated, deleted or if a contact for a client is created, updated or deleted, no callbacks exists. This makes developing plugins harder within Blesta.
Solution: Accept the Pull Request below which adds full callback support (Create, Update & Delete) for both Clients and Contacts.
Reference Link: https://www.blesta.com/forums/index.php?/topic/9348-event-handlers-client-contact-crud/
From: Adam Brenner <adam@netops.me>
Date: Thu, 6 Apr 2017 22:45:22 -0700
Subject: [PATCH 1/1] CUD Callbacks on Clients and Contacts
This is a new feature to Blesta that will allow anyone to
get callbacks when any CUD operation occurs on a client or
contact.
Signed-off-by: Adam Brenner <adam@netops.me>
---
app/models/clients.php | 6 +++
app/models/contacts.php | 9 +++++
.../events/default/events_clients_callback.php | 22 +++++++++++
.../events/default/events_contacts_callback.php | 46 ++++++++++++++++++++++
4 files changed, 83 insertions(+)
create mode 100644 components/events/default/events_contacts_callback.php
diff --git a/app/models/clients.php b/app/models/clients.php
index c6fdef0..1bd4468 100644
--- a/app/models/clients.php
+++ b/app/models/clients.php
@@ -302,6 +302,9 @@ class Clients extends AppModel
$fields = ['user_id', 'client_group_id', 'status'];
$this->Record->where('id', '=', $client_id)->update('clients', $vars, $fields);
}
+
+ $this->Events->register('Clients.edit', ['EventsClientsCallback', 'edit']);
+ $this->Events->trigger(new EventObject('Clients.edit', ['client' => $this->get($client_id)]));
}
/**
@@ -337,6 +340,9 @@ class Clients extends AppModel
$this->Users->delete($client->user_id);
}
}
+
+ $this->Events->register('Clients.delete', ['EventsClientsCallback', 'delete']);
+ $this->Events->trigger(new EventObject('Clients.delete', ['client' => $client]));
}
/**
diff --git a/app/models/contacts.php b/app/models/contacts.php
index 8776585..3e39efc 100644
--- a/app/models/contacts.php
+++ b/app/models/contacts.php
@@ -93,6 +93,9 @@ class Contacts extends AppModel
$this->setPermissions($contact_id, $vars['permissions']);
}
+ $this->Events->register('Contacts.create', ['EventsContactsCallback', 'create']);
+ $this->Events->trigger(new EventObject('Contacts.create', ['contact' => $this->get($contact_id)]));
+
return $contact_id;
}
}
@@ -227,6 +230,9 @@ class Contacts extends AppModel
$this->Logs->addContact(['contact_id'=>$contact_id, 'fields'=>$fields]);
}
+ $this->Events->register('Contacts.edit', ['EventsContactsCallback', 'edit']);
+ $this->Events->trigger(new EventObject('Contacts.edit', ['contact' => $new_contact]));
+
return $new_contact;
}
}
@@ -270,6 +276,9 @@ class Contacts extends AppModel
$this->Users->delete($contact->user_id);
}
}
+
+ $this->Events->register('Contacts.delete', ['EventsContactsCallback', 'delete']);
+ $this->Events->trigger(new EventObject('Contacts.delete', ['contact' => $contact]));
}
/**
diff --git a/components/events/default/events_clients_callback.php b/components/events/default/events_clients_callback.php
index b9fc40c..6c81144 100644
--- a/components/events/default/events_clients_callback.php
+++ b/components/events/default/events_clients_callback.php
@@ -21,4 +21,26 @@ class EventsClientsCallback extends EventCallback
{
return parent::triggerPluginEvent($event);
}
+
+ /**
+ * Handle Clients.edit events
+ *
+ * @param EventObject $event An event object for Clients.edit events
+ * @return EventObject The processed event object
+ */
+ public static function edit(EventObject $event)
+ {
+ return parent::triggerPluginEvent($event);
+ }
+
+ /**
+ * Handle Clients.delete events
+ *
+ * @param EventObject $event An event object for Clients.delete events
+ * @return EventObject The processed event object
+ */
+ public static function delete(EventObject $event)
+ {
+ return parent::triggerPluginEvent($event);
+ }
}
diff --git a/components/events/default/events_contacts_callback.php b/components/events/default/events_contacts_callback.php
new file mode 100644
index 0000000..42b55c9
--- /dev/null
+++ b/components/events/default/events_contacts_callback.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Handle all default Contacts events callbacks
+ *
+ * @package blesta
+ * @subpackage blesta.components.events.default
+ * @copyright Copyright (c) 2010, Phillips Data, Inc.
+ * @license http://www.blesta.com/license/ The Blesta License Agreement
+ * @link http://www.blesta.com/ Blesta
+ */
+class EventsContactsCallback extends EventCallback
+{
+
+ /**
+ * Handle Contacts.create events
+ *
+ * @param EventObject $event An event object for Contacts.create events
+ * @return EventObject The processed event object
+ */
+ public static function create(EventObject $event)
+ {
+ return parent::triggerPluginEvent($event);
+ }
+
+ /**
+ * Handle Contacts.edit events
+ *
+ * @param EventObject $event An event object for Contacts.edit events
+ * @return EventObject The processed event object
+ */
+ public static function edit(EventObject $event)
+ {
+ return parent::triggerPluginEvent($event);
+ }
+
+ /**
+ * Handle Contacts.delete events
+ *
+ * @param EventObject $event An event object for Contacts.delete events
+ * @return EventObject The processed event object
+ */
+ public static function delete(EventObject $event)
+ {
+ return parent::triggerPluginEvent($event);
+ }
+}
--
2.12.1
Status Timeline
Planned
— Apr 14, 2017
by Paul Phillips
Completed
— Dec 11, 2017
by Paul Phillips
Comments (1)
Paul Phillips
Staff
9 years ago
7 voters
Status
Completed
Category
Events/Hooks