Файл: CMS/core/modules/users_friends.php
Строк: 428
<?php
if (!defined('CMS')) { die('Access Denied!'); }
$actions = array('friends' => 'Мои друзья', 'friends_requests' => 'Заявки', 'friends_proposals' => 'Предложения');
$types = array(
1 => array('Друг', 'Подруга'),
2 => array('Лучший друг', 'Лучшая подруга'),
3 => array('Одноклассник', 'Одноклассница'),
4 => array('Однокурсник', 'Однокурсница'),
5 => array('Коллега', 'Коллега'),
6 => array('Брат', 'Сестра'),
7 => array('Отец', 'Мать'),
8 => array('Супруг', 'Супруга'),
9 => array('Родственник', 'Родственница'),
);
/* Действия пользователя */
if ($is_logged && $uz == $log) {
$error = '';
if (!empty($_REQUEST['add_ok'])) {
$add_ok = check($_REQUEST['add_ok']);
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if ($add_ok <> $log) {
$row = $db->selectRow("SELECT * FROM ?_users WHERE `users_login` = ? LIMIT 1;", $add_ok);
if (!empty($row)) {
$frend_exst = $db->selectCell("SELECT `id` FROM ?_friends WHERE `users_login` = ? AND `friends_login` = ? LIMIT 1;", $log, $add_ok);
if (empty($frend_exst)) {
$ignor_exst = $db->selectCell("SELECT `ignore_id` FROM ?_users_ignor_list
WHERE `ignore_user` = ? AND `ignore_name` = ? LIMIT 1;", $add_ok, $log);
if (empty($ignor_exst)) {
$data = $db->selectRow("SELECT * FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $log, $add_ok);
if (!empty($data)) {
$db->query("INSERT INTO ?_friends (`users_login`, `friends_login`, `time`, `level`)
VALUES (?, ?, ?, ?);", $add_ok, $log, SITE_TIME, $data['level']);
$db->query("INSERT INTO ?_friends (`users_login`, `friends_login`, `time`, `level`)
VALUES (?, ?, ?, ?);", $log, $add_ok, SITE_TIME, $data['level']);
$db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1) WHERE `users_login` = ?", $add_ok);
$priv = 'Пользователь [b]' . nickname($log) . '[/b] подтвердил предложение дружбы с вами!';
$db->query("INSERT INTO ?_users_inbox (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`)
VALUES (?, ?, ?, ?);", $add_ok, $log, $priv, SITE_TIME);
$db->query("DELETE FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $add_ok, $log);
$db->query("DELETE FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $log, $add_ok);
$db->query("OPTIMIZE TABLE ?_friends, ?_friends_new");
$inSes->addMessage('Пользователь успешно добавлен в список ваших друзей!', 'ok');
gen_red('friends');
}
else $error = 'Ошибка! Заявка необнаружена!';
}
else $error = 'Ошибка! Данный пользователь занес вас в свой игнор-лист!';
}
else $error = 'Ошибка! Данный пользователь уже есть в списке ваших друзей!';
}
else $error = 'Ошибка! Пользователя с данным логином не существует!';
}
else $error = 'Ошибка! Запрещено добавлять самого себя!';
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
if (!empty($_REQUEST['add_no'])) {
$add_no = check($_REQUEST['add_no']);
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$row = $db->selectRow("SELECT * FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $log, $add_no);
if (!empty($row)) {
$db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1) WHERE `users_login` = ?", $add_no);
$priv = 'Пользователь [b]' . nickname($log) . '[/b] отклонил предложение дружбы с вами!';
$db->query("INSERT INTO ?_users_inbox (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`)
VALUES (?, ?, ?, ?);", $add_no, $log, $priv, SITE_TIME);
$db->query("DELETE FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $add_no, $log);
$db->query("DELETE FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $log, $add_no);
$db->query("OPTIMIZE TABLE ?_friends, ?_friends_new");
$inSes->addMessage('В предложении дружбы успешно отказано!', 'ok');
gen_red('friends');
}
else $error = 'Ошибка! Заявка необнаружена!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
}
if (!empty($_POST['del'])) {
$del = intar($_POST['del']);
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
if ( @count($del) > 0) {
$del = implode(',', $del);
$rows = $db->select("SELECT * FROM ?_friends WHERE `id` IN (" . $del . ") AND `users_login` = ?;", $log);
if (!empty($rows)) {
$priv = 'Пользователь [b]' . nickname($log) . '[/b] удалил вас из списка своих друзей!';
foreach($rows as $row) {
$db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1) WHERE `users_login` = ?", $row['friends_login']);
$db->query("INSERT INTO ?_users_inbox (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`)
VALUES (?, ?, ?, ?);", $row['friends_login'], $log, $priv, SITE_TIME);
$db->query("DELETE FROM ?_friends WHERE `users_login` = ? AND `friends_login` = ?;", $row['friends_login'], $log);
}
$db->query("DELETE FROM ?_friends WHERE `id` IN (" . $del . ") AND `users_login` = ?;", $log);
}
$db->query("OPTIMIZE TABLE ?_friends, ?_friends_new");
$inSes->addMessage('Выбранные пользователи успешно удалены из списка ваших друзей!', 'ok');
gen_red('friends');
}
else $error = 'Ошибка! Не выбраны пользователи для удаления!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
}
if (!empty($_GET['del_friends'])) {
$user = check($_GET['del_friends']);
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$row = $db->selectRow("SELECT * FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $user, $log);
if (!empty($row)) {
$db->query("DELETE FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $user, $log);
$inSes->addMessage('Предложение успешно удалено!', 'ok');
gen_red('friends_proposals', '', RND);
}
else $error = 'Ошибка! Предложение необнаружено!';
}
else $error = 'Ошибка! Неверный идентификатор сессии, повторите действие!';
}
if (!empty($error)) $inSes->addMessage($error, 'error');
}
$onpage = !empty($config['user_list']) ? num($config['user_list']) : 10;
if ($page > 1) $from = ($page - 1) * $onpage; else $from = 0;
$counts = $db->selectRow("SELECT COUNT(`id`) AS `friends`,
(SELECT COUNT(`id`) FROM ?_friends_new WHERE `user_login` = ?) AS `friends_requests`,
(SELECT COUNT(`id`) FROM ?_friends_new WHERE `frend_login` = ?) AS `friends_proposals`
FROM ?_friends WHERE `users_login` = ? LIMIT 1;", $uz, $uz, $uz);
if ($is_logged && $uz == $log) {
$show = array();
foreach($actions as $key => $val) {
$cnt = !empty($counts[$key]) ? num($counts[$key]) : 0;
if (!empty($mod) && $mod == $key) $show[$key] = '<b>' . $val . ' (' . $cnt . ')</b>';
else $show[] = $show[$key] = '<a href="' . gen_uri($key) . '">' . $val . '</a> (' . $cnt . ')';
}
$users_menu = '<div class="b">' . implode(' / ', array_unique($show)) . '</div>';
}
else $users_menu = '';
switch($mod):
case 'add_friends':
if ($is_logged) {
if (!empty($_REQUEST['user'])) {
$user = check($_REQUEST['user']);
if ($user <> $log) {
$row = $db->selectRow("SELECT * FROM ?_users WHERE `users_login` = ? LIMIT 1;", $user);
if (!empty($row)) {
$frend_exst = (int) $db->selectCell("SELECT `id` FROM ?_friends WHERE `users_login` = ? AND `friends_login` = ? LIMIT 1;", $log, $user);
if ($frend_exst < 1) {
$new_frend_exst = (int) $db->selectCell("SELECT `id` FROM ?_friends_new WHERE `user_login` = ? AND `frend_login` = ? LIMIT 1;", $user, $log);
if ($new_frend_exst < 1) {
$ignor_exst = (int) $db->selectCell("SELECT `ignore_id` FROM ?_users_ignor_list
WHERE `ignore_user` = ? AND `ignore_name` = ? LIMIT 1;", $user, $log);
if ($ignor_exst < 1) {
$sex = ($row['users_gender'] == 'М' || $row['users_gender'] == 1) ? 0 : 1;
if (!empty($_POST['submit'])) {
if (!empty($_GET['rnd']) && $_GET['rnd'] == $_SESSION['token']) {
$msg = !empty($_POST['msg']) ? $_POST['msg'] : '';
$type = !empty($_POST['type']) ? num($_POST['type']) : 1;
if ( cms_strlen($msg) < 1000) {
if (array_key_exists($type,$types)) {
$db->query("INSERT INTO ?_friends_new (`user_login`, `frend_login`, `time`, `message`,`level`) VALUES (?, ?, ?, ?, ?);", $user, $log, SITE_TIME, $msg, $type);
$img = ($sex == 1) ? 'qlt_woman.png' : 'qlt_man.png';
$priv = '<img src="' . $config['site_url'] . '/images/icons/' . $img . '" alt="" /> ';
$priv .= 'Пользователь [b]' . nickname($log) . '[/b] предлаггает Вам дружбу!<br />';
$priv .= !empty($msg) ? 'Комментарий: ' . $msg . '<br />': '';
$priv .= '[add_ok=' . $log . ']Принять[/add_ok] / ';
$priv .= '[add_no=' . $log . ']Отклонить[/add_no]';
$db->query("UPDATE ?_users SET `users_newprivat` = (`users_newprivat` + 1) WHERE `users_login` = ?", $user);
$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('friends', '', RND);
}
else $inSes->addMessage('', 'error');
}
else $inSes->addMessage('Ошибка! Слишком <u>длиннннный</u> комментарий!');
}
else $inSes->addMessage('Ошибка! Неверный идентификатор сессии, повторите действие!');
}
show_header('Предложение дружбы');
echo $users_menu . '<div class="b"><span class="blink">*</span> ';
echo 'Пользователь ' . users_anketa($user) . ' должен будет потвердить, что вы с ним друзья!<br /></div>';
$form = new cmsForm('?rnd=' . $_SESSION['token'], 'post');
$show = array();
foreach($types as $key => $val) $show[$key] = $val[$sex];
$form->addRadio('', 'type', request('type',1), $show);
$form->addCode('<br />');
$form->addTextarea('Комментарий:', 'msg', request('msg'));
$form->addHidden('user', $user);
echo $form->Submit('Отправить заявку', 'submit');
unset($form);
}
else {
$inSes->addMessage('Ошибка! Данный пользователь занес вас в свой игнор-лист!');
gen_red('friends', '', RND);
}
}
else {
$inSes->addMessage('Ошибка! Заявка уже была отправлена данному пользователю!');
gen_red('friends', '', RND);
}
}
else {
$inSes->addMessage('Ошибка! Данный пользователь уже есть в списке ваших друзей!');
gen_red('friends', '', RND);
}
}
else {
$inSes->addMessage('Ошибка! Пользователя с данным логином не существует!');
gen_red('friends', '', RND);
}
}
else {
$inSes->addMessage('Ошибка! Запрещено добавлять самого себя!');
gen_red('friends', '', RND);
}
}
else {
show_header('Предложение дружбы');
show_error('Ошибка! Вы не ввели имя друга!');
}
}
else {
show_header('Предложение дружбы');
show_login('Вы не авторизованы, для добавления друзей, необходимо');
}
echo '<div class="b">' . icon('return.png');
echo ' <a href="' . gen_uri('friends') . '">Мои друзья</a><br /></div>';
break;
case 'friends_requests':
if ($is_logged) {
show_header('Мои заявки');
echo $users_menu;
$rows = $db->selectPage( $total, "SELECT `f`.*, `u`.`users_gender`
FROM ?_friends_new `f` LEFT JOIN ?_users `u`
ON `f`.`frend_login` = `u`.`users_login`
WHERE `f`.`user_login` = ? ORDER BY `f`.`time` DESC
LIMIT ?d, ?d", $log, $from, $onpage);
if (!empty($rows) && $total > 0) {
$ok = '<img src="/images/icons/add.png" class="icon" alt"" /> ';
$no = '<img src="/images/icons/delete.png" class="icon" alt"" /> ';
foreach($rows as $row) {
$sex = ($row['users_gender'] == 'М' || $row['users_gender'] == 1) ? 0 : 1;
$who = $types[$row['level']][$sex];
echo '<div class="b">';
echo user_visit_icon($row['frend_login'], $row['users_gender']);
echo ' <b>' . users_anketa($row['frend_login']) . '</b> <small>(' . $who . '</small> ';
//echo user_online($row['frend_login']) . ' ';
//echo user_title($row['frend_login']) . '<br /> ';
echo ' <small>/ ' . get_date($row['time']) . ')</small><br />';
if (!empty($row['message'])) {
echo '<i><small>Комментарий заявки:</small></i><br />' . bb_code($row['message']) . '<br/>';
}
echo $ok . ' <a href="?add_ok=' . $row['frend_login'] . '&rnd=' . $_SESSION['token'] . '">Принять</a> ';
echo $no . ' <a href="?add_no=' . $row['frend_login'] . '&rnd=' . $_SESSION['token'] . '">Отклонить</a>';
echo '</div>';
}
echo show_pages('friends_requests', '', 'p');
}
else {
show_error('Список заявок пуст!');
}
}
else {
show_header('Друзья пользователя ' . nickname($uz));
show_login('Вы не авторизованы, для добавления друзей, необходимо');
}
break;
case 'friends_proposals':
if ($is_logged) {
show_header('Мои предложения');
echo $users_menu;
$rows = $db->selectPage( $total, "SELECT `f`.*, `u`.`users_gender`
FROM ?_friends_new `f` LEFT JOIN ?_users `u`
ON `f`.`user_login` = `u`.`users_login`
WHERE `f`.`frend_login` = ? ORDER BY `f`.`time` DESC
LIMIT ?d, ?d", $log, $from, $onpage);
if (!empty($rows) && $total > 0) {
foreach($rows as $row) {
$sex = ($row['users_gender'] == 'М' || $row['users_gender'] == 1) ? 0 : 1;
$who = $types[$row['level']][$sex];
echo '<div class="b">';
echo user_visit_icon($row['frend_login'], $row['users_gender']);
echo ' <b>' . users_anketa($row['user_login']) . '</b> <small>(' . $who . ' / ' . get_date($row['time']) . ')</small><br />';
if (!empty($row['message'])) {
echo '<i><small>Ваш комментарий:</small></i><br />' . bb_code($row['message']) . '<br />';
}
echo '<img src="/images/icons/delete.png" class="icon" alt"" /> ';
echo '<a href="?del_friends=' . $row['user_login'] . '&rnd=' . $_SESSION['token'] . '">Отменить предложение</a>';
echo '</div>';
}
echo show_pages('friends_requests', '', 'p');
}
else {
show_error('Список предложений пуст!');
}
}
else {
show_header('Друзья пользователя ' . nickname($uz));
show_login('Вы не авторизованы, для добавления друзей, необходимо');
}
break;
default:
show_header('Друзья пользователя ' . nickname($uz));
echo $users_menu;
if (!empty($id) && srrsy_key_exists($id,$types)) {
}
else $where = '';
$rows = $db->selectPage($total, "SELECT `f`.*, `u`.`users_gender`
FROM ?_friends `f` LEFT JOIN ?_users `u`
ON `f`.`friends_login` = `u`.`users_login`
WHERE `f`.`users_login` = ?
ORDER BY `f`.`time` DESC
LIMIT ?d, ?d", $uz, $from, $onpage);
if (!empty($rows) && $total > 0) {
if ($is_logged && $log == $uz) echo '<form action="?rnd=' . $_SESSION['token'] . '" method="post" name="friends">';
foreach($rows as $row) {
$sex = ($row['users_gender'] == 'М' || $row['users_gender'] == 1) ? 0 : 1;
$who = $types[$row['level']][$sex];
echo '<div class="b">';
echo user_visit_icon($row['friends_login'], $row['users_gender']);
echo ' <b>' . users_anketa($row['friends_login']) . '</b> <small>(' . $who . ')</small> ';
//echo user_online($row['friends_login']) . '<br />';
//echo user_title($row['friends_login']) . '<br />';
echo '<small>Подружились: ' . get_date($row['time']) . '</small><br />';
if ($log == $uz) {
echo '<input type="checkbox" name="del[]" value="' . $row['id'] . '" /> ';
}
echo '<img src="' . IMAGES . 'icons/email.png" class="icon" alt="" /> ';
echo '<a href="' . gen_uri('add_privat', '', 'user=' . $row['friends_login']) . '">Отправить сообщение</a>';
echo '</div>';
}
echo show_pages('friends_requests', '', 'p');
if ($is_logged && $log == $uz) {
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><br /></div>';
}
}
else show_error('Список друзей пуст!');
if ($is_logged && $log == $uz) {
echo '<div class="b form"><form action="' . gen_uri('add_friends', '', 'rnd=' . $_SESSION['token']) . '" method="post">';
echo 'Логин юзера:<br /><input type="text" name="user" value="' . request('user') . '" />';
echo '<input type="submit" class="btns" name="add_friends" value="Добавить" /></form></div>';
echo <<<JSCRIPT
<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
var frm = document.friends;
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; }
}
}
//if(frm.master_box.checked == true){ frm.master_box.checked = false; }
//else{ frm.master_box.checked = true; }
}
-->
</script>
JSCRIPT;
}
break;
endswitch;
?>