[LON-CAPA-cvs] cvs: loncom /interface loncoursedata.pm lonstatistics.pm /interface/statistics lonproblemanalysis.pm
stredwic
lon-capa-cvs@mail.lon-capa.org
Tue, 30 Jul 2002 21:31:48 -0000
This is a MIME encoded message
--stredwic1028064708
Content-Type: text/plain
stredwic Tue Jul 30 17:31:48 2002 EDT
Modified files:
/loncom/interface loncoursedata.pm lonstatistics.pm
/loncom/interface/statistics lonproblemanalysis.pm
Log:
Fixed the problem gathering the correct data to be used for the analysis.
The problem stemmed mostly to the correct use of the result from ssi.
--stredwic1028064708
Content-Type: text/plain
Content-Disposition: attachment; filename="stredwic-20020730173148.txt"
Index: loncom/interface/loncoursedata.pm
diff -u loncom/interface/loncoursedata.pm:1.7 loncom/interface/loncoursedata.pm:1.8
--- loncom/interface/loncoursedata.pm:1.7 Fri Jul 26 12:22:09 2002
+++ loncom/interface/loncoursedata.pm Tue Jul 30 17:31:48 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# (Publication Handler
#
-# $Id: loncoursedata.pm,v 1.7 2002/07/26 16:22:09 stredwic Exp $
+# $Id: loncoursedata.pm,v 1.8 2002/07/30 21:31:48 stredwic Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -337,6 +337,8 @@
':'.$currentResourceID;
}
+ $cache->{$currentResourceID.':source'} =
+ $hash{'src_'.$currentResourceID};
my $meta=$hash{'src_'.$currentResourceID};
# $cache->{$currentResourceID.':title'}=
# &Apache::lonnet::metdata($meta,'title');
@@ -344,36 +346,49 @@
$hash{'title_'.$currentResourceID};
# Get Parts for problem
- foreach (split(/\,/,&Apache::lonnet::metadata($meta,'keys'))) {
- if($_=~/^stores\_(\d+)\_tries$/) {
- my $Part=&Apache::lonnet::metadata($meta,$_.'.part');
- if(!defined($cache->{$currentSequence.':'.
- $currentResourceID.':parts'})) {
- $cache->{$currentSequence.':'.$currentResourceID.
- ':parts'}=$Part;
- } else {
- $cache->{$currentSequence.':'.$currentResourceID.
- ':parts'}.=':'.$Part;
+ my %beenHere;
+ foreach (split(/\,/,&Apache::lonnet::metadata($meta,'packages'))) {
+ if(/^\w+response_\d+.*/) {
+ my (undef, $partId, $responseId) = split(/_/,$_);
+ if($beenHere{'p:'.$partId} == 0) {
+ $beenHere{'p:'.$partId}++;
+ if(!defined($cache->{$currentSequence.':'.
+ $currentResourceID.':parts'})) {
+ $cache->{$currentSequence.':'.$currentResourceID.
+ ':parts'}=$partId;
+ } else {
+ $cache->{$currentSequence.':'.$currentResourceID.
+ ':parts'}.=':'.$partId;
+ }
+ }
+ if($beenHere{'r:'.$partId.':'.$responseId} == 0) {
+ $beenHere{'r:'.$partId.':'.$responseId}++;
+ if(!defined($cache->{$currentSequence.':'.
+ $currentResourceID.':'.$partId.
+ ':responseIDs'})) {
+ $cache->{$currentSequence.':'.$currentResourceID.
+ ':'.$partId.':responseIDs'}=$responseId;
+ } else {
+ $cache->{$currentSequence.':'.$currentResourceID.
+ ':'.$partId.':responseIDs'}.=':'.
+ $responseId;
+ }
}
- foreach (split(/\,/,
- &Apache::lonnet::metadata($meta,'packages'))) {
- if($_=~/^optionresponse\_($Part)\_(\w+)$/) {
- if(defined($cache->{'OptionResponses'})) {
- $cache->{'OptionResponses'}.= ':::'.
- $hash{'src_'.$currentResourceID}.'::'.
- $hash{'title_'.$currentResourceID}.'::'.
- $Part.'::'.$Problem;
- } else {
- $cache->{'OptionResponses'}=
- $hash{'src_'.$currentResourceID}.'::'.
- $hash{'title_'.$currentResourceID}.'::'.
- $Part.'::'.$Problem;
- }
+ if(/^optionresponse/ &&
+ $beenHere{'o:'.$partId.':'.$currentResourceID} == 0) {
+ $beenHere{'o:'.$partId.$currentResourceID}++;
+ if(defined($cache->{'OptionResponses'})) {
+ $cache->{'OptionResponses'}.= ':::'.
+ $currentResourceID.':'.
+ $partId.':'.$responseId;
+ } else {
+ $cache->{'OptionResponses'}= $currentResourceID.
+ ':'.$partId.':'.$responseId;
}
}
}
- }
- }
+ }
+ }
# if resource == finish resource, then it is the end of a sequence/page
if($currentResourceID eq $lastResourceID) {
Index: loncom/interface/lonstatistics.pm
diff -u loncom/interface/lonstatistics.pm:1.36 loncom/interface/lonstatistics.pm:1.37
--- loncom/interface/lonstatistics.pm:1.36 Mon Jul 29 17:19:44 2002
+++ loncom/interface/lonstatistics.pm Tue Jul 30 17:31:48 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# (Publication Handler
#
-# $Id: lonstatistics.pm,v 1.36 2002/07/29 21:19:44 minaeibi Exp $
+# $Id: lonstatistics.pm,v 1.37 2002/07/30 21:31:48 stredwic Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -128,16 +128,18 @@
}
}
+ $cache->{'reportKey'} = 'false';
+ if($cache->{'reportSelected'} eq 'Analyze') {
+ $cache->{'reportKey'} = 'Analyze';
+ }
+
foreach (keys(%ENV)) {
- if(/form\.Analyze:::/) {
-# $cache->{'reportSelected'} = 'Analyze';
-# $cache->{'reportKey'} = 'Problem Analysis';
- my ($uri, $title, $part, $problem);
- (undef, $uri, $title, $part, $problem)=split(':::', $_);
- $cache->{'AnalyzeURI'} = $uri;
- $cache->{'AnalyzeTitle'} = $title;
- $cache->{'AnalyzePart'} = $part;
- $cache->{'AnalyzeProblem'} = $problem;
+ if(/form\.Analyze/) {
+ $cache->{'reportSelected'} = 'Analyze';
+ $cache->{'reportKey'} = 'Analyze';
+ my $data;
+ (undef, $data)=split(':::', $_);
+ $cache->{'AnalyzeInfo'}=$data;
&CheckFormElement($cache, 'Interval', 'Interval', '1');
} elsif(/form\.HeadingColumn/) {
@@ -561,9 +563,11 @@
if(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) {
$GoToPage = $cache{'reportSelected'};
$reports{'reportSelected'} = $cache{'reportSelected'};
-# if(defined($cache{'reportKey'}) && $cache{'reportKey'} ne 'false') {
-# $reports{$cache{'reportKey'}} = $cache{'reportSelected'};
-# }
+ if(defined($cache{'reportKey'}) &&
+ !exists($reports{$cache{'reportKey'}}) &&
+ $cache{'reportKey'} ne 'false') {
+ $reports{$cache{'reportKey'}} = $cache{'reportSelected'};
+ }
if(defined($cache{'OptionResponses'})) {
$reports{'problem_analysis'} = 'Problem Analysis';
@@ -592,17 +596,17 @@
} elsif($GoToPage eq 'Student Assessment') {
$r->print(
&Apache::lonstudentassessment::BuildStudentAssessmentPage($cacheDB,
- $students,
- $courseID,
- 'Statistics',
- \@headings,
- $spacing,
- \@studentInformation,
- $r, $c));
+ $students,
+ $courseID,
+ 'Statistics',
+ \@headings,
+ $spacing,
+ \@studentInformation,
+ $r, $c));
} elsif($GoToPage eq 'Analyze') {
$r->print(&Apache::lonproblemanalysis::BuildAnalyzePage($cacheDB,
$students,
- $courseID));
+ $courseID,$r));
} elsif($GoToPage eq 'DoDiffGraph') {
&Apache::lonproblemstatistics::BuildDiffGraph($r);
} elsif($GoToPage eq 'PercentWrongGraph') {
Index: loncom/interface/statistics/lonproblemanalysis.pm
diff -u loncom/interface/statistics/lonproblemanalysis.pm:1.1 loncom/interface/statistics/lonproblemanalysis.pm:1.2
--- loncom/interface/statistics/lonproblemanalysis.pm:1.1 Wed Jul 24 10:52:32 2002
+++ loncom/interface/statistics/lonproblemanalysis.pm Tue Jul 30 17:31:48 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# (Publication Handler
#
-# $Id: lonproblemanalysis.pm,v 1.1 2002/07/24 14:52:32 stredwic Exp $
+# $Id: lonproblemanalysis.pm,v 1.2 2002/07/30 21:31:48 stredwic Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -41,6 +41,8 @@
use Apache::lonnet();
use GDBM_File;
+my $jr;
+
sub BuildProblemAnalysisPage {
my ($cacheDB)=@_;
@@ -52,7 +54,7 @@
}
$Str .= &IntervalOptions($cache{'Interval'});
- $Str .= &OptionResponseTable($cache{'OptionResponses'});
+ $Str .= &OptionResponseTable($cache{'OptionResponses'}, \%cache);
untie(%cache);
@@ -60,61 +62,85 @@
}
sub BuildAnalyzePage {
- my ($cacheDB, $students, $courseID)=@_;
+ my ($cacheDB, $students, $courseID,$r)=@_;
- my $Str = '';
+ $jr = $r;
+ my $c = $r->connection;
+
+ my $Str = '</form>';
my %cache;
+ foreach (@$students) {
+ if($c->aborted) {
+ return $Str;
+ }
+ my $courseData =
+ &Apache::loncoursedata::DownloadCourseInformation($_,
+ $courseID);
+ if(tie(%cache,'GDBM_File',$cacheDB,&GDBM_WRCREAT,0640)) {
+ &Apache::loncoursedata::ProcessStudentData(\%cache,
+ $courseData, $_);
+ untie(%cache);
+ } else {
+ last if($c->aborted());
+ next;
+ }
+ }
+
unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) {
$Str .= '<html><body>Unable to tie database.</body></html>';
return $Str;
}
- my $uri = $cache{'AnalyzeURI'},
- my $part = $cache{'AnalyzePart'},
- my $problem = $cache{'AnalyzeProblem'},
- my $title = $cache{'AnalyzeTitle'},
- my $interval = $cache{'Interval'},
+ my ($problemId, $part, $responseId)=split(':',$cache{'AnalyzeInfo'});
+ my $uri = $cache{$problemId.':source'};
+ my $problem = $cache{$problemId.':problem'};
+ my $title = $cache{$problemId.':title'};
+ my $interval = $cache{'Interval'};
my %ConceptData;
$ConceptData{"Interval"} = $interval;
#Initialize the option response true answers
- my ($Concepts, $foil_to_concept, $answer) = &InitAnalysis($uri, $part,
- $problem,
- $students->[0],
- $courseID);
+ my ($analyzeData) = &InitAnalysis($uri, $part, $responseId, $problem,
+ $students->[0], $courseID);
+ if(defined($analyzeData->{'error'})) {
+ $Str .= 'Incorrect part requested.<br>';
+ return $Str;
+ }
#compute the intervals
- &Interval($part, $problem, $interval, $Concepts, \%ConceptData);
+ &Interval($part, $problem, $interval, $analyzeData->{'concepts'},
+ \%ConceptData);
$title =~ s/\ /"_"/eg;
$Str .= '<br><b>'.$uri.'</b>';
#Java script Progress window
- &Create_PrgWin();
- &Update_PrgWin("Starting-to-analyze-problem");
- for (my $index=0;$index<(scalar @$students);$index++) {
- &Update_PrgWin($index);
- &OpStatus($problem, $students->[$index], $courseID, $answer);
+# &Create_PrgWin();
+# &Update_PrgWin("Starting-to-analyze-problem");
+ for(my $index=0; $index<(scalar @$students); $index++) {
+# &Update_PrgWin($index);
+# &OpStatus($problem, $students->[$index], $courseID, \%ConceptData,
+# $analyzeData->{'foil_to_concept'}, $analyzeData, \%cache);
+ &OpStatus($problem, $students->[$index], \%ConceptData,
+ $analyzeData->{'foil_to_concept'}, $analyzeData, \%cache);
}
- &Close_PrgWin();
+# &Close_PrgWin();
$Str .= '<br>';
for (my $k=0; $k<$interval; $k++ ) {
- $Str .= &DrawGraph($k, $title, $Concepts, \%ConceptData);
+ $Str .= &DrawGraph($k, $title, $analyzeData->{'concepts'},
+ \%ConceptData);
}
for (my $k=0; $k<$interval; $k++ ) {
- $Str .= &DrawTable($k, $Concepts, \%ConceptData);
+ $Str .= &DrawTable($k, $analyzeData->{'concepts'}, \%ConceptData);
}
-#$Apache::lonxml::debug=1;
-#&Apache::lonhomework::showhash(%ConceptData);
-#$Apache::lonxml::debug=0;
my $Answ=&Apache::lonnet::ssi($uri);
$Str .= '<br><b>Here you can see the Problem:</b><br>'.$Answ;
untie(%cache);
- return $Str;
+ return $Str.'<form>';
}
#---- Problem Analysis Web Page ----------------------------------------------
@@ -144,7 +170,7 @@
}
sub OptionResponseTable {
- my ($optionResponses)=@_;
+ my ($optionResponses,$cache)=@_;
my $Str = '';
$Str .= '<br><b> Option Response Problems in this course:</b>'."\n";
$Str .= '<br><br>'."\n";
@@ -152,16 +178,33 @@
$Str .= '<th> Resource </th><th> Analysis </th></tr>'."\n";
my $number=1;
- foreach (split(':::', $optionResponses)) {
- my ($uri,$title,$part,$problem)=split('::',$_);
+ my @optionResponses=split(':::', $optionResponses);
+ my %partCount;
+ foreach (@optionResponses) {
+ my ($problemId, $part, undef)=split(':',$_);
+ $partCount{$problemId.':'.$part}++;
+ }
+
+ foreach (@optionResponses) {
+ my ($problemId, $part, $response)=split(':',$_);
+ my $uri = $cache->{$problemId.':source'};
+ my $title = $cache->{$problemId.':title'};
+
my $Temp = '<a href="'.$uri.'" target="_blank">'.$title.'</a>';
$Str .= '<tr>';
$Str .= '<td> '.$number.' </td>';
- $Str .= '<td bgcolor="#DDFFDD"> '.$Temp.' </td>';
- $Str .= '<td bgcolor="#EEFFCC"> '.$uri.' </td>';
- $Str .= '<td><input type="submit" name="Analyze:::'.$uri.':::';
- $Str .= $title.':::'.$part.':::'.$problem.'" value="';
- $Str .= 'Analyze" /></td></tr>'."\n";
+ $Str .= '<td bgcolor="#DDFFDD">'.$Temp.'</td>';
+ $Str .= '<td bgcolor="#EEFFCC">'.$uri.'</td>';
+ if($partCount{$problemId.':'.$part} < 2) {
+ $Str .= '<td><input type="submit" name="Analyze:::';
+ $Str .= $problemId.':'.$part.'" value="';
+ $Str .= 'Part '.$part;
+ $Str .= '" /></td></tr>'."\n";
+ } else {
+ $Str .= '<td><input type="submit" name="Analyze:::'.$_.'" value="';
+ $Str .= 'Part '.$part.' Response '.$response;
+ $Str .= '" /></td></tr>'."\n";
+ }
$number++;
}
$Str .= '</table>'."\n";
@@ -175,48 +218,52 @@
#restore the student submissions and finding the result
sub OpStatus {
- my ($problem, $student, $courseID, $ConceptData, $foil_to_concept,
- $Answer)=@_;
- my ($username,$userdomain)=split(/':'/,$student);
- my $code='U';
- my %reshash=&Apache::lonnet::restore($problem, $courseID, $userdomain,
- $username);
+ my ($problem, $student, $ConceptData, $foil_to_concept,
+ $analyzeData, $cache)=@_;
+
+ my $ids = $analyzeData->{'parts'};
my @True = ();
my @False = ();
my $flag=0;
- if ($reshash{'version'}) {
- my $tries=0;
- &Apache::lonhomework::showhash(%$Answer);
- for (my $version=1;$version<=$reshash{'version'};$version++) {
- my $time=$reshash{"$version:timestamp"};
-
- foreach my $key (sort(split(/\:/,$reshash{$version.':keys'}))) {
- if (($key=~/\.(\w+)\.(\w+)\.submission$/)) {
- my $Id1 = $1; my $Id2 = $2;
- #check if this is a repeat submission, if so skip it
- if ($reshash{"$version:resource.$Id1.previous"}) { next; }
- #if no solved this wasn't a real submission, ignore it
- if (!defined($reshash{"$version:resource.$Id1.solved"})) {
- &Apache::lonxml::debug("skipping ");
- next;
- }
- my $Resp = $reshash{"$version:$key"};
- my %submission=&Apache::lonnet::str2hash($Resp);
- foreach (keys %submission) {
- my $Ansr = $Answer->{"$Id1.$Id2.foil.value.$_"};
- if ($submission{$_}) {
- if ($submission{$_} eq $Ansr) {
- &Decide("true", $foil_to_concept->{$_},
- $time, $ConceptData);
- } else {
- &Decide("false", $foil_to_concept->{$_},
- $time, $ConceptData);}
- }
- }
- }
- }
+ my $latestVersion = $cache->{$student.':version:'.$problem};
+ if(!$latestVersion) {
+ return;
+ }
+
+ my $tries=0;
+ for(my $version=1; $version<=$latestVersion; $version++) {
+ my $time=$cache->{$student.':'.$version.':'.$problem.':timestamp'};
+
+ foreach my $id (@$ids) {
+ my ($currentPart, undef) = split(/\./, $id);
+ #check if this is a repeat submission, if so skip it
+ next if($cache->{$student.':'.$version.':'.$problem.
+ ':resource.'.$currentPart.'.previous'});
+ #if no solved this wasn't a real submission, ignore it
+ if(!defined($cache->{"$student:$version:$problem".
+ ":resource.$currentPart.solved"})) {
+ &Apache::lonxml::debug("skipping ");
+ next;
+ }
+ my $Resp = $cache->{$student.':'.$version.':'.$problem.
+ ':resource.'.$id.'.submission'};
+ my %submission=&Apache::lonnet::str2hash($Resp);
+ foreach (keys(%submission)) {
+ if($submission{$_}) {
+ my $answer = $analyzeData->{$id.'.foil.value.'.$_};
+ if($submission{$_} eq $answer) {
+ &Decide("true", $foil_to_concept->{$_},
+ $time, $ConceptData);
+ } else {
+ &Decide("false", $foil_to_concept->{$_},
+ $time, $ConceptData);
+ }
+ }
+ }
}
}
+
+ return;
}
sub DrawGraph {
@@ -296,7 +343,8 @@
for(my $n=0; $n<(scalar @$Concepts); $n++ ) {
$Str .= '<tr>'."\n";
$Str .= '<td>'.($n+1).'</td>'."\n";
- $Str .= '<td bgcolor="EEFFCC">'.$Concepts->[$n];
+ my ($currentConcept) = split('::',$Concepts->[$n]);
+ $Str .= '<td bgcolor="EEFFCC">'.$currentConcept;
$Str .= '</td>'."\n";
$Str .= '<td bgcolor="DDFFDD">'.$data1[$n].'</td>'."\n";
$Str .= '<td bgcolor="FFDDDD">'.$data2[$n].'</td>'."\n";
@@ -319,17 +367,20 @@
#deciding the true or false answer belongs to each interval
my ($type,$concept,$time,$ConceptData)=@_;
my $k=0;
- while ($time>$ConceptData->{'Int.'.($k+1)} &&
- $k<$ConceptData->{'Interval'}) {$k++;}
+ while($time > $ConceptData->{'Int.'.($k+1)} &&
+ $k < $ConceptData->{'Interval'}) {
+ $k++;
+ }
$ConceptData->{$concept.'.'.$k.'.'.$type}++;
return;
}
sub InitAnalysis {
- my ($uri,$part,$problem,$student,$courseID)=@_;
+ my ($uri,$part,$responseId,$problem,$student,$courseID)=@_;
my ($name,$domain)=split(/\:/,$student);
+ my %analyzeData;
# Render the student's view of the problem. $Answ is the problem
# Stringafied
my $Answ=&Apache::lonnet::ssi($uri,('grade_target' => 'analyze',
@@ -337,32 +388,65 @@
'grade_domain' => $domain,
'grade_courseid' => $courseID,
'grade_symb' => $problem));
-# my $Answ=&Apache::lonnet::ssi($URI,('grade_target' => 'analyze'));
-# (my $garbage,$Answ)=split(/_HASH_REF__/,$Answ,2);
my %Answer=();
%Answer=&Apache::lonnet::str2hash($Answ);
- my $parts='';
- foreach my $elm (@{$Answer{'parts'}}) {
- $parts.= $elm.',';
+ my $found = 0;
+ my @parts=();
+ if(defined($responseId)) {
+ foreach (@{$Answer{'parts'}}) {
+ if($_ eq $part.'.'.$responseId) {
+ push(@parts, $_);
+ $found = 1;
+ last;
+ }
+ }
+ } else {
+ foreach (@{$Answer{'parts'}}) {
+ if($_ =~ /$part/) {
+ push(@parts, $_);
+ $found = 1;
+ last;
+ }
+ }
}
- $parts =~ s/,$//;
- my @Concepts=();
- foreach my $elm (@{$Answer{$parts.'.concepts'}}) {
- push(@Concepts, $elm);
+ if($found == 0) {
+ $analyzeData{'error'} = 'No parts matching selected values';
+ return \%analyzeData;
}
+ my @Concepts=();
my %foil_to_concept;
- foreach my $concept (@Concepts) {
- foreach my $foil (@{$Answer{$parts.'.concept.'.$concept}}) {
- $foil_to_concept{$foil} = $concept;
- #$ConceptData{$foil} = $Answer{$parts.'.foil.value.'.$foil};
- }
+ foreach my $currentPart (@parts) {
+ if(defined($Answer{$currentPart.'.concepts'})) {
+ foreach my $concept (@{$Answer{$currentPart.'.concepts'}}) {
+ push(@Concepts, $concept);
+ foreach my $foil (@{$Answer{$currentPart.'.concept.'.
+ $concept}}) {
+ $analyzeData{$currentPart.'.foil.value.'.$foil} =
+ $Answer{$currentPart.'.foil.value.'.$foil};
+ $foil_to_concept{$foil} = $concept;
+ }
+ }
+ } else {
+ foreach (keys(%Answer)) {
+ if(/$currentPart.foil\.value\.(.*)$/) {
+ push(@Concepts, $1);
+ $foil_to_concept{$1} = $1;
+ $analyzeData{$currentPart.'.foil.value.'.$1} =
+ $Answer{$currentPart.'.foil.value.'.$1};
+ }
+ }
+ }
}
- return (\@Concepts, \%foil_to_concept, \%Answer);
+ $analyzeData{'parts'} = \@parts;
+ $analyzeData{'concepts'} = \@Concepts;
+ $analyzeData{'foil_to_concept'} = \%foil_to_concept;
+
+ return \%analyzeData;
}
sub Interval {
@@ -372,12 +456,12 @@
my $opn = &Apache::lonnet::EXT('resource.'.$part.'.opendate',$symb);
my $add=int(($due-$opn)/$Int);
$ConceptData->{'Int.0'}=$opn;
- for (my $i=1;$i<$Int;$i++) {
+ for(my $i=1; $i<$Int; $i++) {
$ConceptData->{'Int.'.$i}=$opn+$i*$add;
}
$ConceptData->{'Int.'.$Int}=$due;
- for (my $i=0;$i<$Int;$i++) {
- for (my $n=0; $n<(scalar @$Concepts); $n++ ) {
+ for(my $i=0; $i<$Int; $i++) {
+ for(my $n=0; $n<(scalar @$Concepts); $n++ ) {
my $tmp=$Concepts->[$n];
$ConceptData->{$tmp.'.'.$i.'.true'}=0;
$ConceptData->{$tmp.'.'.$i.'.false'}=0;
--stredwic1028064708--