Merge pull request #11934 from eileenmcnaughton/fees
[civicrm-core.git] / Civi / Token / Event / TokenRegisterEvent.php
CommitLineData
8adcd073
TO
1<?php
2namespace Civi\Token\Event;
3
4/**
5 * Class TokenRegisterEvent
6 * @package Civi\Token\Event
7 *
8 * The TokenRegisterEvent is fired when constructing a list of available
9 * tokens. Listeners may register by specifying the entity/field/label for the token.
10 *
11 * @code
12 * $ev->entity('profile')
13 * ->register('viewUrl', ts('Default Profile URL (View Mode)')
14 * ->register('editUrl', ts('Default Profile URL (Edit Mode)');
15 * $ev->register(array(
16 * 'entity' => 'profile',
17 * 'field' => 'viewUrl',
18 * 'label' => ts('Default Profile URL (View Mode)'),
19 * ));
20 * @endcode
21 */
22class TokenRegisterEvent extends TokenEvent {
23
24 /**
25 * Default values to put in new registrations.
26 *
27 * @var array
28 */
29 protected $defaults;
30
31 public function __construct($tokenProcessor, $defaults) {
32 parent::__construct($tokenProcessor);
33 $this->defaults = $defaults;
34 }
35
36 /**
37 * Set the default entity name.
38 *
39 * @param string $entity
40 * @return TokenRegisterEvent
41 */
42 public function entity($entity) {
43 $defaults = $this->defaults;
44 $defaults['entity'] = $entity;
45 return new TokenRegisterEvent($this->tokenProcessor, $defaults);
46 }
47
48 /**
49 * Register a new token.
50 *
51 * @param array|string $paramsOrField
52 * @param NULL|string $label
4b350175 53 * @return TokenRegisterEvent
8adcd073
TO
54 */
55 public function register($paramsOrField, $label = NULL) {
56 if (is_array($paramsOrField)) {
57 $params = $paramsOrField;
58 }
59 else {
60 $params = array(
61 'field' => $paramsOrField,
62 'label' => $label,
63 );
64 }
65 $params = array_merge($this->defaults, $params);
66 $this->tokenProcessor->addToken($params);
67 return $this;
68 }
69
70}