Back to vBulletin 4 Articles

[How-TO vB 4] Don't show duplicate smilies in quickreply and new thread list
by RedFoxy 05 Jun 2010

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 can be called by :) :-) and :smile: or :( :-( :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:
PHP Code:
$getsmilies $this->registry->db->query_read_slave("SELECT smilieid, smilietext FROM " TABLE_PREFIX "smilie"); 
Replace with
PHP Code:
$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:
PHP Code:
            $smilies $this->registry->db->query_read("
                SELECT *, LENGTH(smilietext) AS smilielen
                FROM " 
TABLE_PREFIX "smilie
                ORDER BY smilielen DESC
            "
); 
Replace with:
PHP Code:
            $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:
PHP Code:
$getsmilies $vbulletin->db->query_read_slave("SELECT smilieid, smilietext FROM " TABLE_PREFIX "smilie"); 
Replace with:
PHP Code:
$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:
PHP Code:
            $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:
PHP Code:
            $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:
PHP Code:
    $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:
PHP Code:
    $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:
PHP Code:
    $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:
PHP Code:
    $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

Similar Mods

Add-On Releases Show Smilies in Quickreply vBulletin 3.6 Add-ons
Show Smilies in Quickreply vBulletin 3.6 Template Modifications
Show Smilies in Quickreply vBulletin 3.5 Add-ons
Smilies in Quickreply vBulletin 3.5 Template Modifications

vblts.ru supports vBulletin®, 2022-2024