View file pages/guestbook.php

File size: 6.31Kb
<?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&amp;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&amp;id='.$post['id'].'&amp;sid='.mt_rand(99,999).'#message">Ответить</a>';

        if ($moder)
            echo '<a style="float:right" href="?id='.$post['post_id'].'&amp;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';