->invoke(['op', 'groupID', 'entityID', 'params'], $op, $groupID, $entityID, $params, self::$_nullObject, self::$_nullObject, 'civicrm_custom');
}
+ /**
+ * This hook is called before a db write on a custom table.
+ *
+ * @param string $op
+ * The type of operation being performed.
+ * @param string $groupID
+ * The custom group ID.
+ * @param object $entityID
+ * The entityID of the row in the custom table.
+ * @param array $params
+ * The parameters that were sent into the calling function.
+ *
+ * @return null
+ * the return value is ignored
+ */
+ public static function customPre($op, $groupID, $entityID, &$params) {
+ return self::singleton()
+ ->invoke(['op', 'groupID', 'entityID', 'params'], $op, $groupID, $entityID, $params, self::$_nullObject, self::$_nullObject, 'civicrm_customPre');
+ }
+
/**
* This hook is called when composing the ACL where clause to restrict
* visibility of contacts to the logged in user
* See discussion in CRM-16224 as to whether $paymentObj should be passed by reference.
* @param array &$rawParams
* array of params as passed to to the processor
- * @param array &$cookedParams
+ * @param array|\Civi\Payment\PropertyBag &$cookedParams
* params after the processor code has translated them into its own key/value pairs
*
* @return mixed
* If omitted, default to "array('civicrm/a')" for backward compat.
* For a utility that should only be loaded on-demand, use "array()".
* For a utility that should be loaded in all pages use, "array('*')".
- * @return null
- * the return value is ignored
*
- * @code
+ * ```
* function mymod_civicrm_angularModules(&$angularModules) {
* $angularModules['myAngularModule'] = array(
* 'ext' => 'org.example.mymod',
* 'basePages' => array('civicrm/a'),
* );
* }
- * @endcode
+ * ```
+ *
+ * @return null
+ * the return value is ignored
*/
public static function angularModules(&$angularModules) {
return self::singleton()->invoke(['angularModules'], $angularModules,
*
* @param \Civi\Angular\Manager $angular
*
- * @code
+ * ```
* function example_civicrm_alterAngular($angular) {
* $changeSet = \Civi\Angular\ChangeSet::create('mychanges')
* ->alterHtml('~/crmMailing/EditMailingCtrl/2step.html', function(phpQueryObject $doc) {
* );
* $angular->add($changeSet);
* }
- * @endCode
+ * ```
*/
public static function alterAngular($angular) {
$event = \Civi\Core\Event\GenericHookEvent::create([
/**
* Modify the CiviCRM container - add new services, parameters, extensions, etc.
*
- * @code
+ * ```
* use Symfony\Component\Config\Resource\FileResource;
* use Symfony\Component\DependencyInjection\Definition;
*
* $container->addResource(new FileResource(__FILE__));
* $container->setDefinition('mysvc', new Definition('My\Class', array()));
* }
- * @endcode
+ * ```
*
* Tip: The container configuration will be compiled/cached. The default cache
* behavior is aggressive. When you first implement the hook, be sure to