diff options
Diffstat (limited to 'www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PreCreationSubscriber.php')
-rw-r--r-- | www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PreCreationSubscriber.php | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PreCreationSubscriber.php b/www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PreCreationSubscriber.php new file mode 100644 index 00000000..6737a9f3 --- /dev/null +++ b/www/crm/wp-content/plugins/civicrm/civicrm/ext/api4/Civi/Api4/Event/Subscriber/PreCreationSubscriber.php @@ -0,0 +1,50 @@ +<?php + +namespace Civi\Api4\Event\Subscriber; + +use Civi\API\Event\PrepareEvent; +use Civi\Api4\Generic\DAOCreateAction; + +abstract class PreCreationSubscriber extends AbstractPrepareSubscriber { + /** + * @param PrepareEvent $event + */ + public function onApiPrepare(PrepareEvent $event) { + $apiRequest = $event->getApiRequest(); + if (!$apiRequest instanceof DAOCreateAction) { + return; + } + + $this->addDefaultCreationValues($apiRequest); + if ($this->applies($apiRequest)) { + $this->modify($apiRequest); + } + } + + /** + * Modify the request + * + * @param DAOCreateAction $request + * + * @return void + */ + abstract protected function modify(DAOCreateAction $request); + + /** + * Check if this subscriber should be applied to the request + * + * @param DAOCreateAction $request + * + * @return bool + */ + abstract protected function applies(DAOCreateAction $request); + + /** + * Sets default values common to all creation requests + * + * @param DAOCreateAction $request + */ + protected function addDefaultCreationValues(DAOCreateAction $request) { + } + +} |