--- loncom/interface/courseprefs.pm 2023/06/03 11:21:37 1.124 +++ loncom/interface/courseprefs.pm 2023/07/20 12:47:10 1.125 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set configuration settings for a course # -# $Id: courseprefs.pm,v 1.124 2023/06/03 11:21:37 raeburn Exp $ +# $Id: courseprefs.pm,v 1.125 2023/07/20 12:47:10 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1914,7 +1914,7 @@ sub process_ltitools { if ($env{'form.ltitools_add'}) { my $title = $env{'form.ltitools_add_title'}; $title =~ s/(`)/'/g; - my ($newid,$error) = &get_ltitools_id($context,$cdom,$cnum,$title); + my ($newid,$error) = &Apache::lonnet::get_ltitools_id($context,$cdom,$cnum,$title); if ($newid) { my $position = $env{'form.ltitools_add_pos'}; $position =~ s/\D+//g; @@ -2368,73 +2368,6 @@ sub process_ltitools { return $errors; } -sub get_ltitools_id { - my ($context,$cdom,$cnum,$title) = @_; - my ($lockhash,$tries,$gotlock,$id,$error); - - # get lock on ltitools db - $lockhash = { - lock => $env{'user.name'}. - ':'.$env{'user.domain'}, - }; - $tries = 0; - if ($context eq 'domain') { - $gotlock = &Apache::lonnet::newput_dom('ltitools',$lockhash,$cdom); - } else { - $gotlock = &Apache::lonnet::newput('ltitools',$lockhash,$cdom,$cnum); - } - while (($gotlock ne 'ok') && ($tries<10)) { - $tries ++; - sleep (0.1); - if ($context eq 'domain') { - $gotlock = &Apache::lonnet::newput_dom('ltitools',$lockhash,$cdom); - } else { - $gotlock = &Apache::lonnet::newput('ltitools',$lockhash,$cdom,$cnum); - } - } - if ($gotlock eq 'ok') { - my %currids; - if ($context eq 'domain') { - %currids = &Apache::lonnet::dump_dom('ltitools',$cdom); - } else { - %currids = &Apache::lonnet::dump('ltitools',$cdom,$cnum); - } - if ($currids{'lock'}) { - delete($currids{'lock'}); - if (keys(%currids)) { - my @curr = sort { $a <=> $b } keys(%currids); - if ($curr[-1] =~ /^\d+$/) { - $id = 1 + $curr[-1]; - } - } else { - $id = 1; - } - if ($id) { - if ($context eq 'domain') { - unless (&Apache::lonnet::newput_dom('ltitools',{ $id => $title },$cdom) eq 'ok') { - $error = 'nostore'; - } - } else { - unless (&Apache::lonnet::newput('ltitools',{ $id => $title },$cdom,$cnum) eq 'ok') { - $error = 'nostore'; - } - } - } else { - $error = 'nonumber'; - } - } - my $dellockoutcome; - if ($context eq 'domain') { - $dellockoutcome = &Apache::lonnet::del_dom('ltitools',['lock'],$cdom); - } else { - $dellockoutcome = &Apache::lonnet::del('ltitools',['lock'],$cdom,$cnum); - } - } else { - $error = 'nolock'; - } - return ($id,$error); -} - sub process_ltitools_image { my ($r,$context,$dom,$cnum,$confname,$caller,$itemid,$configuserok,$switch,$author_ok,$currimg) = @_; my $filename = $env{'form.'.$caller.'.filename'};