Commit | Line | Data |
---|---|---|
8adcd073 TO |
1 | <?php |
2 | namespace 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 | |
4c367668 TO |
21 | * |
22 | * Event name: 'civi.token.list' | |
8adcd073 TO |
23 | */ |
24 | class TokenRegisterEvent extends TokenEvent { | |
25 | ||
26 | /** | |
27 | * Default values to put in new registrations. | |
28 | * | |
29 | * @var array | |
30 | */ | |
31 | protected $defaults; | |
32 | ||
33 | public function __construct($tokenProcessor, $defaults) { | |
34 | parent::__construct($tokenProcessor); | |
35 | $this->defaults = $defaults; | |
36 | } | |
37 | ||
38 | /** | |
39 | * Set the default entity name. | |
40 | * | |
41 | * @param string $entity | |
42 | * @return TokenRegisterEvent | |
43 | */ | |
44 | public function entity($entity) { | |
45 | $defaults = $this->defaults; | |
46 | $defaults['entity'] = $entity; | |
47 | return new TokenRegisterEvent($this->tokenProcessor, $defaults); | |
48 | } | |
49 | ||
50 | /** | |
51 | * Register a new token. | |
52 | * | |
53 | * @param array|string $paramsOrField | |
54 | * @param NULL|string $label | |
4b350175 | 55 | * @return TokenRegisterEvent |
8adcd073 TO |
56 | */ |
57 | public function register($paramsOrField, $label = NULL) { | |
58 | if (is_array($paramsOrField)) { | |
59 | $params = $paramsOrField; | |
60 | } | |
61 | else { | |
c64f69d9 | 62 | $params = [ |
8adcd073 TO |
63 | 'field' => $paramsOrField, |
64 | 'label' => $label, | |
c64f69d9 | 65 | ]; |
8adcd073 TO |
66 | } |
67 | $params = array_merge($this->defaults, $params); | |
68 | $this->tokenProcessor->addToken($params); | |
69 | return $this; | |
70 | } | |
71 | ||
72 | } |