--- loncom/html/adm/helper/resettimes.helper 2005/01/16 08:04:10 1.1 +++ loncom/html/adm/helper/resettimes.helper 2016/03/17 15:10:10 1.10 @@ -4,8 +4,8 @@ Select - Reset times on one or more maps for a single student. - Reset times on a single map for a section or whole clase. + Reset times on one or more folders/maps, resources or the course for a single student. + Reset times on a single folder/map, resource or the course for a section or the whole class. @@ -16,39 +16,101 @@ + + This is a list of first access times and what was accessed, please select those you want deleted. + - FinishStu my ($uname,$udom,$sec,$fullname)=split(':',$helper->{'VARS'}{'stu1'}); my %times=&Apache::lonnet::dump('firstaccesstimes',$udom,$uname, - "^$ENV{'request.course.id'}\0"); + "^$env{'request.course.id'}\0"); foreach my $res (sort(keys(%times))) { my (undef,$symb)=split("\0",$res); my $escsymb=&Apache::lonnet::escape($symb); - my $title=&Apache::lonnet::gettitle($symb); + my $title = + ($symb ne 'course') ? &Apache::lonnet::gettitle($symb) + : $env{'course.'.$env{'request.course.id'}.'.description'}; my $time=&Apache::lonlocal::locallocaltime($times{$res}); - my $description="$title"; + my $description="$title on $time"; push(@{$state->{CHOICES}},[$description,$escsymb]); } + + + Will remove access times from user
    + + + my ($uname,$udom,undef,$fullname)=split(':',$helper->{'VARS'}{'stu1'}); + if (!$fullname) { $fullname="$uname\@$udom"; } + return '
  • '.$fullname.'
  • '; +
    +
for
    + + my $list; + my @symbs=split(/\|\|\|/,$helper->{'VARS'}{'delete'}); + foreach my $escsymb (@symbs) { + my $symb=&Apache::lonnet::unescape($escsymb); + my $title = + ($symb ne 'course') ? &Apache::lonnet::gettitle($symb) + : $env{'course.'.$env{'request.course.id'}.'.description'}; + $list.='
  • '.$title.'
  • '; + } + return $list; +
    + + - &Apache::lonnet::logthis($helper->{'VARS'}{'delete'}); if ($helper->{'STATE'} ne 'FinishStu') { return; } my $result; - my $courseid=$ENV{'request.course.id'}; + my $courseid=$env{'request.course.id'}; my ($uname,$udom,$sec,$fullname)=split(':',$helper->{'VARS'}{'stu1'}); &Apache::lonnet::logthis($helper->{'VARS'}{'delete'}); foreach my $escsymb (split(/\|\|\|/,$helper->{'VARS'}{'delete'})) { my $symb=&Apache::lonnet::unescape($escsymb); + my $key = "$courseid\0$symb"; + my $title = + ($symb ne 'course') ? &Apache::lonnet::gettitle($symb) + : $env{'course.'.$courseid.'.description'}; my $res=&Apache::lonnet::del('firstaccesstimes', - ["$courseid\0$symb"],$udom,$uname); - $result.="Removing access time from ". - &Apache::lonnet::gettitle($symb).": ".$res.'
  • '; + [$key],$udom,$uname); + $result.="Removing access time from ". + $title.": ".$res.'
  • '; + if ($res eq 'ok') { + if ($symb ne 'course') { + my $what = []; + my ($storeunder,@recurseup,$recursed); + my $mapp = &Apache::lonnet::deversion(( + &Apache::lonnet::decode_symb($symb))[2]); + if ($symb =~ /\.(page|sequence)$/) { + $storeunder = $env{'request.course.id'}.'.'.$mapp.'___(all).0.interval'; + $what = [$storeunder,'map']; + } else { + $storeunder = $env{'request.course.id'}.'.'.$symb.'.0.interval'; + $what = [$storeunder,'resource']; + } + &Apache::lonnet::del('timerinterval',[$key],$udom,$uname); + my $userreply=&Apache::lonnet::resdata($uname,$udom,'user',$mapp, + \$recursed,\@recurseup, + $env{'request.course.id'}, + '.','0.interval',($what)); + if (ref($userreply) eq 'ARRAY') { + if ($userreply->[0] =~ /^\d+$/) { + if (($userreply->[1] eq 'map') || ($userreply->[1] eq 'resource')) { + my %storecontent=($storeunder => $userreply->[0], + $storeunder.'.type' => 'date_interval'); + &Apache::lonnet::del + ('resourcedata',[keys(%storecontent)],$udom,$uname); + &Apache::lonparmset::log_parmset(\%storecontent,1,$uname,$udom); + } + } + } + } + } } $result=~s/
  • $//; return $result; @@ -59,15 +121,14 @@ - Select:
    - - Choose a resource - - return $res->is_map() + + + return (($res->is_map() && $res->map_contains_problem()) + ||$res->is_problem() ); return $res->symb() ShowPlan @@ -98,8 +159,19 @@ if ($helper->{'STATE'} ne 'FINISH') { return; } my $result; my $symb=$helper->{'VARS'}{'res2'}; - my $key=$ENV{'request.course.id'}."\0".$symb; + my $key=$env{'request.course.id'}."\0".$symb; my @names=split(/\|\|\|/,$helper->{'VARS'}{'stu1'}); + my $what = []; + my ($storeunder,@recurseup,$recursed); + my $mapp = &Apache::lonnet::deversion(( + &Apache::lonnet::decode_symb($symb))[2]); + if ($symb =~ /\.(page|sequence)$/) { + $storeunder = $env{'request.course.id'}.'.'.$mapp.'___(all).0.interval'; + $what = [$storeunder,'map']; + } else { + $storeunder = $env{'request.course.id'}.'.'.$symb.'.0.interval'; + $what = [$storeunder,'resource']; + } foreach my $name (@names) { my ($uname,$udom,$sec,$fullname)=split(':',$name); if (!$fullname) { $fullname="$uname\@$udom"; } @@ -111,8 +183,28 @@ $result.="Removing access times ". &Apache::lonlocal::locallocaltime($times{$key}). " found for student ".$fullname.": "; - $result.=&Apache::lonnet::del('firstaccesstimes', + my $delres=&Apache::lonnet::del('firstaccesstimes', [$key],$udom,$uname); + $result.=$delres; + if ($delres eq 'ok') { + &Apache::lonnet::del('timerinterval', + [$key],$udom,$uname); + my $userreply=&Apache::lonnet::resdata($uname,$udom,'user',$mapp, + \$recursed,\@recurseup, + $env{'request.course.id'}, + '.','0.interval',($what)); + if (ref($userreply) eq 'ARRAY') { + if ($userreply->[0] =~ /^\d+$/) { + if (($userreply->[1] eq 'map') || ($userreply->[1] eq 'resource')) { + my %storecontent=($storeunder => $userreply->[0], + $storeunder.'.type' => 'date_interval'); + my $reply = &Apache::lonnet::del + ('resourcedata',[keys(%storecontent)],$udom,$uname); + &Apache::lonparmset::log_parmset(\%storecontent,1,$uname,$udom); + } + } + } + } } $result.="
  • \n
  • "; }