// Multiple revisions of the activity.
// Q: Could we simplify & move the extra AND clauses into `where(...)`?
$e->query->param('casEntityJoinExpr', 'e.id = reminder.entity_id AND e.is_current_revision = 1 AND e.is_deleted = 0');
+ $e->query->select('e.id AS tokenContext_' . $this->getEntityContextSchema());
}
/**
*/
public function prefetch(TokenValueEvent $e) {
// Find all the entity IDs
- $entityIds
- = $e->getTokenProcessor()->getContextValues('actionSearchResult', 'entityID')
- + $e->getTokenProcessor()->getContextValues($this->getEntityContextSchema());
+ $entityIds = $e->getTokenProcessor()->getContextValues($this->getEntityContextSchema());
if (!$entityIds) {
return NULL;
}
// Get data on all activities for basic and customfield tokens
- $activities = civicrm_api3('Activity', 'get', [
+ $prefetch['activity'] = civicrm_api3('Activity', 'get', [
'id' => ['IN' => $entityIds],
'options' => ['limit' => 0],
'return' => self::getReturnFields($this->activeTokens),
- ]);
- $prefetch['activity'] = $activities['values'];
+ ])['values'];
// Store the activity types if needed
- if (in_array('activity_type', $this->activeTokens)) {
+ if (in_array('activity_type', $this->activeTokens, TRUE)) {
$this->activityTypes = \CRM_Core_OptionGroup::values('activity_type');
}
// Store the activity statuses if needed
- if (in_array('status', $this->activeTokens)) {
+ if (in_array('status', $this->activeTokens, TRUE)) {
$this->activityStatuses = \CRM_Core_OptionGroup::values('activity_status');
}
// Store the campaigns if needed
- if (in_array('campaign', $this->activeTokens)) {
+ if (in_array('campaign', $this->activeTokens, TRUE)) {
$this->campaigns = \CRM_Campaign_BAO_Campaign::getCampaigns();
}
}
/**
- * @inheritDoc
+ * Evaluate the content of a single token.
+ *
+ * @param \Civi\Token\TokenRow $row
+ * The record for which we want token values.
+ * @param string $entity
+ * The name of the token entity.
+ * @param string $field
+ * The name of the token field.
+ * @param mixed $prefetch
+ * Any data that was returned by the prefetch().
+ *
+ * @throws \CRM_Core_Exception
*/
public function evaluateToken(TokenRow $row, $entity, $field, $prefetch = NULL) {
// maps token name to api field
'activity_id' => 'id',
];
- // Get ActivityID either from actionSearchResult (for scheduled reminders) if exists
- $activityId = $row->context['actionSearchResult']->entityID ?? $row->context[$this->getEntityContextSchema()];
+ $activityId = $row->context[$this->getEntityContextSchema()];
$activity = $prefetch['activity'][$activityId];