###############################################################################
# DoSmilies.pm #
# $Date: 01.09.2026 $ #
###############################################################################
# YaBB: Yet another Bulletin Board #
# Open-Source Community Software for Webmasters #
# Version: YaBBForum 3.1 #
# 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. #
###############################################################################
our $VERSION = '3.1';
$dosmiliespmver = 'YaBBForum 3.1';
if ( $action eq 'detailedversion' ) { return 1; }
LoadLanguage('Main');
get_template('Other');
sub SmiliePut {
print_output_header();
$moresmilieslist = q{};
$evenmoresmilies = q{};
$more_smilie_array = q{};
$i = 0;
while ( $SmilieURL[$i] ) {
if ( $SmilieURL[$i] =~ /\//ixsm ) { $tmpurl = $SmilieURL[$i]; }
else { $tmpurl = qq~$defaultimagesdir/$SmilieURL[$i]~; }
if ( $i && ( $i / 10 ) == int( $i / 10 ) ) {
$moresmilieslist .= q~
~;
}
$moresmilieslist .=
qq~
$SmilieLinebreak[$i]\n~;
$smilie_url_array .= qq~"$tmpurl", ~;
$tmpcode = $SmilieCode[$i];
$tmpcode =~ s/\"/\x22/gxsm;
FromHTML($tmpcode);
$tmpcode =~ s/&\x2336;/\$/gxsm;
$tmpcode =~ s/&\x2364;/\@/gxsm;
$more_smilie_array .= qq~" $tmpcode", ~;
$i++;
}
if ( $showsmdir == 3 || ( $showsmdir == 2 && $detachblock == 1 ) ) {
opendir DIR, "$htmldir/Smilies";
@contents = readdir DIR;
closedir DIR;
$smilieslist = q{};
foreach my $line ( sort { uc $a cmp uc $b } @contents ) {
( $name, $extension ) = split /\./xsm, $line;
if ( $extension =~ /gif/ism
|| $extension =~ /jpg/ism
|| $extension =~ /jpeg/ism
|| $extension =~ /png/ism )
{
if ( $line !~ /banner/ism ) {
if ( $i && ( $i / 10 ) == int( $i / 10 ) ) {
$evenmoresmilies .= q~
~;
}
$evenmoresmilies .=
qq~
\n~;
$more_smilie_array .= qq~" [smiley=$line]", ~;
$i++;
}
}
}
}
$more_smilie_array .= q~''~;
if ( $showadded == 3 || ( $showadded == 2 && $detachblock == 1 ) ) {
$my_output .= qq~ $moresmilieslist ~;
}
$output = $smilie_window_a;
$output =~ s/{yabb popback}/$popback/sm;
$output =~ s/{yabb poptext}/$poptext/sm;
$output =~ s/{yabb my_output}/$my_output/sm;
$output =~ s/{yabb evenmoresmilies}/$evenmoresmilies/sm;
$output =~ s/{yabb more_smilie_array}/$more_smilie_array/sm;
print_HTML_output_and_finish();
return;
}
sub SmilieIndex {
print_output_header();
$i = 0;
$offset = 0;
$smilieslist = q{};
$smilie_code_array = q{};
if ( $showadded == 3 || ( $showadded == 2 && $detachblock == 1 ) ) {
while ( $SmilieURL[$i] ) {
if ( $i % 4 == 0 && $i != 0 ) {
$smilieslist .= $my_smilie_window_tr;
$offset++;
}
if ( ( $i + $offset ) % 2 == 0 ) {
$smiliescolor = $my_smiliebg_a;
}
else { $smiliescolor = $my_smiliebg_b; }
if ( $SmilieURL[$i] =~ /\//ixsm ) { $tmpurl = $SmilieURL[$i]; }
else { $tmpurl = qq~$defaultimagesdir/$SmilieURL[$i]~; }
$smilieslist .= $my_smilie_window_td;
$smilieslist =~ s/{yabb smiliescolor}/$smiliescolor/gsm;
$smilieslist =~ s/{yabb tmpurl}/$tmpurl/gsm;
$smilieslist =~ s/{yabb i}/$i/gsm;
$smilieslist =~ s/{yabb poptext}/$poptext/gsm;
$smilieslist =~
s/{yabb SmilieDescription}/$SmilieDescription[$i]/gsm;
$smilie_url_array .= qq~"$tmpurl", ~;
$tmpcode = $SmilieCode[$i];
$tmpcode =~ s/\"/\x22/gxsm;
FromHTML($tmpcode);
$tmpcode =~ s/&\x2336;/\$/gxsm;
$tmpcode =~ s/&\x2364;/\@/gxsm;
$more_smilie_array .= qq~" $tmpcode", ~;
$i++;
}
}
if ( $showsmdir == 3 || ( $showsmdir == 2 && $detachblock == 1 ) ) {
opendir DIR, "$htmldir/Smilies";
@contents = readdir DIR;
closedir DIR;
foreach my $line ( sort { uc($a) cmp uc $b } @contents ) {
( $name, $extension ) = split /\./xsm, $line;
if ( $extension =~ /gif/ixsm
|| $extension =~ /jpg/ixsm
|| $extension =~ /jpeg/ixsm
|| $extension =~ /png/ixsm )
{
if ( $line !~ /banner/ixsm ) {
if ( $i % 4 == 0 && $i != 0 ) {
$smilieslist .= $my_smilie_window_tr;
$offset++;
}
if ( ( $i + $offset ) % 2 == 0 ) {
$smiliescolor = $my_smiliebg_a;
}
else { $smiliescolor = $my_smiliebg_b; }
$smilieslist .= $my_smilie_window_td_line;
$smilieslist =~ s/{yabb smiliescolor}/$smiliescolor/gsm;
$smilieslist =~ s/{yabb line}/$line/gsm;
$smilieslist =~ s/{yabb i}/$i/gsm;
$smilieslist =~ s/{yabb poptext}/$poptext/gsm;
$more_smilie_array .= qq~" [smiley=$line]", ~;
$i++;
}
}
}
}
while ( $i % 4 != 0 ) {
if ( ( $i + $offset ) % 2 == 0 ) {
$smiliescolor = $my_smiliebg_a;
}
else { $smiliescolor = $my_smiliebg_b }
$smilieslist .= $my_smilie_window_blnk;
$smilieslist =~ s/{yabb smiliescolor}/$smiliescolor/gsm;
$i++;
}
$smilie_code_array .= q~""~;
$more_smilie_array .= q~""~;
if ( -e "$htmldir/Smilies/$my_banner" ) {
$smiliesheader = $my_smilie_banner_header;
}
else {
$smiliesheader = $my_smilie_header;
}
$output = $smilie_window_advanced;
$output =~ s/{yabb popback}/$popback/gsm;
$output =~ s/{yabb smiliesheader}/$smiliesheader/sm;
$output =~ s/{yabb smilieslist}/$smilieslist/sm;
$output =~ s/{yabb more_smilie_array}/$more_smilie_array/sm;
print_HTML_output_and_finish();
return;
}
1;