############################################################################### # Smilies.pm # # $Date: 01 Sep 2026 $ # ############################################################################### # YaBB: Yet another Bulletin Board # # Open-Source Community Software for Webmasters # # Version: YaBBForum 3.2 # # Packaged: 01 Sep 2026 # # Distributed by: https://yabbforum.nz # # =========================================================================== # # Copyright (c) 2000-2026 YaBB (yabbforum.nz) - All Rights Reserved. # # Software by: The YaBB Development Team # # with assistance from the YaBB community. # ############################################################################### # use strict; our $VERSION = '3.2'; our $smiliespmver = 'YaBBForum 3.2'; if ( $action eq 'detailedversion' ) { return 1; } $admin_images = "$yyhtml_root/Templates/Admin/default"; sub SmiliePanel { is_admin_or_gmod(); if ( $smiliestyle == 1 ) { $ss1 = q{ selected="selected"}; } elsif ( $smiliestyle == 2 ) { $ss2 = q{ selected="selected"}; } @sa = (); foreach my $i ( 1 .. 4 ) { if ( $showadded == $i ) { $sa[$i] = q{ selected="selected"}; } } @ssm = (); foreach my $i ( 1 .. 4 ) { if ( $showsmdir == $i ) { $ssm[$i] = q{ selected="selected"}; } } if ( $detachblock == 1 ) { $dblock = q{ checked="checked"}; } if ($removenormalsmilies) { $remnosmi = q{ checked="checked"}; } opendir DIR, "$htmldir/Smilies"; @contents = readdir DIR; closedir DIR; $smilieslist = q{}; foreach my $line ( sort { uc($a) cmp uc $b } @contents ) { my ( $name, $extension ) = split /\./xsm, $line; if ( $extension =~ /gif/ism || $extension =~ /jpg/ism || $extension =~ /jpeg/ism || $extension =~ /png/ism ) { if ( $line !~ /banner/ism ) { $smilieslist .= qq~ [smiley=$line] $line $name $name ~; } } } $yymain .= qq~
~; $i = 0; my $add_smiley = 1; foreach (@SmilieURL) { if ( $i != 0 ) { $up = qq~$asmtxt{'13'}~; } else { $up = qq~~; } if ( $SmilieURL[ $i + 1 ] ) { $down = qq~$asmtxt{'14'}~; } else { $down = qq~~; } $yymain .= qq~~; $i++; $add_smiley++; } my $added_smilies = $i; $yymain .= qq~~; for ( 1 .. 4 ) { $i++; $add_smiley++; $yymain .= qq~~; } $yymain .= qq~$smilieslist
  $smiltxt{'3'}
$smiltxt{'18'} $yyhtml_root/Smilies
#      
#      
  $asmtxt{'11'}
$smiltxt{'22'} $asmtxt{'02'} $asmtxt{'03'} $asmtxt{'04'} $asmtxt{'05'} $asmtxt{'06'} $asmtxt{'07'} $asmtxt{'12'}
X
$admin_txt{'current_img'}: $SmilieURL[$i]
' ? ' checked="checked"' : q{} ) . q~ /> $up $down
  $asmtxt{'08'}
  X $smiltxt{'25'}
  $smiltxt{'2'}
$smiltxt{'22'} $asmtxt{'02'} $asmtxt{'03'} $asmtxt{'04'} $asmtxt{'06'}
$admin_img{'prefimg'} $admin_txt{'10'}
 
~; $yytitle = "$asmtxt{'01'}"; $action_area = 'smilies'; AdminTemplate(); return; } sub AddSmilies { is_admin_or_gmod(); $smiliestyle = $FORM{'smiliestyle'}; $showadded = $FORM{'showadded'}; $showsmdir = $FORM{'showsmdir'}; $detachblock = $FORM{'detachblock'}; $winwidth = $FORM{'winwidth'}; $winheight = $FORM{'winheight'}; $popback = $FORM{'popback'}; $popback =~ s/[^a-f0-9]//igxsm; $poptext = $FORM{'poptext'}; $poptext =~ s/[^a-f0-9]//igxsm; $showinbox = $FORM{'showinbox'}; $removenormalsmilies = $FORM{'removenormalsmilies'}; $count_smimg = $FORM{'smimg_count'}; if ( $winwidth eq q{} ) { fatal_error('invalid_value', "$smiltxt{'14'}"); } if ( $winheight eq q{} ) { fatal_error('invalid_value', "$smiltxt{'15'}"); } if ( $popback eq q{} ) { fatal_error('invalid_value', "$smiltxt{'20'}"); } if ( $poptext eq q{} ) { fatal_error('invalid_value', "$smiltxt{'19'}"); } @SmilieURL = (); @SmilieCode = (); @SmilieDescription = (); @SmilieLinebreak = (); my $temp_a = 0; for ( 1 .. $count_smimg ) { if ( $FORM{"scd[$temp_a]"} ne q{} || $FORM{"smimg[$temp_a]"} ne q{} || $FORM{"sdescr[$temp_a]"} ne q{} ) { if ( $FORM{"scd[$temp_a]"} eq q{} ) { fatal_error('', $smiltxt{'error_code'}); } if ( $FORM{"smimg[$temp_a]"} eq q{} && $FORM{"cur_smimg[$temp_a]"} eq q{} ) { fatal_error(q{}, $smiltxt{'error_image'}); } if ( $FORM{"sdescr[$temp_a]"} eq q{} ) { fatal_error('', $smiltxt{'error_desc'}); } } if ( $FORM{"delbox[$temp_a]"} != 1 && $FORM{"sdescr[$temp_a]"} ne q{} && ( $FORM{"smimg[$temp_a]"} ne q{} || $FORM{"cur_smimg[$temp_a]"} ne q{} ) ) { if ( $FORM{"smimg[$temp_a]"} ne q{} ) { $FORM{"smimg[$temp_a]"} = UploadFile("smimg[$temp_a]", 'Templates/Forum/default', 'png jpg jpeg gif', '100', '0'); } else { $FORM{"smimg[$temp_a]"} = $FORM{"cur_smimg[$temp_a]"}; } push @SmilieURL, $FORM{"smimg[$temp_a]"}; ToHTML( $FORM{"scd[$temp_a]"} ); $FORM{"scd[$temp_a]"} =~ s/\$/&\x2336;/gxsm; $FORM{"scd[$temp_a]"} =~ s/\@/&\x2364;/gxsm; push @SmilieCode, $FORM{"scd[$temp_a]"}; ToHTML( $FORM{"sdescr[$temp_a]"} ); $FORM{"sdescr[$temp_a]"} =~ s/\$/&\x2336;/gxsm; $FORM{"sdescr[$temp_a]"} =~ s/\@/&\x2364;/gxsm; push @SmilieDescription, $FORM{"sdescr[$temp_a]"}; push @SmilieLinebreak, ( $FORM{"smbox[$temp_a]"} ? '
' : q{} ); } if ( $FORM{"delbox[$temp_a]"} == 1 && $FORM{"cur_smimg[$temp_a]"} !~ /^(exclamation|question).png$/) { unlink "$htmldir/Templates/Forum/default/$FORM{\"cur_smimg[$temp_a]\"}"; } ++$temp_a; } require Admin::NewSettings; SaveSettingsTo('Settings.pm'); $yySetLocation = qq~$adminurl?action=smilies~; redirectexit(); return; } sub SmilieMove { is_admin_or_gmod(); if ( exists $INFO{'index'} ) { for my $i ( 0 .. ( @SmilieURL - 1 ) ) { if ( $i == $INFO{'index'} && ( ( $INFO{'movedown'} && $i >= 0 && $i < $#SmilieURL ) || ( $INFO{'moveup'} && $i <= $#SmilieURL && $i > 0 ) ) ) { my $j = $INFO{'moveup'} ? $i - 1 : $i + 1; my $moveit = $SmilieURL[$i]; $SmilieURL[$i] = $SmilieURL[$j]; $SmilieURL[$j] = $moveit; $moveit = $SmilieCode[$i]; $SmilieCode[$i] = $SmilieCode[$j]; $SmilieCode[$j] = $moveit; $moveit = $SmilieDescription[$i]; $SmilieDescription[$i] = $SmilieDescription[$j]; $SmilieDescription[$j] = $moveit; $moveit = $SmilieLinebreak[$i]; $SmilieLinebreak[$i] = $SmilieLinebreak[$j]; $SmilieLinebreak[$j] = $moveit; last; } } } require Admin::NewSettings; SaveSettingsTo('Settings.pm'); $yySetLocation = qq~$adminurl?action=smilies~; redirectexit(); return; } 1;