From d0197a94fb4e61855bd11053398a4250aa2dfbcb Mon Sep 17 00:00:00 2001 From: rxu <rxu@mail.ru> Date: Sat, 27 Jun 2020 20:26:12 +0700 Subject: [PATCH] [ticket/16539] Fix general SQL error for smilies mode on posting PHPBB3-16539 --- phpBB/includes/functions_posting.php | 2 +- tests/functional/smilies_test.php | 47 ++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 tests/functional/smilies_test.php diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 39fc52c29c..4f70a9932d 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -118,7 +118,7 @@ function generate_smilies($mode, $forum_id) SMILIES_TABLE => 's', ], 'GROUP_BY' => 's.smiley_url, s.smiley_width, s.smiley_height', - 'ORDER_BY' => 's.min_smiley_order', + 'ORDER_BY' => 'min_smiley_order', ]; } else diff --git a/tests/functional/smilies_test.php b/tests/functional/smilies_test.php new file mode 100644 index 0000000000..f17171bd1f --- /dev/null +++ b/tests/functional/smilies_test.php @@ -0,0 +1,47 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +/** +* @group functional +*/ +class phpbb_functional_smilies_test extends phpbb_functional_test_case +{ + public function test_smilies_mode() + { + $this->login(); + + // Get smilies data + $db = $this->get_db(); + $sql_ary = [ + 'SELECT' => 's.smiley_url, MIN(s.emotion) AS emotion, MIN(s.code) AS code, s.smiley_width, s.smiley_height, MIN(s.smiley_order) AS min_smiley_order', + 'FROM' => [ + SMILIES_TABLE => 's', + ], + 'GROUP_BY' => 's.smiley_url, s.smiley_width, s.smiley_height', + 'ORDER_BY' => 'min_smiley_order', + ]; + $sql = $db->sql_build_query('SELECT', $sql_ary); + $result = $db->sql_query($sql); + $smilies = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + // Visit smilies page + $crawler = self::request('GET', 'posting.php?mode=smilies'); + foreach ($smilies as $index => $smiley) + { + $this->assertContains($smiley['smiley_url'], + $crawler->filter('div[class="inner"] > a > img')->eq($index)->attr('src') + ); + } + } +}