View Full Version : Help with daysprune in forumdisplay.php
Parker Clack
12-30-2001, 08:31 PM
In forumdisplay.php you have the alibity to select your daysprune as the forum default, all, etc. What I would like to do is add the option to display those messages since you last logged on as an option.
So you have
if (!isset($daysprune) or $daysprune==0 or $daysprune==-1) ......
and then
if ($daysprune!=1000) {
$checkdate = time() - ($daysprune*86400);
$datecut='AND lastpost >= '.$checkdate;..........
What I would like to add is for $daysprune to check against a member's last time on and compare it to the time and date now and then only display those posts that meet this criteria.
Is this possible to do or would it be a larger strain on the server?
Parker
actually I think that would be fairly easy - and quite a nice idea, Parker. Give me a few to look at the code, brb :)
Parker try this (I've not tested it yet):
in forumdisplay.php find (around line 311):
if ($daysprune!=1000) {
$checkdate = time() - ($daysprune*86400);
$datecut='AND lastpost >= '.$checkdate;
}
Replace it with:
if ($daysprune!=1000) {
if ($daysprune=='-2') {
$datecut='AND lastpost >= '.$bbuserinfo[lastvisit];
} else {
$checkdate = time() - ($daysprune*86400);
$datecut='AND lastpost >= '.$checkdate;
}
}
Add <option value='-2'>Since your last visit</option> to the daysprune select.
That's it.
Parker Clack
12-31-2001, 02:18 AM
Bira:
Thanks again. I couldn't do this stuff without you. Now in the modifyoptions template you have
<select name="prunedays">
<option value="-1" $daysdefaultselected>Use forum default</option>
<option value="1" $days1selected>Show threads from last day</option>
would you then use:
<option value="-2" $days-2selected>Show thread from last visit</option>
so that they can select this option in their control panel options?
Parker
no, you can't have - there, in PHP that means $days - 2selected (minus).
You'll need a bit more "serious" hacking in there -- create a new $xxxselected variable and do some if's. Same as $defaultselected, just say $lastvisitselected.
It means adding it to functions.php as well, if I remember correctly.
If I need to do all that for you, I might as well write the hack ;) -- just look around at how $defaultselected behaves and create a new variable
Parker Clack
12-31-2001, 02:33 AM
Bira:
Ok, thanks I will look around and figure out what is going on.
In the above I should have given you the rest of the code as just putting in the suggestion you gave me gives me a parsing error.
The whole thing is:
$datecut="";
$stickyids="";
$stickycount=0;
if ($daysprune!=1000) {
$checkdate = time() - ($daysprune*86400);
$datecut='AND lastpost >= '.$checkdate;
if ($pagenumber==1) {
$datecut.=' AND sticky=0';
$stickies=$DB_site->query("SELECT threadid,lastpost FROM thread WHERE forumid='$foruminfo[forumid]' AND visible=1 AND sticky=1 $limitothers");
while($thissticky=$DB_site->fetch_array($stickies)) {
//if ($thissticky['lastpost']<$checkdate) {
$stickycount++;
//}
$stickyids.=",$thissticky[threadid]";
}
}
}
How would I implement your coding suggestion into this?
Thanks again,
Parker
Parker I just tested the code I gave you in post #3 and it works perfectly. It's the only code you need to replace in forumdisplay.php (unless you want to add a user-selectable default option, of course).
Parker what version are you on?!?
The vinyl code for 2.2.1 in forumdisplay.php is (lines 307-314):
// look at thread limiting options
$datecut="";
$stickyids="";
$stickycount=0;
if ($daysprune!=1000) {
$checkdate = time() - ($daysprune*86400);
$datecut='AND lastpost >= '.$checkdate;
}
// get number of sticky threads for the first page
// on the first page there will be the sticky threads PLUS the $perpage other normal threads
// not quite a bug, but a deliberate feature!
if ($pagenumber==1) {
$datecut.=' AND sticky=0';
Adding the lastvisit option would change it to:
// look at thread limiting options
$datecut="";
$stickyids="";
$stickycount=0;
if ($daysprune!=1000) {
if ($daysprune=='-2') {
$datecut='AND lastpost >= '.$bbuserinfo[lastvisit];
} else {
$checkdate = time() - ($daysprune*86400);
$datecut='AND lastpost >= '.$checkdate;
}
}
// get number of sticky threads for the first page
// on the first page there will be the sticky threads PLUS the $perpage other normal threads
// not quite a bug, but a deliberate feature!
if ($pagenumber==1) {
$datecut.=' AND sticky=0';
(change hilighted)
Parker Clack
12-31-2001, 02:56 AM
Bira:
I am using 2.2.0 and the code is
$datecut="";
$stickyids="";
$stickycount=0;
if ($daysprune!=1000) {
$checkdate = time() - ($daysprune*86400);
$datecut='AND lastpost >= '.$checkdate;
if ($pagenumber==1) {
instead of
$datecut="";
$stickyids="";
$stickycount=0;
if ($daysprune!=1000) {
$checkdate = time() - ($daysprune*86400);
$datecut='AND lastpost >= '.$checkdate;
}
if ($pagenumber==1) {
It must be a code change between the two versions. I will give what you have a try.
Parker
Parker Clack
12-31-2001, 03:01 AM
Bira:
I found that the way it is in 2.2.0 has an extra right bracket at the end of the next if statement.
So I had to change
$stickyids.=",$thissticky[threadid]";
}
}
}
to
$stickyids.=",$thissticky[threadid]";
}
}
to get rid of the parse error.
Parker
No Parker, don't do that. Revert back to the original 2,2,0 code and then change ONLY:
$checkdate = time() - ($daysprune*86400);
$datecut='AND lastpost >= '.$checkdate;
With
if ($daysprune=='-2') {
$datecut='AND lastpost >= '.$bbuserinfo[lastvisit];
} else {
$checkdate = time() - ($daysprune*86400);
$datecut='AND lastpost >= '.$checkdate;
}
Don't touch the rest
Parker Clack
12-31-2001, 03:30 AM
Bira:
Ok, that's fixed. I knew there was a right bracket that was extra I just didn't know which one.
Ok in the members.php file I have changed:
if ($bbuserinfo[daysprune]==-1) {
$daysdefaultselected="selected";
} else {
$dname="days".$bbuserinfo[daysprune]."selected";
$$dname="selected";
}
to this:
if ($bbuserinfo[daysprune]==-1) {
$daysdefaultselected="selected";
} elseif ($bbuserinfo[daysprune]==-2){
$dayslastvisitselected="selected";
} else {
$dname="days".$bbuserinfo[daysprune]."selected";
$$dname="selected";
}
and added the -2 to the modifyoptions template so that -2 is placed in the user table.
now in forumdisplay.php you have
if (!isset($daysprune) or $daysprune==0 or $daysprune==-1) {
if ($bbuserinfo['daysprune']>0) {
$daysprune = $bbuserinfo['daysprune'];
} else {
$daysprune = iif($foruminfo['daysprune'], $foruminfo['daysprune'], 30);
}
}
is this where I want to check for the $daysprune==-2 to set this to the member's option they chose?
Parker
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.