defenderyk пишет:
ТАк и не появилась версия под FM? или там много всего надо переписывать?
Просто никто особо не просил. Вобщем я решил написать этот мод для ExBB FM 1.0 Beta с нуля, а не переписывать с более старых версий (лень ковыряться в чужом коде, свой я напишу куда быстрее, да и реализация совместимости с режимом скрытого пребывания на форуме в старом моде мне не очень нравится).
Для установки мода делаем следующее. Открываем файл include/fm.class.php и находим строку:
CODE:
$this->_Write($fp_online,$onlinedata);
Сразу после неё вставляем блок:
CODE:
/* Кто сегодня был на форуме? */
global $today;
$today_file = 'data/today.php';
$today = $this->_Read2Write($fp_today, $today_file, file_exists($today_file) ? false : true);
$day = date('d', $this->_Nowtime);
if ((!isset($today['day'])) || ($today['day'] != $day))
$today = array('day' => $day, 'reged' => array(), 'guests' => 0, 'sess' => array());
if ($this->user['id']) {
$today['reged'][$this->user['id']] = array('n' => $this->user['name'], 's' => $this->user['status']);
if (($this->exbb['visiblemode']) && ($this->user['visible']))
$today['reged'][$this->user['id']]['h'] = 1;
}
else {
foreach ($today['sess'] as $sess => $time)
if ($this->_Nowtime - $time > 300) unset($today['sess'][$sess]);
if ((!isset($today['sess'][$sessid])) && (!isset($_SESSION['exbb_today']))) $today['guests']++;
$today['sess'][$sessid] = $this->_Nowtime;
}
$this->_Write($fp_today, $today);
/* Кто сегодня был на форуме? */
global $today;
$today_file = 'data/today.php';
$today = $this->_Read2Write($fp_today, $today_file, file_exists($today_file) ? false : true);
$day = date('d', $this->_Nowtime);
if ((!isset($today['day'])) || ($today['day'] != $day))
$today = array('day' => $day, 'reged' => array(), 'guests' => 0, 'sess' => array());
if ($this->user['id']) {
$today['reged'][$this->user['id']] = array('n' => $this->user['name'], 's' => $this->user['status']);
if (($this->exbb['visiblemode']) && ($this->user['visible']))
$today['reged'][$this->user['id']]['h'] = 1;
}
else {
foreach ($today['sess'] as $sess => $time)
if ($this->_Nowtime - $time > 300) unset($today['sess'][$sess]);
if ((!isset($today['sess'][$sessid])) && (!isset($_SESSION['exbb_today']))) $today['guests']++;
$today['sess'][$sessid] = $this->_Nowtime;
}
$this->_Write($fp_today, $today);
/* Кто сегодня был на форуме? */
Далее открываем файл index.php и ищём в нём строку:
CODE:
$fm->_OnlineLog($fm->LANG['BoardMain'],FALSE,TRUE);
И сразу после неё вставляем блок:
CODE:
/* Кто сегодня был на форуме? */
$today_reged = $today_hidden = 0;
$today_show = array();
foreach ($today['reged'] as $today_id => $today_info) {
if (isset($today_info['h'])) {
$today_hidden++;
if ($fm->user['status'] == 'ad') $today_info['n'] .= '*';
else continue;
}
else $today_reged++;
switch ($today_info['s']) {
case 'ad': $today_class = ' class="admin"'; break;
case 'sm': $today_class = ' class="supmoder"'; break;
case 'mo': $today_class = ' class="moder"'; break;
default: $today_class = '';
}
$today_show[] = '<a href="profile.php?action=show&member='.$today_id.'"'.$today_class.'>'.$today_info['n'].'</a>';
}
$today_show = implode(', ', $today_show);
$today_total = $today_reged + $today_hidden + $today['guests'];
$today_show = ($fm->exbb['visiblemode']) ?
sprintf($fm->LANG['TodayShow'], $today_total, $today_reged, sprintf($fm->LANG['TodayHidden'], $today_hidden), $today['guests'], $today_show) :
sprintf($fm->LANG['TodayShow'], $today_total, $today_reged, '', $today['guests'], $today_show);
/* Кто сегодня был на форуме? */
$today_reged = $today_hidden = 0;
$today_show = array();
foreach ($today['reged'] as $today_id => $today_info) {
if (isset($today_info['h'])) {
$today_hidden++;
if ($fm->user['status'] == 'ad') $today_info['n'] .= '*';
else continue;
}
else $today_reged++;
switch ($today_info['s']) {
case 'ad': $today_class = ' class="admin"'; break;
case 'sm': $today_class = ' class="supmoder"'; break;
case 'mo': $today_class = ' class="moder"'; break;
default: $today_class = '';
}
$today_show[] = '<a href="profile.php?action=show&member='.$today_id.'"'.$today_class.'>'.$today_info['n'].'</a>';
}
$today_show = implode(', ', $today_show);
$today_total = $today_reged + $today_hidden + $today['guests'];
$today_show = ($fm->exbb['visiblemode']) ?
sprintf($fm->LANG['TodayShow'], $today_total, $today_reged, sprintf($fm->LANG['TodayHidden'], $today_hidden), $today['guests'], $today_show) :
sprintf($fm->LANG['TodayShow'], $today_total, $today_reged, '', $today['guests'], $today_show);
/* Кто сегодня был на форуме? */
Открываем файл loginout.php и находим строки:
CODE:
$_SESSION = array();
session_destroy();
session_destroy();
И заменяем их на строку:
CODE:
$_SESSION = array('exbb_today' => 1);
Добавляем 2 языковые конструкции в файл language/russian/lang_front_all.php:
CODE:
$this->LANG['TodayShow'] = 'Сегодня форум посетили: %d (зарегистрированных: %d, %sгостей: %d)<br>%s';
$this->LANG['TodayHidden'] = 'скрытых: %d, ';
$this->LANG['TodayHidden'] = 'скрытых: %d, ';
И модифицируем шаблон templates/InvisionExBB/board_body.tpl. Находим строки:
CODE:
<!-- ДЕНЬ РОЖДЕНИЯ -->
{$birstdaylist}
<!-- ДЕНЬ РОЖДЕНИЯ -->
{$birstdaylist}
<!-- ДЕНЬ РОЖДЕНИЯ -->
И прямо под ними вставляем:
CODE:
<tr>
<td class="pformstrip" colspan="2"> </td>
</tr>
<tr>
<td width="5%" class="row2" rowspan="{$rowspan}"><img src="./templates/InvisionExBB/im/user.gif" border="0" alt="Active Users" /></td>
<td class="row4" width="95%">$today_show<br />{$maximum}</td>
</tr>
<td class="pformstrip" colspan="2"> </td>
</tr>
<tr>
<td width="5%" class="row2" rowspan="{$rowspan}"><img src="./templates/InvisionExBB/im/user.gif" border="0" alt="Active Users" /></td>
<td class="row4" width="95%">$today_show<br />{$maximum}</td>
</tr>
Далее в этом же файле находим следующую строку и удаляем её:
CODE:
<br />{$maximum}
На этом всё. Мод готов к использованию. Мод полностью совместим с режимом скрытого пребывания на форуме, при этом скрытых пользователей могут видеть только администраторы форума (их имена будут отмечены звёздочкой)