Перейти к контенту
  • 0

Хак "Кто и зачем был в топике"


FatCat

Вопрос

Настоятельно рекомендую прежде чем ставить, прикинуть посещаемость форума.

Если посещаемость большая, БД будет разрастаться со скоростью лавины. :D

 

functions.php

Найти:

	function update_member_session() {
	global $DB, $ibforums;

и заменить на

	function update_member_session() {
	global $DB, $std, $ibforums;

 

 

 

Найти

		$db_str = $DB->compile_db_update_string(
											 array(
											 		'member_name'  => $this->member['name'],
													'member_id'	=> intval($this->member['id']),
													'member_group' => $this->member['mgroup'],
													'in_forum'	 => intval($ibforums->input['f']),
													'in_topic'	 => intval($ibforums->input['t']),
													'login_type'   => $ibforums->input['Privacy'],
													'running_time' => $this->time_now,
													'location'	 => $ibforums->input['act'].",".$ibforums->input['p'].",".$ibforums->input['CODE']
												  )
										  );

и заменить на

// +FatCat: логируем перемещения пользователей:

// Сохраняем массив для дальнейшей работы
$member_session_array = array(
'member_name'  => $this->member['name'],
'member_id'	=> intval($this->member['id']),
'member_group' => $this->member['mgroup'],
'in_forum'	 => intval($ibforums->input['f']),
'in_topic'	 => intval($ibforums->input['t']),
'login_type'   => $ibforums->input['Privacy'],
'running_time' => $this->time_now,
'location'	 => $ibforums->input['act'].",".$ibforums->input['p'].",".$ibforums->input['CODE']
);
$db_str = $DB->compile_db_update_string($member_session_array);
// Таблицу сессий оформили, а массивом можем пользоваться дальше.

if($this->member['mgroup'] != "4" and ($this->time_now - $this->last_click) > 5) // Админов и редиректы не логируем;) 
{
// Подключаем языковый модуль:
$ibforums->lang = $std->load_words($ibforums->lang, 'lang_online', $ibforums->lang_id);

// Создаем массив вменяемых WHERE
foreach ($ibforums->lang as $k => $v) {
	if ( preg_match( "/^WHERE_(\w+)$/", $k, $match ) ) {
		$this->where[ $match[1] ] = $ibforums->lang[$k];
	}
}
unset($match);

// Создаем читабильное описание локации:
if (isset($member_session_array['location']))
{
	$line = "";
	list($act, $pid) = explode( ",", $member_session_array['location'] );
	$fid = $member_session_array['in_forum'];
	$tid = $member_session_array['in_topic'];
	if (isset($act))
	{
		$line = isset($this->where[ $act ]) ? $this->where[ $act ] : $ibforums->lang['board_index'];
	}
	if ($fid != "" and ($act == 'SF' or $act == 'ST' or $act == 'Post'))
	{
		if ( ($tid > 0) and ($act != 'Post') )
		{
			$line .= " <a href='index.php?&act=ST&f=$fid&t=$tid' target='_blank'>>>></a>";
		}
		else
		{
			$line .= " <a href='index.php?&act=SF&f=$fid' target='_blank'>>>></a>";
		}
	}

}
else
{
	$line .= " {$ibforums->lang['board_index']}";
}

$db_string = $std->compile_db_string( array (
	'forum_id'	=> $ibforums->input['f'],
	'topic_id'	=> $ibforums->input['t'],
	'post_id'	 => $ibforums->input['p'],
	'member_id'   => $this->member['id'],
	'member_name' => $this->member['name'],
	'ip_address'  => $ibforums->input['IP_ADDRESS'],
	'ctime'	   => time(),
	'topic_title' => $topic_title,
	'action'	  => $line
	)
);
$DB->query("INSERT INTO ibf_moderator_logs (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");
}
// -FatCat: логируем перемещения пользователей

 

 

В итоге имеем:

  1. В топике в "история темы (опция администратора)" наблюдаем всех пользователей и их действия в этом топике;
  2. В админке в логах модераторов по каждому пользователю видим все дейстия в форуме;
  3. Таблица ibf_moderator_logs пухнет как на дрожжах.

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

Пока что нет ответов на этот вопрос

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.