CPAN-Testers-WWW-Admin
view release on metacpan or search on metacpan
lib/Labyrinth/Plugin/CPAN/Tester.pm view on Meta::CPAN
for my $row (@rows) {
next if($row->{type} == 3);
$dbx->DoQuery('UpdateGrade',3,$row->{id});
# for the reports builder
$dbx->DoQuery('PageRequest','rmdist',$row->{dist},$row->{id});
$dbx->DoQuery('PageRequest','rmauth',$row->{dist},$row->{id});
# for the statistics scripts
$dbx->DoQuery('DeleteReportHistory',$row->{id},$row->{state},$row->{postdate},$row->{dist},$row->{version},$row->{type},3);
}
# remove marked reports
$dbi->DoQuery('UnmarkTesterReports',{ids => join(',',@data)});
$tvars{body}{success} = 1;
$tvars{body}{result} = 'deleted';
$tvars{body}{data} = join(',',@data);
$tvars{realm} = 'json';
}
sub Dist {
return unless RealmCheck('tester','admin');
SetTester();
$cgiparams{dist} =~ s/::/-/g;
my $cpan = Labyrinth::Plugin::CPAN->new();
my $dbx = $cpan->DBX('cpanstats');
my @rows = $dbx->GetQuery('hash','FindDistro',$cgiparams{dist});
unless(@rows) {
SetCommand('tester-distro');
$tvars{errmess} = 'Sorry, no such distribution found. Please try again.';
return;
}
my ($prev,$next,$order) = ('','','DESC');
@rows = $dbx->GetQuery('hash','ListReports2',{'prev'=>$prev,'next'=>$next,'order'=>$order},$cgiparams{userid},$cgiparams{dist});
if(@rows) {
for(@rows) {
my ($y,$m,$d) = $_->{fulldate} =~ /^(\d{4})(\d{2})(\d{2})/;
$_->{showdate} = sprintf "%04d-%02d-%02d", $y, $m, $d;
}
$tvars{data}{reports} = \@rows;
my @prev = $dbx->GetQuery('hash','CountReports2',{'prev'=>"AND x.guid > '$rows[0]->{guid}'"},$cgiparams{userid},$cgiparams{dist});
my @next = $dbx->GetQuery('hash','CountReports2',{'next'=>"AND x.guid < '$rows[-1]->{guid}'"},$cgiparams{userid},$cgiparams{dist});
$tvars{pager}{prev} = $rows[0]->{guid} if(@prev && $prev[0]->{count} > 0);
$tvars{pager}{next} = $rows[-1]->{guid} if(@next && $next[-1]->{count} > 0);
}
}
=head2 Tester Email Interface Methods
=over 4
=item CheckLock
Checks whether the specified user account is currently locked.
=item Lock
Tester has just registered on the site, lock the user profile until email is
confirmed.
=item UnLock
Tester has clicked registration confirmation link, and logged in successfully,
unlock the user profile.
=item Submit
Tester has submitted an email address used to submit a test report. Save as
unconfirmed and send email confirmation.
=item Email
Send email to tester to confirm email address.
=item Remove
Remove registered email from this user profile.
=item Confirm
Tester has clicked the confirmation link, provide login to finalise
confirmation.
=item Confirmed
Tester has confirmed login, mark email as confirmed, and map email to
addressid.
=item Verify
Allow admin to verify and confirm a tester's email address.
=item Verified
List verified email addresses for specified tester.
=back
=cut
sub CheckLock {
my $userid = $tvars{'loginid'};
my @row = $dbi->GetQuery('hash','GetUserByID',$userid);
return if(@row && !$row[0]->{locked});
Labyrinth::Session::Logout();
$tvars{redirect} = '';
SetCommand('tester-locked');
}
sub Lock {
return unless RealmCheck('public','tester','admin');
my $userid = $cgiparams{'userid'};
$userid = $tvars{user}{tester} if($tvars{realm} eq 'admin' && $tvars{user}{tester});
$dbi->DoQuery('LockUser',$userid);
$dbi->DoQuery('SetRealm','tester',$userid);
my $user = GetUser($userid);
$tvars{data}{realname} = $user->{realname};
$tvars{data}{email} = $user->{email};
$tvars{data}{template} = 'mailer/user-confirm.eml';
}
sub UnLock {
return unless RealmCheck('tester','admin','public');
my $email;
my ($code,$userid) = split('/',$cgiparams{code});
if($tvars{realm} eq 'admin' && $tvars{user}{tester}) {
$userid = $tvars{user}{tester};
$email = $cgiparams{confirm};
} else {
my @confirm = $dbi->GetQuery('hash','CheckConfirmedCode',$code);
return unless(@confirm && $confirm[0]->{userid} == $userid);
$email = $confirm[0]->{email};
}
$dbi->DoQuery('UnLockUser',$userid);
$dbi->DoQuery('ConfirmedEmail',$userid,$email,$code);
}
sub Submit {
return unless RealmCheck('tester','admin');
my $userid = $tvars{'loginid'};
$userid = $tvars{user}{tester} if($tvars{realm} eq 'admin' && $tvars{user}{tester});
$cgiparams{'userid'} = $userid;
$tvars{data}{realname} = UserName($userid);
$tvars{data}{email} = $cgiparams{email};
$tvars{data}{template} = 'mailer/tester-confirm.eml';
$tvars{thanks} = 1;
}
sub Email {
return unless RealmCheck('public','tester','admin');
my $userid = $cgiparams{userid};
my $code;
my @email = $dbi->GetQuery('hash','CheckConfirmedEmail',$userid,$tvars{data}{'email'});
if(@email) {
$code = $email[0]->{confirm};
} else {
my $data = $tvars{data}{'email'} . $$ . time . 'ajfpfgjalkshj';
$code = sha1_hex($data);
( run in 1.971 second using v1.01-cache-2.11-cpan-98e64b0badf )