dev/core#128 Add deprecated warning helper function
[civicrm-core.git] / CRM / Member / BAO / MembershipType.php
index a90adf324a32bc01d259536509d7254dcf981672..66c9cd2a8e9787d72096d645889e70fef5e22df0 100644 (file)
@@ -91,12 +91,24 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType {
    * @param array $ids
    *   Array contains the id (deprecated).
    *
-   *
-   * @return object
+   * @return \CRM_Member_DAO_MembershipType
+   * @throws \CiviCRM_API3_Exception
    */
   public static function add(&$params, $ids = array()) {
-    $id = CRM_Utils_Array::value('id', $params, CRM_Utils_Array::value('membershipType', $ids));
-    if (!$id) {
+    // DEPRECATED Check if membershipType ID was passed in via $ids
+    if (empty($params['id'])) {
+      if (isset($ids['membershipType'])) {
+        Civi::log()->warning('Deprecated: Passing membershipType by $ids array in CRM_Member_BAO_MembershipType::add');
+      }
+      $params['id'] = CRM_Utils_Array::value('membershipType', $ids);
+    }
+
+    $hook = empty($params['id']) ? 'create' : 'edit';
+    CRM_Utils_Hook::pre($hook, 'MembershipType', CRM_Utils_Array::value('id', $params), $params);
+
+    $membershipTypeId = CRM_Utils_Array::value('id', $params);
+
+    if (!$membershipTypeId) {
       if (!isset($params['is_active'])) {
         // do we need this?
         $params['is_active'] = FALSE;
@@ -106,28 +118,30 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType {
       }
     }
 
-    // action is taken depending upon the mode
-    $membershipType = new CRM_Member_DAO_MembershipType();
-    $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 organization is changed.
     $previousID = NULL;
-    if ($id) {
-      $previousID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $id, 'member_of_contact_id');
+    if ($membershipTypeId) {
+      $previousID = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $membershipTypeId, 'member_of_contact_id');
     }
 
+    // action is taken depending upon the mode
+    $membershipType = new CRM_Member_DAO_MembershipType();
+    $membershipType->copyValues($params);
     $membershipType->save();
-    if ($id) {
+
+    if ($membershipTypeId) {
       // 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);
+    if ($membershipTypeId) {
+      self::updateAllPriceFieldValue($membershipTypeId, $params);
     }
+
+    CRM_Utils_Hook::post($hook, 'MembershipType', $membershipType->id, $membershipType);
+
     self::flush();
     return $membershipType;
   }
@@ -622,7 +636,7 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType {
    *   array of the details of membership types
    */
   public static function getMembershipTypesByOrg($orgID) {
-    Civi::log()->warning('Deprecated function getMembershipTypesByOrg, please user membership_type api', array('civi.tag' => 'deprecated'));
+    CRM_Core_Error::deprecatedFunctionWarning('membership_type api');
     $memberTypesSameParentOrg = civicrm_api3('MembershipType', 'get', array(
       'member_of_contact_id' => $orgID,
       'options' => array(