Log in

View Full Version : Help with simple plug-in please...


Razasharp
04-08-2006, 12:23 AM
Would appreciate some help with this plug-in please :)

I am trying to add something to the hook:

($hook = vBulletinHook::fetch_hook('forumdisplay_sort')) ? eval($hook) : false;

in forumdisplay.php

I simply want to add:

case 'dateline':

so that I can sort threads in a particular forum in the order they were created (rather than by last-post).

I found this thread which outlines how to do it by hacking files - but I'd rather it be a plug-in if possible: https://vborg.vbsupport.ru/showthread.php?t=75242&highlight=date+posted+forumdisplay

Here is a snippet of the forum display code so you don't have to hunt it out :)

// look at sorting options:
if ($vbulletin->GPC['sortorder'] != 'asc')
{
$sqlsortorder = 'DESC';
$order = array('desc' => 'selected="selected"');
$vbulletin->GPC['sortorder'] = 'desc';
}
else
{
$sqlsortorder = '';
$order = array('asc' => 'selected="selected"');
}

switch ($sortfield)
{
case 'title':
$sqlsortfield = 'thread.title';
break;
case 'lastpost':
$sqlsortfield = 'thread.lastpost';
break;
case 'replycount':
case 'views':
case 'postusername':
$sqlsortfield = $vbulletin->GPC['sortfield'];
break;
case 'voteavg':
if ($foruminfo['allowratings'])
{
$sqlsortfield = 'voteavg';
break;
} // else, use last post
default:
$handled = false;
($hook = vBulletinHook::fetch_hook('forumdisplay_sort')) ? eval($hook) : false;
if (!$handled)
{
$sqlsortfield = 'thread.lastpost';
$sortfield = 'lastpost';
}
}
$sort = array($sortfield => 'selected="selected"');

if (!can_moderate($forumid, 'canmoderateposts'))
{
if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canseedelnotice']))
{
$visiblethreads = " AND visible = 1 ";
}
else
{
$visiblethreads = " AND visible IN (1,2)";
}
}
else
{
$visiblethreads = " AND visible IN (0,1,2)";
}

$hook_query_fields = $hook_query_joins = $hook_query_where = '';
($hook = vBulletinHook::fetch_hook('forumdisplay_query_thre adscount')) ? eval($hook) : false;


Thanks in advance!

Royalridge
04-08-2006, 02:34 PM
Ok, my need was similar and I experimented to find a way to implement what you are looking for.

In this example forum ID 77 will be changed so that threads are listed in creation order.

You need to change TWO hooks.

forumdisplay_start:

if ($forumid == 77) {
$vbulletin->GPC['sortfield'] = 'Custom';
}


forumdisplay_sort:

if ($forumid = 77) {
$sqlsortfield = "thread.dateline";
$sqlsortorder = "asc";
$handled = true;
}


I suppose you could also code this like:

forumdisplay_start:

if ($forumid == 77) {
$vbulletin->GPC['sortfield'] = 'dateline';
}


forumdisplay_sort:

if ($vbulletin->GPC['sortfield'] == 'dateline';) {
$sqlsortfield = "thread.dateline";
$sqlsortorder = "asc";
$handled = true;
}


Then you only need to change the code in forumdisplay_start if you wanted multiple forums to use "dateline" as the sort.

I'm sure there's a more elegant way to get what you want to achieve and I'm looking forward to seeing other peoples solutions.

The problem with my solution is that it's quick, dirty and doesn't allow the user to select the sort fields / orders from the normal menu.

Sussed it, leave forumdisplay_sort: as above but change:

forumdisplay_start:

if ($_REQUEST['sort'] == '') {
if ($forumid == 77) {
$vbulletin->GPC['sortfield'] = 'dateline';
}
}

Razasharp
04-08-2006, 03:05 PM
Thanks!

I got the first option to work - but the second one didn't (second would make it slightly easier to add more as it would only need one oplug-in changed).

I'll give the third option a go too in a minute :)

Its not working :(

I get:

Parse error: parse error, unexpected ';' in /home/mysite/public_html/forums/forumdisplay.php(676) : eval()'d code on line 1


---

(Also option one doesnt work as no matter which forum you go to it shows the contents of the forum specified in the plug in)

Any ideas?

Thanks again for your help.

Royalridge
04-08-2006, 04:10 PM
My bad, for option 1 it should have been:

forumdisplay_sort:

if ($forumid == 77) {
$sqlsortfield = "thread.dateline";
$sqlsortorder = "asc";
$handled = true;
}

As for the other versions, I'm actually in the process of tidying up our 3.5.4 upgrade and will have a look at 'em when the heat dies down ;)

Razasharp
04-08-2006, 04:23 PM
Thats it Thanks!

Duh - I should've spotted the typo myself... took me 5 minutes to see what was changed lol

- will look forward to any updates too :)

Razasharp
04-30-2006, 04:26 PM
How did you get on with this after Royalridge?

Did you manage to update your code so users can use other sort options too?

:)

Royalridge
04-30-2006, 06:20 PM
To be honest, I only had the requirement to sort one forum by thread title so I didn't really do anything more on it.

Razasharp
05-05-2006, 11:28 PM
Ah right, thanks for replying :)

JamieM-UK
05-22-2006, 05:45 PM
My bad, for option 1 it should have been:

forumdisplay_sort:

if ($forumid == 77) {
$sqlsortfield = "thread.dateline";
$sqlsortorder = "asc";
$handled = true;
}

As for the other versions, I'm actually in the process of tidying up our 3.5.4 upgrade and will have a look at 'em when the heat dies down ;)

Can anyone help a novice out here please? Where would this code actually be inserted?

Razasharp
05-22-2006, 05:55 PM
Jamie - as far as I remb there is a plug-in that does the same thing so will be easier for you... do a search for it in the mods section ;)

(or if you want to use the above code, you need to create a plug-in and enter that code, again, theres a help guide about plug-ins on this site)

JamieM-UK
05-23-2006, 01:34 PM
Jamie - as far as I remb there is a plug-in that does the same thing so will be easier for you... do a search for it in the mods section ;)

(or if you want to use the above code, you need to create a plug-in and enter that code, again, theres a help guide about plug-ins on this site)

Thank you kindly Razasharp. I found it here and it works nicely. :)

https://vborg.vbsupport.ru/showthread.php?t=97958&highlight=thread+sort