* messages
* @throws Exception
*/
- public function composeMessageArray(&$input, &$ids, &$values, $recur = FALSE, $returnMessageText = TRUE) {
+ public function composeMessageArray(&$input, &$ids, &$values, $returnMessageText = TRUE) {
$this->loadRelatedObjects($input, $ids);
if (empty($this->_component)) {
$values['receipt_date'] = $input['receipt_date'];
}
- $template = CRM_Core_Smarty::singleton();
- $this->_assignMessageVariablesToTemplate($values, $input, $template, $recur, $returnMessageText);
+ $template = $this->_assignMessageVariablesToTemplate($values, $input, $returnMessageText);
//what does recur 'mean here - to do with payment processor return functionality but
// what is the importance
- if ($recur && !empty($this->_relatedObjects['paymentProcessor'])) {
+ if (!empty($this->contribution_recur_id) && !empty($this->_relatedObjects['paymentProcessor'])) {
$paymentObject = Civi\Payment\System::singleton()->getByProcessor($this->_relatedObjects['paymentProcessor']);
$entityID = $entity = NULL;
$values['is_pay_later'] = 1;
}
- if ($recur && $paymentObject) {
+ if (!empty($this->contribution_recur_id) && $paymentObject) {
$url = $paymentObject->subscriptionURL($membership->id, 'membership', 'cancel');
$template->assign('cancelSubscriptionUrl', $url);
$url = $paymentObject->subscriptionURL($membership->id, 'membership', 'billing');
*
* @param $values
* @param $input
- * @param CRM_Core_SMARTY $template
- * @param bool $recur
* @param bool $returnMessageText
*
* @return mixed
*/
- public function _assignMessageVariablesToTemplate(&$values, $input, &$template, $recur = FALSE, $returnMessageText = TRUE) {
+ public function _assignMessageVariablesToTemplate(&$values, $input, $returnMessageText = TRUE) {
+ $template = CRM_Core_Smarty::singleton();
$template->assign('first_name', $this->_relatedObjects['contact']->first_name);
$template->assign('last_name', $this->_relatedObjects['contact']->last_name);
$template->assign('displayName', $this->_relatedObjects['contact']->display_name);
)
);
$template->assign('is_monetary', 1);
- $template->assign('is_recur', (bool) $recur);
+ $template->assign('is_recur', !empty($this->contribution_recur_id));
$template->assign('currency', $this->currency);
$template->assign('address', CRM_Utils_Address::format($input));
if (!empty($values['customGroup'])) {
* @param int $contributionID
* @param array $values
* Values related to objects that have already been loaded.
- * @param bool $recur
- * Is it part of a recurring contribution.
* @param bool $returnMessageText
* Should text be returned instead of sent. This.
* is because the function is also used to generate pdfs
if (!$returnMessageText) {
list($values['receipt_from_name'], $values['receipt_from_email']) = self::generateFromEmailAndName($input, $contribution);
}
- $return = $contribution->composeMessageArray($input, $ids, $values, $recur, $returnMessageText);
+ $return = $contribution->composeMessageArray($input, $ids, $values, $returnMessageText);
// Contribution ID should really always be set. But ?
if (!$returnMessageText && (!isset($input['receipt_update']) || $input['receipt_update']) && empty($contribution->receipt_date)) {
civicrm_api3('Contribution', 'create', array('receipt_date' => 'now', 'id' => $contribution->id));
* CRM-1960 - Test to ensure that completetransaction respects the is_email_receipt setting
*/
public function testCompleteTransactionWithEmailReceiptInput() {
- // Create a Contribution Page with is_email_receipt = TRUE
- $contributionPage = $this->callAPISuccess('ContributionPage', 'create', array(
- 'receipt_from_name' => 'Mickey Mouse',
- 'receipt_from_email' => 'mickey@mouse.com',
- 'title' => "Test Contribution Page",
- 'financial_type_id' => 1,
- 'currency' => 'CAD',
- 'is_monetary' => TRUE,
- 'is_email_receipt' => TRUE,
- ));
+ $contributionPage = $this->createReceiptableContributionPage();
+
$this->_params['contribution_page_id'] = $contributionPage['id'];
$params = array_merge($this->_params, array('contribution_status_id' => 2));
$contribution = $this->callAPISuccess('contribution', 'create', $params);
$this->assertEquals('', $receipt_date);
}
+ /**
+ * Test that $is_recur is assigned to the receipt.
+ */
+ public function testCompleteTransactionForRecurring() {
+
+ $this->swapMessageTemplateForTestTemplate();
+ $recurring = $this->setUpRecurringContribution();
+ $contributionPage = $this->createReceiptableContributionPage(array('is_recur' => TRUE, 'recur_frequency_unit' => 'month', 'recur_interval' => 1));
+
+ $this->_params['contribution_page_id'] = $contributionPage['id'];
+ $this->_params['contribution_recur_id'] = $recurring['id'];
+
+ $contribution = $this->setUpForCompleteTransaction();
+
+ $this->callAPISuccess('contribution', 'completetransaction', array(
+ 'id' => $contribution['id'],
+ 'trxn_date' => date('2011-04-09'),
+ 'trxn_id' => 'kazam',
+ 'is_email_receipt' => 1,
+ ));
+
+ $this->mut->checkMailLog(array(
+ 'is_recur:::1',
+ 'cancelSubscriptionUrl:::http://dummy.com',
+ ));
+ $this->mut->stop();
+ $this->revertTemplateToReservedTemplate();
+ }
+
/**
* Complete the transaction using the template with all the possible.
*/
$mut->stop();
}
+ /**
+ * Create a Contribution Page with is_email_receipt = TRUE.
+ *
+ * @param array $params
+ * Params to overwrite with.
+ *
+ * @return array|int
+ */
+ protected function createReceiptableContributionPage($params = array()) {
+ $contributionPage = $this->callAPISuccess('ContributionPage', 'create', array_merge(array(
+ 'receipt_from_name' => 'Mickey Mouse',
+ 'receipt_from_email' => 'mickey@mouse.com',
+ 'title' => "Test Contribution Page",
+ 'financial_type_id' => 1,
+ 'currency' => 'CAD',
+ 'is_monetary' => TRUE,
+ 'is_email_receipt' => TRUE,
+ ), $params));
+ return $contributionPage;
+ }
+
}