############################################################################### # InstantMessage.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 # ############################################################################### $instantmessageplver="1 Gold - SP1 - Advanced"; if(-e("$memberdir/$username.off")) { fopen(FILE, "$memberdir/$username.off"); @offsettings = ; fclose(FILE); } if(-e("$memberdir/$username.imconfig")) { fopen(FILE, "$memberdir/$username.imconfig"); @userimcfg = ; fclose(FILE); } # Read Membergroups fopen(FILE, "$vardir/membergroups.txt"); @membergroups = ; fclose(FILE); sub Del_Some_IM { if($INFO{'caller'} == 1) { open(FILE, "$memberdir/$username.msg"); } elsif($INFO{'caller'} == 2) { open(FILE, "$memberdir/$username.outbox"); } elsif($INFO{'caller'} == 3) { open(FILE, "$memberdir/$username.imstore"); } @messages = ; close(FILE); if($INFO{'caller'} == 1) { fopen(FILE, ">$memberdir/$username.msg", 1); } elsif($INFO{'caller'} == 2) { fopen(FILE, ">$memberdir/$username.outbox", 1); } elsif($INFO{'caller'} == 3) { fopen(FILE, ">$memberdir/$username.imstore", 1); } for ($a = 0; $a < @messages; $a++) { chomp $messages[$a]; ($imusername, $imsub, $imdate, $mmessage, $imessageid, $mip, $imnew) = split(/\|/,$messages[$a]); if($FORM{"message$a"} != 1) { print FILE "$messages[$a]\n"; } } fclose(FILE); if($INFO{'caller'} == 1) { $yySetLocation = qq~$cgi;action=im~; } elsif($INFO{'caller'} == 2) { $yySetLocation = qq~$cgi;action=imoutbox~; } elsif($INFO{'caller'} == 3) { $yySetLocation = qq~$cgi;action=imablage~; } &redirectexit; } sub IMShow { my(@messages); $yytitle = $txt{'143'}; if($INFO{'caller'} == 1) { $linktext = qq~$txt{'316'}~; $callvar = "1"; fopen(FILE, "$memberdir/$username.msg"); } elsif($INFO{'caller'} == 2) { $linktext = qq~$txt{'320'}~; $callvar = "2"; fopen(FILE, "$memberdir/$username.outbox"); } elsif($INFO{'caller'} == 3) { $linktext = qq~Storage~; $callvar = "3"; fopen(FILE, "$memberdir/$username.imstore"); } @messages = ; fclose(FILE); $messcount=0; while($INFO{'id'} ne "$idcheck") { ($musername, $msub, $mdate, $immessage, $messageid, $imip, $mnew) = split( /\|/, $messages[$messcount]); $idcheck = $messageid; $messcount++; } $counter=$messcount-1; if($INFO{'caller'} == 1) { fopen(FILE, ">$memberdir/$username.msg", 1); for ($a = 0; $a < @messages; $a++) { chomp $messages[$a]; ($imusername, $imsub, $imdate, $mmessage, $imessageid, $mip, $imnew) = split(/\|/,$messages[$a]); if($imessageid ne "$INFO{'id'}") { print FILE "$messages[$a]\n"; } else { print FILE "$imusername|$imsub|$imdate|$mmessage|$imessageid|$mip\n"; } } fclose(FILE); } fopen(FILE, "$memberdir/$musername.outbox"); @muoutmessages = ; fclose(FILE); fopen(FILE, ">$memberdir/$musername.outbox", 1); for ($a = 0; $a < @muoutmessages; $a++) { chomp $muoutmessages[$a]; ($muoutusername, $muoutsub, $muoutdate, $muoutmessage, $muoutmessageid, $muoutip, $muoutnew) = split(/\|/,$muoutmessages[$a]); if($muoutmessageid ne "$INFO{'id'}") { print FILE "$muoutmessages[$a]\n"; } else { print FILE "$muoutusername|$muoutsub|$muoutdate|$muoutmessage|$muoutmessageid|$muoutip|1\n"; } } fclose(FILE); $yymain .= qq~
   $mbname
   $txt{'144'}
   $linktext
   $msub
$img{'im_inbox'}   $img{'im_outbox'} $menusep$img{'im_new'}$menusep$img{'im_reload'}$menusep$img{'im_config'}
~; if( $msub eq '' ) { $msub = $txt{'24'}; } $mydate = &timeformat($mdate); if( $musername ne 'Guest' && ! $yyUDLoaded{$musername} && -e("$memberdir/$musername.dat") ) { # If user is not in memory, s/he must be loaded. &LoadUserDisplay($musername); } if( $yyUDLoaded{$musername} ) { @userprofile = @{$userprofile{$musername}}; $star = $memberstar{$musername}; $memberinfo = $memberinfo{$musername}; $icqad = $icqad{$musername}; $yimon = $yimon{$musername}; $usernamelink = qq~$userprofile[1]~; $profbutton = $profilebutton && $musername ne 'Guest' ? qq~$menusep$img{'viewprofile'}~ : ''; $postinfo = qq~$txt{'26'}: $userprofile[6]
~; $memail = $userprofile[2]; if ($disable_publicname != 1) { $usernamelink = qq~$userprofile[1]~; } else { $usernamelink = qq~$musername~; } } foreach (@censored) { ($tmpa,$tmpb) = @{$_}; $immessage =~ s~\Q$tmpa\E~$tmpb~gi; $msub =~ s~\Q$tmpa\E~$tmpb~gi; } $message = $immessage; # put the message back in the proper variable for doing ubbc if($enable_ubbc) { if(!$yyYaBBCloaded) { require "$sourcedir/YaBBC.pl"; } &DoUBBC; } $message =~ s~(\S{80})(?=\S)~$1\n~g; if ($offsettings[0] == 1) { $ava = "
"; } else { $ava = $userprofile[13]; } if ($offsettings[1] == 1) { $text = ""; } else { $text = $userprofile[12]; } if ($offsettings[2] == 1) { $signature = ""; } else { $signature = $userprofile[5]; } if (-e("$sourcedir/MemberGroups.pl")) { $usernamelink = $link{$musername}; } else { $usernamelink = qq~$usernamelink
~; } $yymain .= qq~
 $txt{'29'} $txt{'118'}
$usernamelink $memberinfo
$star

$postinfo $userprofile[11]
$ava$text $userprofile[8] $icqad   $userprofile[10] $yimon   $userprofile[9]
 $msub $txt{'30'}: $mydate

$message
$signature
~; if ($userprofile[19] ne "checked" || $settings[7] eq "Administrator" || $allow_hide_email ne 1) { $yymain .= qq~$userprofile[4]$img{'email'}$profbutton~; } else { $yymain .= qq~$userprofile[4]$profbutton~; } $yymain .= qq~ $img{'replyquote'}$menusep$img{'reply'}$menusep$img{'im_remove'}
~; &template; exit; } sub IMIndex { if( $username eq 'Guest' ) { &fatal_error($txt{147}); } $imbox = $txt{'316'}; $txt{'412'} =~ s~IMBOX~$imbox~g; $img{'im_delete'} =~ s~IMBOX~$imbox~g; # Load censor list. &LoadCensorList; # Fix moderator showing in info $sender = "im"; $acount=0; $yytitle = $txt{'143'}; $yymain .= qq~
   $mbname
   $txt{'144'}
   $txt{'316'}
~; if( !@immessages ) { unlink(FILE, "$memberdir/$username.msg"); } if( @immessages ) { $yymain .= qq~ $img{'im_delete'}$menusep~; } $yymain .= qq~ $img{'im_outbox'}$menusep$img{'im_store'}$menusep$img{'im_new'}$menusep$img{'im_reload'}$menusep
$img{'mark_ims'}$menusep$img{'im_config'}
~; unless( @immessages ) { $yymain .= qq~ ~; } @bgcolors = ( $color{windowbg}, $color{windowbg2} ); @bgstyles = qw~windowbg windowbg2~; $bgcolornum = scalar @bgcolors; $bgstylenum = scalar @bgstyles; for( $counter = 0; $counter < @immessages; $counter++ ) { $windowbg = $bgcolors[($counter % $bgcolornum)]; $windowcss = $bgstyles[($counter % $bgstylenum)]; chomp $immessages[$counter]; ($musername, $msub, $mdate, $immessage, $messageid, $mips, $imnew) = split( /\|/, $immessages[$counter] ); if( $musername ne 'Guest' && -e("$memberdir/$musername.dat") ) { # If user is not in memory, s/he must be loaded. &LoadUserDisplay($musername); } if($yyUDLoaded{$musername}) { $musername = qq~$userprofile{$musername}->[1]~; } if( $messageid < 100 ) { $messageid = $counter; } if( $msub eq '' ) { $msub = $txt{'24'}; } foreach (@censored) { ($tmpa,$tmpb) = @{$_}; $msub =~ s~\Q$tmpa\E~$tmpb~gi; } $mydate = &timeformat($mdate); $innum = $mnum--; $yymain .= qq~ ~; $acount++; } if($enable_imlimit == 1) { $intext = qq~$imtxt{'19'}~; } else { $intext = qq~ ~; } if(@immessages != 0) { $yymain .= qq~~; } $yymain .= qq~
 #  $txt{'317'} $txt{'318'} $txt{'319'} Status    
$txt{'151'}
$innum $mydate $musername $msub ~; if ($imnew == 1) { $yymain .= qq~$imtxt{'07'}~; } elsif ($imnew == 2) { $yymain .= qq~$imtxt{'08'}~; } else { $yymain .= qq~$imtxt{'09'}~; } $yymain .= qq~ $img{'imtostore'}
 $intext 
~; &template; exit; } sub IMOutbox { if ($username eq 'Guest') { &fatal_error($txt{'147'}); } $imbox = $txt{'320'}; $txt{'412'} =~ s~IMBOX~$imbox~g; $img{'im_delete'} =~ s~IMBOX~$imbox~g; # Read all messages fopen(FILE, "$memberdir/$username.outbox"); @ommessages = ; fclose(FILE); if(@ommessages == 0) { unlink(FILE, "$memberdir/$username.outbox"); } $outmnum=@ommessages; $acount=0; # Fix moderator showing in info $sender = "im"; # Load censor list. &LoadCensorList; $yytitle = $txt{'143'}; $yymain .= qq~
   $mbname
   $txt{'144'}
   $txt{'320'}
~; if( @ommessages ) { $yymain .= qq~ $img{'im_delete'}$menusep~; } $yymain .= qq~ $img{'im_inbox'}$menusep$img{'im_store'}$menusep$img{'im_new'}$menusep$img{'im_reload'}$menusep$img{'im_config'}
~; # Display Message if there are no Messages in Users Outbox unless( @ommessages ) { $yymain .= qq~ ~; } @bgcolors = ( $color{windowbg}, $color{windowbg2} ); @bgstyles = qw~windowbg windowbg2~; $bgcolornum = scalar @bgcolors; $bgstylenum = scalar @bgstyles; for( $counter = 0; $counter < @ommessages; $counter++ ) { $windowbg = $bgcolors[($counter % $bgcolornum)]; $windowcss = $bgstyles[($counter % $bgstylenum)]; chomp $ommessages[$counter]; ($musername, $msub, $mdate, $immessage, $messageid, $mips, $imread) = split( /\|/, $ommessages[$counter] ); if( $musername ne 'Guest' && ! $yyUDLoaded{$musername} && -e("$memberdir/$musername.dat") ) { # If user is not in memory, s/he must be loaded. &LoadUserDisplay($musername); } if($yyUDLoaded{$musername}) { $musername = qq~$userprofile{$musername}->[1]~; } if( $messageid < 100 ) { $messageid = $counter; } if( $msub eq '' ) { $msub = $txt{'24'}; } foreach (@censored) { ($tmpa,$tmpb) = @{$_}; $msub =~ s~\Q$tmpa\E~$tmpb~gi; } $mydate = &timeformat($mdate); $outnum = $outmnum--; $yymain .= qq~ ~; $acount++; } if($enable_imlimit == 1) { $outtext = qq~$imtxt{'20'}~; } else { $outtext = qq~ ~; } if(@ommessages != 0) { $yymain .= qq~~; } $yymain .= qq~
 #  $txt{'317'} $txt{'324'} $txt{'319'} $imtxt{'23'}    
$txt{'151'}
$outnum $mydate $musername $msub ~; if ($imread == 1) { $yymain .= qq~$imtxt{'21'}~; } else { $yymain .= qq~$imtxt{'22'}~; } $yymain .= qq~ $img{'imtostore'}
 $outtext 
~; &template; exit; } sub imablage { if ($username eq 'Guest') { &fatal_error($txt{'147'}); } $imbox = Storage; $txt{'412'} =~ s~IMBOX~$imbox~g; $img{'im_delete'} =~ s~IMBOX~$imbox~g; # Read all messages fopen(FILE, "$memberdir/$username.imstore"); @storemessages = ; fclose(FILE); if(@storemessages == 0) { unlink(FILE, "$memberdir/$username.imstore"); } $outmnum=@storemessages; $acount=0; # Fix moderator showing in info $sender = "im"; # Load censor list. &LoadCensorList; $yytitle = $txt{'143'}; $yymain .= qq~
   $mbname
   $txt{'144'}
   Storage
~; if( @storemessages ) { $yymain .= qq~ $img{'im_delete'}$menusep~; } $yymain .= qq~ $img{'im_inbox'}$menusep$img{'im_outbox'}$menusep$img{'im_new'}$menusep$img{'im_reload'}$menusep$img{'im_config'}
~; # Display Message if there are no Messages in Users Outbox unless( @storemessages ) { $yymain .= qq~ ~; } @bgcolors = ( $color{windowbg}, $color{windowbg2} ); @bgstyles = qw~windowbg windowbg2~; $bgcolornum = scalar @bgcolors; $bgstylenum = scalar @bgstyles; for( $counter = 0; $counter < @storemessages; $counter++ ) { $windowbg = $bgcolors[($counter % $bgcolornum)]; $windowcss = $bgstyles[($counter % $bgstylenum)]; chomp @storemessages[$counter]; ($musername, $msub, $mdate, $immessage, $messageid, $mips, $msource, $imread) = split( /\|/, $storemessages[$counter] ); if( $musername ne 'Guest' && ! $yyUDLoaded{$musername} && -e("$memberdir/$musername.dat") ) { # If user is not in memory, s/he must be loaded. &LoadUserDisplay($musername); } if($yyUDLoaded{$musername}) { $musername = qq~$userprofile{$musername}->[1]~; } if( $messageid < 100 ) { $messageid = $counter; } if( $msub eq '' ) { $msub = $txt{'24'}; } foreach (@censored) { ($tmpa,$tmpb) = @{$_}; $msub =~ s~\Q$tmpa\E~$tmpb~gi; } $mydate = &timeformat($mdate); if ($msource eq "inbox") { $tofrom = "From "; } else { $tofrom = "To "; } $outnum = $outmnum--; $yymain .= qq~ ~; $acount++; } if($numstore && $enable_imlimit == 1) { $storetext = qq~$imtxt{'20a'}~; } else { $storetext = qq~ ~; } if(@storemessages != 0) { $yymain .= qq~~; } $yymain .= qq~
 #  $txt{'317'} To/From $txt{'319'}    
$txt{'151'}
$outnum $mydate $tofrom $musername $msub ~; $yymain .= qq~
 $storetext
~; &template; exit; } sub IMPost { if($username eq 'Guest') { &fatal_error($txt{'147'}); } my( @messages, $mdate, $mip, $mmessage); if($INFO{'num'} ne "") { if($INFO{'caller'} == 1) { fopen(FILE, "$memberdir/$username.msg"); } elsif($INFO{'caller'} == 2) { fopen(FILE, "$memberdir/$username.outbox"); } elsif($INFO{'caller'} == 3) { fopen(FILE, "$memberdir/$username.imstore"); } @messages = ; fclose(FILE); ($mfrom, $sub, $mdate, $mmessage, $mip) = split(/\|/,$messages[$INFO{'num'}]); $sub =~ s/Re: //g; if($INFO{'quote'} == 1) { $message = $mmessage; $message =~ s/
/\n/g; $message =~ s/\[quote\](\S+?)\[\/quote\]//isg; $message =~ s/\[(\S+?)\]//isg; $message = "\[quote\]$message\[/quote\]\n"; if ($message =~ /\#nosmileys/isg) {$message =~ s/\#nosmileys//isg; $nscheck="checked";} $sub = "Re: $sub"; } if($INFO{'reply'} == 1) { $sub = "Re: $sub";} } if ($sub eq "") { $sub = "$txt{'24'}"; } $yymain .= qq~
   $mbname
   $txt{'144'}
   $txt{'321'}
$img{'im_inbox'}$menusep$img{'im_outbox'}$menusep$img{'im_reload'}$menusep$img{'im_config'}
~; $submittxt = "$txt{'148'}"; $destination = "imsend2"; $waction = "imsend"; $post = "imsend"; $preview = "previewim"; $icon = "xx"; require "$sourcedir/Post.pl"; $yytitle = $txt{'148'}; &Postpage; &doshowims; &template; exit; } sub doshowims { my $tempdate; if($INFO{'num'} ne "") { chomp $immessages[$INFO{'num'}]; ($musername, $msub, $mdate, $message, $messageid, $mips) = split( /\|/, $immessages[$INFO{'num'}]); # Load Censor List &LoadCensorList; $yymain .= qq~

~; $tempdate = &timeformat($mdate); foreach (@censored) { ($tmpa,$tmpb) = @{$_}; $message =~ s~\Q$tmpa\E~$tmpb~gi; } &wrap; if($enable_ubbc) { if(!$yyYaBBCloaded) { require "$sourcedir/YaBBC.pl"; } &DoUBBC; } &wrap2; $yymain .= qq~
$txt{'319'}: $msub
$txt{'318'}: $musername$txt{'30'}: $tempdate
$message
\n ~; } } sub IMPost2 { if($username eq 'Guest') { &fatal_error($txt{'147'}); } my( @imconfig, @ignore, $igname, $messageid, $subject, $message, @recipient, $ignored ); $subject = $FORM{'subject'}; $subject =~ s/\A\s+//; $subject =~ s/\s+\Z//; $message = $FORM{'message'}; if ($enable_maxlen == 0 || $enable_maxlen eq "") { if (length($message)>$MaxMessLen) { &fatal_error("$txt{'499'}"); } } &fatal_error("$txt{'77'}") unless($subject); &fatal_error("$txt{'78'}") unless($message); if( $message =~ m~\[poll\]~i ) {&fatal_error($txt{'895'}) } $mmessage = $message; $msubject = $subject; $subject =~ s/\&/\&/g; $message =~ s/\&/\&/g; $subject =~ s/"/\"/g; $message =~ s/"/\"/g; $subject =~ s/ / \ /g; $message =~ s/ / \ /g; $subject =~ s//>/g; $subject =~ s/\|/\|/g; $message =~ s//>/g; $message =~ s/\t/ \  \  \ /g; $message =~ s/\cM//g; $message =~ s/\n/
/g; $message =~ s/\|/\|/g; if( $FORM{'waction'} eq 'previewim' ) { require "$sourcedir/Post.pl"; &Preview; } @multiple = split(/,/, $FORM{'to'}); foreach $db (@multiple) { chomp $db; $ignored = 0; $db =~ s/\A\s+//; $db =~ s/\s+\Z//; $db =~ s/[^0-9A-Za-z#%+,-\.@^_]//g; # Check Ignore-List if (-e("$memberdir/$db.imconfig")) { fopen(FILE, "$memberdir/$db.imconfig"); @imconfig = ; fclose(FILE); # Build Ignore-List $imconfig[0] =~ s/[\n\r]//g; $imconfig[1] =~ s/[\n\r]//g; @ignore = split(/\|/,$imconfig[0]); # If User is on Recipient's Ignore-List, show Error Message foreach $igname (@ignore) { #adds ignored user's name to array which error list will be built from later if ($igname eq $username) { push(@nouser, $db); $ignored = 1; } } } if (!(-e("$memberdir/$db.dat"))) { #adds invalid user's name to array which error list will be built from later push(@nouser, $db); $ignored = 1; } if(!$ignored) { # Create unique Message ID = Time & ProccessID $messageid = $^T.$$; # Add message to outbox open(FILE, "$memberdir/$username.outbox"); @outmessages = ; close(FILE); fopen(FILE, ">$memberdir/$username.outbox", 1); print FILE "$db|$subject|$date|$message|$messageid|$ENV{'REMOTE_ADDR'}\n"; print FILE @outmessages; fclose(FILE); # Send message to user open(FILE, "$memberdir/$db.msg"); @inmessages = ; close(FILE); fopen(FILE, ">$memberdir/$db.msg", 1); print FILE "$username|$subject|$date|$message|$messageid|$ENV{'REMOTE_ADDR'}|1\n"; print FILE @inmessages; fclose(FILE); open(FILE, "$memberdir/$username.msg"); @messages = ; close(FILE); $id = "$INFO{'id'}"; fopen(FILE, ">$memberdir/$username.msg", 1); for ($a = 0; $a < @messages; $a++) { chomp $messages[$a]; ($imboxusername, $imboxsub, $imboxdate, $imboxmessage, $imboxmessageid, $imboxmip, $imboximnew) = split(/\|/,$messages[$a]); if($imboxmessageid != $FORM{'info'}) { print FILE "$messages[$a]\n"; } else { print FILE "$imboxusername|$imboxsub|$imboxdate|$imboxmessage|$imboxmessageid|$imboxmip|2\n"; } } fclose(FILE); # Send notification if ($imconfig[1]==1) { fopen(FILE, "$memberdir/$db.dat"); @recipient = ; fclose(FILE); $mydate = &timeformat($date); $recipient[2] =~ s/[\n\r]//g; # get email address if ($recipient[2] ne "") { $fromname = $settings[1]; $txt{'561'} =~ s~SUBJECT~$msubject~g; $txt{'561'} =~ s~SENDER~$fromname~g; $txt{'561'} =~ s~DATE~$mydate~g; $txt{'562'} =~ s~SUBJECT~$msubject~g; $txt{'562'} =~ s~MESSAGE~$mmessage~g; $txt{'562'} =~ s~SENDER~$fromname~g; $txt{'562'} =~ s~DATE~$mydate~g; &sendmail($recipient[2],$txt{'561'},$txt{'562'}); } } } } #end foreach loop #if there were invalid usernames in the recipient list, these names are listed after all valid users have been IMed if (@nouser) { $badusers = join(", ", @nouser); &fatal_error("$badusers $txt{'747'}"); } $yySetLocation = qq~$cgi;action=im~; &redirectexit; } sub IMRemove { if($username eq 'Guest') { &fatal_error($txt{'147'}); } my( @messages, $a, $musername, $msub, $mdate, $mmessage, $messageid, $mip ); if ($INFO{'caller'} == 1) { fopen(FILE, "$memberdir/$username.msg"); } elsif ($INFO{'caller'} == 2) { fopen(FILE, "$memberdir/$username.outbox"); } elsif ($INFO{'caller'} == 3) { fopen(FILE, "$memberdir/$username.imstore"); } @messages = ; fclose(FILE); if ($INFO{'caller'} == 1) { fopen(FILE, ">$memberdir/$username.msg", 1); } elsif ($INFO{'caller'} == 2) { fopen(FILE, ">$memberdir/$username.outbox", 1); } elsif ($INFO{'caller'} == 3) { fopen(FILE, ">$memberdir/$username.imstore", 1); } for ($a = 0; $a < @messages; $a++) { chomp $messages[$a]; # ONLY delete MSG with correct ID ($musername, $msub, $mdate, $mmessage, $messageid, $mip, $imnew) = split(/\|/,$messages[$a]); # If Message-ID is < 100, user has used the old IM before if ($messageid < 100 ) { if($a ne $INFO{'id'}) { print FILE "$messages[$a]\n"; } } else { if($messageid ne "$INFO{'id'}") { print FILE "$messages[$a]\n"; } } } fclose(FILE); if ($INFO{'caller'} == 1) { $redirect = "im"; } elsif ($INFO{'caller'} == 2) { $redirect = "imoutbox"; } elsif ($INFO{'caller'} == 3) { $redirect = "imablage"; } $yySetLocation = qq~$cgi;action=$redirect~; &redirectexit; } sub IMToStore { if($username eq 'Guest') { &fatal_error($txt{'147'}); } my( @messages, $a, $musername, $msub, $mdate, $mmessage, $messageid, $mip ); if ($INFO{'caller'} == 1) { fopen(FILE, "$memberdir/$username.msg"); } elsif ($INFO{'caller'} == 2) { fopen(FILE, "$memberdir/$username.outbox"); } @messages = ; fclose(FILE); if ($INFO{'caller'} == 1) { fopen(FILE, ">$memberdir/$username.msg", 1); } elsif ($INFO{'caller'} == 2) { fopen(FILE, ">$memberdir/$username.outbox", 1); } #get the line to be transferred from the source file $transferline = ""; for ($a = 0; $a < @messages; $a++) { chomp $messages[$a]; ($musername, $msub, $mdate, $mmessage, $messageid, $mip) = split(/\|/,$messages[$a]); if ($messageid eq $INFO{'id'}) { $transferline = $messages[$a]; print FILE ""; } else { print FILE "$messages[$a]\n"; } } fclose(FILE); #we've got the line in $transferline #now open .imstore and append it #see where we're coming from so we can add the right source to the end $source = $INFO{'caller'} == 1 ? "\|inbox" : "\|outbox"; fopen(FILE, ">>$memberdir/$username.imstore", 1); print FILE "$transferline" . "$source\n"; fclose(FILE); my $redirect = $INFO{'caller'} == 1 ? 'im' : 'imoutbox'; $yySetLocation = qq~$cgi;action=$redirect~; &redirectexit; } sub IMPreferences { if ($username eq 'Guest') { &fatal_error($txt{'147'}); } my( @imconfig, $sel0, $sel1 ); if (-e("$memberdir/$username.imconfig")) { fopen(FILE, "$memberdir/$username.imconfig"); @imconfig = ; fclose(FILE); } $imconfig[0] =~ s/[\n\r]//g; $imconfig[0] =~ s/\|/\n/g; $imconfig[1] =~ s/[\n\r]//g; if ($imconfig[1]) { $sel0=''; $sel1=' selected'; } else { $sel0=' selected'; $sel1=''; } $yymain .= qq~
   $mbname
   $txt{'144'}
   $txt{'323'}
~; $yymain .= qq~ $img{'im_inbox'} $img{'im_outbox'} $img{'im_new'} $img{'im_reload'}
$txt{'323'}
~; if($enable_mailsounds) { # sounds hack $userimcfg[2] =~ s/\n//g; opendir(DIR, "$soundsdir") || fatal_error("$txt{'230'} ($soundsdir)!
$imtxt{'27'}"); @contents = readdir(DIR); closedir(DIR); $sounds = ""; $sounds .= qq~ ~; } else { $yymain .= qq~~; } if($enable_mailpopup) { $userimcfg[3] =~ s/\n//g; if($userimcfg[3] eq "on") { $enable_userimpopup = 'checked'; } $yymain .= qq~ ~; } else { $yymain .= qq~~; } $yymain .= qq~
$txt{'325'}:
$txt{'326'}
$txt{'327'}:
$imtxt{'29'}:
$imtxt{'05'}:
 
~; $yytitle = "$txt{'323'}: $txt{'144'}"; &template; exit; } sub IMPreferences2 { if($username eq 'Guest') { &fatal_error($txt{'147'}); } my( $ignorelist, $notify ); $ignorelist = "$FORM{'ignore'}"; $notify = "$FORM{'notify'}"; $sound = "$FORM{'usersound'}"; $popup = "$FORM{'userpopup'}"; $ignorelist =~ s~\A\n\s*~~; $ignorelist =~ s~\s*\n\Z~~; $ignorelist =~ s~\n\s*\n~\n~g; $ignorelist =~ s~[\n\r]~\|~g; $ignorelist =~ s~\|\|~\|~g; $notify =~ s~[\n\r]~~g; $sound =~ s~[\n\r]~~g; $popup =~ s~[\n\r]~~g; fopen(FILE, "+>$memberdir/$username.imconfig"); print FILE "$ignorelist\n$notify\n$sound\n$popup\n"; fclose(FILE); $yySetLocation = qq~$cgi;action=im~; &redirectexit; } sub MarkAll { open(FILE, "$memberdir/$username.msg"); @messages = ; close(FILE); fopen(FILE, ">$memberdir/$username.msg", 1); for ($a = 0; $a < @messages; $a++) { chomp $messages[$a]; ($imusername, $imsub, $imdate, $mmessage, $imessageid, $mip, $imnew) = split(/\|/,$messages[$a]); print FILE "$imusername|$imsub|$imdate|$mmessage|$imessageid|$mip\n"; } fclose(FILE); $yySetLocation = qq~$cgi;action=im~; &redirectexit; } sub KillAll { if($username eq 'Guest') { &fatal_error($txt{'147'}); } if ($INFO{'caller'} == 1) { unlink("$memberdir/$username.msg"); $redirect = 'im'; } elsif ($INFO{'caller'} == 2) { unlink("$memberdir/$username.outbox"); $redirect = 'imoutbox'; } elsif ($INFO{'caller'} == 3) { unlink("$memberdir/$username.imstore"); $redirect = 'imablage'; } $yySetLocation = qq~$cgi;action=$redirect~; &redirectexit; } 1;