Файл: CMS/core/modules/users_lenta.php
Строк: 197
<?php
if (!defined('CMS')) { die('Access Denied!'); }
# Вспомогательная функция bb_code
function helper_bb($str = '') {
global $config;
$str = preg_replace('#[blog=(.*?)](.*?)[/blog]#si', '<a href="' . $config['site_url'] . '/blog/' . gen_uri('post', '1', RND) . '">2</a>', $str);
$str = preg_replace('#[gallery=(.*?)](.*?)[/gallery]#si', '<a href="' . $config['site_url'] . '/gallery/' . gen_uri('photo', '1', RND) . '">2</a>', $str);
$str = preg_replace('#[forum=(.*?)](.*?)[/forum]#si', '<a href="' . $config['site_url'] . '/forum/' . gen_uri('topic', '1', RND) . '">2</a>', $str);
$str = preg_replace('#[files=(.*?)](.*?)[/files]#si', '<a href="' . gen_uri('file', '1', RND) . '">2</a>', $str);
return $str;
}
if ($is_logged) {
$error = '';
if (!empty($mod) && $mod == 'add_authors') {
$user = !empty($_REQUEST['user']) ? check($_REQUEST['user']) : '';
if (!empty($_POST['submit'])) {
$user = !empty($_REQUEST['user']) ? check($_REQUEST['user']) : '';
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if ($user != $log || is_admin(array(101))) {
$is_user = (int) $db->selectCell("SELECT `users_id` FROM ?_users WHERE `users_login` = ? LIMIT 1;", $user);
if ($is_user > 0) {
$addstr = (int) $db->selectCell("SELECT `sub_id` FROM ?_users_lenta_subscribe
WHERE `sub_subscriber` = ? AND `sub_publisher` = ? LIMIT 1;", $log, $user);
if ($addstr < 1) {
if ($uset['users_timeaddlist'] < SITE_TIME) {
$db->query("INSERT INTO ?_users_lenta_subscribe (`sub_subscriber`, `sub_publisher`, `sub_time`)
VALUES (?, ?, ?);", $log, $user, SITE_TIME);
$db->query("UPDATE ?_users SET `users_timeaddlist` = ? WHERE `users_login` = ?", SITE_TIME + 300, $log);
$is_ignor = (int) $db->selectCell("SELECT `ignore_id` FROM ?_users_ignor_list
WHERE `ignore_user` = ? AND `ignore_name` = ? LIMIT 1;", $user, $log);
if ($is_ignor < 1) {
$db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1) WHERE `users_login` = ?", $user);
$priv = '<img src="' . $config['site_url'] . '/images/icons/qlt_lenta.png" class="icon" alt="" /> ';
$priv .= 'Пользователь [b]' . nickname($log) . '[/b] добавил вас в свою ленту событий!';
$db->query("INSERT INTO ?_users_inbox (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`)
VALUES (?, ?, ?, ?);", $user, $log, $priv, SITE_TIME);
}
$inSes->addMessage('Автор успешно добавлен!', 'ok');
gen_red('authors', '', RND);
}
else $inSes->addMessage('Ошибка! Нельзя слишком часто добавлять авторов в ленту, подождите 5 минут!');
}
else $inSes->addMessage('Ошибка! Вы уже подписаны на ленту событий данного пользователя!');
}
else $inSes->addMessage('Ошибка! Данного пользователя не существует!');
}
else $inSes->addMessage('Ошибка! Запрещено добавлять свой логин!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
show_header('Добавление автора в Ленту');
echo '<div class="b">' . blink('[!]');
echo ' После добавления автора в Ленту, Вы будете получать уведомления обо всех его новых темах, добавляемых файлах, и.т.д.';
echo 'Добавляйте в Ленту только тех авторов, которые Вам действительно интересны.';
echo '</div>';
echo '<div class="b form"><form action="?rnd=' . $_SESSION['token'] . '" method="post">';
echo 'Логин юзера:<br /><input type="text" name="user" value="' . request('user') . '" />';
echo '<input type="submit" class="btns" name="submit" value="Добавить" /></form></div>';
echo '<div class="b">' . icon('return.png');
echo '<a href="' . gen_uri('lenta', '', RND) . '">Лента событий</a> | ';
echo '<a href="' . gen_uri('authors', '', RND) . '">Список авторов</a></div>';
}
else if (!empty($mod) && $mod == 'authors') {
if (!empty($_GET['del'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if ($id > 0) {
$db->query("DELETE FROM ?_users_lenta_subscribe WHERE `sub_subscriber` = ? AND `sub_id` = ?;", $log, $id);
$db->query("OPTIMIZE TABLE ?_users_lenta, ?_users_lenta_subscribe");
$inSes->addMessage('Выбранные пользователи успешно удалены!', 'ok');
}
else $inSes->addMessage('Ошибка! Не выбран пользователь для удаления!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
gen_red('authors', '', RND);
}
show_header('Список авторов');
$onpage = !empty($config['news_num']) ? (int) $config['news_num'] : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = $db->selectPage($total, "SELECT `s`.*, `v`.`visit_nowtime`, `u`.`users_gender`
FROM ?_users_lenta_subscribe `s`
LEFT JOIN ?_users_visit `v`
ON `s`.`sub_publisher` = `v`.`visit_user`
LEFT JOIN ?_users `u`
ON `s`.`sub_publisher` = `u`.`users_login`
WHERE `s`.`sub_subscriber` = ?
ORDER BY `s`.`sub_time` DESC LIMIT ?d, ?d", $log, $from, $onpage);
if (!empty($rows) && $total > 0) {
$i = $from + 1;
foreach($rows as $row) {
echo '<div class="b">';
echo $i++ . '. ' . user_visit_icon($row['sub_publisher'], $row['users_gender'], $row['visit_nowtime']) . ' ';
echo '<b>' . users_anketa($row['sub_publisher']) . '</b> ';
echo '[<a href="' . gen_uri('authors', $row['sub_id'], 'del=1&rnd=' . $_SESSION['token']) . '">Удалить</a>]';
echo '<div class="right"> (' . get_date($row['sub_time']) . ')</div><br />';
echo '</div>';
}
echo show_pages('authors', RND, 'p');
}
else {
show_error('Ваша лента пока пуста.');
}
echo '<div class="b">' . icon('return.png');
echo '<a href="' . gen_uri('lenta', '', RND) . '">Лента событий</a> | ';
echo '<a href="' . gen_uri('add_authors', '', RND) . '">Добавить автора</a></div>';
}
else {
if (!empty($_POST['del'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$del = intar($_POST['del']);
if (!empty($del)) {
$del = is_array($del) ? $del : array($del);
$del = implode(',', $del);
$db->query("DELETE FROM ?_users_lenta WHERE `lenta_subscriber` = ? AND `lenta_id` IN (" . $del . ");", $log);
$db->query("OPTIMIZE TABLE ?_users_lenta;");
$inSes->addMessage('Выбранные сообщения успешно удалены!', 'ok');
}
else $inSes->addMessage('Ошибка удаления! Отсутствуют выбранные сообщения!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
gen_red('lenta', '', RND);
}
show_header('Лента событий');
$onpage = !empty($config['ignor_num']) ? num($config['ignor_num']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$rows = $db->selectPage($total, "SELECT `l`.*, `v`.`visit_nowtime`, `u`.`users_gender`
FROM ?_users_lenta `l`
LEFT JOIN ?_users_visit `v`
ON `l`.`lenta_publisher` = `v`.`visit_user`
LEFT JOIN ?_users `u`
ON `l`.`lenta_publisher` = `u`.`users_login`
WHERE `l`.`lenta_subscriber` = ?
ORDER BY `l`.`lenta_time` DESC LIMIT ?d, ?d", $log, $from, $onpage);
if (!empty($rows) && $total > 0) {
echo '<form action="?rnd=' . $_SESSION['token'] . '" method="post" name="lenta">';
$i = $from + 1;
foreach($rows as $row) {
echo '<div class="b">';
echo $i++ . '. ' . user_visit_icon($row['lenta_publisher'], $row['users_gender'], $row['visit_nowtime']) . ' ';
echo '<b>' . users_anketa($row['lenta_publisher']) . '</b> ';
echo '<div class="right"> (' . get_date($row['lenta_time']) . ')</div><br />';
echo nl2br(bb_code($row['lenta_message'])) . '<br />';
echo '<input type="checkbox" name="del[]" value="' . $row['lenta_id'] . '" /> ';
echo '</div>';
}
echo '<div class="b">';
echo '<input type="checkbox" name="master_box" title="Отметить всё" onclick="javascript:ckeck_uncheck_all()">';
echo '<input type="submit" class="btns" value="Удалить выбранное" /></form></div>';
echo show_pages('lenta', RND, 'p');
echo <<<JSCRIPT
<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
var frm = document.lenta;
if(frm.master_box.checked == true){ frm.master_box.checked = false; }
else{ frm.master_box.checked = true; }
for (var i=0;i<frm.elements.length;i++) {
var elmnt = frm.elements[i];
if (elmnt.type=='checkbox') {
if(frm.master_box.checked == true){ elmnt.checked=false; }
else{ elmnt.checked=true; }
}
}
}
-->
</script>
JSCRIPT;
if ($total > $config['max_lenta_list']) { // Авто чистка ленты
$limit = ($total - $config['max_lenta_list']);
$dels = $db->select("SELECT * FROM ?_users_lenta
WHERE `lenta_subscriber` = ?
ORDER BY `lenta_time` ASC LIMIT ?d, ?d", $log, 0, $limit);
if (!empty($dels)) {
foreach($dels as $del) {
$db->query("DELETE FROM ?_users_lenta WHERE `lenta_subscriber` = ? AND `lenta_id` = ?", $log, $del['lenta_id']);
}
$db->query("OPTIMIZE TABLE ?_users_lenta;");
}
}
}
else {
show_error('Ваша лента пока пуста.');
?>
<div class="b">
С помощью ленты вы можете отслеживать всю активность ваших друзей или других обитателей <?=$config['site_name']?>.<br />
Если вас заинтересовал какой-то человек, зайдите на его страницу и нажмите <span style="color:blue">Добавить в ленту</span>.<br />
</div>
<?php
}
echo '<div class="b">' . icon('mail.png');
echo '<a href="' . gen_uri('authors', '', RND) . '">Список авторов</a><br />';
echo icon('add.png') . '<a href="' . gen_uri('add_authors', '', RND) . '">Добавить автора</a></div>';
}
}
else {
show_header('Лента событий');
show_login('Вы не авторизованы, чтобы изменять свои данные, необходимо');
}
?>