Skip to content

Commit 2d4a5e2

Browse files
authored
Merge pull request #9240 from jdarwood007/3.0/emptySmileySet
[3.0] Prevent a empty smiley set when parsing smileys
2 parents c3a95b8 + 16e737c commit 2d4a5e2

2 files changed

Lines changed: 42 additions & 26 deletions

File tree

Sources/Editor.php

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
use SMF\Cache\CacheApi;
1919
use SMF\Db\DatabaseApi as Db;
20+
use SMF\Parsers\SmileyParser;
2021

2122
/**
2223
* Creates the editor input box so that people can write messages to post.
@@ -784,34 +785,38 @@ protected function buildSmileysToolbar(): void
784785

785786
Utils::$context['smileys'] = &self::$smileys_toolbar;
786787

787-
if (User::$me->smiley_set != 'none') {
788-
// Cache for longer when customized smiley codes aren't enabled
789-
$cache_time = empty(Config::$modSettings['smiley_enable']) ? 7200 : 480;
788+
if (empty(User::$me->smiley_set) || User::$me->smiley_set === 'none') {
789+
return;
790+
}
790791

791-
if (($temp = CacheApi::get('posting_smileys_' . User::$me->smiley_set, $cache_time)) == null) {
792-
$request = Db::$db->query(
793-
'SELECT s.code, f.filename, s.description, s.smiley_row, s.hidden
794-
FROM {db_prefix}smileys AS s
795-
JOIN {db_prefix}smiley_files AS f ON (s.id_smiley = f.id_smiley)
796-
WHERE s.hidden IN (0, 2)
797-
AND f.smiley_set = {string:smiley_set}' . (empty(Config::$modSettings['smiley_enable']) ? '
798-
AND s.code IN ({array_string:default_codes})' : '') . '
799-
ORDER BY s.smiley_row, s.smiley_order',
800-
[
801-
'default_codes' => ['>:D', ':D', '::)', '>:(', ':))', ':)', ';)', ';D', ':(', ':o', '8)', ':P', '???', ':-[', ':-X', ':-*', ':\'(', ':-\\', '^-^', 'O0', 'C:-)', 'O:-)'],
802-
'smiley_set' => User::$me->smiley_set,
803-
],
804-
);
792+
// Cache for longer when customized smiley codes aren't enabled
793+
$cache_time = empty(Config::$modSettings['smiley_enable']) ? 7200 : 480;
805794

806-
while ($row = Db::$db->fetch_assoc($request)) {
807-
self::$smileys_toolbar[] = $row;
808-
}
809-
Db::$db->free_result($request);
810-
CacheApi::put('posting_smileys_' . User::$me->smiley_set, self::$smileys_toolbar, $cache_time);
811-
} else {
812-
self::$smileys_toolbar = $temp;
813-
}
795+
if (($temp = CacheApi::get('posting_smileys_' . User::$me->smiley_set, $cache_time)) !== null && \is_array($temp)) {
796+
self::$smileys_toolbar = $temp;
797+
798+
return;
799+
}
800+
801+
$request = Db::$db->query(
802+
'SELECT s.code, f.filename, s.description, s.smiley_row, s.hidden
803+
FROM {db_prefix}smileys AS s
804+
JOIN {db_prefix}smiley_files AS f ON (s.id_smiley = f.id_smiley)
805+
WHERE s.hidden IN (0, 2)
806+
AND f.smiley_set = {string:smiley_set}' . (empty(Config::$modSettings['smiley_enable']) ? '
807+
AND s.code IN ({array_string:default_codes})' : '') . '
808+
ORDER BY s.smiley_row, s.smiley_order',
809+
[
810+
'default_codes' => SmileyParser::$default_set,
811+
'smiley_set' => User::$me->smiley_set,
812+
],
813+
);
814+
815+
while ($row = Db::$db->fetch_assoc($request)) {
816+
self::$smileys_toolbar[] = $row;
814817
}
818+
Db::$db->free_result($request);
819+
CacheApi::put('posting_smileys_' . User::$me->smiley_set, self::$smileys_toolbar, $cache_time);
815820
}
816821

817822
/**

Sources/Parsers/SmileyParser.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,17 @@
2727
*/
2828
class SmileyParser extends Parser
2929
{
30+
/**************************
31+
* Public static properties
32+
**************************/
33+
34+
/**
35+
* @var array
36+
*
37+
* Default smiley set.
38+
*/
39+
public static array $default_set = ['>:D', ':D', '::)', '>:(', ':))', ':)', ';)', ';D', ':(', ':o', '8)', ':P', '???', ':-[', ':-X', ':-*', ':\'(', ':-\\', '^-^', 'O0', 'C:-)', 'O:-)'];
40+
3041
/*********************
3142
* Internal properties
3243
*********************/
@@ -224,7 +235,7 @@ public static function loadData(string $set): array
224235
AND s.code IN ({array_string:default_codes})' : '') . '
225236
ORDER BY LENGTH(s.code) DESC',
226237
[
227-
'default_codes' => ['>:D', ':D', '::)', '>:(', ':))', ':)', ';)', ';D', ':(', ':o', '8)', ':P', '???', ':-[', ':-X', ':-*', ':\'(', ':-\\', '^-^', 'O0', 'C:-)', 'O:-)'],
238+
'default_codes' => self::$default_set,
228239
'smiley_set' => $set,
229240
],
230241
);

0 commit comments

Comments
 (0)