X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FMember%2FBAO%2FMembershipType.php;h=e3c492cb9b289d531004b19db20835c5e6dd67d0;hb=23e35f75793a63e1c50249d322bcf1f2439415f8;hp=a9ac9bf2a82adce67b8bea785b8e00cffcb921c8;hpb=c3b9508c6f950351186517c3a321a0aed4ee7ff8;p=civicrm-core.git diff --git a/CRM/Member/BAO/MembershipType.php b/CRM/Member/BAO/MembershipType.php index a9ac9bf2a8..e3c492cb9b 100644 --- a/CRM/Member/BAO/MembershipType.php +++ b/CRM/Member/BAO/MembershipType.php @@ -49,16 +49,12 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { } /** - * 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 * - * @return object CRM_Member_BAO_MembershipType object + * @return CRM_Member_BAO_MembershipType object * @access public * @static */ @@ -86,49 +82,61 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { } /** - * 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 reference array contains the id + * @param array $ids array contains the id (deprecated) * * @access public * @static * * @return object */ - static function add(&$params, &$ids) { - $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); + 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'])) { + // do we need this? + $params['is_active'] = FALSE; + } + if (!isset($params['domain_id'])) { + $params['domain_id'] = CRM_Core_Config::domainID(); + } + } // action is taken depending upon the mode $membershipType = new CRM_Member_DAO_MembershipType(); - $membershipType->copyValues($params); + $membershipType->id = $id; - $membershipType->domain_id = CRM_Core_Config::domainID(); - - $membershipType->id = CRM_Utils_Array::value('membershipType', $ids); - - // $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 (!empty($ids['membershipType'])) { - self::updateAllPriceFieldValue($ids['membershipType'], $params); + if ($id) { + self::updateAllPriceFieldValue($id, $params); } return $membershipType; } /** - * Function to delete membership Types + * delete membership Types * * @param int $membershipTypeId + * + * @throws CRM_Core_Exception + * @return bool|mixed * @static */ static function del($membershipTypeId) { @@ -180,7 +188,7 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { } /** - * 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. * @static @@ -223,7 +231,9 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { /** * Function to get membership Types * - * @param int $membershipTypeId + * @param bool $public + * + * @return array * @static */ static function getMembershipTypes($public = TRUE) { @@ -246,6 +256,8 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { * Function to get membership Type Details * * @param int $membershipTypeId + * + * @return array|null * @static */ static function getMembershipTypeDetails($membershipTypeId) { @@ -267,10 +279,11 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { /** * Function to calculate start date and end date for new membership * - * @param int $membershipTypeId membership type id + * @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 $numRenewTerms how many membership terms are being added to end date (default is 1) + * @param null $endDate + * @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 * @static @@ -592,10 +605,12 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { return $memTypeOrgs; } - /** The function returns all the Organization for all membershiptypes . - * @param array $allmembershipTypes array of allMembershipTypes - * with organization id Key - value pairs. + /** + * The function returns all the Organization for all membershiptypes . * + * @param int $membershipTypeId + * + * @return array */ static function getMembershipTypeOrganization($membershipTypeId = NULL) { $allmembershipTypes = array(); @@ -641,7 +656,12 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { } - public static function createMembershipPriceField($params, $ids, $previousID, $membershipTypeId) { + /** + * @param array $params + * @param $previousID + * @param $membershipTypeId + */ + public static function createMembershipPriceField($params, $previousID, $membershipTypeId) { $priceSetId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', 'default_membership_type_amount', 'id', 'name'); @@ -678,7 +698,7 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { 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'];