--- loncom/interface/courseclassifier.pm 2017/01/18 21:24:39 1.26 +++ loncom/interface/courseclassifier.pm 2019/07/23 13:58:53 1.27 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utilities for classifying courses based on institutional code # -# $Id: courseclassifier.pm,v 1.26 2017/01/18 21:24:39 raeburn Exp $ +# $Id: courseclassifier.pm,v 1.27 2019/07/23 13:58:53 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -34,22 +34,6 @@ use Apache::loncommon; use Apache::lonlocal; use LONCAPA; -sub retrieve_instcodes { - my ($coursecodes,$codedom) = @_; - my $totcodes; - my %courses = &Apache::lonnet::courseiddump($codedom,'.',1,'.','.','.', - undef,undef,'Course'); - foreach my $course (keys(%courses)) { - if (ref($courses{$course}) eq 'HASH') { - if ($courses{$course}{'inst_code'} ne '') { - $$coursecodes{$course} = $courses{$course}{'inst_code'}; - $totcodes ++; - } - } - } - return $totcodes; -} - sub sort_cats { my ($num,$cat_order,$codetitles,$idsarrayref,$sorted) = @_; my @unsorted = @{$idsarrayref}; @@ -533,15 +517,18 @@ END sub instcode_selectors_data { my ($codedom,$formname,$cat_items,$codetitles,$cat_titles,$cat_order,$officialjs) = @_; - my ($jscript,%coursecodes,%codes,%idlist,%idnums,%idlist_titles, - %by_year,%by_sem,%by_dept); - my ($numtitles,$lasttitle); - my $caller = 'global'; - my $totcodes = &retrieve_instcodes(\%coursecodes,$codedom); - if ($totcodes > 0) { - if (&Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes, - \%codes,$codetitles,$cat_titles,$cat_order) eq 'ok') { - &build_code_selections(\%codes,$codetitles,$cat_titles,$cat_order, + my ($jscript,$codes,%idlist,%idnums,%idlist_titles,%by_year,%by_sem,%by_dept); + my ($numtitles,$lasttitle,$totcodes); + my $instcats = &Apache::lonnet::get_dom_instcats($codedom); + if (ref($instcats) eq 'HASH') { + if ((ref($instcats->{'codetitles'}) eq 'ARRAY') && (ref($instcats->{'codes'}) eq 'HASH') && + (ref($instcats->{'cat_titles'}) eq 'HASH') && (ref($instcats->{'cat_order'}) eq 'HASH')) { + %{$codes} = %{$instcats->{'codes'}}; + @{$codetitles} = @{$instcats->{'codetitles'}}; + %{$cat_titles} = %{$instcats->{'cat_titles'}}; + %{$cat_order} = %{$instcats->{'cat_order'}}; + $totcodes = scalar(keys(%{$codes})); + &build_code_selections($codes,$codetitles,$cat_titles,$cat_order, \%idlist,\%idnums,\%idlist_titles); my ($scripttext,$longtitles) = &javascript_definitions($codetitles,\%idlist,\%idlist_titles, @@ -1061,16 +1048,17 @@ sub instcode_search_str { sub instcode_from_selectors { my ($cdom,$noregexps) = @_; my $instcode; - my $caller = 'global'; - my (%coursecodes,%codes,@codetitles,%cat_titles,%cat_order, - %codedefaults,@code_order); - my $format_reply = - &Apache::lonnet::auto_instcode_format($caller,$cdom,\%coursecodes, - \%codes,\@codetitles,\%cat_titles,\%cat_order); + my (@codetitles,%codedefaults,@code_order); + my $instcats = &Apache::lonnet::get_dom_instcats($cdom); + if (ref($instcats) eq 'HASH') { + if (ref($instcats->{'codetitles'}) eq 'ARRAY') { + @codetitles = @{$instcats->{'codetitles'}}; + } + } my $defaults_result = &Apache::lonnet::auto_instcode_defaults($cdom,\%codedefaults, \@code_order); - if (($defaults_result eq 'ok') && ($format_reply eq 'ok')) { + if (($defaults_result eq 'ok') && (@codetitles > 0)) { my @standardnames = &Apache::loncommon::get_standard_codeitems(); my %local_to_standard; for (my $i=0; $i<@codetitles; $i++) {