Storage Box for Advanced IMBox (by dOCdaS) for YaBB SP1 0.3 This Mod adds a Storage to your IMBox. You can move Message from In- and Outbox in the Storage! You can set a limit for messages in your admin settings. This is my first mod :-) But not my least! Hope you have fun with it and no bugs ! To install this Mod: - Run Board Mod or install this Modfile by Hand - Put the imstore.gif into your Images directory NOTE: You must have installed Advanced IMbox 1.1 (by dOCdaS) !! Questions and Bugs please E-Mail to rimabo@gmx.de Greetz to all coders and Mod User and THX to dOCdaS for help me ;) Homey (rimabo@gmx.de) http://www.rmb2001.de/YaBB/cgi-bin/YaBB.pl Sources\InstantMessage.pl 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"); } 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); } 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~; } sub IMShow { my(@messages); $yytitle = $txt{'143'}; if($INFO{'caller'} == 1) { $linktext = qq~$txt{'316'}~; $callvar = "1"; fopen(FILE, "$memberdir/$username.msg"); } else { $linktext = qq~$txt{'320'}~; $callvar = "2"; fopen(FILE, "$memberdir/$username.outbox"); } 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"); } $yymain .= qq~ $img{'im_outbox'}$menusep$img{'im_new'}$menusep$img{'im_reload'}$menusep$img{'mark_ims'}$menusep$img{'im_config'} $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'}  #  $txt{'317'} $txt{'318'} $txt{'319'} Status    #  $txt{'317'} $txt{'318'} $txt{'319'} Status     else { $yymain .= qq~$imtxt{'09'}~; } $yymain .= qq~ $img{'imtostore'} $yymain .= qq~ $img{'im_inbox'}$menusep$img{'im_new'}$menusep$img{'im_reload'}$menusep$img{'im_config'} $yymain .= qq~ $img{'im_inbox'}$menusep$img{'im_store'}$menusep$img{'im_new'}$menusep$img{'im_reload'}$menusep$img{'im_config'} if(@immessages != 0) { $yymain .= qq~ $intext~; } if(@immessages != 0) { $yymain .= qq~ $intext ~; }  #  $txt{'317'} $txt{'324'} $txt{'319'} $imtxt{'23'}    #  $txt{'317'} $txt{'324'} $txt{'319'} $imtxt{'23'}     $yymain .= qq~ $img{'imtostore'} if(@ommessages != 0) { $yymain .= qq~ $outtext~; } if(@ommessages != 0) { $yymain .= qq~ $outtext ~; } sub IMPost { sub imablage { if ($username eq 'Guest') { &fatal_error($txt{'147'}); } $imbox = Ablage; $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'}
   Ablage
~; 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 = "Von "; } else { $tofrom = "An "; } $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'} An / Von $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"); } else { fopen(FILE, "$memberdir/$username.outbox"); } 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"); } 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"); } @messages = ; fclose(FILE); if ($INFO{'caller'} == 1) { fopen(FILE, ">$memberdir/$username.msg", 1); } elsif ($INFO{'caller'} == 2) { fopen(FILE, ">$memberdir/$username.outbox", 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); my $redirect = $INFO{'caller'} == 1 ? 'im' : 'imoutbox'; $yySetLocation = qq~$cgi;action=$redirect~; &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 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'; } $yySetLocation = qq~$cgi;action=$redirect~; &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; } Sources\Load.pl fopen(OM, "$memberdir/$username.outbox"); @outmessages = ; fclose(OM); fopen(SM, "$memberdir/$username.imstore"); @storemessages = ; fclose(SM); Sources\AdminEdit.pl $imtxt{'04'} $imtxt{'4a'} $numibox = $FORM{'numibox'} || 20; $numobox = $FORM{'numobox'} || 20; $numstore = $FORM{'numstore'} || 20; \$numibox = $numibox; # Number of maximum Messages in the IM-Inbox \$numobox = $numobox; # Number of maximum Messages in the IM-Outbox \$numstore = $numstore; # Number of maximum Messages in the Storage box Sources\Subs.pl sub Del_Max_IMOUT { open(FILE, "$memberdir/$username.outbox"); @omessages = ; close(FILE); fopen(FILE, ">$memberdir/$username.outbox", 1); for ($a = 0; $a < @omessages; $a++) { chomp $omessages[$a]; if($a < $numobox) { print FILE "$omessages[$a]\n"; } } fclose(FILE); } sub Del_Max_STORE { open(FILE, "$memberdir/$username.imstore"); @smessages = ; close(FILE); fopen(FILE, ">$memberdir/$username.imstore", 1); for ($a = 0; $a < @smessages; $a++) { chomp $smessages[$a]; if($a < $numstore) { print FILE "$smessages[$a]\n"; } } fclose(FILE); } Sources\BoardIndex.pl if ($moutnum > $numobox && $numobox ne "" && $enable_imlimit == 1) { $yymain .= qq~ ~; &Del_Max_IMOUT; } if ($storenum > $numstore && $numstore ne "" && $enable_imlimit == 1) { $yymain .= qq~ ~; &Del_Max_STORE; } english.lng $imtxt{'32'} = "Mark all Messages Read"; $imtxt{'4a'} = "Max. Messages in Storage?"; $imtxt{'20a'} = "You're allowed to have $numstore Messages in your Storage!"; $imtxt{'20b'} = "Storage"; $img{'viewprofile_sm'} = qq~$txt{'27'}~; $img{'im_store'} = qq~Storage Storage~; $img{'imtostore'} = qq~to storage to storage~; $img{'viewprofile_sm'} = qq~$txt{'27'}~; $img{'im_store'} = qq~Storage~; $img{'imtostore'} = qq~to storage~; YaBB.pl elsif ($action eq 'imoutbox') { require "$sourcedir/InstantMessage.pl"; &IMOutbox; } elsif ($action eq 'imablage') { require "$sourcedir/InstantMessage.pl"; &imablage; } elsif ($action eq 'imtostore') { require "$sourcedir/InstantMessage.pl"; &IMToStore; }