<?php
+use Civi\Token\Event\TokenValueEvent;
+use Civi\Token\TokenProcessor;
+
trait CRM_Core_TokenTrait {
private $basicTokens;
}
/**
- * @inheritDoc
+ * Check if the token processor is active.
+ *
+ * @param \Civi\Token\TokenProcessor $processor
+ *
+ * @return bool
*/
- public function checkActive(\Civi\Token\TokenProcessor $processor) {
+ public function checkActive(TokenProcessor $processor) {
return in_array($this->getEntityContextSchema(), $processor->context['schema']) ||
(!empty($processor->context['actionMapping'])
&& $processor->context['actionMapping']->getEntity() === $this->getEntityTableName());
/**
* @inheritDoc
*/
- public function getActiveTokens(\Civi\Token\Event\TokenValueEvent $e) {
+ public function getActiveTokens(TokenValueEvent $e) {
$messageTokens = $e->getTokenProcessor()->getMessageTokens();
if (!isset($messageTokens[$this->entity])) {
return NULL;
/**
* Find the fields that we need to get to construct the tokens requested.
- * @param array $activeTokens list of active tokens
+ *
* @return array list of fields needed to generate those tokens
*/
- public function getReturnFields($activeTokens) {
+ public function getReturnFields(): array {
// Make sure we always return something
$fields = ['id'];
- $tokensInUse = array_intersect(
- $activeTokens,
- array_merge(array_keys(self::getBasicTokens()), array_keys(self::getCustomFieldTokens()))
- );
+ $tokensInUse =
+ array_merge(array_keys(self::getBasicTokens()), array_keys(self::getCustomFieldTokens()));
foreach ($tokensInUse as $token) {
if (isset(self::$fieldMapping[$token])) {
$fields = array_merge($fields, self::$fieldMapping[$token]);
* Get the tokens for custom fields
* @return array token name => token label
*/
- protected function getCustomFieldTokens() {
+ protected function getCustomFieldTokens(): array {
if (!isset($this->customFieldTokens)) {
- $this->customFieldTokens = \CRM_Utils_Token::getCustomFieldTokens(ucfirst($this->getEntityName()));
+ $this->customFieldTokens = [];
+ foreach (CRM_Core_BAO_CustomField::getFields(ucfirst($this->getEntityName())) as $id => $info) {
+ $this->customFieldTokens['custom_' . $id] = $info['label'] . ' :: ' . $info['groupTitle'];
+ }
}
return $this->customFieldTokens;
}