'opac.default_pickup_location',
'opac.default_sms_carrier',
'opac.default_sms_notify'];
-
- return egCore.pcrud.search('cust', {
+
+ var opt_in_types = [];
+
+ return egCore.pcrud.search('atevdef',{owner : org_ids}, {}, {atomic : true})
+ .then(function(event_defs){
+ //get opt-in setting types from org unit's event definitions
+ angular.forEach(event_defs, function(def) {
+ var opt_in = def.opt_in_setting();
+ if(opt_in && opt_in_types.indexOf(opt_in) == -1){
+ opt_in_types.push(opt_in)
+ }
+ }
+ );
+ })
+ .then(function(){
+ return egCore.pcrud.search('cust', {
'-or' : [
{name : static_types}, // common user settings
- {name : { // opt-in notification user settings
- 'in': {
- select : {atevdef : ['opt_in_setting']},
- from : 'atevdef',
- // we only care about opt-in settings for
- // event_defs our users encounter
- where : {'+atevdef' : {owner : org_ids}}
- }
- }}
+ {name : opt_in_types}, //opt-in types
+ {opac_visible : 't'} // opac visible user settings
+
]
}, {}, {atomic : true}).then(function(setting_types) {
-
egCore.env.absorbList(setting_types, 'cust'); // why not...
angular.forEach(setting_types, function(stype) {
service.user_setting_types[stype.name()] = stype;
- if (static_types.indexOf(stype.name()) == -1) {
+ if (opt_in_types.indexOf(stype.name()) !== -1) {
service.opt_in_setting_types[stype.name()] = stype;
}
});
});
+ });
};
service.get_user_settings = function() {