public static function buildContributionArray($groupBy, $contributionIDs, $returnProperties, $skipOnHold, $skipDeceased, $messageToken, $task, $separator, $isIncludeSoftCredits) {
$contributions = $contacts = $notSent = array();
foreach ($contributionIDs as $item => $contributionId) {
- // get contribution information
-
// basic return attributes needed, see below for there usage
- $returnValues = array('contact_id', 'total_amount');
+ $returnValues = array('contact_id', 'total_amount', 'contribution_campaign_title');
if (!empty($messageToken['contribution'])) {
$returnValues = array_merge($messageToken['contribution'], $returnValues);
}
'id' => $contributionId,
'return' => $returnValues,
));
+ $contribution['campaign'] = CRM_Utils_Array::value('contribution_campaign_title', $contribution);
$contributions[$contributionId] = $contribution;
if ($isIncludeSoftCredits) {
);
$customField = $this->callAPISuccess('CustomField', 'create', $params);
$customFieldKey = 'custom_' . $customField['id'];
+ $campaignTitle = 'Test Campaign ' . substr(sha1(rand()), 0, 7);
$params = array(
'contact_id' => $this->_individualId,
'total_amount' => 6,
+ 'campaign_id' => $this->campaignCreate(array('title' => $campaignTitle), FALSE),
'financial_type_id' => 'Donation',
$customFieldKey => 'Text_' . substr(sha1(rand()), 0, 7),
);
$contributionIDs = $returnProperties = array();
$result = $this->callAPISuccess('Contribution', 'create', $params);
$contributionIDs[] = $result['id'];
- $result = $this->callAPISuccess('Contribution', 'create', $params);
- $contributionIDs[] = $result['id'];
$this->hookClass->setHook('civicrm_tokenValues', array($this, 'hookTokenValues'));
// assume that there are two token {contribution.financial_type} and
$messageToken = array(
'contribution' => array(
'financial_type',
+ 'payment_instrument',
+ 'campaign',
$customFieldKey,
),
);
$this->assertEquals('Anthony', $contacts[$this->_individualId]['first_name']);
$this->assertEquals('emo', $contacts[$this->_individualId]['favourite_emoticon']);
$this->assertEquals('Donation', $contributions[$result['id']]['financial_type']);
+ $this->assertEquals($campaignTitle, $contributions[$result['id']]['campaign']);
+ $this->assertEquals('Check', $contributions[$result['id']]['payment_instrument']);
// CRM-20359: assert that contribution custom field token is rightfully replaced by its value
$this->assertEquals($params[$customFieldKey], $contributions[$result['id']][$customFieldKey]);
/**
* @param array $params
* Optional parameters.
+ * @param bool $reloadConfig
+ * While enabling CiviCampaign component, we shouldn't always forcibly
+ * reload config as this hinder hook call in test environment
*
* @return int
* Campaign ID.
*/
- public function campaignCreate($params = array()) {
- $this->enableCiviCampaign();
+ public function campaignCreate($params = array(), $reloadConfig = TRUE) {
+ $this->enableCiviCampaign($reloadConfig);
$campaign = $this->callAPISuccess('campaign', 'create', array_merge(array(
'name' => 'big_campaign',
'title' => 'Campaign',
/**
* Enable CiviCampaign Component.
+ *
+ * @param bool $reloadConfig
+ * Force relaod config or not
*/
- public function enableCiviCampaign() {
+ public function enableCiviCampaign($reloadConfig = TRUE) {
CRM_Core_BAO_ConfigSetting::enableComponent('CiviCampaign');
- // force reload of config object
- $config = CRM_Core_Config::singleton(TRUE, TRUE);
+ if ($reloadConfig) {
+ // force reload of config object
+ $config = CRM_Core_Config::singleton(TRUE, TRUE);
+ }
//flush cache by calling with reset
$activityTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, TRUE, 'name', TRUE);
}