<?php
include '../engine/includes/start.php';
$set['title']='Гостевая книга'; // заголовок страницы
include H.'engine/includes/head.php';
Core::get(array('page.class', 'text.class', 'cache.class'), 'classes');
if (!$admin)$act = null;
switch($act)
{
case 'clean':
if (isset($_POST['write'], $_POST['write2']))
{
$timeclear1 = 0;
if ($_POST['write2']=='sut')
$timeclear1 = time() - intval($_POST['write']) * 60 * 60 * 24;
elseif ($_POST['write2']=='mes')
$timeclear1 = time() - intval($_POST['write']) * 60 * 60 * 24 * 30;
$deletes = $sql->query('DELETE FROM `guest` WHERE `time` > '.$timeclear1)->num_rows();
$sql->query('OPTIMIZE TABLE `guest`');
Core::msg_show( ' Удалено постов: '.$deletes);
Cache::multi_delete('guestbook', tmpDir);
}
else
?>
<form method = "post" class='post' action="?act=clean">
Будут удалены посты, написаные ... тому назад<br />
<input name = "write" value="12" type="text" size='3' />
<select name = "write2">
<option value="">-------</option>
<option value="mes">Месяцев</option>
<option value="sut">Суток</option>
</select><br />
<input value="Очистить" type="submit" /><br />
<a href="?">Отмена</a><br />
</form>
<?php
include H.'engine/includes/foot.php';
break;
case 'del':
if ($sql->query("SELECT COUNT(*) FROM `guest` WHERE `id` = '".$id."'")->result() == 1)
{
$sql->query("DELETE FROM `guest` WHERE `id` = '$id' limit 1");
Core::msg_show('Сообщение удалено');
Cache::multi_delete('guestbook', tmpDir);
}
break;
case 'uninstall':
if ($creator)
{
if (isset($_GET['yes']))
{
$sql->multi("DROP TABLE `guest`;DELETE FROM `modules` where `name` = 'gBook';DELETE FROM `module_services` where `belongs` = 'gBook';");
unlink(H . 'engine/services/guestbook.php');
unlink(H . 'pages/guestbook.php');
Cache::multi_delete('guestbook', tmpDir);
echo 'Мини-чат удален';
}
else
echo 'Вы действительно хотите удалить модуль "Мини-чат"?<br /><a href="?act=uninstall&yes">[ Да ]</a> | <a href="?">[ Нет ]</a>';
include H.'engine/includes/foot.php';
}
break;
}
if (isset($_POST['msg']) && $user_id)
{
$msg = my_esc($_POST['msg']);
$mat = text::antimat($msg, $user);
$length = mb_Strlen($msg);
if ($mat)
$err = 'В тексте сообщения обнаружен мат: '.$mat;
elseif ($length > 1024)
$err = 'Сообщение слишком длинное';
elseif ($length < 2)
$err = 'Короткое сообщение';
elseif ($sql->query("SELECT COUNT(*) FROM `guest` WHERE `id_user` = '".$user['id']."' AND `msg` = '".$msg."' LIMIT 1")->result())
$err = 'Ваше сообщение повторяет предыдущее';
elseif (!isset($err))
{
$sql->multi("INSERT INTO `guest` (`id_user`, `time`, `msg`) values('".$user['id']."', '".time()."', '".$msg."');UPDATE `user` SET `balls` = `balls` + 1 WHERE `id` = '".$user['id']."' LIMIT 1;");
$sql->free(true);
Core::msg_show('Сообщение успешно добавлено<br /><a href="?">Вернутся</a>', 'msg');
Cache::multi_delete('guestbook', tmpDir);
include H.'engine/includes/foot.php';
}
unset($msg, $mat, $length);
}
if (isset($err))
echo Core::msg_show($err);
if ($user_id)
{
$area = null;
if ($act == 'reply')
{
$for = Core::get_user($id);
$area = '[b]' . $for['nick'] . '[/b], ';
}
?>
<div class="menu_razd"><a name="message">Быстрый ответ</a> | <a href="?page=<?=$cur_page?>#advance_message">Расшир. ответ</a></div>
<form method = "post">
<textarea name="msg"><?=$area?></textarea><br />
<input value="Отправить" type="submit"/>
</form>
<?php
}
$cache = new cache(H.'engine/files/tmp/guestbook[page='.(isset($_GET['page']) ? intval($_GET['page']) : 1).';moder='.($moder ? 1 : 0).';user='.($user_id ? 1 : 0).'].swc');
if (!$cache->life())
{
ob_start();
$k_post = $sql->query("SELECT COUNT(*) FROM `guest`")->result();
$page = new page($k_post, $set['p_str']);
$i = 1;
if (!$k_post)
Core::msg_show('Нет сообщений', 'post');
$sql->query("SELECT `guest`.`msg`, `guest`.`time`, `guest`.`id` as `post_id`, `user`.`date_last`,`user`.`nick`, `user`.`id`, `user`.`pol`, `user`.`group_access` FROM `guest` LEFT JOIN `user` ON `guest`.`id_user` = `user`.`id` ORDER BY `guest`.`id` DESC LIMIT ".$page->limit());
while ($post = $sql->fetch())
{
echo '<div class="'.($i++ % 2 ? 'p_m' : 'p_t').'">'.Core::user_show($post, array('post' => text::output($post['msg']), 'status' => $post['time'], 'is_time' => true), 'new');
if ($user_id)
echo '<br /><a href="?act=reply&id='.$post['id'].'&sid='.mt_rand(99,999).'#message">Ответить</a>';
if ($moder)
echo '<a style="float:right" href="?id='.$post['post_id'].'&act=del">Удалить</a>';
echo '</div>';
}
$page->display('?');
$cache->write();
}
echo $cache->read();
echo '<form name="form" method = "post">';
if ($user_id)
{
$area = null;
if ($act == 'reply')
{
$for = Core::get_user($id);
$area = '[b]' . $for['nick'] . '[/b], ';
}
$js_form = 'form';
$js_elem = 'msg';
include incDir . 'JsToolBar.php';
?>
<a name="advance_message"></a>
Сообщение:<br />
<textarea name="msg"><?=$area?></textarea><br />
<input value="Отправить" type="submit"/>
</form>
<?php
}
if ($admin)
{
?>
<div class="fmenu">
<a href="?act=clean">Очистить гостевую</a>
</div>
<?php
}
unset($cache, $page, $post, $data, $i);
echo '<a href="/"><div class="menu_razd">Главная</div></a>';
include H.'engine/includes/foot.php';