PDA

View Full Version : Show Thread Enhancements - CES Intelligent Attachment Query


thincom2000
01-26-2007, 10:00 PM
CES Intelligent Attachment Query
Version: 1.3.0

Version 1.3.0 has no real changes other than now being a product. Now requires CES Pre-Process Hooks (https://vborg.vbsupport.ru/showthread.php?t=143155).

*** NEWS ***
3/25/2007 - v1.3.0 (product version) released
------------------------------------------------------
1/28/2007 - v3.0.0 released
1/27/2007 - v1.0.0, v2.0.0, v2.0.1 released

I actually came across this while trying to reduce queries in my CES Site News (https://vborg.vbsupport.ru/showthread.php?t=137365) mod which uses a customized showthread.php.

Known Issues:
- NONE

What It Does:
Normally showthread wastes a query on attachments by checking if the thread has an attachment in any post, not bothering to check if that post and attachment are even on the current page, then querying for the page's posts. This hack removes a potentially unnecessary query from showthread.php by joining queries.

I hope someone from Jelsoft sees this thread.

Mod Features:
- removes 1 pointless query

Products to Install: 1
Plugins Included: 2
Files to Upload: 0
Files to Edit: 1
New Templates: 0
Template Edits: 0
Queries Added*: -1

*See "What It Does" for details.

*** Changelog ***
As of Version 1.3.0:
- only 1 file edit
- requires CES Pre-Process Hooks
- uses vBulletin's Plugin system
- changed version numbering (confusion!)

Gizmo5h1t3
01-27-2007, 07:18 PM
saved a copy of showthread, edited it, and copied over.....
least the boards still running....cant say ive noticed the saved query tho??

thincom2000
01-27-2007, 07:32 PM
The query is only saved if there is an attachment anywhere in the thread and not on the page.
vBulletin by default will make a query in that situation.

So in normal forum/showthread use, you would not notice a drop in queries.

thincom2000
01-27-2007, 08:53 PM
I uploaded version 2.0 which completely eliminates 1 query from showthread.php (even on the pages with attachments) if there is an attachment somewhere in the thread.

Kiros72
01-28-2007, 07:53 PM
Forgive my stupidity, but I have to wonder if the one-less query makes up for all the new commands processed in showthread... :confused:

Get Shorty
01-28-2007, 09:39 PM
I get errors:


Database error in vBulletin 3.6.4:

Invalid SQL:

SELECT
post.*, post.username AS postusername, post.ipaddress AS ip, IF(post.visible = 2, 1, 0) AS isdeleted,
user.*, userfield.*, usertextfield.*,
icon.title as icontitle, icon.iconpath,
avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline,customavatar.width AS avwidth,customavatar.height AS avheight,
deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason,
editlog.userid AS edit_userid, editlog.username AS edit_username, editlog.dateline AS edit_dateline,
editlog.reason AS edit_reason,
postparsed.pagetext_html, postparsed.hasimages,
sigparsed.signatureparsed, sigparsed.hasimages AS sighasimages,
sigpic.userid AS sigpic, sigpic.dateline AS sigpicdateline, sigpic.width AS sigpicwidth, sigpic.height AS sigpicheight,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid

attach.dateline AS attachdate, attach.thumbnail_dateline, attach.filename, attach.filesize, attach.visible, attach.attachmentid, attach.counter,
IF(attach.thumbnail_filesize > 0, 1, 0) AS hasthumbnail, attach.thumbnail_filesize,
attachmenttype.thumbnail AS build_thumbnail, attachmenttype.newwindow

FROM post AS post
LEFT JOIN user AS user ON(user.userid = post.userid)
LEFT JOIN userfield AS userfield ON(userfield.userid = user.userid)
LEFT JOIN usertextfield AS usertextfield ON(usertextfield.userid = user.userid)
LEFT JOIN icon AS icon ON(icon.iconid = post.iconid)
LEFT JOIN avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN customavatar AS customavatar ON(customavatar.userid = user.userid)
LEFT JOIN deletionlog AS deletionlog ON(post.postid = deletionlog.primaryid AND deletionlog.type = 'post')
LEFT JOIN editlog AS editlog ON(editlog.postid = post.postid)
LEFT JOIN postparsed AS postparsed ON(postparsed.postid = post.postid AND postparsed.styleid = 4 AND postparsed.languageid = 1)
LEFT JOIN sigparsed AS sigparsed ON(sigparsed.userid = user.userid AND sigparsed.styleid = 4 AND sigparsed.languageid = 1)
LEFT JOIN sigpic AS sigpic ON(sigpic.userid = post.userid)
LEFT JOIN attachment AS attach ON(attach.postid = post.postid)
LEFT JOIN attachmenttype AS attachmenttype USING (extension)

WHERE post.postid IN (0,121279,121282,121284,121285,121286,121289,12132 7,121330,121331,121355,121395,121399,121406,121416 ,121419,121421,121422,121426,121428,121429,121431, 121432,121433,121435,121436,121438,121441,121442,1 21443,121451,121456,121457,121460,121462,121467,12 1469,121473,121477,121478,121483)
ORDER BY post.dateline;

MySQL Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.dateline AS attachdate, attach.thumbnail_dateline, attach.filename, attach.file' at line 14
Error Number : 1064
Date : Sunday, January 28th 2007 @ 05:36:22 PM
Script : http://forum.alcoholreport.com/showthread.php?t=3853
Referrer : http://forum.alcoholreport.com/f14/
IP Address :
Username :
Classname : vB_Database


I'm also using your other modifcation to showthread, fyi.

This was a thread that didn't have any attachments.

I've reverted back for now.

Get Shorty
01-28-2007, 09:42 PM
Here is the code that I was using... See anything wrong?

59649

thincom2000
01-28-2007, 10:40 PM
It's because there's a comma missing. This problem was fixed in version 3.0.0.

thincom2000
01-28-2007, 10:42 PM
Forgive my stupidity, but I have to wonder if the one-less query makes up for all the new commands processed in showthread... :confused:

Queries are VERY slow. Code is usually better.

Get Shorty
01-28-2007, 11:56 PM
Trying again... I'll post back with my results in a bit.

Get Shorty
01-29-2007, 12:11 AM
Everything seemed to work, except for one problem. All of the current attachments showed up as "attachments pending approval".

Reverted back to normal for now...

thincom2000
01-29-2007, 10:18 AM
This should not be happening... I'll look into it later today.

Do you have usergroups who need attachment moderation? Because I can't even figure out how to set that.

Get Shorty
01-29-2007, 12:17 PM
No. Anyone can post attachments without moderation, excluding guests. The forum was restricted to certain usergroups. I didn't check in the open forums... whoops

thincom2000
01-29-2007, 10:00 PM
Okay, this was caused by a typo I made in the 3.0 install file (that I didn't make in my test which is why I didn't understand the problem). Uploading the non-typo'd version now.

thincom2000
01-29-2007, 10:07 PM
Basically you need to find:
attach.dateline AS attachdate, attach.thumbnail_dateline, attach.filename, attach.filesize, attach.visible

and change:
attach.visible

to:
attach.visible AS attachvisible

That should fix your "all attachments are moderated" woes.

Not having this resulted in $attachment['visible'] being false, which class_postbit.php interpreted as the attachment requiring moderation to become visible.

TheFrienzNet
01-29-2007, 11:04 PM
Thanks, it works. :)

Get Shorty
01-30-2007, 02:05 AM
Basically you need to find:
attach.dateline AS attachdate, attach.thumbnail_dateline, attach.filename, attach.filesize, attach.visible

and change:
attach.visible

to:
attach.visible AS attachvisible

That should fix your "all attachments are moderated" woes.

Not having this resulted in $attachment['visible'] being false, which class_postbit.php interpreted as the attachment requiring moderation to become visible.

Trying it again...

Skyline_GT
02-03-2007, 09:48 PM
It seems this does not remove a query for my forum.

Get Shorty
02-04-2007, 01:44 AM
I didn't notice a difference either.

thincom2000
02-04-2007, 02:00 AM
vBulletin only adds a query for attachments when the thread has an attachment somewhere.

This hack rearranges the code so that the query doesn't have to be added.

The fact that you didn't notice a query removed means nothing, since this hack only prevents a query from being added, much like caching an uncached template in $globaltemplates, only with attachments.

andrewkhunn
03-08-2008, 06:16 AM
I am attempting to install this plugin on vBulletin 3.7 PL1. I have installed the latest version of CES Pre-Process Hooks (just the showthread portion), but this plugin keeps complaining that the dependancy on that script has not been met.

thincom2000
03-08-2008, 06:28 AM
I will look into this when I rewrite this for 3.7.