Файл: pages/friendssite.php
Строк: 238
<?php
define('_IN_JOHNCMS', 1);
$textl = 'Сайты-друзья';
$headmod = 'friendssite';
require_once ("../incfiles/core.php");
require_once ("../incfiles/head.php");
$maxsite = 100; //максимум сайтов
$adddate = 3; //число дней после реги для добавления сайта
$userssite = 3; //число разрешенных сайтов ждля одного юзера
switch ($act) {
case 'delete':
// Удаление сайта
$req = mysql_query("SELECT * FROM `friendssite` WHERE id='$id' LIMIT 1");
if ($rights >= 6 && mysql_num_rows($req)) {
if (isset($_GET['yes'])) {
mysql_query("DELETE FROM `friendssite` WHERE `id`='$id' LIMIT 1");
header('location: ' . preg_replace('/(page|start)=[0-9]+/', '', $_SESSION['prd']));
exit;
}
else {
$_SESSION['prd'] = htmlspecialchars(getenv("HTTP_REFERER"));
echo '<div class="rmenu"><p>Вы уверены в удалении сайта?<br/><a href="friendssite.php?act=delete&id=' . $id . '&yes">Да</a> | <a href="' . htmlspecialchars(getenv("HTTP_REFERER")) . '">Нет</a></p></div>';
}
}
break;
case 'edit':
// Редактирование сайта
$req = mysql_query("SELECT * FROM `friendssite` WHERE id='$id' LIMIT 1");
if ($rights >= 6 && mysql_num_rows($req)) {
if (isset($_POST['submit'])) {
$adres = isset($_POST['adres']) ? parse_url(trim($_POST['adres'])) : array();
$adres = mb_substr($adres['host'], 0, 25);
$name = isset($_POST['name']) ? mb_substr(trim($_POST['name']), 0, 50) : '';
$opis = isset($_POST['opis']) ? mb_substr(trim($_POST['opis']), 0, 200) : '';
$count = isset($_POST['count']) ? abs(intval($_POST['count'])) : 0;
$error = array();
if (empty($adres) || empty($name) || empty($opis))
$error[] = 'Не заполненно поле';
else if (preg_match("/[^da-zA-Z.-/?:_]+/", $adres))
$error[] = 'Недопустимые символы в адресе сайта!';
if($error) {
echo functions::display_error($error, '<a href="friendssite.php?act=edit&id=' . $id . '">Повторить</a>');
require_once ("../incfiles/end.php");
exit;
}
mysql_query("UPDATE `friendssite` SET `name`='" . mysql_real_escape_string($name) . "', `opis`='" . mysql_real_escape_string($opis) . "', `site`='http://" . mysql_real_escape_string($adres) . "', `count`='$count' WHERE `id`='$id' LIMIT 1");
header('location: ' . preg_replace('/(page|start)=[0-9]+/', '', $_SESSION['prd']));
exit;
}
else {
$_SESSION['prd'] = htmlspecialchars(getenv("HTTP_REFERER"));
$res = mysql_fetch_array($req);
echo '<div class="phdr"><b>Изменение сайта</b></div>' .
'<div class="menu"><form action="friendssite.php?act=edit&id=' . $id . '" method="post">' .
'Адрес - max. 25:<br/><input type="text" name="adres" maxlength="25" value="' . functions::checkout($res['site']) . '"/><br/> ' .
'Название - max. 50:<br/><input type="text" name="name" maxlength="50" value="' . functions::checkout($res['name']) . '"/><br/>' .
'Описание - max. 200:<br/><textarea cols="20" rows="2" name="opis">' . htmlentities($res['opis'], ENT_QUOTES, 'UTF-8') . '</textarea><br/>' .
'Просмотров:<br/><input type="text" name="count" maxlength="50" value="' . $res['count'] . '"/><br />' .
'<input name="submit" type="submit" title="Нажмите для добавления сайта" value="Сохранить"/></form>' .
'</div><div class="phdr"><a href="' . $_SESSION['prd'] . '">Назад</a></div>';
}
}
break;
case 'redirect':
// Редирект
$req = mysql_query("SELECT `site` FROM `friendssite` WHERE `id`='$id' AND `type`='1'");
if(mysql_num_rows($req)) {
$res = mysql_fetch_assoc($req);
if (!$_SESSION['fr_site_' . $id]) {
mysql_query("UPDATE `friendssite` SET `count` = (`count`+1) WHERE `id` = '$id' LIMIT 1");
$_SESSION['fr_site_' . $id] = true;
}
header('location:' . $res['site']);
exit;
}
break;
case 'mass_del':
// Массовое удаление сайтов
if ($rights >= 6) {
if (isset($_GET['yes'])) {
foreach ($_SESSION['dc'] as $delid) {
mysql_query("DELETE FROM `friendssite` WHERE `id`='" . intval($delid) . "';");
}
header('location: ' . preg_replace('/(page|start)=[0-9]+/', '', $_SESSION['prd']));
exit;
}
else {
if (empty($_POST['delch'])) {
echo functions::display_error('Вы ничего не выбрали для удаления', '<a href="' . htmlspecialchars(getenv("HTTP_REFERER")) . '">Назад</a>');
require_once ("../incfiles/end.php");
exit;
}
foreach ($_POST['delch'] as $v) {
$dc[] = intval($v);
}
$_SESSION['dc'] = $dc;
$_SESSION['prd'] = htmlspecialchars(getenv("HTTP_REFERER"));
echo '<div class="rmenu"><p>Вы уверены в удалении сайтов?<br/><a href="?act=mass_del&yes">Да</a> | <a href="' . htmlspecialchars(getenv("HTTP_REFERER")) . '">Нет</a></p></div>';
}
}
break;
case 'mod_site':
// Сайты на модерации
if ($rights >= 6) {
if (isset($_GET['pr'])) {
mysql_query("UPDATE `friendssite` SET `type` = '1' WHERE `id` = '$id' LIMIT 1");
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM `friendssite` WHERE `type`='1'"), 0);
if ($total > $maxsite)
mysql_query("DELETE FROM `friendssite` where `type`='1' ORDER BY `vr` ASC LIMIT 1");
header("location: friendssite.php?act=mod_site");
exit;
} elseif (isset($_GET['vs'])) {
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM `friendssite` WHERE `type`='1'"), 0);
if ($total > $maxsite) {
$total_mod = mysql_result(mysql_query("SELECT COUNT(*) FROM `friendssite` WHERE `type`='2'"), 0);
mysql_query("DELETE FROM `friendssite` where `type`='1' ORDER BY `vr` ASC LIMIT $total_mod");
}
mysql_query("UPDATE `friendssite` SET `type` = '1' WHERE `type` = '2'");
header("location: friendssite.php?act=mod_site");
exit;
}
else{
echo '<div class="phdr"><b><a href="friendssite.php">Сайты-друзья</a></b> | Проверка сайтов</div>';
$req = mysql_query("SELECT `friendssite`.*, `users`.`name` AS `nick` FROM `friendssite` LEFT JOIN `users` ON `friendssite`.`iduser` = `users`.`id` WHERE `friendssite`.`type`='2'");
if(mysql_num_rows($req)) {
echo '<form action="friendssite.php?act=mass_del" method="post">';
while ($res = mysql_fetch_assoc($req)) {
echo $i % 2 ? '<div class="list2">' : '<div class="list1">';
echo '<a href="friendssite.php?act=redirect&id=' . $res['id'] . '"><b>' . functions::checkout($res['name']) . '</b></a><br />' . functions::checkout($res['opis'], 1, 1);
echo '<br/><small>Добавил <a href="../users/profile.php?user=' . $res['iduser'] . '">' . $res['nick'] . '</a>, ' . functions::display_date($res['vr']) . '</small>';
echo '<div class="sub"><input type="checkbox" name="delch[]" value="' . $res["id"] . '"/> <a href="friendssite.php?act=delete&id=' . $res["id"] . '"><span class="red">Удалить</span></a> | <a href="friendssite.php?act=mod_site&id=' . $res["id"] . '&pr">Принять</a> | <a href="friendssite.php?act=edit&id=' . $res["id"] . '">Изменить</a></div></div>';
++$i;
}
echo '<div class="rmenu"><input type="submit" value="Удалить отмеченные"/></div></form>' .
'<div class="gmenu"><a href="friendssite.php?act=mod_site&vs">Принять все сайты</a></div>';
}
else
echo '<div class="menu"><p>Список пуст</p></div>';
echo '<div class="phdr"><a href="friendssite.php">Назад</a></div>';
}
}
break;
case 'add_site':
// Добавление сайта
if ($user_id) {
$total_site = mysql_result(mysql_query("SELECT COUNT(*) FROM `friendssite` WHERE `iduser`='$user_id'"), 0);
$error = array();
if ($total_site >= $userssite && $rights < 6)
$error[] = 'Одному пользователю разрешено добавлять только ' . $userssite . ' сайта!';
if ((time() - $datauser['datereg']) < ($adddate * 86400) && $rights < 6)
$error[] = 'Cайты могут добавлять только пользователи, которые провели на сайте не менее ' . $adddate . ' дней!';
$flood = functions::antiflood();
if ($flood)
$error[] = 'Антифлуд! Пожалуйста, подождите ' . $flood . ' сек.';
if($error) {
echo display_error($error, '<a href="friendssite.php">Назад</a>');
require_once ("../incfiles/end.php");
exit;
}
if (isset($_POST['submit'])) {
$adres = isset($_POST['adres']) ? parse_url(trim($_POST['adres'])) : array();
$adres = mb_substr($adres['host'], 0, 25);
$name = isset($_POST['name']) ? mb_substr(trim($_POST['name']), 0, 50) : '';
$opis = isset($_POST['opis']) ? mb_substr(trim($_POST['opis']), 0, 200) : '';
$type = $rights >= 6 ? 2 : 2;
if (empty($adres) || empty($name) || empty($opis))
$error[] = 'Не заполненно поле';
else if (preg_match("/[^da-zA-Z.-/?:_]+/", $adres))
$error[] = 'Недопустимые символы в адресе сайта!';
if(!$error) {
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM `friendssite` WHERE `name`='" . mysql_real_escape_string($name) . "' OR `site`='http://" . mysql_real_escape_string($adres) . "'"), 0);
if ($total >= 1)
$error[] = 'Такой сайт уже есть в базе!';
}
if($error) {
echo functions::display_error($error, '<a href="friendssite.php?act=add_site">Повторить</a>');
require_once ("../incfiles/end.php");
exit;
}
mysql_query("INSERT INTO `friendssite` SET `vr`='" . time() . "', `iduser`='$user_id', `type`='$type', `name`='" . mysql_real_escape_string($name) . "', `opis`='" . mysql_real_escape_string($opis) . "', `site`='http://" . mysql_real_escape_string($adres) . "'");
mysql_query("UPDATE `users` SET `lastpost` = '" . time() . "' WHERE `id` = '$user_id'");
echo '<div class="gmenu">Ваш сайт добавлен' . ($rights >= 6 ? '' : ' и после проверки появится в списке наших друзей') . '<br/><a href="friendssite.php">К списку сайтов</a></div>';
}
else {
echo '<div class="phdr"><b><a href="friendssite.php">Сайты-друзья</a></b> | Добавление сайта</div>' .
'<div class="bmenu">Разрешены только прямые ссылки на сайты, все остальное будет обрезанно</div><div class="menu">' .
'<form action="friendssite.php?act=add_site" method="post">' .
'Адрес - max. 25:<br/><input type="text" name="adres" maxlength="25" value="http://"/><br/> ' .
'Название - max. 50:<br/><input type="text" name="name" maxlength="50"/><br/>' .
'Описание - max. 200:<br/><textarea cols="20" rows="2" name="opis"></textarea><br/>' .
'<input name="submit" type="submit" title="Нажмите для добавления сайта" value="Добавить сайт"/></form>' .
'</div><div class="phdr"><a href="friendssite.php">Назад</a></div>';
}
}
else {
header('location: ../login.php');
exit;
}
break;
default:
// Список сайтов
echo '<div class="phdr"><b>Сайты-друзья</b></div>';
$total_site = mysql_result(mysql_query("SELECT COUNT(*) FROM `friendssite` WHERE `iduser`='$user_id'"), 0);
if ($user_id && ($total_site < $userssite || $rights >= 6) && ((time() - $datauser['datereg']) > ($adddate * 86400) || $rights >= 6))
echo '<div class="gmenu"><a href="friendssite.php?act=add_site">Добавить сайт</a></div>';
if ($rights >= 6) {
$total_mod = mysql_result(mysql_query("SELECT COUNT(*) FROM `friendssite` WHERE `type`='2'"), 0);
if($total_mod)
echo '<div class="rmenu"><a href="friendssite.php?act=mod_site">Сайты на модерации</a> ' . $total_mod . '</div>';
}
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM `friendssite` WHERE `type`='1'"), 0);
if($total) {
$req = mysql_query("SELECT `friendssite`.*, `users`.`name` AS `nick` FROM `friendssite` LEFT JOIN `users` ON `friendssite`.`iduser` = `users`.`id` WHERE `friendssite`.`type`='1' ORDER BY `friendssite`.`count` DESC LIMIT $start, $kmess");
if ($rights >= 6)
echo '<form action="friendssite.php?act=mass_del" method="post">';
while ($res = mysql_fetch_assoc($req)) {
echo $i % 2 ? '<div class="list2">' : '<div class="list1">';
echo '<a href="friendssite.php?act=redirect&id=' . $res['id'] . '"><b>' . functions::checkout($res['name']) . '</b></a> (' . $res['count'] . ')<br />' . $res['opis'];
echo '<br/><small>Добавил <a href="../users/profile.php?user=' . $res['iduser'] . '">' . $res['nick'] . '</a>, ' . functions::display_date($res['vr']) . '</small>';
if ($rights >= 6)
echo '<div class="sub"><input type="checkbox" name="delch[]" value="' . $res["id"] . '"/> <a href="friendssite.php?act=delete&id=' . $res["id"] . '"><span class="red">Удалить</span></a> | <a href="friendssite.php?act=edit&id=' . $res["id"] . '">Изменить</a></div>';
echo '</div>';
++$i;
}
if ($rights >= 6)
echo '<div class="rmenu"><input type="submit" value="Удалить отмеченные"/></div></form>';
}
else
echo '<div class="menu"><p>Список пуст</p></div>';
echo '<div class="phdr">Всего сайтов: ' . $total . '</div>';
if ($total > $kmess) {
echo '<p>' . functions::display_pagination('friendssite.php?', $start, $total, $kmess) . '</p>';
echo '<p><form action="friendssite.php" method="get"><input type="text" name="page" size="2"/><input type="submit" value="К странице >>"/></form></p>';
}
}
require_once ("../incfiles/end.php");
?>