PDA

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

bira
12-30-2001, 09:08 PM
actually I think that would be fairly easy - and quite a nice idea, Parker. Give me a few to look at the code, brb :)

bira
12-30-2001, 09:17 PM
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

bira
12-31-2001, 02:22 AM
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

bira
12-31-2001, 02:37 AM
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).

bira
12-31-2001, 02:42 AM
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

bira
12-31-2001, 03:12 AM
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