* @package CRM
* @copyright CiviCRM LLC https://civicrm.org/licensing
*/
-class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implements \Civi\Test\HookInterface {
+class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implements \Civi\Core\HookInterface {
/**
* Static holder for the default Membership Type.
public static $_membershipTypeInfo = [];
/**
- * Class constructor.
- */
- public function __construct() {
- parent::__construct();
- }
-
- /**
- * Fetch object based on array of properties.
+ * Retrieve DB object and copy to defaults array.
*
* @param array $params
- * (reference ) an assoc array of name/value pairs.
+ * Array of criteria values.
* @param array $defaults
- * (reference ) an assoc array to hold the flattened values.
+ * Array to be populated with found values.
+ *
+ * @return self|null
+ * The DAO object, if found.
*
- * @return CRM_Member_BAO_MembershipType
+ * @deprecated
*/
- public static function retrieve(&$params, &$defaults) {
- $membershipType = new CRM_Member_DAO_MembershipType();
- $membershipType->copyValues($params);
- if ($membershipType->find(TRUE)) {
- CRM_Core_DAO::storeValues($membershipType, $defaults);
- return $membershipType;
- }
- return NULL;
+ public static function retrieve($params, &$defaults) {
+ return self::commonRetrieve(self::class, $params, $defaults);
}
/**
$membershipTypeId = $params['id'] ?? NULL;
- if (!$membershipTypeId) {
- 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();
- }
+ if (!$membershipTypeId && !isset($params['domain_id'])) {
+ $params['domain_id'] = CRM_Core_Config::domainID();
}
// $previousID is the old organization id for membership type i.e 'member_of_contact_id'. This is used when an organization is changed.
*
* @param int $membershipTypeId
*
+ * @deprecated
* @throws CRM_Core_Exception
- * @return bool|mixed
+ * @return bool
*/
public static function del($membershipTypeId) {
- // Check dependencies.
- $check = FALSE;
- $status = [];
- $dependency = [
- 'Membership' => 'membership_type_id',
- 'MembershipBlock' => 'membership_type_default',
- ];
-
- foreach ($dependency as $name => $field) {
- $baoString = 'CRM_Member_BAO_' . $name;
- $dao = new $baoString();
- $dao->$field = $membershipTypeId;
- /** @noinspection PhpUndefinedMethodInspection */
- if ($dao->find(TRUE)) {
- $check = TRUE;
- $status[] = $name;
- }
- }
- if ($check) {
- $cnt = 1;
- $message = ts('This membership type cannot be deleted due to following reason(s):');
- if (in_array('Membership', $status)) {
- $findMembersURL = CRM_Utils_System::url('civicrm/member/search', 'reset=1');
- $deleteURL = CRM_Utils_System::url('civicrm/contact/search/advanced', 'reset=1');
- $message .= '<br/>' . ts('%3. There are some contacts who have this membership type assigned to them. Search for contacts with this membership type from <a href=\'%1\'>Find Members</a>. If you are still getting this message after deleting these memberships, there may be contacts in the Trash (deleted) with this membership type. Try using <a href="%2">Advanced Search</a> and checking "Search in Trash".', [
- 1 => $findMembersURL,
- 2 => $deleteURL,
- 3 => $cnt,
- ]);
- $cnt++;
- }
-
- if (in_array('MembershipBlock', $status)) {
- $deleteURL = CRM_Utils_System::url('civicrm/admin/contribute', 'reset=1');
- $message .= ts('%2. This Membership Type is used in an <a href=\'%1\'>Online Contribution page</a>. Uncheck this membership type in the Memberships tab.', [
- 1 => $deleteURL,
- 2 => $cnt,
- ]);
- throw new CRM_Core_Exception($message);
- }
+ try {
+ static::deleteRecord(['id' => $membershipTypeId]);
+ return TRUE;
}
- CRM_Utils_Weight::delWeight('CRM_Member_DAO_MembershipType', $membershipTypeId);
- //delete from membership Type table
- $membershipType = new CRM_Member_DAO_MembershipType();
- $membershipType->id = $membershipTypeId;
-
- //fix for membership type delete api
- $result = FALSE;
- if ($membershipType->find(TRUE)) {
- return $membershipType->delete();
+ catch (CRM_Core_Exception $e) {
+ return FALSE;
}
-
- return $result;
}
/**
}
}
}
+ if ($event->action === 'delete' && $event->entity === 'MembershipType') {
+ // Check dependencies.
+ $check = FALSE;
+ $status = [];
+ $dependency = [
+ 'Membership' => 'membership_type_id',
+ 'MembershipBlock' => 'membership_type_default',
+ ];
+
+ foreach ($dependency as $name => $field) {
+ $baoString = 'CRM_Member_BAO_' . $name;
+ $dao = new $baoString();
+ $dao->$field = $event->id;
+ if ($dao->find(TRUE)) {
+ $check = TRUE;
+ $status[] = $name;
+ }
+ }
+ if ($check) {
+ $cnt = 1;
+ $message = ts('This membership type cannot be deleted due to following reason(s):');
+ if (in_array('Membership', $status)) {
+ $findMembersURL = CRM_Utils_System::url('civicrm/member/search', 'reset=1');
+ $deleteURL = CRM_Utils_System::url('civicrm/contact/search/advanced', 'reset=1');
+ $message .= '<br/>' . ts('%3. There are some contacts who have this membership type assigned to them. Search for contacts with this membership type from <a href=\'%1\'>Find Members</a>. If you are still getting this message after deleting these memberships, there may be contacts in the Trash (deleted) with this membership type. Try using <a href="%2">Advanced Search</a> and checking "Search in Trash".', [
+ 1 => $findMembersURL,
+ 2 => $deleteURL,
+ 3 => $cnt,
+ ]);
+ $cnt++;
+ }
+
+ if (in_array('MembershipBlock', $status)) {
+ $deleteURL = CRM_Utils_System::url('civicrm/admin/contribute', 'reset=1');
+ $message .= ts('%2. This Membership Type is used in an <a href=\'%1\'>Online Contribution page</a>. Uncheck this membership type in the Memberships tab.', [
+ 1 => $deleteURL,
+ 2 => $cnt,
+ ]);
+ throw new CRM_Core_Exception($message);
+ }
+ }
+ CRM_Utils_Weight::delWeight('CRM_Member_DAO_MembershipType', $event->id);
+ }
}
/**