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("$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}\]?$/));
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'});
&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 = ;
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 = ;
$realnametemp = ;
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 = ;
fclose(FILE);
fopen(FILE, "$vardir/reservecfg.txt") || &fatal_error("$txt{'23'} reservecfg.txt");
@reservecfg = ;
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( FILE, ">$memberdir/$member{'username'}.dat", 1);
print FILE "$member{'passwrd1'}\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";
fclose(FILE);
if($newpassemail) {
# Write log
fopen(LOG, "$vardir/log.txt");
@entries = ;
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'} $scripturl?action=profile&username=$useraccount{$member{'username'}}\n\n$txt{'130'}");
print <<"EOT";
EOT
&footer;
exit;
}
else {
if ( $member{'username'} eq $username ) {
$Cookie_Exp_Date = 'Sun, 17-Jan-2038 00:00:00 GMT';
$password = crypt("$member{'passwrd1'}",$pwseed);
$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 = ;
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 = ;
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 ($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=;
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 = " "; }
$memsettings[9] =~ s/\+/ /g;
fopen(FILE, "$vardir/membergroups.txt");
@membergroups = ;
fclose(FILE);
if($memsettings[6] > $GodPostNum) { $memberinfo = "$membergroups[6]"; }
elsif($memsettings[6] > $SrPostNum) { $memberinfo = "$membergroups[5]"; }
elsif($memsettings[6] > $FullPostNum) { $memberinfo = "$membergroups[4]"; }
elsif($memsettings[6] > $JrPostNum) { $memberinfo = "$membergroups[3]"; }
else { $memberinfo = "$membergroups[2]"; }
if($memsettings[7] ne "") { $memberinfo = "$memsettings[7]"; }
if($memsettings[7] eq "Administrator") { $memberinfo = "$membergroups[0]"; }
&FormatUserName($INFO{'username'});
if ($username eq $INFO{'username'} || $settings[7] eq "Administrator") {
$modify = qq~« $txt{'17'} »~;
}
if ($memsettings[19] ne "checked" || $settings[7] eq "Administrator" || $allow_hide_email ne 1) {
$email = qq~$memsettings[2]~;
}
else { $email = qq~$txt{'722'}~; }
$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~~;
$pic = qq~ ~;
}
else {
$pic = qq~~;
$pic = qq~ ~;
}
}
$online = "$txt{'113'} ?";
fopen(FILE, "$vardir/log.txt");
@entries = ;
fclose(FILE);
foreach $curentry (@entries) {
chomp $curentry;
($name, $value) = split(/\|/, $curentry);
if( $name ) {
&LoadUser($name);
if( $useraccount{$name} eq $INFO{'username'}) {
$online =~ s~\?~$txt{'686'}.~;
}
}
}
$online =~ s~\?~$txt{'687'}.~;
if($memsettings[6] > 100000) { $memsettings[6] = "$txt{'683'}"; }
print <<"EOT";
$txt{'35'}: $INFO{'username'} |
$modify |
$txt{'232'} |
|
| $txt{'68'}: |
$memsettings[1] |
| $txt{'86'}: |
$memsettings[6] |
| $txt{'87'}: |
$memberinfo |
| $txt{'233'}: |
$dr |
|
| $txt{'513'}: |
$memsettings[8] |
| $txt{'603'}: |
$memsettings[9] |
| $txt{'604'}: |
$memsettings[10] |
| $txt{'69'}: |
$email |
| $txt{'96'}: |
$memsettings[3] |
|
| $txt{'231'}: |
$gender |
| $txt{'420'}: |
$age $isbday |
| $txt{'227'}: |
$memsettings[15] |
|
$pic
$memsettings[12] |
|
$txt{'459'}: |
|
|
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 = ;
fclose(FILE);
@categories = ();
fopen(FILE, "$vardir/cat.txt");
@categories = ;
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} = ;
chomp $catname{$curcat};
$cataccess{$curcat} = ;
chomp $cataccess{$curcat};
@{$catboards{$curcat}} = ;
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 = ;
fclose(FILE);
fopen(FILE, "$boardsdir/$curboard.dat");
@boardinfo = ;
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 = ;
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";
$txt{'92'} $memset[1]
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$img{'notify'}~;
}
print <<"EOT";
EOT
++$counter;
}
print <<"EOT";
$txt{'92'} $memset[1]
EOT
&footer;
exit;
}
1; |