Beispiel #1
0
/**
 * Create a Contact Membership
 *  
 * This API is used for creating a Membership for a contact.
 * Required parameters : membership_type_id and status_id.
 * 
 * @param   array  $params     an associative array of name/value property values of civicrm_membership
 * 
 * @return array of newly created membership property values.
 * @access public
 */
function civicrm_membership_contact_create(&$params)
{
    _civicrm_initialize();
    if (!is_array($params)) {
        return civicrm_create_error('Params is not an array');
    }
    if (!isset($params['membership_type_id']) || !isset($params['contact_id']) || isset($params['is_override']) && !$params['status_id']) {
        return civicrm_create_error(ts('Required parameter missing'));
    }
    $values = array();
    $error = _civicrm_membership_format_params($params, $values);
    if (is_a($error, 'CRM_Core_Error')) {
        return civicrm_create_error('Membership is not created');
    }
    $params = array_merge($values, $params);
    require_once 'CRM/Core/Action.php';
    $action = CRM_Core_Action::ADD;
    //for edit membership id should be present
    if (CRM_Utils_Array::value('id', $params)) {
        $ids = array('membership' => $params['id'], 'user_id' => $params['contact_id']);
        $action = CRM_Core_Action::UPDATE;
    }
    //need to pass action to handle related memberships.
    $params['action'] = $action;
    require_once 'CRM/Member/BAO/Membership.php';
    $membershipBAO = CRM_Member_BAO_Membership::create($params, $ids, true);
    if (array_key_exists('is_error', $membershipBAO)) {
        // In case of no valid status for given dates, $membershipBAO
        // is going to contain 'is_error' => "Error Message"
        return civicrm_create_error(ts('The membership can not be saved, no valid membership status for given dates'));
    }
    $membership = array();
    _civicrm_object_to_array($membershipBAO, $membership);
    $values = array();
    $values['id'] = $membership['id'];
    $values['is_error'] = 0;
    return $values;
}
/**
 * Create a Contact Membership
 *  
 * This API is used for creating a Membership for a contact.
 * Required parameters : membership_type_id and status_id.
 * 
 * @param   array  $params     an associative array of name/value property values of civicrm_membership
 * 
 * @return array of newly created membership property values.
 * @access public
 */
function civicrm_membership_contact_create(&$params)
{
    _civicrm_initialize();
    $error = _civicrm_membership_check_params($params);
    if (civicrm_error($error)) {
        return $error;
    }
    $values = array();
    $error = _civicrm_membership_format_params($params, $values);
    if (civicrm_error($error)) {
        return $error;
    }
    $params = array_merge($values, $params);
    require_once 'CRM/Core/Action.php';
    $action = CRM_Core_Action::ADD;
    // we need user id during add mode
    $ids = array('userId' => $params['contact_id']);
    //for edit membership id should be present
    if (CRM_Utils_Array::value('id', $params)) {
        $ids = array('membership' => $params['id'], 'userId' => $params['contact_id']);
        $action = CRM_Core_Action::UPDATE;
    }
    //need to pass action to handle related memberships.
    $params['action'] = $action;
    require_once 'CRM/Member/BAO/Membership.php';
    $membershipBAO = CRM_Member_BAO_Membership::create($params, $ids, true);
    if (array_key_exists('is_error', $membershipBAO)) {
        // In case of no valid status for given dates, $membershipBAO
        // is going to contain 'is_error' => "Error Message"
        return civicrm_create_error(ts('The membership can not be saved, no valid membership status for given dates'));
    }
    $membership = array();
    _civicrm_object_to_array($membershipBAO, $membership);
    $values = array();
    $values['id'] = $membership['id'];
    $values['is_error'] = 0;
    return $values;
}
 function testMemebershipFormatParamsWithCreate()
 {
     $params = array('contact_id' => $this->_contactID, 'membership_type_id' => $this->_membershipTypeID, 'join_date' => '2006-01-21', 'membership_start_date' => '2006-01-21', 'membership_end_date' => '2006-12-21', 'source' => 'Payment', 'is_override' => 1, 'status_id' => $this->_membershipStatusID);
     $values = array();
     _civicrm_membership_format_params($params, $values, true);
     $this->assertEquals($values['start_date'], $params['membership_start_date']);
     $this->assertEquals($values['end_date'], $params['membership_end_date']);
 }