Copy \Civi\Test\HookInterface to \Civi\Core namespace
authorColeman Watts <coleman@civicrm.org>
Fri, 25 Feb 2022 21:09:48 +0000 (16:09 -0500)
committerColeman Watts <coleman@civicrm.org>
Fri, 25 Feb 2022 21:09:48 +0000 (16:09 -0500)
25 files changed:
CRM/ACL/BAO/ACL.php
CRM/Campaign/BAO/Survey.php
CRM/Case/BAO/CaseType.php
CRM/Contact/BAO/Contact.php
CRM/Contact/BAO/ContactType.php
CRM/Contact/BAO/RelationshipCache.php
CRM/Contact/BAO/RelationshipType.php
CRM/Core/BAO/Email.php
CRM/Core/BAO/LocationType.php
CRM/Core/BAO/Managed.php
CRM/Core/BAO/Mapping.php
CRM/Core/BAO/MessageTemplate.php
CRM/Core/BAO/Note.php
CRM/Core/BAO/OptionGroup.php
CRM/Core/BAO/Translation.php
CRM/Core/BAO/WordReplacement.php
CRM/Financial/BAO/FinancialAccount.php
CRM/Financial/BAO/FinancialType.php
CRM/Financial/BAO/PaymentProcessor.php
CRM/Financial/BAO/PaymentProcessorType.php
CRM/Member/BAO/MembershipStatus.php
CRM/Member/BAO/MembershipType.php
CRM/Report/BAO/ReportInstance.php
Civi/Core/Event/EventScanner.php
Civi/Core/HookInterface.php [new file with mode: 0644]

index ba4a67021d771888c29351cf27a8353944305443..58b388b7330c13b08b899aa10b0d1de5e61b0b0c 100644 (file)
@@ -18,7 +18,7 @@
 /**
  *  Access Control List
  */
-class CRM_ACL_BAO_ACL extends CRM_ACL_DAO_ACL implements \Civi\Test\HookInterface {
+class CRM_ACL_BAO_ACL extends CRM_ACL_DAO_ACL implements \Civi\Core\HookInterface {
 
   /**
    * Available operations for  pseudoconstant.
index 2d34a5240ad759c19a9ab52de9cfee77ceb983ec..136d81b8af368465b08ea227cbf2d47a35c80f83 100644 (file)
@@ -18,7 +18,7 @@
 /**
  * Class CRM_Campaign_BAO_Survey.
  */
-class CRM_Campaign_BAO_Survey extends CRM_Campaign_DAO_Survey implements Civi\Test\HookInterface {
+class CRM_Campaign_BAO_Survey extends CRM_Campaign_DAO_Survey implements Civi\Core\HookInterface {
 
   /**
    * Retrieve DB object and copy to defaults array.
index 3cc8291001dd405643589e525adf7d400c2b0b6b..c3f745786464071564ecf7b89c2d17507c312faa 100644 (file)
@@ -18,7 +18,7 @@
 /**
  * This class contains the functions for Case Type management.
  */
-class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType implements \Civi\Test\HookInterface {
+class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType implements \Civi\Core\HookInterface {
 
   /**
    * Static field for all the case information that we can potentially export.
index 96c908eb7925edfa884ab1ac54158556b1d2487a..940393715b40edf83c42715307d3cbb93daa2c77 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact implements Civi\Test\HookInterface {
+class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact implements Civi\Core\HookInterface {
 
   /**
    * SQL function used to format the phone_numeric field via trigger.
index 636173f38ef0673d14958cddd35fc054ffd5e77b..a881d1f6cf9664beab63842877c8714a1fa2dc89 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Contact_BAO_ContactType extends CRM_Contact_DAO_ContactType implements \Civi\Test\HookInterface {
+class CRM_Contact_BAO_ContactType extends CRM_Contact_DAO_ContactType implements \Civi\Core\HookInterface {
 
   /**
    * Retrieve DB object and copy to defaults array.
index e4f6e6695c96ec1e6e336a0cb16374ca71b31ef9..f771072f09c67be6c7c1a15f83d640db2cb7070b 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * Class CRM_Contact_BAO_RelationshipCache.
  */
-class CRM_Contact_BAO_RelationshipCache extends CRM_Contact_DAO_RelationshipCache implements \Civi\Test\HookInterface {
+class CRM_Contact_BAO_RelationshipCache extends CRM_Contact_DAO_RelationshipCache implements \Civi\Core\HookInterface {
 
   /**
    * The "mappings" array defines the values to put into `civicrm_relationship_cache`
index 0eea40fe5ad7a637f7db1e8bd376b150539ff72d..349b9d9991661a5ea6875d8982e6f5885b332f64 100644 (file)
@@ -18,7 +18,7 @@ use Civi\Core\Event\PreEvent;
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Contact_BAO_RelationshipType extends CRM_Contact_DAO_RelationshipType implements \Civi\Test\HookInterface {
+class CRM_Contact_BAO_RelationshipType extends CRM_Contact_DAO_RelationshipType implements \Civi\Core\HookInterface {
 
   /**
    * Retrieve DB object and copy to defaults array.
index 1261608d23648bac0f20945ab9d06ad56a8206d6..755f09bd1e73ded620c38d8e83f66984113da60b 100644 (file)
@@ -20,7 +20,7 @@ use Civi\Api4\Email;
 /**
  * This class contains functions for email handling.
  */
-class CRM_Core_BAO_Email extends CRM_Core_DAO_Email implements Civi\Test\HookInterface {
+class CRM_Core_BAO_Email extends CRM_Core_DAO_Email implements Civi\Core\HookInterface {
   use CRM_Contact_AccessTrait;
 
   /**
index 337dd172790527b1d00ef391146389bbd4a169c3..6d119d7091645f6bc4d04d7f21ffd2fe837b09c8 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Core_BAO_LocationType extends CRM_Core_DAO_LocationType implements \Civi\Test\HookInterface {
+class CRM_Core_BAO_LocationType extends CRM_Core_DAO_LocationType implements \Civi\Core\HookInterface {
 
   /**
    * @var CRM_Core_DAO_LocationType|null
index cac29aa1866645266c3b543da29d36887f26e033..124eabfdade5f91f2336de97a7cbf9908960a263 100644 (file)
@@ -18,7 +18,7 @@
 /**
  * This class contains functions for managed entities.
  */
-class CRM_Core_BAO_Managed extends CRM_Core_DAO_Managed implements Civi\Test\HookInterface {
+class CRM_Core_BAO_Managed extends CRM_Core_DAO_Managed implements Civi\Core\HookInterface {
 
   /**
    * Callback for hook_civicrm_post().
index 3a0309766fe874df017230aa989634fd7b36a3d0..d0af287f500d82c21ea71337ba23cc456de26fb8 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping implements \Civi\Test\HookInterface {
+class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping implements \Civi\Core\HookInterface {
 
   /**
    * Retrieve DB object and copy to defaults array.
index a94b719c0f3d3ea1452b63a8d395621f8aaf0d84..08491c2dbaf17d84046e4486848ea9a596b1f5fc 100644 (file)
@@ -23,7 +23,7 @@ require_once 'Mail/mime.php';
 /**
  * Class CRM_Core_BAO_MessageTemplate.
  */
-class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implements \Civi\Test\HookInterface {
+class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implements \Civi\Core\HookInterface {
 
   /**
    * Retrieve DB object and copy to defaults array.
index 1db4a1aebcd7ada240318c277746689829601ba8..1bd336410a6d5f9ed101a99ea50f8aac33188a22 100644 (file)
@@ -18,7 +18,7 @@
 /**
  * BAO object for crm_note table.
  */
-class CRM_Core_BAO_Note extends CRM_Core_DAO_Note implements \Civi\Test\HookInterface {
+class CRM_Core_BAO_Note extends CRM_Core_DAO_Note implements \Civi\Core\HookInterface {
   use CRM_Core_DynamicFKAccessTrait;
 
   /**
index 5c67974666763da185a3b1049976b49b8d1f6163..09e21694236ceccd65f492fea276fbe500ae52c3 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Core_BAO_OptionGroup extends CRM_Core_DAO_OptionGroup implements \Civi\Test\HookInterface {
+class CRM_Core_BAO_OptionGroup extends CRM_Core_DAO_OptionGroup implements \Civi\Core\HookInterface {
 
   /**
    * Retrieve DB object and copy to defaults array.
index 7d3d0c29b32fe8270cb53140ef0543d8d7f87a81..c7ab686cce8b7cd121927c43a8aa72640d87665a 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Core_BAO_Translation extends CRM_Core_DAO_Translation implements \Civi\Test\HookInterface {
+class CRM_Core_BAO_Translation extends CRM_Core_DAO_Translation implements \Civi\Core\HookInterface {
 
   use CRM_Core_DynamicFKAccessTrait;
 
index b4252a8bbea252c7606e10bb0b6dedca5c3f97e4..0cf4af17a4f0441acd9d5fdba3455fc44175a83c 100644 (file)
@@ -18,7 +18,7 @@
 /**
  * Class CRM_Core_BAO_WordReplacement.
  */
-class CRM_Core_BAO_WordReplacement extends CRM_Core_DAO_WordReplacement implements \Civi\Test\HookInterface {
+class CRM_Core_BAO_WordReplacement extends CRM_Core_DAO_WordReplacement implements \Civi\Core\HookInterface {
 
   /**
    * Retrieve DB object and copy to defaults array.
index 19d6b3754f829b1b3ca7b523a1737b97b670ce4e..07198cb1493d9dda8624d88072175eeb31902376 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Financial_BAO_FinancialAccount extends CRM_Financial_DAO_FinancialAccount implements \Civi\Test\HookInterface {
+class CRM_Financial_BAO_FinancialAccount extends CRM_Financial_DAO_FinancialAccount implements \Civi\Core\HookInterface {
 
   /**
    * Retrieve DB object and copy to defaults array.
index 0bec6c6019d21d7b9aaae43499720f1164d7b211..fa9c0e9ee294dab97535d039d2c2723e58d951c1 100644 (file)
@@ -17,7 +17,7 @@ use Civi\Api4\EntityFinancialAccount;
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Financial_BAO_FinancialType extends CRM_Financial_DAO_FinancialType implements \Civi\Test\HookInterface {
+class CRM_Financial_BAO_FinancialType extends CRM_Financial_DAO_FinancialType implements \Civi\Core\HookInterface {
 
   /**
    * Static cache holder of available financial types for this session
index 1fbfc1c9d35f7d16846d117592e39d92081fbe37..d7e0ac6f6edd65645c7706dc1f06956f67daf04e 100644 (file)
@@ -18,7 +18,7 @@
 /**
  * This class contains payment processor related functions.
  */
-class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProcessor implements \Civi\Test\HookInterface {
+class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProcessor implements \Civi\Core\HookInterface {
   /**
    * Static holder for the default payment processor
    * @var object
index eabc80afda1c8e9682aae6e0e07986778388b535..83f0a4491f6ba8737b671569e8a16ff5f691a379 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Financial_BAO_PaymentProcessorType extends CRM_Financial_DAO_PaymentProcessorType implements \Civi\Test\HookInterface {
+class CRM_Financial_BAO_PaymentProcessorType extends CRM_Financial_DAO_PaymentProcessorType implements \Civi\Core\HookInterface {
 
   /**
    * Static holder for the default payment processor.
index f1850aa12aa73a50eff10461b13437d53ac0e6f9..5f02f8c598e4d30000273f71a689f4cc776d191c 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus implements \Civi\Test\HookInterface {
+class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus implements \Civi\Core\HookInterface {
 
   /**
    * Retrieve DB object and copy to defaults array.
index f73a0a10c416da2ca1337381cb5fbca0bee70f1f..7263f8f3c20c23ca16b7f4665120e6467c28e27f 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implements \Civi\Test\HookInterface {
+class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implements \Civi\Core\HookInterface {
 
   /**
    * Static holder for the default Membership Type.
index 9aa00c2e85d65c2be505db59865467063cf4d387..930b44aad15476d76f5b73e22b53b82af44d942a 100644 (file)
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance implements Civi\Test\HookInterface {
+class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance implements Civi\Core\HookInterface {
 
   /**
    * Takes an associative array and creates an instance object.
index 9b6c93daa598df4af3c1aeb08442ff61f601304d..0dc2f2123cdbdf293b12cabc0d3481e3b9cb945d 100644 (file)
@@ -66,8 +66,8 @@ class EventScanner {
     }
 
     $listenerMap = [];
-    // FIXME: Inteface misnomer
-    if (is_subclass_of($class, '\Civi\Test\HookInterface')) {
+    // These 2 interfaces do the same thing; one is meant for unit tests and the other for runtime code
+    if (is_subclass_of($class, '\Civi\Test\HookInterface') || is_subclass_of($class, '\Civi\Core\HookInterface')) {
       $listenerMap = static::mergeListenerMap($listenerMap, static::findFunctionListeners($class, $self));
     }
     if (is_subclass_of($class, '\Symfony\Component\EventDispatcher\EventSubscriberInterface')) {
diff --git a/Civi/Core/HookInterface.php b/Civi/Core/HookInterface.php
new file mode 100644 (file)
index 0000000..24592b5
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+namespace Civi\Core;
+
+/**
+ * Interface HookInterface
+ * @package Civi\Core
+ *
+ * This interface allows CRM_BAO classes to subscribe to hooks.
+ * Simply create an eponymous hook function (e.g. `hook_civicrm_post()`).
+ *
+ * ```
+ * class CRM_Foo_BAO_Bar implements \Civi\Core\HookInterface {
+ *   public function hook_civicrm_post($op, $objectName, $objectId, &$objectRef) {
+ *     echo "Running hook_civicrm_post\n";
+ *   }
+ * }
+ * ```
+ *
+ * Similarly, to subscribe using Symfony-style listeners, create function with the 'on_' prefix:
+ *
+ * ```
+ * class CRM_Foo_BAO_Bar implements \Civi\Core\HookInterface {
+ *   public function on_civi_api_authorize(AuthorizeEvent $e): void {
+ *     echo "Running civi.api.authorize\n";
+ *   }
+ *   public function on_hook_civicrm_post(GenericHookEvent $e): void {
+ *     echo "Running hook_civicrm_post\n";
+ *   }
+ * }
+ * ```
+ *
+ * If you need more advanced registration abilities, consider using `Civi::dispatcher()`
+ * or `EventDispatcherInterface`.
+ *
+ * @see \Civi\Core\Event\EventScanner::findListeners
+ */
+interface HookInterface {
+}