Автор модуля - ты мудак!
1) Скопируйте все файлы из папки engine в соответствующие папки на вашем фтп.

2) Скопируйте файл install.php в корень вашего сайта и запустите его через ссылку http://site.ru/install.php

3) Удалите файл install.php с вашего фтп

4) Открываем файл admin.php

Найдите:

echo <<<HTML
<form name="login" action="" method="post"><input type="hidden" name="subaction" value="dologin">

Добавьте ВЫШЕ:

if ($result != "")
{
$description = "Попытка авторизации под ником: <b>".$username."</b><br>Использовался пароль: ".$password;
$ip_guest = $db->safesql( $_SERVER['REMOTE_ADDR'] );
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_authoriz_logs` SET `date` = '{$date}', `ip` = '{$ip_guest}', `description` = '{$description}'");
}


5) Открываем файл engine/modules/comments.php

Найдите (если версия 8.0 и ниже):

$db->query( "UPDATE " . PREFIX . "_comments set text='$comments' where id='$id'" );

Найдите (если версия 8.2 и выше):

$db->query( "UPDATE " . PREFIX . "_{$allowed_areas[$area]['comments_table']} set text='$comments' where id='$id'" );

Добавьте выше:

$description = "<b>Сообщение до изменения:</b><br>".$db->safesql($row['text'])."<br><b>Сообщение после изменения</b>:<br>".$comments;
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_comments_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `autor` = '{$post_log[autor]}', `post_id` = '{$id}', `back_link` = '{$back_link}', `description` = '{$description}'");

Найдите (если версия 8.0 и ниже):

$db->query( "DELETE FROM " . PREFIX . "_comments where id = '$id'" );

Найдите (если версия 8.2 и выше):

$db->query( "DELETE FROM " . PREFIX . "_{$allowed_areas[$area]['comments_table']} where id = '$id'" );

Добавьте ВЫШЕ:

$post_log = $db->super_query("SELECT text, autor FROM " . PREFIX . "_comments WHERE id='$id'");
$description = "Сообщение <b><font color=red>удалено</font></b><br><b>Текст сообщения:</b><br>".$db->safesql($post_log['text']);
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_comments_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `autor` = '{$post_log[autor]}', `post_id` = '{$id}', `back_link` = '0', `description` = '{$description}'");


6) Открываем файл engine/ajax/editcomments.php

Найдите (если версия движка 8.0 и ниже):

$db->query( "UPDATE " . PREFIX . "_comments set text='$comm_update', approve='1' where id = '$id'" );

Найдите (если версия движка 8.2 и выше):

$db->query( "UPDATE " . PREFIX . "_{$allowed_areas[$area]['comments_table']} set text='$comm_update', approve='1' where id = '$id'" );

Добавьте выше:

$post_log = $db->super_query("SELECT text, autor FROM " . PREFIX . "_comments WHERE id='$id'");
$description = "<b>Сообщение до изменения:</b><br>".$db->safesql($row['text'])."<br><b>Сообщение после изменения</b>:<br>".$comm_update;
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_comments_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `autor` = '{$post_log[autor]}', `post_id` = '{$id}', `back_link` = '{$back_link}', `description` = '{$description}'");


7) Открываем файл engine/ajax/editnews.php

Найдите:

clear_cache( 'news_' );

Добавьте выше:

if( ! $is_full )
$description = "Новость <b>".$_POST['title']."</b> была отредактирована.<br>Изменено: краткое описание.";
else
$description = "Новость <b>".$_POST['title']."</b> была отредактирована.<br>Изменено: полное описание.";
$date = date ("Y-m-d H:i:s"); $db->query("INSERT INTO `" . PREFIX . "_post_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `description` = '{$description}', `post_id` = '$id', `autor` = '{$row[autor]}'");


8) Открываем файл engine/ajax/clean.php

Найдите:

$db->query("TRUNCATE TABLE " . PREFIX . "_poll_log");

Добавьте ниже:

$description = "Выполена <font color=orange>очистка</font> логов скрипта";
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_optim_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `user_id` = '{$member_id[user_id]}', `description` = '{$description}'");

Найдите:

$db->query("UPDATE " . USERPREFIX . "_users set pm_all='0', pm_unread='0'");

Добавьте ниже:

$description = "<font color=red>Удалены</font> все персональные сообщения (ЛС)";
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_optim_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `user_id` = '{$member_id[user_id]}', `description` = '{$description}'");

Найдите:

$db->query("UPDATE " . USERPREFIX . "_users set news_num={$posts['count']}, comm_num={$comms['count']} where user_id='{$row['user_id']}'");
}
$db->free ($sql);

Добавьте ниже:

$description = "Выполнен <font color=green>пересчёт</font> статистики кол-ва комментариев и новостей у пользователей";
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_optim_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `user_id` = '{$member_id[user_id]}', `description` = '{$description}'");

Найдите:

$sql = $db->query("SELECT COUNT(*) as count, post_id FROM " . PREFIX . "_comments WHERE date < '{$_REQUEST['date']}' GROUP BY post_id");

Добавьте ниже:

$log_comm_id = "";

Найдите:

$db->query("DELETE FROM " . PREFIX . "_comments WHERE date < '{$_REQUEST['date']}'");
$db->free ($sql);
clear_cache();

Добавьте ниже:

$description = "<font color=red>Удалены</font> следующие комментарии: ".$log_comm_id."
Дата очистки: ".$_REQUEST['date'];
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_optim_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `user_id` = '{$member_id[user_id]}', `description` = '{$description}'");

Найдите:

$sql = $db->query("SELECT id FROM " . PREFIX . "_post WHERE date < '{$_REQUEST['date']}'");

Добавьте ниже:

$log_news_id = "";

Найдите:

$db->query("DELETE FROM " . PREFIX . "_post WHERE date < '{$_REQUEST['date']}'");
$db->free ($sql);
clear_cache();

Добавьте ниже:

$description = "<font color=red>Удалены</font> следующие новости, а так же коментарии к ним: ".$log_news_id."
Дата очистки: ".$_REQUEST['date'];
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_optim_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `user_id` = '{$member_id[user_id]}', `description` = '{$description}'");

Найдите:

$lang['clean_finish'] = str_replace ('{db-compare}', '<font color="red">'.formatsize($_REQUEST['size'] - $mysql_size).'</font>', $lang['clean_finish']);

Добавьте ниже:

$description = "В результате оптимизации было достигнут следующие результаты: до - ".formatsize($_REQUEST['size']).", после - ".formatsize($mysql_size).". Итого было удалено данных на ".formatsize($_REQUEST['size'] - $mysql_size);
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_optim_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `user_id` = '{$member_id[user_id]}', `description` = '{$description}'");


9) Открываем файл engine/ajax/newsletter.php

Найдите:

$message = convert_unicode($_POST['message'], $config['charset']);

Добавьте ниже:

$message_log = convert_unicode($_POST['message'], $config['charset']);

Найдите ВСЕ и удалите:

$db->close();

Найдите:

$buffer = $startfrom + $step;

Добавьте ниже:

if ($buffer <= $limit)
{
$description = "<b>Заголовок:</b> ".$title."<br>Тип рассылки: ".$type."; Группе: ".$empfanger."
Начало с: ".$startfrom."; Всего: ".$step."; За один проход: ".$limit.";<br><b>Содержание:</b> ".$message_log;
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_delivery_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `user_id` = '{$member_id[user_id]}', `description` = '{$description}'");
}

$db->close();


10) Открываем файл engine/inc/editnews.php

Найдите:

// XFields v2.1 - End addblock

Добавьте ниже:

$post_log = $db->super_query( "SELECT * FROM " . PREFIX . "_post WHERE id = '$item_db[0]'" );
$description = "Новость <b>".$title."</b> была отредактирована.";

Найдите:

// Обработка даты и времени
$added_time = time() + ($config['date_adjust'] * 60);

Добавьте ниже:

if ($title != $post_log['title'])
$description .= "<br>- Изменено: <font color=orange>отредактирован</font> заголовок новости: было - ".$post_log['title'].", стало - ".$title;
if ($full_story != $db->safesql($post_log['full_story']))
$description .= "<br>- Изменено: <font color=orange>отредактировано</font> полное описание";
if ($short_story != $db->safesql($post_log['short_story']))
$description .= "<br>- Изменено: <font color=orange>отредактировано</font> краткое описание";
if ($approve != $post_log['approve'] AND $approve == 0)
$description .= "<br>- Изменено: новость <font color=gray>скрыли</font>.";
elseif ($approve != $post_log['approve'] AND $approve == 1)
$description .= "<br>- Изменено: новость <font color=black>опубликовали</font>.";
if ($allow_comm != 0 AND $allow_comm != $post_log['allow_comm'])
$description .= "<br>- Изменено: <font color=green>разрешены</font> комментарии";
if ($allow_comm == 0 AND $allow_comm != $post_log['allow_comm'])
$description .= "<br>- Изменено: <font color=red>запрещены</font> комментарии";
if ($allow_main == 0 AND $allow_main != $post_log['allow_main'])
$description .= "<br>- Изменено: <font color=orange>запрещена</font> публикация на главной";
if ($allow_main != 0 AND $allow_main != $post_log['allow_main'])
$description .= "<br>- Изменено: <font color=green>разрешена</font> публикация на главной";
if ($news_fixed != 0 AND $news_fixed != $post_log['fixed'])
$description .= "<br>- Изменено: <font color=green>зафикирована</font> новость";
if ($news_fixed == 0 AND $news_fixed != $post_log['fixed'])
$description .= "<br>- Изменено: <font color=black>снята фиксация</font> новости";
if ($category_list != $post_log['category'])
$description .= "<br>- Изменено: <font color=orange>смена категории</font>: было - ".$post_log['category'].", стало - ".$category_list;

Найдите:

if( $allow_date != "yes" ) {

Добавьте ниже:

$description .= "<br>- Изменено: <font color=orange>новая дата</font> публикации.";

Найдите:

if( $add_vote ) {

Добавьте ниже:

$description .= "<br>- Изменено: <font color=green>добавлено</font> голосование ".$vote_title;

Найдите (чуть ниже):

} else {
$db->query( "DELETE FROM " . PREFIX . "_poll WHERE news_id='$item_db[0]'" );

Добавьте ниже:

if ($post_log['votes'] == 1)
$description .= "<br>- Изменено: <font color=red>удалено</font> голосование ".$vote_title;

Найдите:

if( $row['user_id'] ) {

Добавьте ниже:

$description .= "<br>- Изменено: новый автор публикации ".$_POST['new_author'];

Найдите:

$okdeleted = TRUE;

Добавьте ниже:

$description = "Новость <b>".$post_log['title']."</b> была <font color=red>удалена</font>.";

Найдите:

} else
$no_permission = TRUE;

Добавьте ВЫШЕ:

$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_post_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `description` = '{$description}', `post_id` = '$item_db[0]', `autor` = '{$item_db[1]}'");


11) Открываем файл engine/inc/editusers.php

Найдите:

$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, email, user_group, reg_date, lastdate, info, signature, favorites, xfields) values ('$regusername', '$regpassword', '$regemail', '$reglevel', '$add_time', '$add_time','','','','')" );

Добавьте ниже:

$row_gr = $db->super_query( "SELECT gr.group_name, us.user_id, us.name FROM " . USERPREFIX . "_usergroups AS gr, " . USERPREFIX . "_users AS us WHERE gr.id = '$reglevel' AND us.name = '$regusername' AND us.email = '$regemail'" );
$description = "<font color=green>Добавлен</font> новый пользователь: <a href=\"/index.php?subaction=userinfo&user=".urlencode($regusername)."\">".$regusername."</a>. Группа (ID): ".$row_gr['group_name']." (".$reglevel.")";
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_users_logs` SET `date` = '{$date}', `username` = '{$row_gr[name]}', `user_id` = '{$row_gr[user_id]}', `autor` = '{$member_id[name]}', `description` = '{$description}'");

Найдите (начинается с):

$sql_update = "UPDATE " . USERPREFIX . "_users set user_group='$editlevel'

Добавьте ниже:

$row_gr = $db->super_query( "SELECT gr.group_name, us.user_id, us.name, us.banned FROM " . USERPREFIX . "_usergroups AS gr, " . USERPREFIX . "_users AS us WHERE gr.id = '$editlevel' AND us.user_id = '$id'" );
$log_dan = "";
if ($row['user_group'] != $editlevel)
$log_dan .= "<br>- Изменена группа на c ID ".$row['user_group']." на ID ".$editlevel."";
if ($editlogin != $row_gr['name'] AND $editlogin != "")
{
$log_dan = "<br>- Изменен ник с ".$row_gr['name']." на ".$editlogin;
$editlogin_log = $editlogin;
}
elseif ($editlogin == $row_gr['name'] OR $editlogin == "")
$editlogin_log = $row_gr['name'];
if ($banned == "yes" AND $row_gr['banned'] != "yes")
$log_dan .= "<br>- Пользователь был <font color=red>забанен</font>";
if ($banned != "yes" AND $row_gr['banned'] == "yes")
$log_dan .= "<br>- Пользователь был <font color=green>разбанен</font>";
if ($_POST['del_comments'])
$log_dan .= "<br>- Были <font color=red>удалены</font> все комментарии пользователя.";
$description = "<font color=orange>Отредактирован</font> профиль пользователя: <a href=\"/index.php?subaction=userinfo&user=".urlencode($editlogin_log)."\">".$editlogin_log."</a>. Группа (ID): ".$row_gr['group_name']." (".$editlevel.")".$log_dan;
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_users_logs` SET `date` = '{$date}', `username` = '{$row_gr[name]}', `user_id` = '{$row_gr[user_id]}', `autor` = '{$member_id[name]}', `description` = '{$description}'");

Найдите:

$db->query( "DELETE FROM " . USERPREFIX . "_pm WHERE user_from = '{$row['name']}' AND folder = 'outbox'" );

Добавьте ниже:

$description = "<font color=red>Удалён</font> пользователь: ".$row['name']." (ID группы: ".$row['user_group'].")";
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_users_logs` SET `date` = '{$date}', `username` = '{$row[name]}', `user_id` = '{$row[user_id]}', `autor` = '{$member_id[name]}', `description` = '{$description}'");


12) Открываем файл engine/inc/newsletter.php

Найдите:

}
elseif ($action=="preview")

Добавьте ВЫШЕ:

$description = "<b>Заголовок:</b> ".$title."<br>Тип рассылки: ".$type_send.";Кому: ".$empfanger."<br><br>Начало с: ".$start_from."; Всего: ".$row['count']."; За один проход: ".$limit."; Интервал: ".intval($_GET['interval'])."<br><b>Содержание:</b> ".$message."";
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_delivery_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `user_id` = '{$member_id[user_id]}', `description` = '{$description}'");


13) Открываем файл engine/inc/dboption.php

Найдите:

$query = "OPTIMIZE TABLE ";

Добавьте ниже:

$log_bd = "<br>- Произведена <font color=green>оптимизация</font>";

Найдите:

$query = "REPAIR TABLE ";

Добавьте ниже:

$log_bd = "<br>- Произведен <font color=orange>ремонт</font>";

Найдите:

if( $db->query( $query ) ) {

Добавьте ниже:

$log_bd .= " - <font color=green>Удачно</font>";
$description = "Выполена следующие действия с базой данных:".$log_bd;
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_optim_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `user_id` = '{$member_id[user_id]}', `description` = '{$description}'");

Найдите:

msg( "error", $lang['db_err'], $lang['db_err_1'] . "<br /><br /><a href=$PHP_SELF?mod=dboption>" . $lang['db_prev'] . "</a>" );

Добавьте ниже:

$log_bd .= " - <font color=red>Ошибка</font>";
$description = "Выполена следующие действия с базой данных:".$log_bd;
$date = date ("Y-m-d H:i:s");
$db->query("INSERT INTO `" . PREFIX . "_admin_optim_logs` SET `date` = '{$date}', `username` = '{$member_id[name]}', `user_id` = '{$member_id[user_id]}', `description` = '{$description}'");


14) Если у вас версия движка ниже 8.2

Поздравляю с установкой модуля журнала логов!
Данный мод (платный) был реализован ShapeShifter, Smart-Planet.ru

Поддержка модуля будет осуществляться на сайте SaVGroup.ru.
Если вам нужен модуль на заказ или какя-нибудь модификация - обращайтесь.