name = $params['name']; if ($status->find(TRUE) && $status->id != $params['id']) { return civicrm_api3_create_error(ts('A membership status with this name already exists.')); } } $membershipStatusBAO = new CRM_Member_BAO_MembershipStatus(); $membershipStatusBAO->id = $params['id']; if ($membershipStatusBAO->find(TRUE)) { $fields = $membershipStatusBAO->fields(); foreach ($fields as $name => $field) { if (array_key_exists($name, $params)) { $membershipStatusBAO->$name = $params[$name]; } } $membershipStatusBAO->save(); } $membershipStatus = array(); _civicrm_api3_object_to_array(clone($membershipStatusBAO), $membershipStatus); $membershipStatus['is_error'] = 0; return $membershipStatus; } /** * Deletes an existing membership status * * This API is used for deleting a membership status * * @param array Params array containing 'id' - Id of the membership status to be deleted * {@getfields MembershipStatus_delete} * * @return array i * @access public */ function civicrm_api3_membership_status_delete($params) { $memberStatusDelete = CRM_Member_BAO_MembershipStatus::del($params['id'], TRUE); return $memberStatusDelete ? civicrm_api3_create_error($memberStatusDelete['error_message']) : civicrm_api3_create_success(); } /** * Derives the Membership Status of a given Membership Reocrd * * This API is used for deriving Membership Status of a given Membership * record using the rules encoded in the membership_status table. * * @param Int $membershipID Id of a membership * @param String $statusDate * * @return Array Array of status id and status name * @public */ function civicrm_api3_membership_status_calc($membershipParams) { if (!($membershipID = CRM_Utils_Array::value('membership_id', $membershipParams))) { return civicrm_api3_create_error('membershipParams do not contain membership_id'); } $query = " SELECT start_date, end_date, join_date FROM civicrm_membership WHERE id = %1 "; $params = array(1 => array($membershipID, 'Integer')); $dao = &CRM_Core_DAO::executeQuery($query, $params); if ($dao->fetch()) { // Take the is_admin column in MembershipStatus into consideration when requested if (empty($membershipParams['ignore_admin_only'])) { $result = &CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dao->start_date, $dao->end_date, $dao->join_date, 'today', TRUE); } else { $result = &CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dao->start_date, $dao->end_date, $dao->join_date); } //make is error zero only when valid status found. if (!empty($result['id'])) { $result['is_error'] = 0; } } else { $result = civicrm_api3_create_error('did not find a membership record'); } $dao->free(); return $result; }