############################################################################### # Load.pl # ############################################################################### # YaBB: Yet another Bulletin Board # # Open-Source Community Software for Webmasters # # Version: YaBB 1 Gold - SP 1.1 # # Released: December 2001; Updated March 22, 2002 # # Distributed by: http://www.yabbforum.com # # =========================================================================== # # Copyright (c) 2000-2002 Xnull (www.xnull.com) - All Rights Reserved. # # Software by: The YaBB Development Team # # with assistance from the YaBB community. # ############################################################################### $loadplver = "1 Gold - SP 1.1"; sub LoadIMs { if ($maintenance && $settings[7] ne 'Administrator') {$username="Guest";} if($username ne "Guest" && $username ne '' && $action ne "logout") { open(IM, "$memberdir/$username.msg"); @immessages = ; close(IM); open(OM, "$memberdir/$username.outbox"); @outmessages = ; close(OM); open(SM, "$memberdir/$username.imstore"); @storemessages = ; close(SM); $moutnum=@outmessages; $storenum=@storemessages; foreach $curline (@immessages) { ($imusername, $imsub, $imdate, $mmessage, $imessageid, $mip, $imnew) = split(/\|/,$curline); if($imnew == 1) { $imnewcount++; } } if($imnewcount eq "") { $imnewcount=0; } if($imnewcount == 1) { $imnewtext = qq~$imtxt{'16'}.~; } else { $imnewtext = qq~$imtxt{'17'}.~; } if($enable_mailsounds == 1) { if($imnewcount > 0 && $action eq "" && $INFO{'board'} eq "" || $imnewcount > 0 && $action eq "login2") { if(-e("$memberdir/$username.imconfig")) { open(FILE, "$memberdir/$username.imconfig"); @userimcfg = ; close(FILE); chomp($userimcfg[2]); chomp($userimcfg[5]); if($userimcfg[2] ne "blank.wav" && $userimcfg[2] ne "") { $imsound = qq~~; } } } } $mnum = @immessages; $minnum = @immessages; if($mnum eq "1") { $yyim = qq~$txt{'152'} $mnum $txt{'471'}, $imnewcount $imnewtext $imsound~; } else { $yyim = qq~$txt{'152'} $mnum $txt{'153'}, $imnewcount $imnewtext $imsound~;} if($maintenance && $settings[7] eq 'Administrator') { $yyim .= qq~
$txt{'616'}~; } if (!$user_ip && $settings[7] eq 'Administrator') { $yyim .= qq~
$txt{'773'}~; } } } sub LoadBoard { my $threadid = $INFO{'num'} || $INFO{'thread'} || $FORM{'threadid'}; if($currentboard ne '') { unless( &BoardAccessGet($currentboard) ) { &fatal_error( $txt{'1'} ); } fopen(FILE, "$boardsdir/$currentboard.dat") || &fatal_error("400 $txt{'106'}: $txt{'23'} $currentboard.dat"); @yyBoardInfo =; fclose(FILE); chomp @yyBoardInfo; $boardname = $yyBoardInfo[0]; # Create Hash %moderators with all Moderators of the current board foreach(split(/\|/,$yyBoardInfo[2])) { fopen(MODERATOR, "$memberdir/$_.dat"); @modprop = ; fclose(MODERATOR); $modprop[1] =~ s/[\n\r]//g; $moderators{$_} = $modprop[1]; } #### unless ($settings[7] eq "Administrator") { my $accesstype = ""; my $cookiename = "$cookiepassword$currentboard"; my $crypass = crypt($boardpw{$currentboard},$pwseed); if ($boardpw{$currentboard} && $yyCookies{$cookiename} ne $crypass && !$FORM{'boardpw'} ) { require "$sourcedir/MBCoptions.pl"; &askforboardpw("$currentboard"); } if ($action eq "post") { $accesstype = $INFO{'num'} ? 2 : 1; } my $access = &AccessCheck($currentboard, $accesstype); if ($access ne "granted"){ &fatal_error($txt{'1'});} } #### if ($threadid ne '' && ! $FORM{'caller'} && $action ne 'imsend') { $yyThreadPosition = -1; my $found; fopen(BOARDFILE, "$boardsdir/$currentboard.txt") || &fatal_error("401 $txt{'106'}: $txt{'23'} $currentboard.txt"); while( $yyThreadLine = ) { ++$yyThreadPosition; if( $yyThreadLine =~ m~\A$threadid\|~o ) { $found = 1; last; } } fclose(BOARDFILE); unless( $found ) { &fatal_error("$txt{'472'} $threadid : $yyThreadPosition."); } chomp $yyThreadLine; } } elsif( $threadid ne '' && $action ne "imsend" ) { &fatal_error("$txt{'472'}"); } } sub LoadCensorList { fopen(FILE,"$vardir/censor.txt") || &fatal_error("205 $txt{'106'}: $txt{'23'} censor.txt"); while( chomp( $buffer = ) ) { ($tmpa,$tmpb) = split(/=/,$buffer); push(@censored,[$tmpa,$tmpb]); } fclose(FILE); } sub LoadUserSettings { if($username ne 'Guest') { if( fopen(FILE, "$memberdir/$username.dat") ) {; @settings=; fclose(FILE); for( $_ = 0; $_ < @settings; $_++ ) { $settings[$_] =~ s~[\n\r]~~g; } $spass = crypt($settings[0],$pwseed); if($spass ne $password && $action ne 'logout') { $username = ''; } else { $realname = $settings[1]; $realemail = $settings[2]; } ### User Templates ### fopen(TMPL, "$memberdir/$username.tmpl"); @templ = ; fclose(TMPL); $tmplfile = @templ[0]; if(!-e("$templatesdir/$tmplfile")) { $tmplfile = "default.html"; } ###/User Templates ### } else { $username = ''; } } unless($username) { $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($username); } sub FormatUserName { my $user = $_[0]; if( $useraccount{$user} ) { return; } $useraccount{$user} = $user; $useraccount{$user} =~ s~\%~%25~g; $useraccount{$user} =~ s~\#~%23~g; $useraccount{$user} =~ s~\+~%2B~g; $useraccount{$user} =~ s~\,~%2C~g; $useraccount{$user} =~ s~\-~%2D~g; $useraccount{$user} =~ s~\.~%2E~g; $useraccount{$user} =~ s~\@~%40~g; $useraccount{$user} =~ s~\^~%5E~g; } sub LoadUser { my $user = $_[0]; unless( exists $userprofile{$user} ) { fopen(FILEAUSER, "$memberdir/$user.dat") || return 0; @{$userprofile{$user}} = ; fclose(FILEAUSER); for( $_ = 0; $_ < @{$userprofile{$user}}; $_++ ) { chomp $userprofile{$user}->[$_]; } &FormatUserName($user); } return 1; } sub LoadUserDisplay { my ($user, $br)= @_; if ($br != 1){$break = "
";} else {$break = "";} if(exists $userprofile{$user}) { if($yyUDLoaded{$user}) { return 1; } } else { &LoadUser($user); unless(exists $userprofile{$user}) { return 0 ; } } &LoadCensorList; # Load censor list $userpic_tmpwidth ||= $userpic_width ? qq~ width="$userpic_width"~ : ''; $userpic_tmpheight ||= $userpic_height ? qq~ height="$userpic_height"~ : ''; if($userprofile{$user}->[4] !~ m~\Ahttp://~) { $userprofile{$user}->[4] = "http://$userprofile{$user}->[4]"; } if($sm) { $userprofile{$user}->[4] = $userprofile{$user}->[4] && $userprofile{$user}->[4] ne q~http://~ ? qq~ $img{'website_sm'}$menusep~ : ''; } else { $userprofile{$user}->[4] = $userprofile{$user}->[4] && $userprofile{$user}->[4] ne q~http://~ ? qq~$img{'website'}$menusep~ : ''; } $userprofile{$user}->[5] =~ s~\&\&~
~g; $userprofile{$user}->[5] = $userprofile{$user}->[5] ? qq~
$userprofile{$user}->[5]~ : ''; # do some ubbc on the signature $message = $userprofile{$user}->[5]; if($enable_ubbc) { if(!$yyYaBBCloaded) { require "$sourcedir/YaBBC.pl"; } &DoUBBC; } $userprofile{$user}->[5] = $message; if($userprofile{$user}->[8] ne "" && $userprofile{$user}->[8] !~ m~\D~) { $icqad{$user} = qq~$userprofile{$user}->[8]~; $userprofile{$user}->[8] = qq~$userprofile{$user}->[8]~; } else { $icqad{$user} = ''; $userprofile{$user}->[8] = ''; } $userprofile{$user}->[9] = $userprofile{$user}->[9] ? qq~$userprofile{$user}->[9]~ : ''; if($userprofile{$user}->[10] ne "") { $yimon{$user} = qq~~; $userprofile{$user}->[10] = $userprofile{$user}->[10] ? qq~$userprofile{$user}->[10]~ : ''; } if($showgenderimage && $userprofile{$user}->[11]) { $userprofile{$user}->[11] = $userprofile{$user}->[11] =~ m~Female~i ? 'female' : 'male'; $userprofile{$user}->[11] = $userprofile{$user}->[11] ? qq~$txt{'231'}: $userprofile{$user}->[11]
~ : ''; } else { $userprofile{$user}->[11] = ''; } $userprofile{$user}->[12] = $showusertext ? qq~$userprofile{$user}->[12]
~ : ''; if($showuserpic && $allowpics) { $userprofile{$user}->[13] ||= 'blank.gif'; #Ryoko upload pics begin if ($userprofile{$user}->[13] =~ m~\A[\s\n]*http://~i){ $userprofile{$user}->[13] = qq~


~; }else{ my $isize=($userprofile{$user}->[13] =~ s/\?(\d+)\:(\d+)$//)?"width=$1 height=$2":''; $userprofile{$user}->[13] = qq~

~; } #Ryoko upload pics end } else { $userprofile{$user}->[13] = '
'; } ### Censor it ### foreach (@censored) { ($tmpa,$tmpb) = @{$_}; $userprofile{$user}->[5] =~ s~\Q$tmpa\E~$tmpb~gi; $userprofile{$user}->[12] =~ s~\Q$tmpa\E~$tmpb~gi; } if( $userprofile{$user}->[7] eq 'Administrator' ) { if ($MemTypeAdmin == 1) { $link{$user} = qq~$break~; } elsif ($MemTypeAdmin == 2) { $link{$user} = qq~$break~; } else { $link{$user} = qq~$userprofile{$user}->[1]$break~; } $memberinfo{$user} = "$MemStatAdmin"; $starnum = "0"; if ($MemStarNumAdmin eq "") { $MemStarNumAdmin = "0"; } $memberstartemp =''; while($MemStarNumAdmin ne "$starnum") { $memberstartemp .= qq(*); ++$starnum; } $memberstar{$user} = $memberstartemp; $starnum = "0"; } elsif ( $userprofile{$user}->[7] eq 'Global Moderator' ) { if ($MemTypeGMod == 1) { $link{$user} = qq~$break~; } elsif ($MemTypeGMod == 2) { $link{$user} = qq~$break~; } else { $link{$user} = qq~$userprofile{$user}->[1]$break~; } $memberinfo{$user} = "$MemStatGMod"; $starnum = "0"; if ($MemStarNumGMod eq "") { $MemStarNumGMod = "0"; } $memberstartemp =''; while($MemStarNumGMod ne "$starnum") { $memberstartemp .= qq(*); ++$starnum; } $memberstar{$user} = $memberstartemp; $starnum = "0"; } else { if ($MemStarNumNewbie eq "") { $MemStarNumNewbie = "0"; } $starnum = "0"; if( $userprofile{$user}->[6] >= $MemPostNewbie) { if ($MemTypeNewbie == 1) { $link{$user} = qq~$break~; } elsif ($MemTypeNewbie == 2) { $link{$user} = qq~$break~; } else { $link{$user} = qq~$userprofile{$user}->[1]$break~; } $memberinfo{$user} = "$MemStatNewbie"; $memberstartemp =''; while($MemStarNumNewbie ne "$starnum") { $memberstartemp .= qq(*); ++$starnum; } $memberstar{$user} = $memberstartemp; $starnum = "0"; $msstatcount = "0"; $starnum = "0"; while($MemStat[$msstatcount]) { if( $userprofile{$user}->[6] >= $MemPostNum[$msstatcount] && $MemPostNum[$msstatcount] ne "x") { if ($MemType[$msstatcount] == 1) { $link{$user} = qq~$break~; } elsif ($MemType[$msstatcount] == 2) { $link{$user} = qq~$break~; } else { $link{$user} = qq~$userprofile{$user}->[1]$break~; } $memberinfo{$user} = "$MemStat[$msstatcount]"; if ($MemStarNum[$msstatcount] eq "") { $MemStarNum[$msstatcount] = "0"; } $memberstartemp =''; while($MemStarNum[$msstatcount] ne "$starnum") { $memberstartemp .= qq(*); ++$starnum; } $memberstar{$user} = $memberstartemp; $starnum = "0"; } ++$msstatcount; } } if( $userprofile{$user}->[7] && $userprofile{$user}->[7] ne 'Administrator') { $group{$user} = "$userprofile{$user}->[7]"; $groupinfo{$user} = "$userprofile{$user}->[7]"; $count=0; while($MemStat[$count]) { if ($MemStat[$count] eq "$group{$user}") { if ($MemType[$count] == 1) { $link{$user} = qq~$break~; } elsif ($MemType[$count] == 2) { $link{$user} = qq~$break~; } else { $link{$user} = qq~$userprofile{$user}->[1]$break~; } $memberinfo{$user} = "$MemStat[$count]"; if ($MemStarNum[$count] eq "") { $MemStarNum[$count] = "0"; } $memberstartemp =''; while($MemStarNum[$count] ne "$starnum") { $memberstartemp .= qq(*); ++$starnum; } $memberstar{$user} = $memberstartemp; $starnum = "0"; } $count++; } } if( exists $moderators{$user} && $sender ne "im") { if ($MemTypeMod == 1) { $link{$user} = qq~$break~; } elsif ($MemTypeMod == 2) { $link{$user} = qq~$break~; } else { $link{$user} = qq~$userprofile{$user}->[1]$break~; } $modinfo{$user} = "$MemStatMod"; $starnum = "0"; if ($MemStarNumMod eq "") { $MemStarNumMod = "0"; } $memberstartemp =''; while($MemStarNumMod ne "$starnum") { $memberstartemp .= qq(*); ++$starnum; } $memberstar{$user} = $memberstartemp; $starnum = "0"; } if( $userprofile{$user}->[7] ne 'Administrator') { if ($groupinfo{$user} ne "") { $brgroup = "
"; } else { $brgroup = ""; } if ($groupinfo{$user} eq "") { $memberinfo{$user} = "$memberinfo{$user}"; } else { $memberinfo{$user} = "$groupinfo{$user}"; } if ($modinfo{$user} ne "") { $memberinfo{$user} = "$modinfo{$user}$brgroup$groupinfo{$user}" } } } if($userprofile{$user}->[6] > 100000) { $userprofile{$user}->[6] = "$txt{'683'}"; } $yyUDLoaded{$user} = 1; return 1; } sub LoadCookie { foreach (split(/; /,$ENV{'HTTP_COOKIE'})) { $_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; ($cookie,$value) = split(/=/); $yyCookies{$cookie} = $value; } if($yyCookies{$cookiepassword}) { $password = $yyCookies{$cookiepassword}; $username = $yyCookies{$cookieusername} || 'Guest'; } else { $password = ''; $username = 'Guest'; } } sub LoadAdmins { &is_admin; my (@members, $curentry); $administrators = ''; fopen(FILE, "$memberdir/memberlist.txt"); @members = ; fclose(FILE); foreach $curentry (@members) { chomp $curentry; &LoadUser($curentry); if($userprofile{$curentry}->[7] eq 'Administrator') { $administrators .= qq~ $userprofile{$curentry}->[1], \n~; } } $administrators =~ s~, \n\Z~~; } sub LoadLogCount { &is_admin; my(@log); fopen(LOG, "$vardir/clicklog.txt"); @log = ; fclose(LOG); $yyclicks = @log; } sub loadfiles { require "$boarddir/$language"; require "$sourcedir/AdminEdit.pl"; require "$sourcedir/BoardIndex.pl"; require "$sourcedir/Display.pl"; require "$sourcedir/ICQPager.pl"; require "$sourcedir/InstantMessage.pl"; require "$sourcedir/LockThread.pl"; require "$sourcedir/LogInOut.pl"; require "$sourcedir/Maintenance.pl"; require "$sourcedir/ManageBoards.pl"; require "$sourcedir/ManageCats.pl"; require "$sourcedir/Memberlist.pl"; require "$sourcedir/MessageIndex.pl"; require "$sourcedir/ModifyMessage.pl"; require "$sourcedir/MoveThread.pl"; require "$sourcedir/Notify.pl"; require "$sourcedir/Post.pl"; require "$sourcedir/Printpage.pl"; require "$sourcedir/Profile.pl"; require "$sourcedir/Recent.pl"; require "$sourcedir/Register.pl"; require "$sourcedir/RemoveOldThreads.pl"; require "$sourcedir/RemoveThread.pl"; require "$sourcedir/Search.pl"; require "$sourcedir/Security.pl"; require "$sourcedir/SendTopic.pl"; require "$sourcedir/YaBBC.pl"; } 1;