Helpful Information
 
 
Category: vBulletin 4 Articles
[How-TO vB 4] Don't show duplicate smilies in quickreply and new thread list

Hi all!
Have you a lot of Smilies in your forum? Maybe you have some duplicated smilies just because you call same smilie with different keywords, for example https://www.vbulletin.org/forum/external/2010/12/15.gif can be called by :) :-) and :smile: or https://www.vbulletin.org/forum/external/2010/06/13.gif :( :-( :sad:
If you do that, like me, you'll have duplicate smilies in your smilies lists and that's bad...

To fix it, I wrote a simple hack.

PAY ATTENTIONS!
You do that modification at your own risk!

We must edit a group of files:

includes/class_wysiwygparser.php
includes/class_bbcode.php
includes/functions_wysiwyg.php
includes/functions_editor.php
misc.php


Note:
If you have installed plugins with smilies list, you must search in their files looking for TABLE_PREFIX . "smilie and add at the end of the query and before Order By that piece of query GROUP BY smiliepath
NEVER EDIT FILES UNDER "admincp/".

Open: includes/class_wysiwygparser.php

Search for:
$getsmilies = $this->registry->db->query_read_slave("SELECT smilieid, smilietext FROM " . TABLE_PREFIX . "smilie");

Replace with
$getsmilies = $this->registry->db->query_read_slave("SELECT smilieid, smilietext FROM " . TABLE_PREFIX . "smilie GROUP BY smiliepath");

Save & close

Open: includes/class_bbcode.php

Search for:
$smilies = $this->registry->db->query_read("
SELECT *, LENGTH(smilietext) AS smilielen
FROM " . TABLE_PREFIX . "smilie
ORDER BY smilielen DESC
");


Replace with:
$smilies = $this->registry->db->query_read("
SELECT *, LENGTH(smilietext) AS smilielen
FROM " . TABLE_PREFIX . "smilie
GROUP BY smiliepath
ORDER BY smilielen DESC
");


Save & close

Open: includes/functions_wysiwyg.php

Search for:
$getsmilies = $vbulletin->db->query_read_slave("SELECT smilieid, smilietext FROM " . TABLE_PREFIX . "smilie");

Replace with:
$getsmilies = $vbulletin->db->query_read_slave("SELECT smilieid, smilietext FROM " . TABLE_PREFIX . "smilie GROUP BY smiliepath");

Save & close

Open: includes/functions_editor.php

Search for:
$smilies = $vbulletin->db->query_read_slave("
SELECT smilieid, smilietext, smiliepath, smilie.title,
imagecategory.title AS category
FROM " . TABLE_PREFIX . "smilie AS smilie
LEFT JOIN " . TABLE_PREFIX . "imagecategory AS imagecategory USING(imagecategoryid)
ORDER BY imagecategory.displayorder, imagecategory.title, smilie.displayorder
");


Replace with:
$smilies = $vbulletin->db->query_read_slave("
SELECT smilieid, smilietext, smiliepath, smilie.title,
imagecategory.title AS category
FROM " . TABLE_PREFIX . "smilie AS smilie
LEFT JOIN " . TABLE_PREFIX . "imagecategory AS imagecategory USING(imagecategoryid)
GROUP BY smiliepath
ORDER BY imagecategory.displayorder, imagecategory.title, smilie.displayorder
");


Save & close

Open: misc.php

Search for:
$result = $db->query_read_slave("
SELECT smilietext AS text, smiliepath AS path, smilie.title, smilieid,
imagecategory.title AS category
FROM " . TABLE_PREFIX . "smilie AS smilie
LEFT JOIN " . TABLE_PREFIX . "imagecategory AS imagecategory USING(imagecategoryid)
ORDER BY imagecategory.displayorder, imagecategory.title, smilie.displayorder
");


Replace with:
$result = $db->query_read_slave("
SELECT smilietext AS text, smiliepath AS path, smilie.title, smilieid,
imagecategory.title AS category
FROM " . TABLE_PREFIX . "smilie AS smilie
LEFT JOIN " . TABLE_PREFIX . "imagecategory AS imagecategory USING(imagecategoryid)
GROUP BY smiliepath
ORDER BY imagecategory.displayorder, imagecategory.title, smilie.displayorder
");


Search for:
$smilies = $db->query_read_slave("
SELECT smilietext,smiliepath,smilie.title,imagecategory.title AS category
FROM " . TABLE_PREFIX . "smilie AS smilie
LEFT JOIN " . TABLE_PREFIX . "imagecategory AS imagecategory USING(imagecategoryid)
ORDER BY imagecategory.displayorder, imagecategory.title, smilie.displayorder
");


Replace with:
$smilies = $db->query_read_slave("
SELECT smilietext,smiliepath,smilie.title,imagecategory.title AS category
FROM " . TABLE_PREFIX . "smilie AS smilie
LEFT JOIN " . TABLE_PREFIX . "imagecategory AS imagecategory USING(imagecategoryid)
GROUP BY smiliepath
ORDER BY imagecategory.displayorder, imagecategory.title, smilie.displayorder
");


Save & close

And that's all, enjoy it!

Sorry for bad english

thanks alot 4 your work










privacy (GDPR)