السلام عليكم ورحمة الله ..
أعيتني السبل .. واسأل الله العلي القدير أن أجد ضالتي عندكم ..
في الكود المرفق المختص بحساب عدد المتواجدون في منتدي خلال 24 ساعة .. ويقوم باعادة الحساب في منتصف كل يوم .. وعند محاولتي تعديله ليقوم بالحساب كل 24 ساعة متتالية ولا يقف عند حاجز منتصف الليل .. اي عند منتصف الليل يجب ان يكون عدد المتواجدون هم الذين تواجدوا اخر 24 ساعة دون النظر عن توقيت معين ..
المهم .. ها هو الكود بين أيديكم .. وأسأل الله منكم العون والفائدة ..
// ### WHO WAS ONLINE TODAY ########################
if ((int)$maxusers['maxonline'] <= $totalonline)
{
$time = time();
$maxloggedin = "$totalonline " . $time . " " . $maxusers['maxonline'] . " " . $maxusers['maxonlinedate'];
$maxusers[0] = $totalonline;
$maxusers[1] = $time;
}
$todayloggedinusers = "";
$numbertodayonline = 0;
$numbertodayonlineinvisible = 0;
$todayusers=$DB_site->query("SELECT userid, username, usergroupid, lastactivity, options FROM ".TABLE_PREFIX."user
WHERE lastactivity > " . (mktime(0,0,0,date("m"),date("d"),date("Y")) + (($bbuserinfo['timezoneoffset']-$vboptions[timeoffset])*3600)) . "
ORDER BY username");
while ($todayuser=$DB_site->fetch_array($todayusers))
{
$todayuser['options'] = intval($todayuser['options']);
foreach($_USEROPTIONS AS $optionname => $optionval)
{
$todayuser["$optionname"] = iif($todayuser['options'] & $optionval, 1, 0);
}
$numbertodayonline++;
$invisibleuser = '';
$userid = $todayuser['userid'];
$lastactivetime = vbdate($vboptions['timeformat'], $todayuser[lastactivity]);
if ($todayuser['invisible']==1 and $bbuserinfo['usergroupid']!=6)
{
$numbertodayonlineinvisible++;
continue;
}
if ($todayuser['invisible'] == 1)
{ // Invisible User but show to Admin
$invisibleuser = '*';
}
$username = fetch_musername($todayuser);
if (!$todayloggedinuser)
{
eval("\$todayloggedinuser = \"".fetch_template('forumhome_todayloggedinuser')."\";");
}
else
{
eval("\$todayloggedinuser .= \", ".fetch_template('forumhome_todayloggedinuser')."\";");
}
}
$DB_site->free_result($todayusers);
if ($bbuserinfo[usergroupid] == 6) {
$todayonline = $numbertodayonline;
} else {
$todayonline = $numbertodayonline - $numbertodayonlineinvisible;
}
if ((int)$maxusers[2] <= $numbertodayonline) {
$time = time();
$maxloggedin = $maxusers[0] . " " . $maxusers[1] . " $numbertodayonline " . $time;
$maxusers[2] = $numbertodayonline;
$maxusers[3] = $time;
}
$todayrecordusers = $maxusers[2];
$todayrecorddate = vbdate($vboptions['dateformat'],$maxusers[3]);
eval("\$todayloggedinusers = \"".fetch_template('forumhome_todayloggedinusers')."\";");حين قمت بالتعديل في هذه الجزئية ..( المعادلة )
$todayusers=$DB_site->query("SELECT userid, username, usergroupid, lastactivity, options FROM ".TABLE_PREFIX."user
WHERE lastactivity > " . (mktime(0,0,0,date("m"),date("d"),date("Y")) + (($bbuserinfo['timezoneoffset']-$vboptions[timeoffset])*3600)) . "
ORDER BY username");قمت بتغيير الرقم من 3600 الي 84600 .. كانت النتائج جيدة .. ولكن بالنسبة للمستخدم الخاص بي فقط ..
شكرا لاهتمامك وتعاونكم مقدما ..