PDA

View Full Version : Question about unset()


RaZor Edge
07-21-2005, 01:19 PM
Hi,

I'm not a professionnal coder, but with permission from the original author, I have modify this code (https://vborg.vbsupport.ru/showthread.php?t=62313)(Display ban reason on error page) to fit my needs (Show time remaining for a temporary ban on forum home).

Everythings work great, but i'm really not sure about the memory saving tag: unset(). Must we put every variable that we have created (and don't need to show) in this???

Here's my code:


if ($bbuserinfo[usergroupid] == 26) {

$fnbanneduserid = $bbuserinfo['userid'];
$fnbanneduser=$DB_site->query_first("SELECT bandate, liftdate FROM userban WHERE userid = $fnbanneduserid");
if ($fnbanneduser['liftdate'] == 0)
{
$fnbanneduser['banperiod'] = '<b>forever</b>';
$fnbanneduser['banlift'] = '<b>never</b>';
$fnbanneduser['banremaining'] = '<b>a long period of time</b>';
}
else
{
$fnbanneduser['banlift'] = vbdate("$vboptions[dateformat], ~$vboptions[timeformat]", $fnbanneduser['liftdate']);
$fnbanneduser['banperiod'] = ceil(($fnbanneduser['liftdate'] - $fnbanneduser['bandate']) / 86400);
if ($fnbanneduser['banperiod'] == 1)
{
$fnbanneduser['banperiod'] .= " day";
}
else
{
$fnbanneduser['banperiod'] .= " days";
}
$remain = $fnbanneduser['liftdate'] - TIMENOW;
$remain_days = floor($remain / 86400);
$remain_hours = ceil(($remain - ($remain_days * 86400)) / 3600);
if ($remain_hours == 24)
{
$remain_days += 1;
$remain_hours = 0;
}

if ($remain_days < 0)
{
$user['banremaining'] = "less than an hour";
}
else
{
if ($remain_days == 1)
{
$day_word = 'day';
}
else
{
$day_word = 'days';
}
if ($remain_hours == 1)
{
$hour_word = 'hour';
}
else
{
$hour_word = 'hours';
}
$fnbanneduser['banremaining'] = "$remain_days $day_word, $remain_hours $hour_word";
}
}
if ($fnbanneduser['bandate']) {
$fnbanneduser['bandate'] = vbdate($vboptions['dateformat'], $fnbanneduser['bandate']);
} else {
$fnbanneduser['bandate'] = 'N/D';
}
$fnbannedtext = "Looks like you broke one or more rules. You were banned on $user[bandate] for $fnbanneduser[banperiod].<BR><BR>The ban will be automatically lifted $fnbanneduser[banlift].<br><br>There is currently <b>$fnbanneduser[banremaining]</b> remaining.<br><br>After your ban time expires you will once again be able to access the forum.<br><br>If you have any questions as to why you were banned, feel free to PM or email the staff.<br><br>";
unset($fnbanneduserid, $fnbanneduser, $remain, $remain_days, $remain_hours, $day_word, $hour_word );

}


You can see that I have unset every variables:


unset($fnbanneduserid, $fnbanneduser, $remain, $remain_days, $remain_hours, $day_word, $hour_word );


Is this ok???

Thank you very much!!!

(Note: With the original author permission, when this question will be answered, I will probably release this as a hack. I have see many request for something like that...)

Xenon
07-21-2005, 01:21 PM
you don't have to unset every variable, as at the end of the script this will be done automatically.

just if you ahve very big arrays you won't use anymore you should do the unset to save memory :)

RaZor Edge
07-21-2005, 01:31 PM
Great!

So, I think I will only unset $fnbanneduser (related to my query).

Thank you very much for your fast answer!

Xenon
07-21-2005, 01:33 PM
yep :)

you're welcome :)