4 +--------------------------------------------------------------------+
5 | CiviCRM version 4.7 |
6 +--------------------------------------------------------------------+
7 | Copyright CiviCRM LLC (c) 2004-2015 |
8 +--------------------------------------------------------------------+
9 | This file is a part of CiviCRM. |
11 | CiviCRM is free software; you can copy, modify, and distribute it |
12 | under the terms of the GNU Affero General Public License |
13 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
15 | CiviCRM is distributed in the hope that it will be useful, but |
16 | WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. |
20 | You should have received a copy of the GNU Affero General Public |
21 | License and the CiviCRM Licensing Exception along |
22 | with this program; if not, contact CiviCRM LLC |
23 | at info[AT]civicrm[DOT]org. If you have questions about the |
24 | GNU Affero General Public License or the licensing of CiviCRM, |
25 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
26 +--------------------------------------------------------------------+
30 * Class CRM_Contribute_Tokens
32 * Generate "contribution.*" tokens.
34 * At time of writing, we don't have any particularly special tokens -- we just
35 * do some basic formatting based on the corresponding DB field.
37 class CRM_Contribute_Tokens
extends \Civi\Token\AbstractTokenSubscriber
{
40 * Get a list of tokens whose name and title match the DB fields.
43 protected function getPassthruTokens() {
45 'contribution_page_id',
60 protected function getAliasTokens() {
62 'id' => 'contribution_id',
63 'payment_instrument' => 'payment_instrument_id',
64 'source' => 'contribution_source',
65 'status' => 'contribution_status_id',
66 'type' => 'financial_type_id',
70 public function __construct() {
71 $tokens = CRM_Utils_Array
::subset(
72 CRM_Utils_Array
::collect('title', CRM_Contribute_DAO_Contribution
::fields()),
73 $this->getPassthruTokens()
75 $tokens['id'] = ts('Contribution ID');
76 $tokens['payment_instrument'] = ts('Payment Instrument');
77 $tokens['source'] = ts('Contribution Source');
78 $tokens['status'] = ts('Contribution Status');
79 $tokens['type'] = ts('Financial Type');
80 parent
::__construct('contribution', $tokens);
83 public function checkActive(\Civi\Token\TokenProcessor
$processor) {
85 !empty($processor->context
['actionMapping'])
86 && $processor->context
['actionMapping']->getEntity() === 'civicrm_contribution';
89 public function alterActionScheduleQuery(\Civi\ActionSchedule\Event\MailingQueryEvent
$e) {
90 if ($e->mapping
->getEntity() !== 'civicrm_contribution') {
94 $fields = CRM_Contribute_DAO_Contribution
::fields();
95 foreach ($this->getPassthruTokens() as $token) {
96 $e->query
->select("e." . $fields[$token]['name'] . " AS contrib_{$token}");
98 foreach ($this->getAliasTokens() as $alias => $orig) {
99 $e->query
->select("e." . $fields[$orig]['name'] . " AS contrib_{$alias}");
104 * Evaluate the content of a single token.
106 * @param \Civi\Token\TokenRow $row
107 * The record for which we want token values.
108 * @param string $field
109 * The name of the token field.
110 * @param mixed $prefetch
111 * Any data that was returned by the prefetch().
114 public function evaluateToken(\Civi\Token\TokenRow
$row, $entity, $field, $prefetch = NULL) {
115 $actionSearchResult = $row->context
['actionSearchResult'];
116 $fieldValue = isset($actionSearchResult->{"contrib_$field"}) ?
$actionSearchResult->{"contrib_$field"} : NULL;
118 $aliasTokens = $this->getAliasTokens();
119 if (in_array($field, array('total_amount', 'fee_amount', 'net_amount'))) {
120 return $row->format('text/plain')->tokens($entity, $field,
121 \CRM_Utils_Money
::format($fieldValue, $actionSearchResult->contrib_currency
));
123 elseif (isset($aliasTokens[$field])) {
124 $row->dbToken($entity, $field, 'CRM_Contribute_BAO_Contribution', $aliasTokens[$field], $fieldValue);
127 $row->dbToken($entity, $field, 'CRM_Contribute_BAO_Contribution', $field, $fieldValue);