@@ -31,7 +31,7 @@ define([
3131 password : window . lrs . secret
3232 } ,
3333 _queryResponseMap : {
34- 'actor.mbox ' : 'actors' ,
34+ 'actor' : 'actors' ,
3535 'verb.id' : 'verbs' ,
3636 'object.id' : 'activities' ,
3737 'object.definition.type' : 'activityTypes' ,
@@ -41,34 +41,26 @@ define([
4141 'context.instructor' : 'instructors' ,
4242 'context.language' : 'languages'
4343 } ,
44+ _mapActorToResponse : function ( query , response , responseKey , queryKey ) {
45+ var identifierKeys = [ 'mbox' , 'account' , 'openid' , 'mbox_sha1sum' ] ;
46+
47+ return identifierKeys . reduce ( function ( actors , identifierKey ) {
48+ var xapiKey = 'statement.' + queryKey + '.' + identifierKey ;
49+ if ( query [ xapiKey ] != null ) {
50+ return actors . concat ( query [ xapiKey ] . map ( function ( identifier ) {
51+ var display = identifierKey === 'account' ? identifier . homePage + ' / ' + identifier . name : identifier ;
52+ return ( identifierKey === 'mbox' ? '' : identifierKey + ':' ) + display ;
53+ } ) ) ;
54+ } else {
55+ return actors ;
56+ }
57+ } , [ ] ) ;
58+ } ,
4459 _mapQueryToResponse : function ( query , response ) {
4560 Object . keys ( this . _queryResponseMap ) . forEach ( function ( queryKey ) {
4661 var responseKey = this . _queryResponseMap [ queryKey ] ;
47- if ( responseKey === 'actors' ) {
48- var actorValues = [ 'actor.mbox' , 'actor.account' , 'actor.openid' , 'actor.mbox_sha1sum' ] ;
49- var consolidatedActors = [ ] ;
50- actorValues . forEach ( function ( value , index , originalArray ) {
51- queryKey = 'statement.' + value ;
52- if ( typeof query [ queryKey ] !== "undefined" ) {
53- var tempArray = [ ] ;
54- var queryLabel = '' ;
55- switch ( value ) {
56- case 'actor.mbox' : queryLabel = '' ; break ;
57- case 'actor.account' : queryLabel = 'account:' ; break ;
58- case 'actor.openid' : queryLabel = 'openid:' ; break ;
59- case 'actor.mbox_sha1sum' : queryLabel = 'mbox_sha1sum:' ; break ;
60- }
61- query [ queryKey ] . forEach ( function ( val , ind , orgArr ) {
62- if ( queryKey === 'statement.actor.account' ) {
63- tempArray . push ( queryLabel + val . homePage + ' / ' + val . name ) ;
64- } else {
65- tempArray . push ( queryLabel + query [ queryKey ] [ ind ] ) ;
66- }
67- } ) ;
68- consolidatedActors = consolidatedActors . concat ( tempArray ) ;
69- }
70- } ) ;
71- response [ responseKey ] = consolidatedActors ;
62+ if ( responseKey === 'actors' || responseKey === 'instructors' ) {
63+ response [ responseKey ] = this . _mapActorToResponse ( query , response , responseKey , queryKey ) ;
7264 } else {
7365 queryKey = 'statement.' + queryKey ;
7466 response [ responseKey ] = query [ queryKey ] ;
@@ -79,7 +71,7 @@ define([
7971 var query = this . get ( 'query' ) ;
8072 Object . keys ( this . _queryResponseMap ) . forEach ( function ( queryKey ) {
8173 var responseKey = this . _queryResponseMap [ queryKey ] ;
82- if ( responseKey == 'actors' ) {
74+ if ( responseKey === 'actors' || responseKey === 'instructors ') {
8375 //consolidate actor query values by type of IFI
8476 var combined = { 'account' :[ ] , 'openid' :[ ] , 'mbox_sha1sum' :[ ] , 'mailto' :[ ] } ;
8577 ( this . get ( responseKey ) || [ ] ) . map ( function ( model ) {
@@ -125,17 +117,17 @@ define([
125117 Object . keys ( combined ) . forEach ( function ( value , index , originalArray ) {
126118 if ( combined [ value ] . length > 0 ) {
127119 switch ( value ) {
128- case 'account' : query [ 'statement.actor .account' ] = combined [ value ] ; break ;
129- case 'mailto' : query [ 'statement.actor .mbox' ] = combined [ value ] ; break ;
130- case 'openid' : query [ 'statement.actor .openid' ] = combined [ value ] ; break ;
131- case 'mbox_sha1sum' : query [ 'statement.actor .mbox_sha1sum' ] = combined [ value ] ; break ;
120+ case 'account' : query [ 'statement.' + queryKey + ' .account'] = combined [ value ] ; break ;
121+ case 'mailto' : query [ 'statement.' + queryKey + ' .mbox'] = combined [ value ] ; break ;
122+ case 'openid' : query [ 'statement.' + queryKey + ' .openid'] = combined [ value ] ; break ;
123+ case 'mbox_sha1sum' : query [ 'statement.' + queryKey + ' .mbox_sha1sum'] = combined [ value ] ; break ;
132124 }
133125 } else {
134126 switch ( value ) {
135- case 'account' : query [ 'statement.actor .account' ] = undefined ; break ;
136- case 'mailto' : query [ 'statement.actor .mbox' ] = undefined ; break ;
137- case 'openid' : query [ 'statement.actor .openid' ] = undefined ; break ;
138- case 'mbox_sha1sum' : query [ 'statement.actor .mbox_sha1sum' ] = undefined ; break ;
127+ case 'account' : query [ 'statement.' + queryKey + ' .account'] = undefined ; break ;
128+ case 'mailto' : query [ 'statement.' + queryKey + ' .mbox'] = undefined ; break ;
129+ case 'openid' : query [ 'statement.' + queryKey + ' .openid'] = undefined ; break ;
130+ case 'mbox_sha1sum' : query [ 'statement.' + queryKey + ' .mbox_sha1sum'] = undefined ; break ;
139131 }
140132 }
141133 } ) ;
0 commit comments