############################################################################### # Profile.pl # ############################################################################### # YaBB: Yet another Bulletin Board # # Open-Source Community Software for Webmasters # # Version: YaBB 1 Gold - SP 1.3 # # Released: December 2001; Updated April 6, 2003 # # Distributed by: http://www.yabbforum.com # # =========================================================================== # # Copyright (c) 2000-2003 YaBB (www.yabbforum.com) - All Rights Reserved. # # Software by: The YaBB Development Team # # with assistance from the YaBB community. # # Sponsored by: Xnull Internet Media, Inc. - http://www.ximinc.com # ############################################################################### $profileplver = "1 Gold - SP 1.3"; 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'}); } if(!-e ("$memberdir/$INFO{'username'}.dat")){ &fatal_error("$txt{'453'} -- $INFO{'username'}"); } if($allowpics) { opendir(DIR, "$facesdir") || fatal_error("$txt{'230'} ($facesdir)! $txt{'681'}"); closedir(DIR); } fopen(FILE, "$memberdir/$INFO{'username'}.dat"); @memsettings=; 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; &CalcAge("parse"); # Let's get the birthdate $memsettings[9] =~ tr/+/ /; $memsettings[10] =~ 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'; } my($maptest); if($memsettings[15] ne "") { $maptest = substr($memsettings[15],0,2); } $dayormonthm = qq~$txt{'564'}~; $dayormonthd = qq~$txt{'565'}~; if ($tsl2 || $tsl3 || $tsl6) {$dayormonth=$dayormonthd.$dayormonthm;} else {$dayormonth=$dayormonthm.$dayormonthd;} $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~; $yymain .= qq~
~; if($settings[7] eq 'Administrator' || $gballowset) { $yymain .= qq~ ~; } else { $yymain .= qq~ ~; } $yymain .= qq~
   $txt{'79'}

$txt{'698'}

$txt{'517'}
~; require "$sourcedir/ExtendedProfiles.pl"; $yymain .= ext_editprofile($INFO{'username'},"required") . qq~
$txt{'35'}: $INFO{'username'}
$txt{'81'}:
$txt{'596'}
$txt{'82'}:
$txt{'68'}:
$txt{'518'}
$txt{'69'}:
$txt{'679'}

$txt{'597'}
~; $yymain .= ext_editprofile($INFO{'username'},"additional") . qq~ ~; if($maptest eq "x0") { my($loccode, $proflocal, $profcountry, $profcontin, $profx, $profy, $profstate); ($loccode, $proflocal, $profcountry, $profcontin, $profx, $profy, $profstate) = split(/\|/, $memsettings[15]); fopen(FILE, "$vardir/country.txt"); @country = ; fclose(FILE); chomp @country; foreach $curcountry (sort @country) { $curcountry =~ s/ //gi; $curcountry =~ s/\n//gi; $curcountry =~ s/\r//gi; $selektet = ""; if($curcountry eq $profcountry) { $selektet = ' selected' } $thevalue = $curcountry; $theopt = $curcountry; $theopt =~ s/\_/ /g; $cntropt .= qq~ ~; if($view_state) { $yymain .= qq~ ~; } $yymain .= qq~ ~; } elsif($maptest eq "x1") { my($loccode, $proflocal, $profcountry, $profcontin, $profx, $profy, $profstate, $initstate, $namestate, $viewloc); ($loccode, $proflocal, $profcountry, $profcontin, $profx, $profy, $profstate) = split(/\|/, $memsettings[15]); $thiscountry = $profcountry; $thiscountry =~ s/\_/ /g; ($initstate, $namestate) = split(/\,/, $profstate); my($prlocal, $inistate); if($proflocal ne "") { $prlocal .= qq~$proflocal,~; } else { $prlocal = ""; } if($initstate ne "") { $inistate .= qq~$initstate,~; } else { $inistate = ""; } $viewloc = qq~$prlocal $inistate $thiscountry~; $yymain .= qq~ ~; } else { my($loccode, $profcontin, $profx, $profy, $profstate); fopen(FILE, "$vardir/country.txt"); @country = ; fclose(FILE); chomp @country; foreach $curcountry (sort @country) { $curcountry =~ s/ //gi; $curcountry =~ s/\n//gi; $curcountry =~ s/\r//gi; $selektet = ""; $thevalue = $curcountry; $theopt = $curcountry; $theopt =~ s/\_/ /g; $cntropt .= qq~ ~; if($view_state) { $yymain .= qq~ ~; } $yymain .= qq~ ~; } $yymain .= qq~ ~; if($allowpics) { opendir(DIR, "$facesdir") || fatal_error("$txt{'230'} ($facesdir)!
$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~ ~; } $yymain .= qq~
$txt{'231'}:
$txt{'563'}: $dayormonth$txt{'566'}
$maptxt{'03'}:
$maptxt{'21'}:
$maptxt{'04'}:
$txt{'227'}: $maptxt{'11'} $viewloc ~; if($view_state) { $yymain .= qq~ ~; } $yymain .= qq~
$maptxt{'03'}:
$maptxt{'21'}:
$maptxt{'04'}:


$txt{'83'}:
$txt{'598'}
$txt{'84'}:
$txt{'599'}


$txt{'513'}:
$txt{'600'}
$txt{'603'}:
$txt{'601'}
$txt{'604'}:
$txt{'602'}


$txt{'228'}:
$txt{'229'}:
$txt{'474'} $userpic_limits
  
$txt{'475'}
Member Biography:
Enter your personal biography. It will be displayed on your profile page
$siztxt{'01'} x pixel

$gsttxt{'1'}
~; if(!-e ("$memberdir/$INFO{'username'}.gbs")) { fopen(FILE, ">$memberdir/$INFO{'username'}.gbs", 1); print FILE "checked\n"; print FILE "$MaxGuestPosts\n"; print FILE "$MaxGuestChars\n"; print FILE "checked\n"; fclose(FILE); } fopen(FILE, "$memberdir/$INFO{'username'}.gbs"); @gbsettings=; fclose(FILE); foreach (@gbsettings) { $_ =~ s~[\n\r]~~g; } $yymain .= qq~ ~; if($gballowguest) { $yymain .= qq~ ~; } $yymain .= qq~
$gsttxt{'11'}
$gsttxt{'23'}
$gsttxt{'12'} ($gsttxt{'13'} $MaxGuestPosts)
$gsttxt{'14'} ($gsttxt{'13'} $MaxGuestChars)
$txt{'605'}
~; if ($allow_hide_email) { $yymain .= qq~ ~; } $yymain .= qq~ ~; fopen(FILE, "$vardir/membergroups.txt"); @lines = ; fclose(FILE); if($settings[7] eq 'Administrator') { $position=''; foreach $curl (@lines) { if($curl ne $lines[1] && $curl ne $lines[2] && $curl ne $lines[3] && $curl ne $lines[4] && $curl ne $lines[5] && $curl ne $lines[6]) { if($curl ne $lines[0] && $curl ne $lines[7]) { $position= qq~$position~; } if($settings[7] eq 'Administrator') { $confdel_text = "$txt{'775'} $txt{'777'} $INFO{'username'} $txt{'778'}"; } else { $confdel_text = "$txt{'775'} $txt{'776'} $txt{'778'}"; } $yymain .= qq~
$txt{'721'}
$txt{'486'}:
$txt{'479'}
$txt{'371'}:
$txt{'519'}

$txt{'741'}: $proftime


$txt{'85'}:
$txt{'606'}

$txt{'664'}


$txt{'86'}:
$txt{'87'}:
$txt{'233'}:
$txt{'421'}






~; $yytitle = $txt{'79'}; &template; 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{'gbtotal'} !~ /\A[0-9]+\Z/) { &fatal_error("$gsttxt{'12'} $gsttxt{'15'}"); } if($member{'gbtotal'} > $MaxGuestPosts) { &fatal_error("$gsttxt{'16'} $MaxGuestPosts"); } if($member{'gbchar'} !~ /\A[0-9]+\Z/) { &fatal_error("$gsttxt{'14'} $gsttxt{'15'}"); } if($member{'gbchar'} > $MaxGuestChars) { &fatal_error("$gsttxt{'17'} $MaxGuestChars"); } if ($member{'username'} =~ /\//){ &fatal_error($txt{'224'}); } if ($member{'username'} =~ /\\/){ &fatal_error($txt{'225'}); } $INFO{'username'} = $member{'username'}; if(length($member{'usertext'}) > 51) { &fatal_error("$txt{'757'}"); } 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($FORM{'aktwidth'} !~ /\A[0-9]+\Z/) { &fatal_error("$siztxt{'02'}"); } if($FORM{'aktheight'} !~ /\A[0-9]+\Z/) { &fatal_error("$siztxt{'03'}"); } if($FORM{'aktwidth'} < 1) { &fatal_error("$siztxt{'02'}"); } if($FORM{'aktheight'} < 1) { &fatal_error("$siztxt{'03'}"); } 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{'240'} $txt{'36'} $txt{'241'}") if($member{'passwrd1'} !~ /\A[\s0-9A-Za-z!@#$%\^&*\(\)_\+|`~\-=\\:;'",\.\/?\[\]\{\}]+\Z/); } &fatal_error("$txt{'75'}") if($member{'name'} eq ''); &fatal_error("$txt{'240'} $txt{'68'} $txt{'241'}") if($member{'name'} !~ /^[\s0-9A-Za-zöäüÖÄÜßñ\[\]#%+,-|\.:=?@^_]+$/); &fatal_error("$txt{'75'}") if($member{'name'} eq '|'); &fatal_error("$txt{'568'}") if(length($member{'name'}) > 30); &fatal_error("$txt{'76'}") if($member{'email'} eq ''); &fatal_error("$txt{'240'} $txt{'69'} $txt{'241'}") if($member{'email'} !~ /[\w\-\.\+]+\@[\w\-\.\+]+\.(\w{2,4}$)/); &fatal_error("$txt{'500'}") if(($member{'email'} =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/) || ($member{'email'} !~ /^.+@\[?(\w|[-.])+\.[a-zA-Z]{2,4}|[0-9]{1,4}\]?$/)); if( $member{'bday1'} ne "" || $member{'bday2'} ne "" || $member{'bday3'} 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/ 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 (removed !$yyUDLoaded{$memberlist[$a]} && ) if( -e("$memberdir/$memberlist[$a].dat") && lc $memberlist[$a] ne lc $member{'username'}) { # If user is not in memory, s/he must be loaded. &LoadUser($memberlist[$a]); if(lc $userprofile{$memberlist[$a]}->[2] eq lc $member{'email'}) { &fatal_error("$txt{'730'} ($member{'email'}) $txt{'731'}"); } } $tmpa = ; $realnametemp = ; fclose(FILE2); chomp $realnametemp; $realnametemp = lc $realnametemp; if ($realnametemp eq $testname && lc $memberlist[$a] ne lc $member{'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"); } } } } $member{'aktwidth'} = $FORM{'aktwidth'}; $member{'aktheight'} = $FORM{'aktheight'}; fopen( FILE, ">$memberdir/$member{'username'}.siz", 1); print FILE "$member{'aktwidth'}\n"; print FILE "$member{'aktheight'}\n"; fclose(FILE); # let's restore the name now &ToHTML($tempname); $member{'name'} = $tempname; fopen(MEMBERFILEREAD,"$memberdir/$member{'username'}.dat"); my @memset = ; fclose(MEMBERFILEREAD); chomp @memset; require "$sourcedir/Notify.pl"; replace_notifications($memset[2],$member{'email'}); if($member{'kode'} eq "x0" || $member{'kode'} eq "x1") { $memblocal = $member{'cityloc'}; if($view_state) { $membstate = $member{'mapstate'} } else { $membstate = "" } $membcountry = $member{'mapcountry'}; $membcontinent = $member{'contselect'}; $membx = $member{'xcoord'}; $memby = $member{'ycoord'}; $loccode = $member{'kode'}; $member{'location'} .= qq($loccode|$memblocal|$membcountry|$membcontinent|$membx|$memby|$membstate); } else { $member{'location'} = "x0"; } ###### Newcalendar mod start fopen(MEMBERFILE,"$memberdir/$member{'username'}.dat"); @member = ; fclose(MEMBERFILE); chomp(@member); $old_bday = $member[16]; ###### Newcalendar mod end require "$sourcedir/ExtendedProfiles.pl"; my $error = &ext_validate_submition($member{'username'},$username); if ($error ne "") { &fatal_error($error); } else { &ext_saveprofile($member{'username'}); } 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"; print FILE "$member{'biography'}\n"; fclose(FILE); ###### Newcalendar mod start if ( $old_bday ne $member{'bday'}) {require "$sourcedir/Admin.pl"; &RebuildMemBirth;} ###### Newcalendar mod end fopen(FILE, ">$memberdir/$FORM{'username'}.gbs", 1); if ($FORM{'gbview'} ne "checked") { $FORM{'gbview'} = ""; } if($gballowguest) { if ($FORM{'gbguests'} ne "checked") { $FORM{'gbguests'} = ""; } } else { $FORM{'gbguests'} = ""; } print FILE "$FORM{'gbview'}\n"; print FILE "$member{'gbtotal'}\n"; print FILE "$member{'gbchar'}\n"; print FILE "$FORM{'gbguests'}\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); $yySetCookies1 = cookie(-name => "$cookieusername", -value => "", -path => "/", -expires => "Thursday, 01-Jan-1970 00:00:00 GMT"); $yySetCookies2 = cookie(-name => "$cookiepassword", -value => "", -path => "/", -expires => "Thursday, 01-Jan-1970 00:00:00 GMT"); $username = 'Guest'; $password = ''; @settings = (); $realname = ''; $realemail = ''; $ENV{'HTTP_COOKIE'} = ''; &FormatUserName($member{'username'}); &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'}"); $yymain .= qq~
~; require "$sourcedir/LogInOut.pl"; $sharedLogin_title="$txt{'34'}"; $sharedLogin_text="$txt{'638'}"; &sharedLogin; $yymain .= qq~
~; $yytitle="$txt{'245'}"; &template; exit; } else { if ($member{'username'} eq $username) { $password = crypt("$member{'passwrd1'}",$pwseed); $yySetCookies1 = cookie(-name => "$cookieusername", -value => "$username", -path => "/", -expires => "Sunday, 17-Jan-2038 00:00:00 GMT"); $yySetCookies2 = cookie(-name => "$cookiepassword", -value => "$password", -path => "/", -expires => "Sunday, 17-Jan-2038 00:00:00 GMT"); &LoadUserSettings; &WriteLog; } &ViewProfile; } } else { if($member{'username'} ne "admin") { require "$sourcedir/Notify.pl"; remove_notifications($member{'email'}); require "$sourcedir/Favor.pl"; remove_favorites($member{'username'}); # For security, remove username from mod position fopen(FILE, "$vardir/cat.txt"); @categories = ; fclose(FILE); foreach $curcat (@categories) { $curcat =~ s/[\n\r]//g; fopen(CAT, "$boardsdir/$curcat.cat"); @catinfo = ; fclose(CAT); foreach $curboard (@catinfo) { $curboard =~ s/[\n\r]//g; chomp $curboard; fopen(BOARD, "$boardsdir/$curboard.dat"); @boardinfo = ; fclose(BOARD); $boardinfo[2] =~ s/[\n\r]//g; $boardinfo[2] =~ /^\|(.*?)\|$/; $mods = $1 or $mods = $boardinfo[2]; $mods =~ s/(\s*)//g; # remove all whitespaces $mods =~ s/(^(\|)+)?((\|)+$)?//; # remove unnecessary front and back separator $mods =~ s/(\|)+/\|/g; # replace multiple separators with one separator my @mod_ary = split(/\|/, $mods); my @new_mod_ary; my $mods_changed = 0; foreach my $mod( @mod_ary) { if( $settings[7] eq 'Administrator') { if( $member{'username'} ne $mod) { push( @new_mod_ary, $mod); } else { $mods_changed = 1; } } elsif( $member{'username'} eq $username) { if( $username ne $mod) { push( @new_mod_ary, $mod); } else { $mods_changed = 1; } } } $mods = join( "|", @new_mod_ary); if ($mods_changed == 1) { $boardinfo[2] = $mods; fopen(BOARD, ">$boardsdir/$curboard.dat", 1); print BOARD @boardinfo; fclose(BOARD); } } } 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"); unlink("$memberdir/$member{'username'}.ext"); unlink("$memberdir/$member{'username'}.yam"); unlink("$memberdir/$member{'username'}.gst"); unlink("$memberdir/$member{'username'}.gbs"); if (-e "$memberdir/$member{'username'}.siz") { unlink("$memberdir/$member{'username'}.siz"); } } 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"); unlink("$memberdir/$username.ext"); unlink("$memberdir/$username.yam"); unlink("$memberdir/$username.gst"); unlink("$memberdir/$username.gbs"); if (-e "$memberdir/$username.siz") { unlink("$memberdir/$username.siz"); } } 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); ###### Newcalendar mod start require "$sourcedir/Admin.pl"; &RebuildMemBirth; ###### Newcalendar mod end if($settings[7] ne 'Administrator') { require "$sourcedir/LogInOut.pl"; &Logout; } $yySetLocation = qq~$scripturl~; &redirectexit; } else { &fatal_error("$txt{'751'}"); } } exit; } sub ViewProfile { if($username eq "Guest") { &fatal_error("$txt{'223'}"); } 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, $modifyloc, $prolocal, $prostate, $procountry, $initstate, $namestate); # get the member's info if(!-e ("$memberdir/$INFO{'username'}.gbs")) { fopen(FILE, ">$memberdir/$INFO{'username'}.gbs", 1); print FILE "checked\n"; print FILE "$MaxGuestPosts\n"; print FILE "$MaxGuestChars\n"; print FILE "checked\n"; fclose(FILE); } fopen(FILE, "$memberdir/$INFO{'username'}.gbs"); @gbsettings=; fclose(FILE); chomp @gbsettings; fopen(FILE, "$memberdir/$INFO{'username'}.dat"); @memsettings=; fclose(FILE); chomp @memsettings; fopen(NUMBERFILEREAD,"$memberdir/$INFO{'username'}.yam"); @number = ; fclose(NUMBERFILEREAD); chomp @number; $icq = $memsettings[8]; $memsettings[5] =~ s~\&\&~
~g; $message = $memsettings[5]; if($enable_ubbc) { if(!$yyYaBBCloaded) { require "$sourcedir/YaBBC.pl"; } &DoUBBC; } $showursig = $message; if($memsettings[4] !~ m~\Ahttp://~) { $memsettings[4] = "http://$memsettings[4]"; } $memsettingsd[9] = $memsettings[9]; $memsettingsd[9] =~ tr/+/ /; $memsettingsd[10] = $memsettings[10]; $memsettingsd[10] =~ 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 = ""; } 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") { $theuser = $INFO{'username'}; $modify = qq~« $txt{'17'} »~; $modifyloc = qq~« $maptxt{'12'} »~; $modifyloc1 = qq~« $maptxt{'12'} »~; } if ($memsettings[19] ne "checked" || $settings[7] eq "Administrator" || $settings[7] eq 'Global Moderator' || !$allow_hide_email) { $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 (-e "$memberdir/$INFO{'username'}.siz") { fopen(IMGSIZFILEREAD,"$memberdir/$INFO{'username'}.siz"); @imgsize = ; fclose(IMGSIZFILEREAD); chomp @imgsize; $akt_width = $imgsize[0]; $akt_height = $imgsize[1]; } else { $akt_width = 65; $akt_height = 65; } if ($memsettings[13] =~ /^\http:\/\// ) { &set_picsize($akt_width, $akt_height, $userpic_width, $userpic_height); $tmp_width = "width=$akt_width"; $tmp_height = "height=$akt_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(lc $name eq lc $INFO{'username'}) { $online =~ s~\?~$txt{'686'}.~; } } } $online =~ s~\?~$txt{'687'}.~; if($memsettings[6] > 100000) { $memsettings[6] = "$txt{'683'}"; } $yymain .= qq~ ~; if($membcontinent eq "") { fopen(FILE, "$vardir/continent.txt"); @continent = ; fclose(FILE); foreach (@continent) { $_ =~ s~[\n\r]~~g; } $memcontinent = lc($continent[0]); } else { $memcontinent = lc($membcontinent); } $yymain .= qq~ ~; } else { $yymain .= qq~
  $txt{'35'}: $INFO{'username'} $modify $txt{'232'}
~; if ($view_numb) { if ($number[0] > 0) { $yymain .= qq~ ~; } } $yymain .= qq~ ~; if ($settings[7] eq "Administrator" || $settings[7] eq "Global Moderator" && $allow_mod == 1) { my ($ipnumb1, $ipnumb2, $ipnumb3) = split(/\|/, $number[1]); if ($ipnumb1 == 0) { $viewipnumb = " "; } else { $viewipnumb .= qq~$ipnumb1~; if ($ipnumb2 != 0 && $ipnumb2 ne $ipnumb1) { $viewipnumb .= qq~
$ipnumb2~; } if ($ipnumb3 != 0 && $ipnumb3 ne $ipnumb1 && $ipnumb3 ne $ipnumb2) { $viewipnumb .= qq~
$ipnumb3~; } } $yymain .= qq~ ~; } $yymain .= qq~ ~; if($gbsettings[0] eq "checked") { $msgcount = 0; if(-e ("$memberdir/$INFO{'username'}.gst")) { fopen(FILE, "$memberdir/$INFO{'username'}.gst"); @msglines = ; $mesgcount = @msglines; fclose(FILE); chomp(@msglines); $msgcount = $mesgcount - 1; if($INFO{'username'} eq $username && $msglines[$msgcount] > 0) { fopen(FILE, ">$memberdir/$username.gst", 1); for($i=0;$i<$msgcount;$i++) { print FILE "$msglines[$i]\n"; } print FILE "0"; fclose(FILE); } } $yymain .= qq~ ~; if ($username eq $INFO{'username'} || $settings[7] eq "Administrator") { $yymain .= qq~ ~; } } $yymain .= qq~ ~; require "$sourcedir/ExtendedProfiles.pl"; $yymain .= ext_viewprofile($INFO{'username'}) . qq~~;} else {$yymain .= qq~ ~;} $yymain .= qq~ ~; if($view_mapgender) { if($memsettings[11] eq "Male") { $pin = "bpin"; } elsif($memsettings[11] eq "Female") { $pin = "rpin"; } else { $pin = "gpin"; } } else { $pin = $mappin; } my($loccode, $memblocal, $membcountry, $membcontinent, $membx, $memby, $membstate, $initstate, $namestate, $viewmembname, $viewloc); $membx = 0; $memby = 0; $membcontinent = ""; ($loccode, $memblocal, $membcountry, $membcontinent, $membx, $memby, $membstate) = split(/\|/, $memsettings[15]); ($initstate, $namestate) = split(/\,/, $membstate); my($prlocal, $inistate); if($memblocal ne "") { $prlocal .= qq~$memblocal,~; } else { $prlocal = ""; } if($initstate ne "") { $inistate .= qq~$initstate,~; } else { $inistate = ""; } if($view_flag) { if($membcountry ne "") { $theflag = qq~~; } } else { $theflag = ""; } $thiscountry = $membcountry; $thiscountry =~ s/\_/ /g; if($loccode eq "x0" || $loccode eq "x1") { my($thislocal, $thisstate); if($memblocal ne "") { $thislocal .= qq~$memblocal,~; } else { $thislocal = ""; } if($initstate ne "") { $thisstate .= qq~$initstate,~; } else { $thisstate = ""; } $viewloc = qq~$thislocal $thisstate $thiscountry$theflag~; } else { $viewloc = qq~ ~; } if($loccode eq "x1") { $yymain .= qq~
$txt{'68'}: $memsettings[1]
$membtxt{'24'}: $number[0]
$txt{'86'}: $memsettings[6]
$txt{'87'}: $memberinfo
$txt{'233'}: $dr

$membtxt{'30'}: $viewipnumb

$gsttxt{'1'}:
~; if($username ne "Guest" || $gballowguest && $gbsettings[3] eq "checked") { $yymain .= qq~

~; if($gb_enable_ubbc) { $yymain .= qq~ ~; } if($gb_enable_ubbc) { $yymain .= qq~ ~; } $yymain .= qq~
~; } $yymain .= qq~
$txt{'21'}: $msgcount
~; for($i=0;$i<$msgcount;$i++) { $x=$msgcount-$i; my($thisdate, $thisname, $thismesg); ($gdate, $gname, $gmesg) = split(/\|/, $msglines[$i]); $thisdate = &timeformat($gdate); if($gname eq "Guest") { $thisname .= qq($txt{'28'}); $tempname = $thisname; } else { fopen(FILE, "$memberdir/$gname.dat"); @gsetting = ; fclose(FILE); chomp(@gsetting); $thisname .= qq($gsetting[1]); $tempname = $gsetting[1]; } $thismesg = $gmesg; $thismesg =~ s~\&\&~
~g; $message = $thismesg; &wrap; $displayname = $tempname; if($gb_enable_ubbc) { if(!$yyYaBBCloaded) { require "$sourcedir/YaBBC.pl"; } &DoUBBC; } &wrap2; $thismesg = $message; if ($username eq $INFO{'username'} || $settings[7] eq "Administrator") { $delgst = qq~$gsttxt{'3'}~; } $yymain .= qq~ $thisname - $thisdate
$thismesg ~; if ($username eq $INFO{'username'} || $settings[7] eq "Administrator") { $yymain .= qq~
$gsttxt{'4'} $x - $gsttxt{'3'} ~; } $yymain .= qq~
~; } $yymain .= qq~
$gsttxt{'10'}:
$gsttxt{'7'} $gsttxt{'8'}  
$gsttxt{'9'}

$txt{'513'}: ~; if( $memsettings[8] ne "" && $memsettings[8] !~ m~\D~ ) {$yymain .= qq~ $memsettings[8] $memsettings[8]~;} $yymain .= qq~
$txt{'603'}: $memsettingsd[9]
$txt{'604'}: ~; if( $memsettings[10] ne "") {$yymain .= qq~ $memsettings[10] $memsettingsd[10]
$txt{'69'}: $email
$txt{'96'}: $memsettings[3]

$txt{'231'}: $gender
$txt{'420'}: $age   $isbday
$pic

$memsettings[12]
~; if ($memsettings[5] ne ''){ if ($username eq $INFO{'username'} || $settings[7] eq 'Administrator' || $settings[7] eq 'Global Moderator') { $yymain .= qq~ ~; } else { $yymain .= qq~ ~; } }else { $yymain .= qq~ ~; } $yymain .= qq~
$txt{'226'}:
$txt{'226a'}
$memsettings[5]

$txt{'226'}:
$txt{'226b'}

$showursig
$txt{'226'}:

$showursig
$txt{'226'}:
$txt{'164'} $txt{'226'}
$txt{'227'}: $viewloc $modifyloc
$txt{'227'}: $viewloc
  $modifyloc1
$pic

$memsettings[12] ~; } $yymain .= qq~  $txt{'459'}:
$online

$txt{'688'}.

$txt{'460'} $txt{'461'}.
 Member Biography: $memsettings[20] ~; $yytitle = "$txt{'92'} $INFO{'username'}"; &template; 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); &LoadCensorList; # Load Censor List $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' || $settings[7] eq 'Global Moderator' ) { $openmemgr{$curcat} = 1; } unless( $openmemgr{$curcat} ) { next; } boardcheck: foreach $curboard (@{$catboards{$curcat}}) { #### unless ($settings[7] eq "Administrator") { my $cookiename = "$cookiepassword$curboard"; my $crypass = crypt($boardpw{$curboard},$pwseed); my $access = &AccessCheck($curboard, ''); if (($boardpw{$curboard} && $yyCookies{$cookiename} ne $crypass) || ($access ne "granted")) { next; } } #### 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; } } } } } } $yymain .= qq~

$txt{'92'} $memset[1]

~; @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; } &wrap; $displayname = $mname; if($enable_ubbc) { $ns = $mns; if(!$yyYaBBCloaded) { require "$sourcedir/YaBBC.pl"; } &DoUBBC; } &wrap2; if($enable_notification) { $notify = qq~$menusep$img{'notify'}~; } $mdate = timeformat($mdate); $yymain .= qq~
 $counter   $catname{$cat{$board}} / $boardinfo{$board}->[0] / $msub  $mdate 
$message
 $img{'reply'}$menusep$img{'replyquote2'}$notify

~; ++$counter; } if($counter <= 1) { $yymain .= "$txt{'755'}"; } else { $yymain .= qq~

$txt{'92'} $memset[1]

~; } $yytitle = "$txt{'458'} $memset[1]"; &template; exit; } sub MemberGuest2 { $FORM{'message'} =~ s~\n~\&\&~g; my($key, $value); while( ($key,$value) = each(%FORM) ) { $value =~ s~\A\s+~~; $value =~ s~\s+\Z~~; $value =~ s~[\n\r]~~g; $guestsign{$key} = $value; } if($guestsign{'message'} eq "") { &fatal_error("$txt{'78'}"); } $char_160 = chr(160); $guestsign{'message'} =~ s~\[img\][\s*\t*\n*( )*($char_160)*]*(http\:\/\/)*(.+?)[\s*\t*\n*( )*($char_160)*]*\[/img\]~\[url=http\:\/\/$2\]\[img\]$imagesdir/img2.gif\[\/img\]\[\/url\]~isg; $membername = $guestsign{'membername'}; if($guestsign{'guestname'} eq "Guest") { $guestname = $txt{'28'} } else { $guestname = $guestsign{'guestname'}; } $guestname = $guestsign{'guestname'}; $guestmessage = $guestsign{'message'}; if($GbTimeout) { my($gbtime,$gbflood_ip,$gbflood_time,$gbflood,$gbflood_memb,@gbfloodcontrol); $gbtime = time; $gbtimeoutsec = $GbTimeout * 60; if (-e "$vardir/gbflood.txt") { fopen(FILE, "$vardir/gbflood.txt"); push(@gbfloodcontrol,"$user_ip|$gbtime|$membername\n"); while( ) { chomp($_); ($gbflood_ip,$gbflood_time,$gbflood_memb) = split(/\|/,$_); if($user_ip eq $gbflood_ip && $membername eq $gbflood_memb && $gbtime - $gbflood_time <= $gbtimeoutsec) { $gbflood = 1; } elsif( $gbtime - $gbflood_time < $gbtimeoutsec ) { push( @gbfloodcontrol, "$_\n" ); } } fclose(FILE); } if($gbflood) { if($settings[7] ne 'Administrator' && $guestname ne $membername) { &fatal_error("$gsttxt{'20'} $GbTimeout $gsttxt{'21'}"); } } fopen(FILE, ">$vardir/gbflood.txt", 1); print FILE @gbfloodcontrol; fclose(FILE); } if(-e ("$memberdir/$membername.gst")) { fopen(FILE, "$memberdir/$membername.gst"); @meslines = ; $mescount = @meslines; fclose(FILE); chomp(@meslines); $mesgcount = $mescount - 1; $meslines[$mesgcount]++; } else { $meslines[0] = 1; $mescount = 1; } fopen(FILE, "$memberdir/$membername.gbs"); @gbsettings=; fclose(FILE); chomp @gbsettings; $counttest = $gbsettings[1]; if($mescount > $counttest) { $mescount = $counttest } fopen(FILE, ">$memberdir/$membername.gst", 1); print FILE "$date|$guestname|$guestmessage\n"; for($i=0;$i<$mescount;$i++) { print FILE "$meslines[$i]\n"; } fclose(FILE); $yySetLocation = qq~$cgi;action=viewprofile;username=$membername~; &redirectexit; } sub MemberGuest3 { fopen(FILE, "$memberdir/$INFO{'profilen'}.gst"); @gstlist = ; $gestnum = @gstlist; fclose(FILE); chomp(@gstlist); $gstnum = $gestnum - 1; $newnumb = 0; fopen(FILE, ">$memberdir/$INFO{'profilen'}.gst", 1); for($i=0;$i<$gstnum;$i++) { if($i != $INFO{'delpost'}) { print FILE "$gstlist[$i]\n"; } } print FILE "$newnumb\n"; fclose(FILE); $yySetLocation = qq~$cgi;action=viewprofile;username=$INFO{'profilen'}~; &redirectexit; } sub MemberGuest4 { if(!-e ("$memberdir/$FORM{'membername'}.gst")) { &fatal_error("$gsttxt{'6'}"); } fopen(FILE, "$memberdir/$FORM{'membername'}.gst"); @gstlist = ; $gestnum = @gstlist; fclose(FILE); chomp(@gstlist); $gstnum = $gestnum - 1; if($gstnum == 0) { &fatal_error("$gsttxt{'6'}"); } if($FORM{'fromdel'} eq "") { $FORM{'fromdel'} = 0; ; } if($FORM{'todel'} eq "") { $FORM{'todel'} = 0; } if($FORM{'fromdel'} !~ /\A[0-9]+\Z/) { &fatal_error("$gsttxt{'5'}"); } if($FORM{'todel'} !~ /\A[0-9]+\Z/) { &fatal_error("$gsttxt{'5'}"); } if($FORM{'fromdel'} < 1) { &fatal_error("$gsttxt{'5'}"); } if($FORM{'todel'} > $gstnum) { &fatal_error("$gsttxt{'5'}"); } if($FORM{'fromdel'} > $FORM{'todel'}) { &fatal_error("$gsttxt{'5'}"); } $fromdel = $gstnum - $FORM{'todel'}; $todel = $gstnum - $FORM{'fromdel'}; $newnumb = 0; fopen(FILE, ">$memberdir/$FORM{'membername'}.gst", 1); for($i=0;$i<$gstnum;$i++) { if($i < $fromdel || $i > $todel) { print FILE "$gstlist[$i]\n"; } } print FILE "$newnumb\n"; fclose(FILE); $yySetLocation = qq~$cgi;action=viewprofile;username=$FORM{'membername'}~; &redirectexit; } 1;