Profile.pl
###############################################################################
# Profile.pl #
###############################################################################
# YaBB: Yet another Bulletin Board #
# Open-Source Project started by Zef Hemel (zef@zefnet.com) #
# Software Version: YaBB 1 Gold - Release #
# =========================================================================== #
# Software Distributed by: http://yabb.xnull.com #
# Support, News, Updates at: http://yabb.xnull.com/community/ #
# =========================================================================== #
# Copyright (c) 2000-2001 X-Null - All Rights Reserved #
# Software by: The YaBB Development Team #
###############################################################################
$profileplver="1 Gold - Release";
sub ModifyProfile {
if ($INFO{'username'} =~ m~/~){ &fatal_error($txt{'224'}); }
if ($INFO{'username'} =~ m~\\~){ &fatal_error($txt{'225'}); }
if($username ne $INFO{'username'} && $settings[7] ne 'Administrator') {
&fatal_error($txt{'80'});
}
opendir(DIR, "$facesdir") || fatal_error("$txt{'230'} ($facesdir)!<BR>$txt{'681'}");
closedir(DIR);
$yytitle = $txt{'79'};
fopen(FILE, "$memberdir/$INFO{'username'}.dat");
@memsettings=<FILE>;
fclose(FILE);
foreach (@memsettings) {
$_ =~ s~[\n\r]~~g;
}
$dr = $memsettings[14] ? $memsettings[14] : $txt{'470'};
if ($memsettings[11] eq 'Male') {
$GenderMale = ' selected';
}
if ($memsettings[11] eq 'Female') {
$GenderFemale = ' selected';
}
$signature = $memsettings[5];
$signature =~ s/\&\&/\n/g;
$signature =~ s/\</</g;
$signature =~ s/\>/>/g;
&CalcAge("parse"); # Let's get the birthdate
$memsettings[9] =~ tr/+/ /;
if ($memsettings[17] == 6) { $tsl6 = ' selected'; }
elsif ($memsettings[17] == 5) { $tsl5 = ' selected'; }
elsif($memsettings[17] == 4) { $tsl4 = ' selected'; }
elsif ($memsettings[17] == 3) { $tsl3 = ' selected'; }
elsif ($memsettings[17] == 2) { $tsl2 = ' selected'; }
elsif ($memsettings[17] == 1) { $tsl1 = ' selected'; }
elsif ($timeselected == 6) { $tsl6 = ' selected'; }
elsif ($timeselected == 5) { $tsl5 = ' selected'; }
elsif ($timeselected == 4) { $tsl4 = ' selected'; }
elsif ($timeselected == 3) { $tsl3 = ' selected'; }
elsif ($timeselected == 2) { $tsl2 = ' selected'; }
else { $tsl1 = ' selected'; }
&header;
$oldformat = $date;
$oldmonth = substr($oldformat,0,2);
$oldday = substr($oldformat,3,2);
$oldyear = ("20".substr($oldformat,6,2)) - 1900;
$oldhour = substr($oldformat,-8,2);
$oldminute = substr($oldformat,-5,2);
$oldsecond = substr($oldformat,-2,2);
use Time::Local 'timelocal';
eval { $oldtime = timelocal($oldsecond,$oldminute,$oldhour,$oldday,$oldmonth-1,$oldyear); };
my ($psec,$pmin,$phour,$dummy,$dummy,$dummy,$dummy,$dummy,$dummy) = localtime($oldtime);
if ($phour < 10) { $phour = "0$phour" };
if ($pmin < 10) { $pmin = "0$pmin" };
if ($psec < 10) { $psec = "0$psec" };
$proftime = $phour.":".$pmin.":".$psec;
$ampm = $phour > 11 ? 'pm' : 'am';
$phour = $phour % 12 || 12;
$proftime = qq~$phour:$pmin:$psec$ampm~;
print <<"EOT";
<form action="$cgi&action=profile2" method="POST" name="creator">
<table border=0 width=720 cellspacing=1 bgcolor="$color{'bordercolor'}" class="bordercolor" align="center">
<tr>
<td class="titlebg" bgcolor="$color{'titlebg'}" height="30">
<img src="$imagesdir/profile_sm.gif" alt="" border="0">
<font size=2 class="text1" color="$color{'titletext'}"><b>$txt{'79'}</b></font></td>
</tr><tr>
<td class="windowbg" bgcolor="$color{'windowbg'}" height="25"><BR><font size=1>$txt{'698'}</font><BR><BR></td>
</tr><tr>
<td class="catbg" bgcolor="$color{'catbg'}" height="25"><font size=2><b>$txt{'517'}</b></font></td>
</tr><tr>
<td class="windowbg" bgcolor="$color{'windowbg'}"><font size=2>
<table border=0 width="100%" cellpadding="3">
<tr>
<td width="320"><font size=2><b>Real Name: </b></font></td>
<td><font size=2><input type="text" name="truename" size="25" value="$memsettings[22]"></font></td> </tr>
<tr>
~;
if($settings[7] eq 'Administrator') {
$yymain .= qq~ <td width="320"><font size=2><b>Address: </b></font></td>
<td><font size=2><input type="text" name="address" size="25" value="$memsettings[30]"></font></td> </tr>
<tr> ~; }
$yymain .= qq~ <td width="320"><font size=2><b>City: </b></font></td>
<td><font size=2><input type="text" name="city" size="25" value="$memsettings[31]"></font></td> </tr>
<tr>
<td width="320"><font size=2><b>Zip Code: </b></font></td>
<td><font size=2><input type="text" name="zip" size="25" value="$memsettings[32]"></font></td> </tr>
<tr>
<td width="320"><font size=2><b>Phone Number: </b></font></td>
<td><font size=2><input type="text" name="phone" size="25" value="$memsettings[33]"></font></td> </tr>
<tr>
<td width="320"><font size=2><b>$txt{'35'}: </b></font></td>
<td><font size=2><input type="hidden" name="username" value="$INFO{'username'}">$INFO{'username'}</font></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'81'}: </b></font><BR>
<font size=1>$txt{'596'}</font></td>
<td><input type="password" name="passwrd1" size="20" value="$memsettings[0]"></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'82'}: </b></font></td>
<td><input type="password" name="passwrd2" size="20" value="$memsettings[0]"></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'68'}: </b></font><BR>
<font size=1>$txt{'518'}</font></td>
<td><input type="text" name="name" size="30" value="$memsettings[1]"></font></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'69'}: </b></font><BR>
<font size="1">$txt{'679'}</font></td>
<td><input type="text" name="email" size="30" value="$memsettings[2]"></td>
</tr>
<tr>
<td width="320"><font size=2><b>$txt{'755'}: </b></font><BR>
<font size="1">$txt{'756'}</font></td>
<td><input type="text" name="secretquestion" size="30" value="$memsettings[20]"></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'757'}: </b></font><BR></td>
<td><input type="password" name="secretanswer" size="30" value="$memsettings[21]"></td>
</tr>
</table><BR>
</td>
</tr><tr>
<td class="catbg" bgcolor="$color{'catbg'}" height="25"><font size=2><b>$txt{'597'}</b></font></td>
</tr><tr>
<td class="windowbg" bgcolor="$color{'windowbg'}">
<table border=0 width="100%" cellpadding="3">
<tr>
<td width="320"><font size=2><b>$txt{'231'}: </b></font></td>
<td>
<select name="gender" size="1">
<option value=""></option>
<option value="Male"$GenderMale>$txt{'238'}</option>
<option value="Female"$GenderFemale>$txt{'239'}</option>
</select>
</td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'563'}:</b></font></td>
<td><font size=1>$txt{'564'}<input type="text" name="bday1" size="2" maxlength="2" value="$umonth">$txt{'565'}<input type="text" name="bday2" size="2" maxlength="2" value="$uday">$txt{'566'}<input type="text" name="bday3" size="4" maxlength="4" value="$uyear"></font></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'227'}: </b></font></td>
<td><font size=2><input type="text" name="location" size="50" value="$memsettings[15]"></font></td>
</tr><tr>
<td colspan=2>
<BR><hr width="100%" size="1" color="$color{'windowbg3'}" class="windowbg3"></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'83'}: </b></font><BR>
<font size=1>$txt{'598'}</font></td>
<td><font size=2><input type=text name=websitetitle size=50 value="$memsettings[3]"></font></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'84'}: </b></font><BR>
<font size=1>$txt{'599'}</font></td>
<td><font size=2><input type=text name=websiteurl size=50 value="$memsettings[4]"></font></td>
</tr><tr>
<td colspan=2>
<BR><hr width="100%" size="1" color="$color{'windowbg3'}" class="windowbg3"></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'513'}: </b></font><BR>
<font size=1>$txt{'600'}</font></td>
<td><font size=2><input type=text name=icq size=20 value="$memsettings[8]"></font></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'603'}: </b></font><BR>
<font size=1>$txt{'601'}</font></td>
<td><font size=2><input type=text name=aim size=20 value="$memsettings[9]"></font></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'604'}: </b></font><BR>
<font size=1>$txt{'602'}</font></td>
<td><font size=2><input type=text name=yim size=20 value="$memsettings[10]"></font></td>
</tr><tr>
<td colspan=2>
<BR><hr width="100%" size="1" color="$color{'windowbg3'}" class="windowbg3"></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'228'}: </b></font></td>
<td><font size=2><input type=text name=usertext size=50 value="$memsettings[12]"></font></td>
</tr>
EOT
if($allowpics) {
opendir(DIR, "$facesdir") || fatal_error("$txt{'230'} ($facesdir)!<BR>$txt{'681'}");
@contents = readdir(DIR);
closedir(DIR);
$images = "";
foreach $line (sort @contents){
($name, $extension) = split (/\./, $line);
$checked = "";
if ($line eq $memsettings[13]) { $checked = ' selected'; }
if ($memsettings[13] =~ m~\Ahttp://~ && $line eq 'blank.gif') { $checked = ' selected'; }
if ($extension =~ /gif/i || $extension =~ /jpg/i || $extension =~ /jpeg/i || $extension =~ /png/i ){
if ($line eq 'blank.gif') { $name = $txt{'422'}; }
$images .= qq~<option value="$line"$checked>$name\n~;
}
}
if ($memsettings[13] =~ m~\Ahttp://~) {
$pic = 'blank.gif';
$checked = ' checked';
$tmp = $memsettings[13];
}
else {
$pic = $memsettings[13];
$tmp = 'http://';
}
print <<"EOT";
<tr>
<td width="320"><b><font size=2>$txt{'229'}:</B></font><BR>
<font size=1>$txt{'474'} $userpic_limits</font></td>
<td>
<script language="JavaScript1.2" type="text/javascript">
function showimage()
{
document.images.icons.src="$facesurl/"+document.creator.userpic.options[document.creator.userpic.selectedIndex].value;
}
</script>
<select name="userpic" size=6 onChange="showimage()">$images</select>
<img src="$facesurl/$pic" name="icons" border=0 hspace=15>
</td>
</tr><tr>
<td width="320"><font size="2"><B>$txt{'475'}</B></font></td>
<td><input type="checkbox" name="userpicpersonalcheck"$checked>
<input type="text" name="userpicpersonal" size="45" value="$tmp"></td>
</tr>
EOT
}
print <<EOT;
</table><BR>
</td>
</tr><tr>
<td class="catbg" bgcolor="$color{'catbg'}" height="25"><font size=2><b>$txt{'605'}</b></font></td>
</tr><tr>
<td class="windowbg" bgcolor="$color{'windowbg'}"><font size=2>
<table border=0 cellpadding="3" cellspacing="0">
EOT
if ($allow_hide_email == 1) { print <<"EOT";
<tr>
<td width="320"><font size=2><b>$txt{'721'}</b></font></td>
<td><input type="checkbox" name="hideemail" value="checked" $memsettings[19]></td>
</tr>
EOT
}
print <<"EOT";
<tr>
<td width="320"><font size=2><b>$txt{'486'}:</b></font><BR>
<font size=1>$txt{'479'}</font></td>
<td width="50">
<select name="usertimeselect" size=1>
<option value="1"$tsl1>$txt{'480'}
<option value="5"$tsl5>$txt{'484'}
<option value="4"$tsl4>$txt{'483'}
<option value="2"$tsl2>$txt{'481'}
<option value="3"$tsl3>$txt{'482'}
<option value="6"$tsl6>$txt{'485'}
</select>
</td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'371'}:</b></font><BR>
<font size=1>$txt{'519'}</font></td>
<td><font size=1>
<input name=usertimeoffset size=5 maxlength=5 value=$memsettings[18]>
<BR>$txt{'741'}: <i>$proftime</i></font></td>
</tr><tr>
<td colspan=2><hr width="100%" size="1" color="$color{'windowbg3'}" class="windowbg3"></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'85'}:</b></font><BR>
<font size=1>$txt{'606'}</font></td>
<td><font size=2><textarea name="signature" rows="4" cols="50" wrap="virtual">$signature</textarea><BR>
<FONT SIZE="1">$txt{'664'} <input value="$MaxSigLen" size="3" name="msgCL" disabled></FONT><BR><BR></font></td></tr>
<script language="JavaScript">
<!--
var supportsKeys = false
function tick() {
calcCharLeft(document.forms[0])
if (!supportsKeys) timerID = setTimeout("tick()",$MaxSigLen)
}
function calcCharLeft(sig) {
clipped = false
maxLength = $MaxSigLen
if (document.creator.signature.value.length > maxLength) {
document.creator.signature.value = document.creator.signature.value.substring(0,maxLength)
charleft = 0
clipped = true
} else {
charleft = maxLength - document.creator.signature.value.length
}
document.creator.msgCL.value = charleft
return clipped
}
tick();
//-->
</script>
EOT
if($settings[7] eq "Administrator") {
if($memsettings[7] eq 'Administrator') { $tt = $MemStatAdmin; }
elsif ($memsettings[7] eq 'Global Moderator') { $tt = $MemStatGMod; }
elsif ($memsettings[7] eq 'Moderator') { $tt = $MemStatMod; }
else { $tt = $memsettings[7]; }
print <<"EOT";
<tr>
<td colspan=2><hr width="100%" size="1" color="$color{'windowbg3'}" class="windowbg3"></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'86'}: </b></font></td>
<td><font size=2><input type=text name=settings6 size=4 value="$memsettings[6]"></font></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'87'}: </b></font></td>
<td><font size=2><select name="settings7">
<option value="$tt">$tt
<option value="$memsettings[7]">---------------
<option value="">
EOT
$position='';
$z=0;
print qq~<option value="Administrator">$MemStatAdmin~;
print qq~<option value="Global Moderator">$MemStatGMod~;
print qq~<option value="$MemStatNewbie">$MemStatNewbie~;
while($MemStat[$z]) {
$position= qq~<option value="$MemStat[$z]">$MemStat[$z]~;
++$z;
print qq~$position~;
}
print <<"EOT";
</select></font></td>
</tr><tr>
<td width="320"><font size=2><b>$txt{'233'}:</b><BR>
<font size=1>$txt{'421'}</font></td>
<td><input type="text" name="dr" size="20" value="$dr"></td></tr>
EOT
}
print <<"EOT";
<tr><td align="center" colspan="2"><BR><input type=submit name=moda value="$txt{'88'}">
<input type=submit name=moda value="$txt{'89'}"><BR><BR>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
EOT
&footer;
exit;
}
sub ModifyProfile2 {
my( %member, $key, $value, $newpassemail, @memberlist, $a, @check_settings, @reserve, $matchword, $matchcase, $matchuser, $matchname, $namecheck, $reserved, $reservecheck, @dirdata, $filename, @entries, $entry, $umail, @members, $tempname );
$FORM{'signature'} =~ s~\n~\&\&~g;
while( ($key,$value) = each(%FORM) ) {
$value =~ s~\A\s+~~;
$value =~ s~\s+\Z~~;
$value =~ s~[\n\r]~~g;
$member{$key} = $value;
}
# make sure this person has access to this profile
if($username ne $member{'username'} && $settings[7] ne 'Administrator') {
&fatal_error($txt{'80'});
}
if( $settings[7] ne 'Administrator' ) {
$member{'username'} = $username;
$member{'settings6'} = $settings[6];
$member{'settings7'} = $settings[7];
}
if($member{'settings6'} !~ /\A[0-9]+\Z/) { &fatal_error("$txt{'749'}"); }
if ($member{'username'} =~ /\//){ &fatal_error($txt{'224'}); }
if ($member{'username'} =~ /\\/){ &fatal_error($txt{'225'}); }
$INFO{'username'} = $member{'username'};
if( $member{'userpicpersonalcheck'} && ( $member{'userpicpersonal'} =~ m/\.gif\Z/i || $member{'userpicpersonal'} =~ m/\.jpg\Z/i || $member{'userpicpersonal'} =~ m/\.jpeg\Z/i || $member{'userpicpersonal'} =~ m/\.png\Z/i ) ) {
$member{'userpic'} = $member{'userpicpersonal'};
}
if($member{'userpic'} eq "") { $member{'userpic'} = "blank.gif"; }
&fatal_error("$txt{'592'}") if($member{'userpic'} !~ m^\A[0-9a-zA-Z_\.\#\%\-\:\+\?\$\&\~\.\,\@/]+\Z^);
if(!$allowpics) { $member{'userpic'} = "blank.gif"; }
if( $emailnewpass && lc $member{'email'} ne lc $settings[2] && $settings[7] ne 'Administrator') {
srand();
$member{'passwrd1'} = int( rand(100) );
$member{'passwrd1'} =~ tr/0123456789/ymifxupbck/;
$_ = int( rand(77) );
$_ =~ tr/0123456789/q8dv7w4jm3/;
$member{'passwrd1'} .= $_;
$_ = int( rand(89) );
$_ =~ tr/0123456789/y6uivpkcxw/;
$member{'passwrd1'} .= $_;
$_ = int( rand(188) );
$_ =~ tr/0123456789/poiuytrewq/;
$member{'passwrd1'} .= $_;
$_ = int( rand(65) );
$_ =~ tr/0123456789/lkjhgfdaut/;
$member{'passwrd1'} .= $_;
$newpassemail = 1;
} else {
&fatal_error("($member{'username'}) $txt{'213'}") if($member{'passwrd1'} ne $member{'passwrd2'});
&fatal_error("($member{'username'}) $txt{'91'}") if($member{'passwrd1'} eq '');
&fatal_error("$txt{'241'}") if($member{'passwrd1'} !~ /\A[\s0-9A-Za-z!@#$%\^&*\(\)_\+|`~\-=\\:;'",\.\/?\[\]\{\}]+\Z/);
}
&fatal_error("$txt{'75'}") if($member{'name'} eq '');
&fatal_error("$txt{'242'}") if($member{'name'} !~ /^[\s0-9A-Za-z\[\]#%+,-|\.:=?@^_]+$/);
&fatal_error("Please ENTER something into the Address field") if($member{'address'} eq '');
&fatal_error("Please ENTER only characters into the Address field") if($member{'address'} =~ /[^0-9a-zA-Z. ]/);
&fatal_error("Please ENTER something into the City field") if($member{'city'} eq '');
&fatal_error("Please ENTER only characters into the City field") if($member{'city'} =~ /[^0-9a-zA-Z. ]/);
&fatal_error("Please ENTER something into the Zip field") if($member{'zip'} eq '');
&fatal_error("Please ENTER only characters into the Zip field") if($member{'zip'} =~ /[^0-9]/);
&fatal_error("Please ENTER something into the Phone # field") if($member{'zip'} eq '');
&fatal_error("Please ENTER only characters into the Phone # field") if($member{'zip'} =~ /[^0-9]/);
&fatal_error("Please ENTER your REAL NAME") if($member{'truename'} eq '');
&fatal_error("Please ENTER your NAME Properly") if($member{'truename'} =~ /[^a-zA-Z. ]/);
&fatal_error("$txt{'75'}") if($member{'name'} eq '|');
&fatal_error("$txt{'568'}") if(length($member{'name'}) > 20);
&fatal_error("$txt{'76'}") if($member{'email'} eq '');
&fatal_error("$txt{'243'}") if($member{'email'} !~ /^[0-9A-Za-z@\._\-]+$/);
&fatal_error("$txt{'500'}") if(($member{'email'} =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/) || ($member{'email'} !~ /^.+@\[?(\w|[-.])+\.[a-zA-Z]{2,4}|[0-9]{1,4}\]?$/));
&fatal_error("$txt{'758'}") if($member{'secretquestion'} eq '');
&fatal_error("$txt{'759'}") if($member{'secretanswer'} eq '');
if( $member{'bday1'} ne "" || $member{'bday1'} ne "" || $member{'bday1'} ne "" ) {
&fatal_error("$txt{'567'}") if( $member{'bday1'} !~ /^[0-9]+$/ || $member{'bday2'} !~ /^[0-9]+$/ || $member{'bday3'} !~ /^[0-9]+$/ || length($member{'bday3'}) < 4 );
&fatal_error("$txt{'567'}") if( $member{'bday1'} < 1 || $member{'bday1'} > 12 || $member{'bday2'} < 1 || $member{'bday2'} > 31 || $member{'bday3'} < 1901 || $member{'bday3'} > $year-5 );
}
&fatal_error("$txt{'680'}") if ($member{'username'} eq "admin" && $member{'settings7'} ne "Administrator");
if($member{'moda'} eq $txt{'88'}) {
if (length($member{'signature'}) > $MaxSigLen) { $member{'signature'} = substr($member{'signature'},0,$MaxSigLen); }
$member{'icq'} =~ s/[^0-9]//g;
$member{'bday1'} =~ s/[^0-9]//g;
$member{'bday2'} =~ s/[^0-9]//g;
$member{'bday3'} =~ s/[^0-9]//g;
if($member{'bday1'}) { $member{'bday'} = "$member{'bday1'}/$member{'bday2'}/$member{'bday3'}"; }
else { $member{'bday'} = ''; }
$member{'signature'} =~ s/</</g;
$member{'signature'} =~ s/</>/g;
$member{'aim'} =~ s/ /\+/g;
$member{'yim'} =~ s/ /\+/g;
if($settings[7] ne "Administrator") { $member{'dr'} = $settings[14]; }
# store the name temorarily so we can restore any _'s later
$tempname = $member{'name'};
$member{'name'} =~ s/\_/ /g;
&ToHTML($member{'location'});
&ToHTML($member{'aim'});
&ToHTML($member{'yim'});
&ToHTML($member{'gender'});
&ToHTML($member{'usertext'});
&ToHTML($member{'websiteurl'});
&ToHTML($member{'websitetitle'});
&ToHTML($member{'email'});
&ToHTML($FORM{'hideemail'});
&ToHTML($member{'name'});
&ToHTML($member{'address'});
&ToHTML($member{'city'});
&ToHTML($member{'zip'});
&ToHTML($member{'phone'});
&ToHTML($member{'truename'});
&FromHTML($member{'usertext'});
$member{'usertext'} =~ s~(\S{15})(?=\S)~$1 ~g;
&ToHTML($member{'usertext'});
if ( length $member{'signature'} > 1000 ) { $member{'signature'} = substr( $member{'signature'}, 0, 1000 ); }
$member{'usertimeoffset'} =~ tr/,/./;
$member{'usertimeoffset'} =~ s/[^\d*|\.|\-|w*]//g;
if (( $member{'usertimeoffset'} < -23.5) || ( $member{'usertimeoffset'} > 23.5)) { &fatal_error($txt{'487'}); }
fopen(FILE, "$memberdir/memberlist.txt");
@memberlist = <FILE>;
fclose(FILE);
$testname = lc $member{'name'};
for ($a = 0; $a < @memberlist; $a++) {
chomp $memberlist[$a];
$membername = lc $memberlist[$a];
if( fopen(FILE2, "$memberdir/$memberlist[$a].dat") ) {
# Load users and check email
if( !$yyUDLoaded{$memberlist[$a]} && -e("$memberdir/$memberlist[$a].dat") && $memberlist[$a] ne $member{'username'}) {
# If user is not in memory, s/he must be loaded.
&LoadUser($memberlist[$a]);
if($userprofile{$memberlist[$a]}->[2] eq $member{'email'}) { &fatal_error("$txt{'730'} ($member{'email'}) $txt{'731'}"); }
}
$tmpa = <FILE2>;
$realnametemp = <FILE2>;
fclose(FILE2);
chomp $realnametemp;
$realnametemp = lc $realnametemp;
if ($realnametemp eq $testname && $memberlist[$a] ne $username && $settings[7] ne 'Administrator') { &fatal_error("($member{'name'}) $txt{'473'}"); }
}
}
fopen(FILE, "$vardir/reserve.txt") || &fatal_error("$txt{'23'} reserve.txt");
@reserve = <FILE>;
fclose(FILE);
fopen(FILE, "$vardir/reservecfg.txt") || &fatal_error("$txt{'23'} reservecfg.txt");
@reservecfg = <FILE>;
fclose(FILE);
for( $a = 0; $a < @reservecfg; $a++ ) {
chomp $reservecfg[$a];
}
$matchword = $reservecfg[0] eq 'checked';
$matchcase = $reservecfg[1] eq 'checked';
$matchuser = $reservecfg[2] eq 'checked';
$matchname = $reservecfg[3] eq 'checked';
$namecheck = $matchcase eq 'checked' ? $member{'name'} : lc $member{'name'};
foreach $reserved (@reserve) {
chomp $reserved;
$reservecheck = $matchcase ? $reserved : lc $reserved;
if ($matchname) {
if ($matchword) {
if ($namecheck eq $reservecheck) { &fatal_error("$txt{'244'} $reserved"); }
}
else {
if ($namecheck =~ $reservecheck) { &fatal_error("$txt{'244'} $reserved"); }
}
}
}
# let's restore the name now
&ToHTML($tempname);
$member{'name'} = $tempname;
fopen(SETTINGS, "$memberdir/$member{'username'}.dat");
@userProfileSettings = <SETTINGS>;
fclose(SETTINGS);
chomp $userProfileSettings[0];
chomp $userProfileSettings[21];
if ($member{'passwrd1'} eq $userProfileSettings[0]) {
$cryptpass = $member{'passwrd1'};
}
else {
$cryptpass = crypt("$member{'passwrd1'}",$pwseed);
}
if ($member{'secretanswer'} eq $userProfileSettings[21]) {
$cryptanswer = $member{'secretanswer'};
}
else {
$cryptanswer = crypt("$member{'secretanswer'}",$pwseed);
}
fopen( FILE, ">$memberdir/$member{'username'}.dat", 1);
print FILE "$cryptpass\n";
print FILE "$member{'name'}\n";
print FILE "$member{'email'}\n";
print FILE "$member{'websitetitle'}\n";
print FILE "$member{'websiteurl'}\n";
print FILE "$member{'signature'}\n";
print FILE "$member{'settings6'}\n";
print FILE "$member{'settings7'}\n";
print FILE "$member{'icq'}\n";
print FILE "$member{'aim'}\n";
print FILE "$member{'yim'}\n";
print FILE "$member{'gender'}\n";
print FILE "$member{'usertext'}\n";
print FILE "$member{'userpic'}\n";
print FILE "$member{'dr'}\n";
print FILE "$member{'location'}\n";
print FILE "$member{'bday'}\n";
print FILE "$member{'usertimeselect'}\n";
print FILE "$member{'usertimeoffset'}\n";
if ($FORM{'hideemail'} ne "checked") { $FORM{'hideemail'} = ""; }
print FILE "$FORM{'hideemail'}\n";
print FILE "$member{'address'}\n";
print FILE "$member{'city'}\n";
print FILE "$member{'zip'}\n";
print FILE "$member{'phone'}\n";
print FILE "$member{'secretquestion'}\n";
print FILE "$cryptanswer\n";
print FILE "$member{'truename'}\n";
fclose(FILE);
if($newpassemail) {
# Write log
fopen(LOG, "$vardir/log.txt");
@entries = <LOG>;
fclose(LOG);
fopen(LOG, ">$vardir/log.txt", 1);
$field="$username";
foreach $curentry (@entries) {
$curentry =~ s/\n//g;
($name, $value) = split(/\|/, $curentry);
if($name ne "$field") {
print LOG "$curentry\n";
}
}
fclose(LOG);
$yySetCookies = qq~Set-Cookie: $cookieusername=; expires=Thu, 01-Jan-1970 00:00:00 GMT;\n~;
$yySetCookies .= qq~Set-Cookie: $cookiepassword=; expires=Thu, 01-Jan-1970 00:00:00 GMT;\n~;
$yySetCookies .= qq~Set-Cookie: $cookieusername=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT;\n~;
$yySetCookies .= qq~Set-Cookie: $cookiepassword=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT;\n~;
$username = 'Guest';
$password = '';
@settings = ();
$realname = '';
$realemail = '';
$ENV{'HTTP_COOKIE'} = '';
&FormatUserName($member{'username'});
$yytitle="$txt{'245'}";
&header;
&sendmail($member{'email'},qq~$txt{'700'} $mbname~, "$txt{'733'} $member{'passwrd1'} $txt{'734'} $member{'username'}.\n\n$txt{'701'} 0'}");
print <<"EOT";
<BR>
<table border=0 width=100% cellspacing=1 bgcolor="$color{'bordercolor'}" class="bordercolor" align="center">
<tr>
<td class="titlebg" bgcolor="$color{'titlebg'}"><font size=2 class="text1" color="$color{'titletext'}"><b>$txt{'97'}</b></font></td>
</tr><tr>
<td class="windowbg" bgcolor="$color{'windowbg'}" align="left" cellpadding=3><font size=2>$txt{'638'}</font></td>
</tr><tr>
<td class="windowbg" bgcolor="$color{'windowbg2'}" valign=top><form action="$cgi&action=login2" method="POST">
<table border=0>
<tr>
<td><font size=2><b>$txt{'35'}:</b></font></td>
<td><font size=2><input type=text name="username" size=15 value="$member{'username'}"></font></td>
<td><font size=2><b>$txt{'36'}:</b></font></td>
<td><font size=2><input type=password name="passwrd" size=15></font> </td>
<td><font size=2><b>$txt{'497'}:</b></font></td>
<td><font size=2><input type=text name="cookielength" size=4 value="$Cookie_Length">
<td><font size=2><b>$txt{'508'}:</B></font></td>
<td><font size=2><input type=checkbox name="cookieneverexp"></font></td> </font></td>
<td align=center colspan=2><input type=submit value="$txt{'34'}"></td>
</tr>
</table>
</td>
</tr>
</table>
EOT
&footer;
exit;
}
else {
if ( $member{'username'} eq $username ) {
$Cookie_Exp_Date = 'Sun, 17-Jan-2038 00:00:00 GMT';
$password = $cryptpass;
$yySetCookies = qq~Set-Cookie: $cookieusername=$username; path=/; expires=$Cookie_Exp_Date;\n~;
$yySetCookies .= qq~Set-Cookie: $cookiepassword=$password; path=/; expires=$Cookie_Exp_Date;\n~;
&LoadUserSettings;
&WriteLog;
}
&ViewProfile;
}
} else {
if($settings[7] eq 'Administrator') {
unlink("$memberdir/$member{'username'}.dat");
unlink("$memberdir/$member{'username'}.msg");
unlink("$memberdir/$member{'username'}.log");
unlink("$memberdir/$member{'username'}.outbox");
unlink("$memberdir/$member{'username'}.imconfig");
}
elsif( $member{'username'} eq $username ) {
unlink("$memberdir/$username.dat");
unlink("$memberdir/$username.msg");
unlink("$memberdir/$username.log");
unlink("$memberdir/$username.outbox");
unlink("$memberdir/$username.imconfig");
}
opendir (DIRECTORY,"$datadir");
@dirdata = readdir(DIRECTORY);
closedir (DIRECTORY);
if($settings[7] eq 'Administrator') {
$umail=$member{'email'};
} else {
$umail=$settings[2];
}
foreach $filename (@dirdata) {
unless( $filename =~ m~mail\A~ ) { next; }
fopen(FILE, "$datadir/$filename");
@entries = <FILE>;
fclose(FILE);
fopen(FILE, ">$datadir/$filename");
foreach $entry (@entries) {
$entry =~ s/[\n\r]//g;
if ($entry ne $umail) {
print FILE "$entry\n";
}
}
fclose(FILE);
}
fopen(FILE, "$memberdir/memberlist.txt");
@members = <FILE>;
fclose(FILE);
fopen(FILE, ">$memberdir/memberlist.txt", 1);
my $memberfound = 0;
my $lastvalidmember = '';
foreach $curmem (@members) {
chomp $curmem;
if($curmem ne $member{'username'}) { print FILE "$curmem\n"; $lastvalidmember = $curmem; }
else { ++$memberfound; }
}
fclose(FILE);
my $membershiptotal = @members - $memberfound;
fopen(FILE, "+>$memberdir/members.ttl");
print FILE qq~$membershiptotal|$lastvalidmember~;
fclose(FILE);
if($settings[7] ne 'Administrator') {
require "$sourcedir/LogInOut.pl"; &Logout;
}
$yySetLocation = qq~$scripturl~;
&redirectexit;
}
exit;
}
sub ViewProfile {
if (-e "$memberdir/$INFO{'username'}.ref") {
fopen(FILE, "$memberdir/$INFO{'username'}.ref");
@names=<FILE>;
$numbercount = @names;
fclose(FILE);
}
if($names[0] eq "0") {$names[0] eq "(not referred)"}
$number = $numbercount - 1;
if ($number < 0) { $number = 0; }
if ($INFO{'username'} =~ /\//){ &fatal_error("$txt{'224'}" ); }
if ($INFO{'username'} =~ /\\/){ &fatal_error("$txt{'225'}" ); }
if(!-e ("$memberdir/$INFO{'username'}.dat")){ &fatal_error("$txt{'453'} -- $INFO{'username'}"); }
my($memberinfo, $modify, $email, $gender, $pic);
$yytitle = "$txt{'92'} $INFO{'username'}";
&header;
# get the member's info
fopen(FILE, "$memberdir/$INFO{'username'}.dat");
@memsettings=<FILE>;
fclose(FILE);
chomp @memsettings;
$icq = $memsettings[8];
$memsettings[9] =~ tr/+/ /;
$dr = "";
if ($memsettings[14] eq "") { $dr = "$txt{'470'}"; }
else { $dr = "$memsettings[14]"; $dr = &timeformat($dr); }
&CalcAge("calc"); # How old is he/she?
&CalcAge("isbday"); # is it the bday?
if($isbday) { $isbday = "<img src=\"$imagesdir/bdaycake.gif\" width=40>"; }
$memsettings[9] =~ s/\+/ /g;
my ($msstatcount);
$msstatcount=0;
if ($memsettings[7]) { $memberinfo = "$memsettings[7]"; } else {
if( $memsettings[6] >= $MemPostNewbie) { $memberinfo = "$MemStatNewbie"; }
while($MemStat[$msstatcount] && $MemPostNum[$msstatcount] ne "x") {
if( $memsettings[6] >= $MemPostNum[$msstatcount] ) { $memberinfo = "$MemStat[$msstatcount]"; }
++$msstatcount;
}
}
&FormatUserName($INFO{'username'});
if ($username eq $INFO{'username'} || $settings[7] eq "Administrator") {
$modify = qq~« <a href="$cgi&action=profile&username=$useraccount{$INFO{'username'}}"><font size=2 class="text1" color="$color{'titletext'}">$txt{'17'}</font></a> »~;
}
### BUGFIX OWN EMAIL SHOWN IF HIDE IS ACTIVATED ###
if ($memsettings[19] ne "checked" || $settings[7] eq "Administrator" || $settings[7] eq "Moderator" || $allow_hide_email ne 1 || $username eq $INFO{'username'}) {
$email = qq~<a href="mailto:$memsettings[2]">$memsettings[2]</a>~;
### END - BUGFIX OWN EMAIL SHOWN IF HIDE IS ACTIVATED ###
}
else { $email = qq~<i>$txt{'722'}</i>~; }
$gender = "";
if ($memsettings[11] eq "Male") { $gender = qq~$txt{'238'}~; }
if ($memsettings[11] eq "Female") { $gender = qq~$txt{'239'}~; }
if($allowpics) {
if ($memsettings[13] =~ /^\http:\/\// ) {
if ($userpic_width ne 0) { $tmp_width = "width=$userpic_width"; } else { $tmp_width=""; }
if ($userpic_height ne 0) { $tmp_height = "height=$userpic_height"; } else { $tmp_height=""; }
$pic = qq~<a href="$memsettings[13]" target="_blank" onClick="window.fopen('$memsettings[13]', 'ppic$INFO{username}', 'resizable,width=200,height=200'); return false;">~;
$pic = qq~<img src="$memsettings[13]" $tmp_width $tmp_height border=0></a>~;
}
else {
$pic = qq~<a href="$facesurl/$memsettings[13]" target="_blank" onClick="window.fopen('$facesurl/$memsettings[13]', 'ppic$INFO{username}', 'resizable,width=200,height=200'); return false;">~;
$pic = qq~<img src="$facesurl/$memsettings[13]" border=0></a>~;
}
}
$online = "$txt{'113'} ?";
fopen(FILE, "$vardir/log.txt");
@entries = <FILE>;
fclose(FILE);
foreach $curentry (@entries) {
chomp $curentry;
($name, $value) = split(/\|/, $curentry);
if( $name ) {
&LoadUser($name);
if( $useraccount{$name} eq $INFO{'username'}) {
$online =~ s~\?~<i>$txt{'686'}</i>.~;
}
}
}
$online =~ s~\?~<i>$txt{'687'}</i>.~;
if($memsettings[6] > 100000) { $memsettings[6] = "$txt{'683'}"; }
print <<"EOT";
<table border="0" cellpadding="4" cellspacing="1" bgcolor="$color{'bordercolor'}" class="bordercolor" align="center">
<tr>
<td class="titlebg" colspan="2" bgcolor="$color{'titlebg'}">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr height="30">
<td width="220">
<img src="$imagesdir/profile_sm.gif" alt="" border="0">
<font size=2 class="text1" color="$color{'titletext'}"><B>$txt{'35'}: $INFO{'username'}</b></font></td>
<td align="center" width="200">
<font size=2 class="text1" color="$color{'titletext'}">$modify</font></td>
<td align="center" width="150">
<font size=2 class="text1" color="$color{'titletext'}">$txt{'232'}</font></td>
</tr>
</table>
</td>
</tr><tr>
<td bgcolor="$color{'windowbg'}" class="windowbg" width="420">
<table border=0 cellspacing="0" cellpadding="2" width="100%">
<tr>
<td><font size=2><b>Real Name: </b></font></td>
<td><font size=2 color=yellow>$memsettings[22]</font></td>
</tr><tr>
<td><font size=2><b>Address: </b></font></td>
<td><font size=2>$memsettings[30]</font></td>
</tr><tr>
<td><font size=2><b>City: </b></font></td>
<td><font size=2>$memsettings[31]</font></td>
</tr><tr> <br>
<td><font size=2><b>Zip Code: </b></font></td>
<td><font size=2>$memsettings[32]</font></td>
</tr><tr> <br>
<td><font size=2><b>Phone Number: </b></font></td>
<td><font size=2>$memsettings[33]</font></td>
</tr><tr>
<td><font size=2><b>$txt{'35'}: </b></font></td>
<td><font size=2>$memsettings[1]</font></td>
</tr><tr>
<td><font size=2><b>$txt{'86'}: </b></font></td>
<td><font size=2>$memsettings[6]</font></td>
</tr><tr>
<td><font size=2><b>$txt{'87'}: </b></font></td>
<td><font size=2>$memberinfo</font></td>
</tr><tr>
<td><font size=2><b>$txt{'233'}: </b></font></td>
<td><font size=2>$dr</font></td>
</tr><tr>
<td colspan="2"><hr size="1" width="100%" color="$color{'windowbg3'}" class="windowbg3"></td>
</tr><tr>
<td><font size=2><b>$txt{'513'}:</b></font></td>
<td><font size=2><a href="$cgi&action=icqpager&UIN=$icq" target=_blank>$memsettings[8]</a></font></td>
</tr><tr>
<td><font size=2><b>$txt{'603'}: </b></font></td>
<td><font size=2>$memsettings[9]</font></td>
</tr><tr>
<td><font size=2><b>$txt{'604'}: </b></font></td>
<td><font size=2>$memsettings[10]</font></td>
</tr><tr>
<td><font size=2><b>$txt{'69'}: </b></font></td>
<td><font size=2>$email</font></td>
</tr><tr>
<td><font size=2><b>$txt{'96'}: </b></font></td>
<td><font size=2><a href="$memsettings[4]" target=_blank>$memsettings[3]</a></font></td>
</tr><tr>
<td colspan="2"><hr size="1" width="100%" color="$color{'windowbg3'}" class="windowbg3"></td>
</tr><tr>
<td><font size=2><b>$txt{'231'}: </b></font></td>
<td><font size=2>$gender</font></td>
</tr><tr>
<td><font size=2><b>$txt{'420'}:</b></font></td>
<td><font size=2>$age</font> $isbday</td>
</tr><tr>
<td><font size=2><b>$txt{'227'}: </b></font></td>
<td><font size=2>$memsettings[15]</font></td>
</tr>
EOT
## REFER HACK ##
if(-e "$memberdir/$INFO{'username'}.ref") {
fopen(FILE, "$memberdir/$INFO{'username'}.ref");
@referred = <FILE>;
fclose(FILE);
$referredby = $referred[0];
} else {
$referredby = "(not referred)";
}
if (($enable_memrefers) || ($settings[7] eq 'Administrator') && ($enable_refers)) {
print<<"EOT";
<tr>
<td><font size=2><b>$reftxt{'02'}</b></font></td>
<td><font size=2>$referredby</font></td>
</tr>
<tr>
<td><font size=2><b>$reftxt{'03'}</b></font></td>
<td><font size=2>$number</font></td>
</tr>
<tr>
<td valign="top"><font size=2><b>$reftxt{'04'}</b></font></td>
<td><font size=2><a target="_blank" font></td>
</tr>
<tr>
<td valign="top"><font size=2><b>$reftxt{'12'}</b></font></td>
<td><font size=2><a href="$scripturl?action=reflist">$reftxt{'12'}</a></font></td>
</tr>
EOT
}
## END REFER HACK ##
print<<"EOT";
</table>
</td>
<td bgcolor="$color{'windowbg'}" class="windowbg" valign="middle" align="center" width="150">
$pic<BR><BR>
<font size=2>$memsettings[12]</font></td>
</tr><tr height="25">
<td class="titlebg" bgcolor="$color{'titlebg'}" colspan="2">
<font size=2 class="text1" color="$color{'titletext'}"><b>$txt{'459'}:</b></font></td>
</tr><tr>
<td colspan="2" bgcolor="$color{'windowbg2'}" class="windowbg2" valign="middle">
<form action="$cgi&action=usersrecentposts&username=$useraccount{$INFO{'username'}}" method="POST">
<font size=2>
$online<BR><BR>
<a ><BR>
$txt{'460'} <select name="viewscount" size="1">
<option value="5">5</option>
<option value="10" selected>10</option>
<option value="50">50</option>
<option value="0">$txt{'190'}</option>
</select> $txt{'461'}. <input type=submit value="$txt{'462'}">
</font></td>
</tr>
</table>
</form>
EOT
&footer;
exit;
}
sub usersrecentposts {
my $curuser = $INFO{'username'};
&FormatUserName($curuser);
if ($curuser =~ m~/~){ &fatal_error($txt{'224'}); }
if ($curuser =~ m~\\~){ &fatal_error($txt{'225'}); }
my $display = $FORM{'viewscount'};
if( $display =~ /\D/ ) { &fatal_error($txt{'337'}); }
$display ||= 999999999;
my( @memset, @categories, %data, %cat, $numfound, $oldestfound, $curcat, %catname, %cataccess, %catboards, $openmemgr, @membergroups, $tmpa, %openmemgr, $curboard, @threads, @boardinfo, $i, $c, @messages, $tnum, $tsub, $tname, $temail, $tdate, $treplies, $tusername, $ticon, $tstate, $mname, $memail, $mdate, $musername, $micon, $mattach, $mip, $mns, $mtime, $counter, $board, $notify );
fopen(FILE, "$memberdir/$curuser.dat") || &fatal_error("$txt{'23'} $curuser.txt");
@memset = <FILE>;
fclose(FILE);
@categories = ();
fopen(FILE, "$vardir/cat.txt");
@categories = <FILE>;
fclose(FILE);
# Load Censor List
&LoadCensorList;
$oldestfound = stringtotime("01/10/37 $txt{'107'} 00:00:00");
foreach $curcat (@categories) {
chomp $curcat;
fopen(FILE, "$boardsdir/$curcat.cat");
$catname{$curcat} = <FILE>;
chomp $catname{$curcat};
$cataccess{$curcat} = <FILE>;
chomp $cataccess{$curcat};
@{$catboards{$curcat}} = <FILE>;
fclose(FILE);
$openmemgr{$curcat} = 0;
@membergroups = split( /,/, $cataccess{$curcat} );
foreach $tmpa (@membergroups) {
if( $tmpa eq $settings[7]) { $openmemgr{$curcat} = 1; last; }
}
if( ! $cataccess{$curcat} || $settings[7] eq 'Administrator' ) {
$openmemgr{$curcat} = 1;
}
unless( $openmemgr{$curcat} ) { next; }
boardcheck: foreach $curboard (@{$catboards{$curcat}}) {
chomp $curboard;
fopen(FILE, "$boardsdir/$curboard.txt");
@threads = <FILE>;
fclose(FILE);
fopen(FILE, "$boardsdir/$curboard.dat");
@boardinfo = <FILE>;
fclose(FILE);
foreach (@boardinfo) {
chomp;
}
@{$boardinfo{$curboard}} = @boardinfo;
$cat{$curboard} = $curcat;
threadcheck: for ($i = 0; $i < @threads; $i++) {
chomp $threads[$i];
($tnum, $tsub, $tname, $temail, $tdate, $treplies, $tusername, $ticon, $tstate) = split( /\|/, $threads[$i] );
fopen(FILE, "$datadir/$tnum.txt") || next;
@messages = <FILE>;
fclose(FILE);
for ($c = 0; $c < @messages; $c++) {
chomp $messages[$c];
($msub, $mname, $memail, $mdate, $musername, $micon, $mattach, $mip, $message, $mns) = split(/\|/,$messages[$c]);
if ($curuser eq $musername) {
$mtime = stringtotime($mdate);
if( $numfound >= $display && $mtime <= $oldestfound ) {
next boardcheck;
}
else {
$data{$mtime} = [$curboard, $tnum, $c, $msub, $mname, $memail, $mdate, $musername, $micon, $mattach, $mip, $message, $mns];
if( $mtime < $oldestfound ) { $oldestfound = $mtime; }
++$numfound;
}
}
}
}
}
}
$yytitle = "$txt{'458'} $memset[1]";
&header;
print<<"EOT";
<p align=left><a href="$cgi&action=viewprofile&username=$useraccount{$curuser}"><font size=2><b>$txt{'92'} $memset[1]</b></font></a></p>
EOT
@messages = sort {$b <=> $a } keys %data;
if( @messages > $display ) { $#messages = $display - 1; }
$counter = 1;
for( $i = 0; $i < @messages; $i++ ) {
($board, $tnum, $c, $msub, $mname, $memail, $mdate, $musername, $micon, $mattach, $mip, $message, $mns) = @{ $data{$messages[$i]} };
foreach (@censored) {
($tmpa,$tmpb) = @{$_};
$message =~ s~\Q$tmpa\E~$tmpb~gi;
$msub =~ s~\Q$tmpa\E~$tmpb~gi;
}
if($enable_ubbc) { $ns = $mns; &DoUBBC; }
if($enable_notification) {
$notify = qq~$menusep<a }</a>~;
}
print <<"EOT";
<table border=0 width=100% cellspacing=1 $color{'bordercolor'}>
<tr>
<td align=left bgcolor="$color{'titlebg'}"><font class="text1" color="$color{'titletext'}" size=2> $counter </font></td>
<td width=75% bgcolor="$color{'titlebg'}"><font class="text1" color="$color{'titletext'}" size=2><b> $catname{$cat{$board}} / $boardinfo{$board}->[0] / <a href="$scripturl?board=$board&action=display&num=$tnum&start=$c"><font class="text1" color="$color{'titletext'}" size=2>$msub</font></a></b></font></td>
<td align=right bgcolor="$color{'titlebg'}"><nobr> <font class="text1" color="$color{'titletext'}" size=2>$txt{'30'}: $mdate </font></nobr></td>
</tr>
<tr height=80>
<td colspan=3 bgcolor="$color{'windowbg2'}" valign=top><font size=2>$message</font></td>
</tr>
<tr>
<td colspan=3 bgcolor="$color{'catbg'}"><font size=2>
<a img{'reply'}</a>$menusep<a img{'replyquote'}</a>$notify
</font></td>
</tr>
</table><br>
EOT
++$counter;
}
print <<"EOT";
<p align=left><a href="$cgi&action=viewprofile&username=$useraccount{$curuser}"><font size=2><b>$txt{'92'} $memset[1]</b></font></a></p></font>
EOT
&footer;
exit;
}
sub NameList {
if (-e "$memberdir/$INFO{'username'}.ref") {
fopen(FILE, "$memberdir/$INFO{'username'}.ref");
@names=<FILE>;
$number = @names;
fclose(FILE);
for ($i = 1; $i < @names; $i++) {
$namelist .= "<a href=\"$scripturl?action=viewprofile&username=$names[$i]\">$names[$i]<br>";
$namelist .= "</a>";
}
}
$name1 = $names[0];
if($namelist eq "") {
$namelist = "$reftxt{'06'}";
}
&header;
print <<"EOT";
<table border=0 width="40%" cellspacing=1 bgcolor="$color{'bordercolor'}" class="bordercolor" align="center" cellpadding="4">
<tr>
<td class="titlebg" bgcolor="$color{'titlebg'}"><font size=2 class="text1" color="$color{'titletext'}"><b>$reftxt{'07'}</b></font></td>
</tr><tr>
<td class="windowbg" bgcolor="$color{'windowbg'}"><BR><center><font size=2 face="Vardana, Helvetica, sans-serif">$namelist</font></center><BR><BR></td>
</tr>
</table>
EOT
&footer;
exit;
}
1;