Exemplo n.º 1
0
 /**
  * Delete membership Types.
  *
  * @param int $membershipTypeId
  *
  * @throws CRM_Core_Exception
  * @return bool|mixed
  */
 public static function del($membershipTypeId)
 {
     // Check dependencies.
     $check = FALSE;
     $status = array();
     $dependency = array('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".', array(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.', array(1 => $deleteURL, 2 => $cnt));
             throw new CRM_Core_Exception($message);
         }
     }
     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();
     }
     return $result;
 }
 /**
  * Function to delete membership Types
  *
  * @param int $membershipTypeId
  * @static
  */
 static function del($membershipTypeId, $skipRedirect = FALSE)
 {
     //check dependencies
     $check = FALSE;
     $status = array();
     $dependancy = array('Membership' => 'membership_type_id', 'MembershipBlock' => 'membership_type_default');
     foreach ($dependancy as $name => $field) {
         require_once str_replace('_', DIRECTORY_SEPARATOR, "CRM_Member_DAO_" . $name) . ".php";
         eval('$dao = new CRM_Member_DAO_' . $name . '();');
         $dao->{$field} = $membershipTypeId;
         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)) {
             $deleteURL = CRM_Utils_System::url('civicrm/member/search', 'reset=1');
             $message .= '<br/>' . ts('%2. There are some contacts who have this membership type assigned to them. Search for contacts with this membership type on the <a href=\'%1\'>CiviMember >> Find Members</a> page. If you delete all memberships of this type, you will then be able to delete the membership type on this page. To delete the membership type, all memberships of this type should be deleted.', array(1 => $deleteURL, 2 => $cnt));
             $cnt++;
         }
         if (in_array('MembershipBlock', $status)) {
             $deleteURL = CRM_Utils_System::url('civicrm/admin/contribute', 'reset=1');
             $message .= '<br/>' . ts('%2. This Membership Type is being link to <a href=\'%1\'>Online Contribution page</a>. Please change/delete it in order to delete this Membership Type.', array(1 => $deleteURL, 2 => $cnt));
         }
         if (!$skipRedirect) {
             $session = CRM_Core_Session::singleton();
             CRM_Core_Session::setStatus($message);
             return CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/admin/member/membershipType', 'reset=1&action=browse'));
         } else {
             $error = array();
             $error['is_error'] = 1;
             //don't translate as api error message are not translated
             $error['error_message'] = $message;
             return $error;
         }
     }
     //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)) {
         $membershipType->delete();
         $result = TRUE;
     }
     return $result;
 }