Merge pull request #13722 from civicrm/5.11
[civicrm-core.git] / js / jquery / jquery.crmProfileSelector.js
index b46dd499dced245a2d6c870d4d1d39d8c899b0ef..83d1cfcf3a25249ca3c0a562512c354656e33f5f 100644 (file)
         $select = $(this).hide().addClass('rendered');
 
       var validTypesId = [];
+      var usedByFilter = null;
       if (options.groupTypeFilter) {
         matchingUfGroups = ufGroupCollection.subcollection({
           filter: function(ufGroupModel) {
-            return ufGroupModel.checkGroupType(options.groupTypeFilter, options.allowAllSubtypes);
+            //CRM-16915 - filter with module used by the profile
+            if (options.usedByFilter && options.usedByFilter.length) {
+              usedByFilter = options.usedByFilter;
+            }
+            return ufGroupModel.checkGroupType(options.groupTypeFilter, options.allowAllSubtypes, usedByFilter);
           }
         });
       } else {
@@ -40,7 +45,7 @@
       }
 
       //CRM-15427 check for valid subtypes raise a warning if not valid
-      if (options.allowAllSubtypes && $.isEmptyObject(validTypesId)) {
+      if (options.allowAllSubtypes && !validTypesId.length) {
         validTypes = ufGroupCollection.subcollection({
           filter: function(ufGroupModel) {
             return ufGroupModel.checkGroupType(options.groupTypeFilter);
@@ -50,7 +55,7 @@
           validTypesId.push(validTypesattr.id);
         });
       }
-      if (!$.isEmptyObject(validTypesId) && $.inArray($select.val(), validTypesId) == -1) {
+      if (validTypesId.length && $.inArray($select.val(), validTypesId) == -1) {
         var civiComponent;
         if (options.groupTypeFilter.indexOf('Membership') !== -1) {
           civiComponent = 'Membership';
@@ -85,7 +90,8 @@
         groupTypeFilter: $(this).data('groupType'),
         entities: $(this).data('entities'),
         //CRM-15427
-        allowAllSubtypes: $(this).data('default')
+        allowAllSubtypes: $(this).data('default'),
+        usedByFilter: $(this).data('usedfor')
       });
     });
   });