* @throws Exception
*/
public function composeMessageArray(&$input, &$ids, &$values, $recur = FALSE, $returnMessageText = TRUE) {
- if (empty($this->_relatedObjects)) {
- $this->loadRelatedObjects($input, $ids);
- }
+ $this->loadRelatedObjects($input, $ids);
+
if (empty($this->_component)) {
$this->_component = CRM_Utils_Array::value('component', $input);
}
}
if (!empty($memberships)) {
- $membershipsUpdate = array();
foreach ($memberships as $membershipTypeIdKey => $membership) {
- $membershipParams = (array) $membership;
if ($membership) {
- $format = '%Y%m%d';
+ $membershipParams = array(
+ 'id' => $membership->id,
+ 'contact_id' => $membership->contact_id,
+ 'is_test' => $membership->is_test,
+ 'membership_type_id' => $membership->membership_type_id,
+ );
$currentMembership = CRM_Member_BAO_Membership::getContactMembership($membershipParams['contact_id'],
$membershipParams['membership_type_id'],
}
$dao->free();
- $num_terms = $contribution->getNumTermsByContributionAndMembershipType($membershipParams['membership_type_id'], $primaryContributionID);
+ $membershipParams['num_terms'] = $contribution->getNumTermsByContributionAndMembershipType(
+ $membershipParams['membership_type_id'],
+ $primaryContributionID
+ );
if ($currentMembership) {
/*
* Fixed FOR CRM-4433
// @todo - we should pass membership_type_id instead of null here but not
// adding as not sure of testing
$dates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType($membershipParams['id'],
- $changeDate, NULL, $num_terms
+ $changeDate, NULL, $membershipParams['num_terms']
);
$dates['join_date'] = $currentMembership['join_date'];
}
- else {
- $membershipParams = array_merge($membershipParams,
- CRM_Member_BAO_MembershipType::getDatesForMembershipType($membershipParams['membership_type_id'], NULL, NULL, NULL, $num_terms)
- );
- }
//get the status for membership.
$calcStatus = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dates['start_date'],
$membershipParams['is_override'] = FALSE;
civicrm_api3('Membership', 'create', $membershipParams);
- $membershipLog = $membershipParams;
-
- $logStartDate = $membershipParams['start_date'];
- if (!empty($dates['log_start_date'])) {
- $logStartDate = CRM_Utils_Date::customFormat($dates['log_start_date'], $format);
- $logStartDate = CRM_Utils_Date::isoToMysql($logStartDate);
- }
-
- $membershipLog['start_date'] = $logStartDate;
- $membershipLog['membership_id'] = $membership->id;
- $membershipLog['modified_id'] = $membership->contact_id;
- $membershipLog['modified_date'] = date('Ymd');
- $membershipLog['membership_type_id'] = $membership->membership_type_id;
-
- CRM_Member_BAO_MembershipLog::add($membershipLog, CRM_Core_DAO::$_nullArray);
-
//update related Memberships.
CRM_Member_BAO_Membership::updateRelatedMemberships($membership->id, $membershipParams);
-
- //update the membership type key of membership relatedObjects array
- //if it has changed after membership update
- if ($membershipTypeIdKey != $membership->membership_type_id) {
- $membershipsUpdate[$membership->membership_type_id] = $membership;
- $contribution->_relatedObjects['membership'][$membership->membership_type_id] = $membership;
- unset($contribution->_relatedObjects['membership'][$membershipTypeIdKey]);
- unset($memberships[$membershipTypeIdKey]);
- }
}
}
- //update the memberships object with updated membershipTypeId data
- //if membershipTypeId has changed after membership update
- if (!empty($membershipsUpdate)) {
- $memberships = $memberships + $membershipsUpdate;
- }
}
}
else {
* @return array
*/
public static function sendMail(&$input, &$ids, &$objects, &$values, $recur = FALSE, $returnMessageText = FALSE) {
- $contribution = &$objects['contribution'];
+ $contribution = $objects['contribution'];
$input['is_recur'] = $recur;
// set receipt from e-mail and name in value
if (!$returnMessageText) {
--- /dev/null
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.6 |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2015 |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM. |
+ | |
+ | CiviCRM is free software; you can copy, modify, and distribute it |
+ | under the terms of the GNU Affero General Public License |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
+ | |
+ | CiviCRM is distributed in the hope that it will be useful, but |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
+ | See the GNU Affero General Public License for more details. |
+ | |
+ | You should have received a copy of the GNU Affero General Public |
+ | License and the CiviCRM Licensing Exception along |
+ | with this program; if not, contact CiviCRM LLC |
+ | at info[AT]civicrm[DOT]org. If you have questions about the |
+ | GNU Affero General Public License or the licensing of CiviCRM, |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * This api exposes CiviCRM MembershipLog records.
+ *
+ * @package CiviCRM_APIv3
+ */
+
+/**
+ * API to Create or update a MembershipLog.
+ *
+ * @param array $params
+ * Values of MembershipLog.
+ *
+ * @return array
+ * API result array.
+ */
+function civicrm_api3_membership_log_create($params) {
+ return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params);
+}
+
+/**
+ * Adjust Metadata for Create action.
+ *
+ * The metadata is used for setting defaults, documentation & validation.
+ *
+ * @param array $params
+ * Array of parameters determined by getfields.
+ */
+function _civicrm_api3_membership_log_create_spec(&$params) {
+ $params['membership_id']['api.required'] = TRUE;
+}
+
+/**
+ * Get a Membership Log.
+ *
+ * This api is used for finding an existing membership log.
+ *
+ * @param array $params
+ * An associative array of name/value property values of civicrm_membership_log.
+ * {getfields MembershipLog_get}
+ *
+ * @return array
+ * API result array
+ */
+function civicrm_api3_membership_log_get($params) {
+ return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params);
+}
+
+/**
+ * Deletes an existing membership log.
+ *
+ * This API is used for deleting a membership log
+ * Required parameters : id of a membership log
+ *
+ * @param array $params
+ *
+ * @return array
+ * API result array
+ */
+function civicrm_api3_membership_log_delete($params) {
+ return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params);
+}
*/
public function testCompleteTransactionMembershipPriceSet() {
$this->createPriceSetWithPage('membership');
+ $stateOfGrace = $this->callAPISuccess('MembershipStatus', 'getvalue', array(
+ 'name' => 'Grace',
+ 'return' => 'id')
+ );
$this->setUpPendingContribution($this->_ids['price_field_value'][0]);
+ $membership = $this->callAPISuccess('membership', 'getsingle', array('id' => $this->_ids['membership']));
+ $logs = $this->callAPISuccess('MembershipLog', 'get', array(
+ 'membership_id' => $this->_ids['membership'],
+ ));
+ $this->assertEquals(1, $logs['count']);
+ $this->assertEquals($stateOfGrace, $membership['status_id']);
$this->callAPISuccess('contribution', 'completetransaction', array('id' => $this->_ids['contribution']));
$membership = $this->callAPISuccess('membership', 'getsingle', array('id' => $this->_ids['membership']));
$this->assertEquals(date('Y-m-d', strtotime('yesterday + 1 year')), $membership['end_date']);
+ $this->callAPISuccessGetSingle('LineItem', array(
+ 'entity_id' => $this->_ids['membership'],
+ 'entity_table' => 'civicrm_membership',
+ ));
+ $logs = $this->callAPISuccess('MembershipLog', 'get', array(
+ 'membership_id' => $this->_ids['membership'],
+ ));
+ $this->assertEquals(2, $logs['count']);
+ $this->assertNotEquals($stateOfGrace, $logs['values'][2]['status_id']);
$this->cleanUpAfterPriceSets();
}
'membership_type_id' => $this->_ids['membership_type'],
'start_date' => 'yesterday - 1 year',
'end_date' => 'yesterday',
+ 'join_date' => 'yesterday - 1 year',
));
$contribution = $this->callAPISuccess('contribution', 'create', array(
'domain_id' => 1,
}
/**
- * @param $contribution
- * @param $context
+ * @param array $contribution
+ * @param string $context
* @param int $instrumentId
*/
public function _checkFinancialTrxn($contribution, $context, $instrumentId = NULL) {