<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType {
/**
- * static holder for the default LT
+ * Static holder for the default LT
*/
static $_defaultMembershipType = NULL;
static $_membershipTypeInfo = array();
/**
- * class constructor
+ * Class constructor
*/
- function __construct() {
+ public function __construct() {
parent::__construct();
}
/**
- * Takes a bunch of params that are needed to match certain criteria and
- * retrieves the relevant objects. Typically the valid params are only
- * contact_id. We'll tweak this function to be more full featured over a period
- * of time. This is the inverse function of create. It also stores all the retrieved
- * values in the default array
+ * Fetch object based on array of properties
*
- * @param array $params (reference ) an assoc array of name/value pairs
- * @param array $defaults (reference ) an assoc array to hold the flattened values
+ * @param array $params
+ * (reference ) an assoc array of name/value pairs.
+ * @param array $defaults
+ * (reference ) an assoc array to hold the flattened values.
*
- * @return object CRM_Member_BAO_MembershipType object
- * @access public
+ * @return CRM_Member_BAO_MembershipType object
* @static
*/
- static function retrieve(&$params, &$defaults) {
+ public static function retrieve(&$params, &$defaults) {
$membershipType = new CRM_Member_DAO_MembershipType();
$membershipType->copyValues($params);
if ($membershipType->find(TRUE)) {
}
/**
- * update the is_active flag in the db
+ * Update the is_active flag in the db
*
- * @param int $id id of the database record
- * @param boolean $is_active value we want to set the is_active field
+ * @param int $id
+ * Id of the database record.
+ * @param bool $is_active
+ * Value we want to set the is_active field.
*
- * @return Object DAO object on sucess, null otherwise
+ * @return Object
+ * DAO object on sucess, null otherwise
* @static
*/
- static function setIsActive($id, $is_active) {
+ public static function setIsActive($id, $is_active) {
return CRM_Core_DAO::setFieldValue('CRM_Member_DAO_MembershipType', $id, 'is_active', $is_active);
}
/**
- * function to add the membership types
+ * Add the membership types
*
- * @param array $params reference array contains the values submitted by the form
- * @param array $ids array contains the id (deprecated)
+ * @param array $params
+ * Reference array contains the values submitted by the form.
+ * @param array $ids
+ * Array contains the id (deprecated).
*
- * @access public
* @static
*
* @return object
*/
- static function add(&$params, $ids = array()) {
+ public static function add(&$params, $ids = array()) {
$id = CRM_Utils_Array::value('id', $params, CRM_Utils_Array::value('membershipType', $ids));
if (!$id) {
if (!isset($params['is_active'])) {
$membershipType->copyValues($params);
$membershipType->id = $id;
- // $previousID is the old organization id for membership type i.e 'member_of_contact_id'. This is used when an oganization is changed.
+ // $previousID is the old organization id for membership type i.e 'member_of_contact_id'. This is used when an organization is changed.
$previousID = NULL;
- if ($membershipType->id) {
- $previousID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $membershipType->id, 'member_of_contact_id');
+ if ($id) {
+ $previousID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $id, 'member_of_contact_id');
}
$membershipType->save();
-
- self::createMembershipPriceField($params, $ids, $previousID, $membershipType->id);
+ if ($id) {
+ // on update we may need to retrieve some details for the price field function - otherwise we get e-notices on attempts to retrieve
+ // name etc - the presence of previous id tells us this is an update
+ $params = array_merge(civicrm_api3('membership_type', 'getsingle', array('id' => $membershipType->id)), $params);
+ }
+ self::createMembershipPriceField($params, $previousID, $membershipType->id);
// update all price field value for quick config when membership type is set CRM-11718
if ($id) {
self::updateAllPriceFieldValue($id, $params);
}
/**
- * Function to delete membership Types
+ * Delete membership Types
*
* @param int $membershipTypeId
*
* @return bool|mixed
* @static
*/
- static function del($membershipTypeId) {
+ public static function del($membershipTypeId) {
//check dependencies
$check = FALSE;
$status = array();
}
/**
- * Function to convert membership Type's 'start day' & 'rollover day' to human readable formats.
+ * Convert membership Type's 'start day' & 'rollover day' to human readable formats.
*
- * @param array $membershipType an array of membershipType-details.
+ * @param array $membershipType
+ * An array of membershipType-details.
* @static
*/
- static function convertDayFormat(&$membershipType) {
+ public static function convertDayFormat(&$membershipType) {
$periodDays = array(
'fixed_period_start_day',
'fixed_period_rollover_day',
}
/**
- * Function to get membership Types
+ * Get membership Types
*
* @param bool $public
*
* @return array
- * @internal param int $membershipTypeId
* @static
*/
- static function getMembershipTypes($public = TRUE) {
+ public static function getMembershipTypes($public = TRUE) {
$membershipTypes = array();
$membershipType = new CRM_Member_DAO_MembershipType();
$membershipType->is_active = 1;
}
/**
- * Function to get membership Type Details
+ * Get membership Type Details
*
* @param int $membershipTypeId
*
* @return array|null
* @static
*/
- static function getMembershipTypeDetails($membershipTypeId) {
+ public static function getMembershipTypeDetails($membershipTypeId) {
$membershipTypeDetails = array();
$membershipType = new CRM_Member_DAO_MembershipType();
}
/**
- * Function to calculate start date and end date for new membership
+ * Calculate start date and end date for new membership
*
- * @param int $membershipTypeId membership type id
- * @param date $joinDate member since ( in mysql date format )
- * @param date $startDate start date ( in mysql date format )
+ * @param int $membershipTypeId
+ * Membership type id.
+ * @param date $joinDate
+ * Member since ( in mysql date format ).
+ * @param date $startDate
+ * Start date ( in mysql date format ).
* @param null $endDate
- * @param int $numRenewTerms how many membership terms are being added to end date (default is 1)
+ * @param int $numRenewTerms
+ * How many membership terms are being added to end date (default is 1).
*
- * @return array associated array with start date, end date and join date for the membership
+ * @return array
+ * associated array with start date, end date and join date for the membership
* @static
*/
public static function getDatesForMembershipType($membershipTypeId, $joinDate = NULL, $startDate = NULL, $endDate = NULL, $numRenewTerms = 1) {
// Check if we are on or after rollover day of the month - CRM-10585
// If so, set fixed_period_rollover TRUE so we increment end_date month below.
$dateParts = explode('-', $actualStartDate);
- if ($dateParts[2] >= $membershipTypeDetails['fixed_period_rollover_day']){
- $fixed_period_rollover = True;
+ if ($dateParts[2] >= $membershipTypeDetails['fixed_period_rollover_day']) {
+ $fixed_period_rollover = TRUE;
}
// Start date is always first day of actualStartDate month
}
/**
- * Function to calculate start date and end date for renewal membership
+ * Calculate start date and end date for renewal membership
*
* @param int $membershipId
* @param $changeToday
- * @param int $membershipTypeID - if provided, overrides the membership type of the $membershipID membership
- * @param int $numRenewTerms how many membership terms are being added to end date (default is 1)
+ * @param int $membershipTypeID
+ * If provided, overrides the membership type of the $membershipID membership.
+ * @param int $numRenewTerms
+ * How many membership terms are being added to end date (default is 1).
*
* CRM-7297 Membership Upsell - Added $membershipTypeID param to facilitate calculations of dates when membership type changes
*
- * @return Array array fo the start date, end date and join date of the membership
+ * @return Array
+ * array fo the start date, end date and join date of the membership
* @static
*/
public static function getRenewalDatesForMembershipType($membershipId, $changeToday = NULL, $membershipTypeID = NULL, $numRenewTerms = 1) {
$date = explode('-', $date);
$logStartDate = date('Y-m-d', mktime(0, 0, 0,
(double) $date[1],
- (double)($date[2] + 1),
+ (double) ($date[2] + 1),
(double) $date[0]
));
switch ($membershipTypeDetails['duration_unit']) {
case 'year':
//need to check if the upsell is from rolling to fixed and adjust accordingly
- if ($membershipTypeDetails['period_type'] == 'fixed' && $oldPeriodType == 'rolling' ) {
+ if ($membershipTypeDetails['period_type'] == 'fixed' && $oldPeriodType == 'rolling') {
$month = substr($membershipTypeDetails['fixed_period_start_day'], 0, strlen($membershipTypeDetails['fixed_period_start_day']) - 2);
$day = substr($membershipTypeDetails['fixed_period_start_day'], -2);
$year += 1;
- } else {
- $year = $year + ($numRenewTerms * $membershipTypeDetails['duration_interval']);
+ }
+ else {
+ $year = $year + ($numRenewTerms * $membershipTypeDetails['duration_interval']);
}
break;
}
/**
- * Function to retrieve all Membership Types associated
+ * Retrieve all Membership Types associated
* with an Organization
*
- * @param int $orgID Id of Organization
+ * @param int $orgID
+ * Id of Organization.
*
- * @return Array array of the details of membership types
+ * @return Array
+ * array of the details of membership types
* @static
*/
- static function getMembershipTypesByOrg($orgID) {
+ public static function getMembershipTypesByOrg($orgID) {
$membershipTypes = array();
$dao = new CRM_Member_DAO_MembershipType();
$dao->member_of_contact_id = $orgID;
}
/**
- * Function to retrieve all Membership Types with Member of Contact id
+ * Retrieve all Membership Types with Member of Contact id
*
* @param array membership types
*
- * @return Array array of the details of membership types with Member of Contact id
+ * @return Array
+ * array of the details of membership types with Member of Contact id
* @static
*/
- static function getMemberOfContactByMemTypes($membershipTypes) {
+ public static function getMemberOfContactByMemTypes($membershipTypes) {
$memTypeOrgs = array();
if (empty($membershipTypes)) {
return $memTypeOrgs;
/**
* The function returns all the Organization for all membershiptypes .
*
- * @param null $membershipTypeId
+ * @param int $membershipTypeId
*
* @return array
- * @internal param array $allmembershipTypes array of allMembershipTypes
- * with organization id Key - value pairs.
*/
- static function getMembershipTypeOrganization($membershipTypeId = NULL) {
+ public static function getMembershipTypeOrganization($membershipTypeId = NULL) {
$allmembershipTypes = array();
$membershipType = new CRM_Member_DAO_MembershipType();
* Funtion to retrieve organization and associated membership
* types
*
- * @return array arrays of organization and membership types
+ * @return array
+ * arrays of organization and membership types
*
* @static
- * @access public
*/
- static function getMembershipTypeInfo() {
+ public static function getMembershipTypeInfo() {
if (!self::$_membershipTypeInfo) {
$orgs = $types = array();
$query = 'SELECT memType.id, memType.name, memType.member_of_contact_id, c.sort_name
FROM civicrm_membership_type memType INNER JOIN civicrm_contact c ON c.id = memType.member_of_contact_id
WHERE memType.is_active = 1 ';
- $dao = CRM_Core_DAO::executeQuery( $query );
+ $dao = CRM_Core_DAO::executeQuery($query);
while ($dao->fetch()) {
$orgs[$dao->member_of_contact_id] = $dao->sort_name;
$types[$dao->member_of_contact_id][$dao->id] = $dao->name;
/**
- * @param $params
- * @param $ids
- * @param $previousID
- * @param $membershipTypeId
+ * @param array $params
+ * @param int $previousID
+ * @param int $membershipTypeId
*/
- public static function createMembershipPriceField($params, $ids, $previousID, $membershipTypeId) {
+ public static function createMembershipPriceField($params, $previousID, $membershipTypeId) {
$priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', 'default_membership_type_amount', 'id', 'name');
CRM_Member_Form_MembershipType::checkPreviousPriceField($previousID, $priceSetId, $membershipTypeId, $optionsIds);
$fieldParams['option_id'] = CRM_Utils_Array::value('option_id', $optionsIds);
}
- $priceField = CRM_Price_BAO_PriceField::create($fieldParams);
+ CRM_Price_BAO_PriceField::create($fieldParams);
}
else {
$fieldID = $results['id'];
/** This function updates all price field value for quick config
* price set which has membership type
*
- * @param integer membership type id
+ * @param integer membership type id
*
- * @param integer financial type id
+ * @param integer financial type id
*/
- static function updateAllPriceFieldValue($membershipTypeId, $params) {
- if (!empty($params['minimum_fee'])){
+ public static function updateAllPriceFieldValue($membershipTypeId, $params) {
+ if (!empty($params['minimum_fee'])) {
$amount = $params['minimum_fee'];
}
else {
CRM_Core_DAO::executeQuery($query, $queryParams);
}
}
-