~;
$tstart = $start;
if ( substr( $INFO{'start'}, 0, 3 ) eq 'all' ) {
( $tstart, $start ) = split /\-/xsm, $INFO{'start'};
}
$d_indexpages = $pagenumb / $dropdisplaynum;
$i_indexpages = int( $pagenumb / $dropdisplaynum );
if ( $d_indexpages > $i_indexpages ) {
$indexpages = int( $pagenumb / $dropdisplaynum ) + 1;
}
else { $indexpages = int( $pagenumb / $dropdisplaynum ) }
$selectedindex =
int( ( $start / $MembersPerPage ) / $dropdisplaynum );
if ( $pagenumb > $dropdisplaynum ) {
$pagedropindex .=
qq~
\n~;
}
$pagedropindex .=
q~
~;
$tmpMembersPerPage = $MembersPerPage;
if ( substr( $INFO{'start'}, 0, 3 ) eq 'all' ) {
$MembersPerPage = $MembersPerPage * $dropdisplaynum;
}
$prevpage = $start - $tmpMembersPerPage;
$nextpage = $start + $MembersPerPage;
$pagedropindexpvbl =
qq~

~;
$pagedropindexnxbl =
qq~

~;
if ( $start < $MembersPerPage ) {
$pagedropindexpv .=
qq~

~;
}
else {
$pagedropindexpv .=
qq~

~;
}
if ( $nextpage > $lastptn ) {
$pagedropindexnx .=
qq~

~;
}
else {
$pagedropindexnx .=
qq~

~;
}
$pageindex = qq~$pagedropindex
~;
$pageindexjs = qq~
~;
}
}
}
return;
}
sub buildPages {
my @x = @_;
if ( $to_id eq 'groups' ) { $instructtext = $usersel_txt{'instruct4'}; }
else {
$instructtext =
qq~
~;
}
if ( $to_id ne 'groups' ) {
$not_groups = qq~
~;
}
if ( $recent_exist && $to_id =~ /toshow/sm ) {
$not_groups_b = qq~
$usersel_txt{'recentlist'}
$usersel_txt{'alllist'}
~;
}
elsif ( $to_id ne 'groups' ) {
$not_groups_b = qq~
$usersel_txt{'alllist'}
~;
}
elsif ( $to_id eq 'groups' ) {
$not_groups_b = qq~
$usersel_txt{'groups'}
~;
}
if ( $LetterLinks ne q{} ) {
$TableHeader_lt .= $my_tableHeader_lt;
$TableHeader_lt =~ s/{yabb LetterLinks}/$LetterLinks/sm;
}
$TableHeader .= $my_tableHeader;
$TableHeader =~ s/{yabb instructtext}/$instructtext/sm;
$TableHeader =~ s/{yabb not_groups}/$not_groups/sm;
$TableHeader =~ s/{yabb not_groups_b}/$not_groups_b/sm;
$TableHeader =~ s/{yabb TableHeader_lt}/$TableHeader_lt/sm;
$numbegin = ( $start + 1 );
$numend = ( $start + $MembersPerPage );
if ( $numend > $memcount ) { $numend = $memcount; }
if ( $memcount == 0 ) { $numshow = q{}; }
else { $numshow = qq~($numbegin - $numend $usersel_txt{'of'} $memcount)~; }
if ( $x[0] ) {
$yymain .= $my_usersel;
$yymain =~ s/{yabb TableHeader}/$TableHeader/sm;
$yymain =~ s/{yabb pageindex}/$pageindex/sm;
}
else {
if ( $to_id ne 'groups' ) {
$my_inst3 = $usersel_txt{'instruct3'};
}
$yymain .= $my_usersel_inst;
$yymain =~ s/{yabb instruct_start}/$instruct_start/sm;
$yymain =~ s/{yabb instruct_end}/$instruct_end/sm;
$yymain =~ s/{yabb pageindexjs}/$pageindexjs/sm;
}
return;
}
sub userselectTemplate {
print_output_header();
$show_cc = q{};
if ( $to_id ne 'groups' ) {
if ( $PMenable_cc && $PMenable_bcc ) {
$show_cc .= q~
alt_select1 = 'toshowcc'; alt_select2 = 'toshowbcc'; pmtoshow = true;
if (to_select == 'toshowcc') { alt_select1 = 'toshow'; alt_select2 = 'toshowbcc'; }
if (to_select == 'toshowbcc') { alt_select1 = 'toshow'; alt_select2 = 'toshowcc'; }
~;
}
elsif ($PMenable_cc) {
$show_cc .= q~
alt_select1 = 'toshowcc'; pmtoshow = true;
if (to_select == 'toshowcc') { alt_select1 = 'toshow'; pmtoshow = true; }
~;
}
elsif ($PMenable_bcc) {
$show_cc .= q~
alt_select1 = 'toshowbcc'; pmtoshow = true;
if (to_select == 'toshowbcc') { alt_select1 = 'toshow'; pmtoshow = true; }
~;
}
}
$output = $my_usersel_tem;
$output =~ s/{yabb noresults}/$usersel_txt{'noresults'}/sm;
$output =~ s/{yabb title}/$yytitle/sm;
$output =~ s/{yabb show_cc}/$show_cc/sm;
$output =~ s/{yabb main}/$yymain/sm;
$addsession =
qq~
~;
$output =~ s/<\/form>/$addsession/gxsm;
print_HTML_output_and_finish();
return;
}
sub loadRecentPMs {
my ( $pack, $file, $line ) = caller;
$yytrace .=
qq~
loadrecentpms from ($pack, $file, $line)
=========================~;
## put simple, this reads the msg , outbox and storage files to
## harvest already-used membernames
my ( @userinbox, @useroutbox, @userstore, @usermessages );
if ( -e "$memberdir/$username.msg" ) {
fopen( USERMSG, "$memberdir/$username.msg" );
@userinbox =
;
fclose(USERMSG);
if (@userinbox) { push @usermessages, @userinbox; }
undef @userinbox;
}
if ( -e "$memberdir/$username.outbox" ) {
fopen( USEROUT, "$memberdir/$username.outbox" );
@useroutbox = ;
fclose(USEROUT);
if (@useroutbox) { push @usermessages, @useroutbox; }
undef @useroutbox;
}
if ( -e "$memberdir/$username.imstore" ) {
fopen( USERSTR, "$memberdir/$username.imstore" );
@userstore = ;
fclose(USERSTR);
if (@userstore) { push @usermessages, @userstore; }
undef @userstore;
}
if ( !@usermessages ) { return; }
@recentUsers = ();
foreach my $usermessage (@usermessages) {
## split down to all strings of names
my (
$messid, $fromName, $toNames, $toCCNames, $toBCCNames,
undef, undef, undef, undef, undef,
undef, $messStatus, undef
) = split /\|/xsm, $usermessage; # pull name from PM
if ( $messStatus =~ m/b/sm || $messStatus =~ m/g/sm ) { next; }
## push all name strings
if ( $fromName && $fromName ne $username ) {
push @recentUsers, $fromName;
}
if ($toNames) {
foreach my $listItem ( split /\,/xsm, $toNames ) {
if ( $listItem ne $username ) { push @recentUsers, $listItem; }
}
}
if ($toCCNames) {
foreach my $listItem ( split /\,/xsm, $toCCNames ) {
if ( $listItem ne $username ) {
push @recentUsers, $listItem;
}
}
}
if ($toBCCNames) {
foreach my $listItem ( split /\,/xsm, $toBCCNames ) {
if ( $listItem ne $username ) {
push @recentUsers, $listItem;
}
}
}
}
@recentUsers = undupe(@recentUsers);
@recentUsers = sort @recentUsers;
return @recentUsers;
}
sub quickSearch {
if ( !$iamadmin && !$iamgmod ) { fatal_error('no_access'); }
$to_id = $INFO{'toid'};
$yymain = $my_quickSearch;
$yymain =~ s/{yabb to_id}/$to_id/gsm;
$yytitle = $usersel_txt{'modpagetitle'};
userselectTemplate();
return;
}
sub doquicksearch {
if ( !$iamadmin && !$iamgmod ) { fatal_error('no_access'); }
ManageMemberinfo('load');
my (@matches);
foreach my $membername (
sort { lc $memberinf{$a} cmp lc $memberinf{$b} }
keys %memberinf
)
{
my ( $realname, undef ) = split /\|/xsm, $memberinf{$membername}, 2;
if ( $realname =~ /^$INFO{'letter'}/ixsm ) {
push @matches, $realname, $membername;
}
}
print "Content-type: text/plain\n\n"
or croak "$croak{'print'} content-type";
print join q{,}, @matches or croak "$croak{'print'} matches";
CORE::exit; # This is here only to avoid server error log entries!
return;
}
sub checkUserAvail {
LoadLanguage('Register');
my $taken = 'false';
fopen( RESERVE, "$vardir/reserve.txt" )
or fatal_error( 'cannot_open', "$vardir/reserve.txt", 1 );
@reserve = ;
fclose(RESERVE);
fopen( RESERVECFG, "$vardir/reservecfg.txt" )
or fatal_error( 'cannot_open', "$vardir/reservecfg.txt", 1 );
@reservecfg = ;
fclose(RESERVECFG);
for my $i ( 0 .. $#reservecfg ) {
chomp $reservecfg[$i];
}
$matchword = $reservecfg[0] eq 'checked';
$matchcase = $reservecfg[1] eq 'checked';
$matchuser = $reservecfg[2] eq 'checked';
$matchname = $reservecfg[3] eq 'checked';
$namecheck = $matchcase eq 'checked' ? $INFO{'user'} : lc $INFO{'user'};
$realnamecheck =
$matchcase eq 'checked' ? $INFO{'display'} : lc $INFO{'display'};
if ( $INFO{'type'} eq 'email' ) {
$INFO{'email'} =~ s/\A\s+|\s+\z//gxsm;
$type = $register_txt{'112'};
if (
lc $INFO{'email'} eq lc MemberIndex( 'check_exist', $INFO{'email'}, 2 )
)
{
$taken = 'true';
}
}
elsif ( $INFO{'type'} eq 'display' ) {
$INFO{'display'} =~ s/\A\s+|\s+\z//gxsm;
$type = $register_txt{'111'};
if (
(
lc $INFO{'display'} eq
lc MemberIndex( 'check_exist', $INFO{'display'}, 1 )
)
&& ( lc $INFO{'display'} ne lc ${ $uid . $username }{'realname'} )
)
{
$taken = 'true';
}
if ($matchname) {
foreach my $reserved (@reserve) {
chomp $reserved;
$reservecheck = $matchcase ? $reserved : lc $reserved;
if ($matchword) {
if ( $realnamecheck eq $reservecheck ) {
$taken = 'reg';
break;
}
}
else {
if ( $realnamecheck =~ $reservecheck ) {
$taken = 'reg';
break;
}
}
}
}
}
elsif ( $INFO{'type'} eq 'user' ) {
$INFO{'user'} =~ s/\A\s+|\s+\z//gxsm;
$INFO{'user'} =~ s/\s/_/gxsm;
$type = $register_txt{'110'};
if (
lc $INFO{'user'} eq lc MemberIndex( 'check_exist', $INFO{'user'}, 0 ) )
{
$taken = 'true';
}
if ($matchuser) {
foreach my $reserved (@reserve) {
chomp $reserved;
$reservecheck = $matchcase ? $reserved : lc $reserved;
if ($matchword) {
if ( $namecheck eq $reservecheck ) {
$taken = 'reg';
break;
}
}
else {
if ( $namecheck =~ $reservecheck ) {
$taken = 'reg';
break;
}
}
}
}
}
if ( $taken eq 'false' ) {
$avail =
qq~
$type$register_txt{'114'}~;
}
elsif ( $taken eq 'true' ) {
$avail =
qq~
$type$register_txt{'113'}~;
}
else {
$avail =
qq~
$type$register_txt{'115'}~;
}
print "Content-type: text/plain;charset=$yymycharset;\n\n$INFO{'type'}|$avail"
or croak "$croak{'print'} avail";
CORE::exit; # This is here only to avoid server error log entries!
return;
}
1;