Файл: Arhmobi_esdcms/pages/profile.view.php
Строк: 825
<?php
/**
* Анкета пользователя.
* В данном файле используются регионы (region).
* Для корректной работы с ними рекомендую использовать PhpStorm
*/
include_once '../sys/inc/start.php';
if (AJAX)
$doc = new document_json();
else
$doc = new document();
$doc->title = __('Анкета');
$ank = (empty($_GET ['id'])) ? $user : new user((int) $_GET ['id']);
if (!$ank->group)
$doc->access_denied(__('Нет данных'));
$doc->title = ($user->id && $ank->id == $user->id) ? __('Моя анкета') : __('Анкета "%s"', $ank->nick);
$doc->description = __('Анкета "%s"', $ank->nick);
$doc->keywords [] = $ank->login;
//region Предложение дружбы
if ($user->group && $ank->id && $user->id != $ank->id && isset($_GET ['friend'])) {
// обработка действий с "другом"
$q = $db->prepare("SELECT * FROM `friends` WHERE `id_user` = ? AND `id_friend` = ? LIMIT 1");
$q->execute(Array($user->id, $ank->id));
if ($friend = $q->fetch()) {
if ($friend ['confirm']) {
// если Вы уже являетель другом
if (isset($_POST ['delete'])) {
// удаляем пользователя из друзей
$res = $db->prepare("DELETE FROM `friends` WHERE `id_user` = ? AND `id_friend` = ? OR `id_user` = ? AND `id_friend` = ?");
$res->execute(Array($user->id, $ank->id, $ank->id, $user->id));
$res = $db->prepare("DELETE FROM `chit` WHERE `id_user` = ? AND `id_friend` = ? OR `id_user` = ? AND `id_friend` = ?");
$res->execute(Array($user->id, $ank->id, $ank->id, $user->id));
$doc->msg(__('Пользователь успешно удален из друзей'));
}
} else {
// если не являетесь другом
if (isset($_POST ['no'])) {
// не принимаем предложение дружбы
$res = $db->prepare("DELETE FROM `friends` WHERE `id_user` = ? AND `id_friend` = ? OR `id_user` = ? AND `id_friend` = ?");
$res->execute(Array($user->id, $ank->id, $ank->id, $user->id));
$res = $db->prepare("UPDATE `users` SET `friend_new_count` = `friend_new_count` - '1' WHERE `id` = ? LIMIT 1");
$res->execute(Array($user->id));
$doc->msg(__('Предложение дружбы отклонено'));
} elseif (isset($_POST ['ok'])) {
// принимаем предложение дружбы
$res = $db->prepare("UPDATE `friends` SET `confirm` = '1' WHERE `id_user` = ? AND `id_friend` = ? LIMIT 1");
$res->execute(Array($user->id, $ank->id));
$res = $db->prepare("UPDATE `users` SET `friend_new_count` = `friend_new_count` - '1' WHERE `id` = ? LIMIT 1");
$res->execute(Array($user->id));
// на всякий случай пытаемся добавить поле (хотя оно уже должно быть), если оно уже есть, то дублироваться не будет
$res = $db->prepare("INSERT INTO `friends` (`confirm`, `id_user`, `id_friend`) VALUES ('1', ?, ?)");
$res->execute(Array($ank->id, $user->id));
$res = $db->prepare("INSERT INTO `chit` (`confirm`, `id_user`, `id_friend`) VALUES ('1', ?, ?)");
$res->execute(Array($ank->id, $user->id));
$doc->msg(__('Предложение дружбы принято'));
}
}
} else {
if (isset($_GET ['friend']) && isset($_POST ['add'])) {
// предлагаем дружбу
// отметка о запросе дружбы
$res = $db->prepare("INSERT INTO `friends` (`confirm`, `id_user`, `id_friend`) VALUES ('0', ?, ?)");
$res->execute(Array($ank->id, $user->id));
$res = $db->prepare("UPDATE `users` SET `friend_new_count` = `friend_new_count` + '1' WHERE `id` = ? LIMIT 1");
$res->execute(Array($ank->id));
$doc->msg(__('Предложение дружбы успешно отправлено'));
}
}
}
if ($user->group && $ank->id && $user->id != $ank->id) {
$q = $db->prepare("SELECT * FROM `friends` WHERE `id_user` = ? AND `id_friend` = ? LIMIT 1");
$q->execute(Array($user->id, $ank->id));
if ($friend = $q->fetch()) {
if ($friend ['confirm']) {
// пользователь находится в друзьях
if (isset($_GET ['friend']) && $_GET ['friend'] == 'delete') {
$form = new form("?id={$ank->id}&friend&" . passgen());
$form->bbcode(__('Действительно хотите удалить пользователя "%s" из друзей?', $ank->nick));
$form->button(__('Да, удалить'), 'delete');
$form->display();
}
if (!$ank->is_friend($user))
echo "<b>" . __('Пользователь еще не подтвердил факт Вашей дружбы') . "</b><br />";
} else {
// пользователь не в друзьях
$form = new form("?id={$ank->id}&friend&" . passgen());
$form->bbcode(__('Пользователь "%s" предлагает Вам дружбу', $ank->nick));
$form->button(__('Принимаю'), 'ok', false);
$form->button(__('Не принимаю'), 'no', false);
$form->display();
}
} else {
if (isset($_GET ['friend']) && $_GET ['friend'] == 'add') {
$form = new form("?id={$ank->id}&friend&" . passgen());
$form->bbcode(__('Предложить пользователю "%s" дружбу?', $ank->nick));
$form->button(__('Предложить'), 'add', false);
$form->display();
}
}
}
//chit начало
if ($user->group && $ank->id && $user->id != $ank->id) {
$q = $db->prepare("SELECT * FROM `chit` WHERE `id_user` = ? AND `id_friend` = ? LIMIT 1");
$q->execute(Array($user->id, $ank->id));
if ($chit = $q->fetch()) {
if ($chit['confirm']) {
if (isset($_GET ['chit']) && isset($_POST ['delete'])) {
$res = $db->prepare("DELETE FROM `chit` WHERE `id_user` = ? AND `id_friend` = ? OR `id_user` = ? AND `id_friend` = ?");
$res->execute(Array($user->id, $ank->id, $ank->id, $user->id));
$doc->msg(__('Пользователь успешно удален'));
}
} else {
// если не являетесь другом
if (isset($_POST ['no'])) {
mysql_query("DELETE FROM `friends` WHERE `id_user` = '$user->id' AND `id_friend` = '$ank->id' OR `id_user` = '$ank->id' AND `id_friend` = '$user->id'");
mysql_query("UPDATE `users` SET `friend_new_count` = `friend_new_count` - '1' WHERE `id` = '{$user->id}' LIMIT 1");
$doc->msg(__('Предложение дружбы отклонено'));
} elseif (isset($_POST ['ok'])) {
mysql_query("UPDATE `chit` SET `confirm` = '1' WHERE `id_user` = '$user->id' AND `id_friend` = '$ank->id' LIMIT 1");
$doc->msg(__('вы под'));
}
}
} else {
if (isset($_GET ['chit']) && isset($_POST ['add'])) {
$res = $db->prepare("INSERT INTO `chit` (`confirm`, `id_user`, `id_friend`) VALUES ('1', ?, ?)");
$res->execute(Array($user->id, $ank->id));
$doc->msg(__('Вы подписались'));
}
}
}
///////////////////
if ($user->group && $ank->id && $user->id != $ank->id) {
$q = $db->prepare("SELECT * FROM `chit` WHERE `id_user` = ? AND `id_friend` = ? LIMIT 1");
$q->execute(Array($user->id, $ank->id));
if ($chit = $q->fetch()) {
if ($chit ['confirm']) {
if (isset($_GET ['chit']) && $_GET ['chit'] == 'delete') {
$form = new form("?id={$ank->id}&chit&" . passgen());
$form->bbcode(__('Действительно хотите удалить пользователя "%s" из читателей?', $ank->login));
$form->button(__('Да, удалить'), 'delete', false);
$form->display();
}
}
$doc->act(__('Удалиться из читателей'), "?id={$ank->id}&chit=delete");
} else {
if (isset($_GET ['chit']) && $_GET ['chit'] == 'add') {
$form = new form("?id={$ank->id}&chit&" . passgen());
$form->bbcode(__('Вы хотите подписаться "%s" ?', $ank->login));
$form->button(__('Да'), 'add', false);
$form->display();
}
$doc->act(__('Подписаться на новости'), "?id={$ank->id}&chit=add");
}
}
//endregion
if (!AJAX) {
if ($user->id && $user->id != $ank->id) {
$gu = $db->query("SELECT COUNT(*) FROM `my_guests` WHERE `id_ank` = '$ank->id' AND `id_user` = '$user->id' LIMIT 1")->fetchColumn();
if ($gu == 0) {
$res = $db->prepare("INSERT INTO `my_guests` (`id_ank`, `id_user`, `time`) VALUES (?, ?, ?)");
$res->execute(Array($ank->id, $user->id, TIME));
} else
if ($gu != 0) {
$guest = $db->query("SELECT * FROM `my_guests` WHERE `id_ank` = '$ank->id' AND `id_user` = '$user->id' LIMIT 1")->fetch();
$res = $db->prepare("UPDATE `my_guests` SET `time` = ?, `read` = ?,`count` = `count` + ? WHERE `id` = ? LIMIT 1");
$res->execute(Array(TIME, 1, 1, $guest['id']));
}
}
}
//region Бан
if ($ank->is_ban) {
$ban_listing = new listing();
$q = $db->prepare("SELECT * FROM `ban` WHERE `id_user` = ? AND `time_start` < ? AND (`time_end` is NULL OR `time_end` > ?) ORDER BY `id` DESC");
$q->execute(Array($ank->id, TIME, TIME));
if ($arr = $q->fetchAll()) {
foreach ($arr AS $c) {
$post = $ban_listing->post();
$adm = new user($c ['id_adm']);
$post->title = ($adm->group <= $user->group ? '<a href="/profile.view.php?id=' . $adm->id . '">' . $adm->nick . '</a>: ' : '') . text::toValue($c ['code']);
if ($c ['time_start'] && TIME < $c ['time_start']) {
$post->content[] = '[b]' . __('Начало действия') . ':[/b]' . misc::when($c ['time_start']) . "n";
}
if ($c['time_end'] === NULL) {
$post->content[] = '[b]' . __('Пожизненная блокировка') . "[/b]n";
} elseif (TIME < $c['time_end']) {
$post->content[] = __('Осталось: %s', misc::when($c['time_end'])) . "n";
}
if ($c['link']) {
$post->content[] = __('Ссылка на нарушение: %s', $c['link']) . "n";
}
$post->content[] = __('Комментарий: %s', $c['comment']) . "n";
}
}
$ban_listing->display();
}
//endregion
$status = $db->query("SELECT * FROM `status` WHERE `id_user` = '$ank->id' AND `pokaz` = '1' LIMIT 1")->fetch();
// Лайк статус
$like = $db->query("SELECT * FROM `status_like` WHERE `id_status` = '" . intval($status['id']) . "'")->fetchAll();
if (isset($_GET['like']) && $user->id) {
$qq = $db->query("SELECT * FROM `status_like` WHERE `id_user` = '" . intval($user->id) . "' AND `id_status` = '" . intval($status['id']) . "' LIMIT 1")->fetch();
if (!$qq) {
$res = $db->prepare("INSERT INTO `status_like` (`id_user`, `time`, `id_status`) VALUES (?, ?, ?)");
$res->execute(Array(intval($user->id), TIME, intval($status['id'])));
$ank->mess("[user]{$user->id}[/user] поставил" . ($user->sex ? '' : 'а') . " лайк к Вашему [url=/status/status_komm.php?id=" . $status['id'] . "]Статусу[/url]");
$doc->msg(__('Лайк засчитан'));
header('Refresh: 1; url=/profile.view.php?id=' . $ank->id);
} else {
$doc->err(__('Лайк уже засчитан'));
header('Refresh: 1; url=/profile.view.php?id=' . $ank->id);
}
}
// лайк ава
if (isset($_GET['likeava']) && $user->id) {
$likeq = $db->query("SELECT * FROM `ava_like` WHERE `id_user` = '" . intval($user->id) . "' AND `id_ava` = '$ank->id' LIMIT 1")->fetch();
if (!$likeq) {
$res = $db->prepare("INSERT INTO `ava_like` (`id_user`, `time`, `id_ava`) VALUES (?, ?, ?)");
$res->execute(Array(intval($user->id), TIME, $ank->id));
$ank->mess("[user]{$user->id}[/user] поставил" . ($user->sex ? '' : 'а') . " лайк к Вашему [url=/comm.avatar.php?id=" . $ank->id . "]Аватару[/url]");
$doc->msg(__('Лайк засчитан'));
header('Refresh: 1; url=/profile.view.php?id=' . $ank->id);
} else {
$doc->err(__('Лайк уже засчитан'));
header('Refresh: 1; url=/profile.view.php?id=' . $ank->id);
}
}
$rs = $db->prepare("SELECT * FROM `countries` WHERE `code` = ?");
$rs->execute(Array($ank->country));
$rs = $rs->fetch();
$country = ($user->country == $ank->country) ? $rs['country_n'] : $rs['english_n'];
//region Профиль пользователя
$listing = new listing();
$fon = new user_fon($ank->id);
$d = new design();
$d->assign('fon', $fon->image()); //Путь до фонового изображения
$d->assign('avatar', array($ank->getAvatar($dcms->browser_type == 'full' ? '220' : '120'), __("Аватар")));
if ($user->id == $ank->id) {
$d->assign('add', array('/my.fon.php', __('Сменить обложку'))); // Кнопка добавить фон
$d->assign('ava', array('/my.avatar.php', __('Сменить аватар')));
$d->assign('editank', array('/profile.edit.php', __('Ред. анкету')));
}
if ($ank->avatar == 1) {
$res = $db->query("SELECT COUNT(*) FROM `ava_komm` WHERE `id_ava` = '$ank->id'");
$cca = $res->fetchColumn();
$d->assign('commava', array('/comm.avatar.php?id=' . $ank->id . '', __('Комм. %s', $cca)));
$countlike = $db->query("SELECT COUNT(*) FROM `ava_like` WHERE `id_ava` = '$ank->id' ")->fetchColumn();
$stt = $db->query("SELECT * FROM `ava_like` WHERE `id_user` = '$user->id' AND `id_ava` = '$ank->id' LIMIT 1")->fetch();
if ($user->id && $user->id != $ank->id && !$stt) {
$d->assign('likeava', array('?id=' . $ank->id . '&likeava', __('♥ лайк %s', $countlike)));
} elseif ($user->id) {
$d->assign('ktolikeava', array('/like.avatar.php?id=' . $ank->id . '', __('♥ лайк %s', $countlike)));
}
}
if ($user->group > 0 & ($ank->id != $user->id)) {
$d->assign('podar', array('/presents/?user=' . $ank->id . '', __('Подарить подарок')));
$d->assign('sms', array('my.mail.php?id=' . $ank->id . '', __('Сообщение')));
$d->assign('ball', array('transfer.points.php?id=' . $ank->id . '', __('Передать баллы')));
if (!$friend ['confirm']) {
$d->assign('frend', array('?id=' . $ank->id . '&friend=add', __('Добавить в друзья')));
} else {
$d->assign('frend', array('?id=' . $ank->id . '&friend=delete', __('Удалить из друзей')));
}
}
if (!$user->vk_id) {
$d->assign('login', $ank->nick);
} else {
$d->assign('login', $ank->nick . ' ' . $ank->patronymic . '');
}
if ($ank->online) {
$d->assign('on', array('on', __("Онлайн")));
} else {
$d->assign('on', array('off', __('Последний визит: (%s)', misc::when($ank->last_visit))));
}
if ($ank->ank_d_r && $ank->ank_m_r && $ank->ank_g_r)
$d->assign('dr', __('Возраст: %s', misc::get_age($ank->ank_g_r, $ank->ank_m_r, $ank->ank_d_r, true))); // Возраст
if ($country) {
$d->assign('gorod', __('%s / %s', $country, $ank->region_t));
}
$d->display('design.profile.tpl');
$post = $listing->post();
if ($user->id == $ank->id) {
$post->action('create', '/status/create_status.php');
$post->action('edit', "/status/edit.status.php?id=" . $status['id']);
$post->action('block', '/status/');
}
if ($status) {
if ($status['block'] == 0) {
if ($user->group && $ank->id != $user->id) {
if ($user->group > $ank->group) {
$post->action('bb.notice', '/status/block.status.php?id=' . $status['id']);
}
}
$post->url = '/status/status_komm.php?id=' . $status ['id'];
$post->title = '<div class="DCMS_st"></div><div class="DCMS_st2">' . text::toOutput($status ['msg']) . '</div>';
$res = $db->prepare("SELECT COUNT(*) FROM `status_like` WHERE `id_status` = ?");
$res->execute(Array(intval($status['id'])));
$countlike = $res->fetchColumn();
$stt = $db->query("SELECT * FROM `status_like` WHERE `id_user` = '$user->id' AND `id_status` = '" . intval($status['id']) . "' LIMIT 1")->fetch();
if ($user->id && $user->id != $ank->id && !$stt) {
$post->bottom = '<a href="?id=' . $ank->id . '&like">' . __('Класс') . '</a> • <a href="/status/like.php?id=' . $status['id'] . '">' . __('%s чел', $countlike) . '</a>';
} elseif ($user->id && $user->id != $ank->id) {
$countlike = $countlike - 1;
$post->bottom = "<a href='/status/like.php?id=$status[id]'>" . __('Понравилось: Вы и %s чел', $countlike) . "</a>";
} else {
$post->bottom = $countlike > 0 ? '<a href="/status/like.php?id=' . $status['id'] . '">' . __('Понравилось: %s чел', $countlike) . '</a>' : __('Пока ни кому не понравилось');
}
$res = $db->prepare("SELECT COUNT(*) FROM `status_komm` WHERE `id_status` = ?");
$res->execute(Array($status['id']));
$kom = $res->fetchColumn();
$post->bottom.=' - ' . __('Коментари' . misc::number($kom, 'й', 'я', 'ев') . ': %s', $kom);
} else {
$post->title = '<div class="DCMS_st"></div><div class="DCMS_st2"><font color="red">' . __('Статус заблокирован!') . '</font> ' . __('Причина блокировки') . ': ' . text::toOutput($status['prichina']) . '</div>';
}
} else {
$post->title = '<div class="DCMS_st"></div><div class="DCMS_st2">' . __('Ни одного статуса еще не было дабавлено') . '</div>';
}
$presents = '';
$q = $db->prepare("SELECT * FROM `present_users` WHERE `id_user` = ? ORDER BY `id` DESC LIMIT 5"); //запилить настройку сколько выводить
$q->execute(Array($ank->id));
while ($item = $q->fetch()) {
if (is_file(H . $screen = '/sys/images/presents/' . $item['id_present'] . '.png')) {
$presents .= '<img class="podarki_photo" src="' . $screen . '" style="float:left; max-width: 80px;"/>';
}
}
if ($presents) {
$post = $listing->post();
$post->title = $presents . ' <a href="/profile.presents.php?id=' . $ank->id . '" class="podarki_photo"><img src="/sys/images/icons/present.png"> [все]</a>';
}
if ($ank->group > 1) {
$post = $listing->post();
$post->title = '<b>' . __('Должность') . ':</b>' . __(' %s', $ank->group_name);
$post->icon($ank->icon());
$q = $db->prepare("SELECT `id_adm` FROM `log_of_user_status` WHERE `id_user` = ? ORDER BY `id` DESC LIMIT 1");
$q->execute(Array($ank->id));
if ($row = $q->fetch()) {
$adm = new user($row['id_adm']);
$post->title .= '<small>(' . __('назначил' . ($adm->sex ? '' : 'а')) . ' "' . $adm->nick . '")</small>';
}
}
$name = ($ank->surname && $ank->patronymic) ? "$ank->surname $ank->realname $ank->patronymic" : $ank->realname . ($ank->patronymic ? " " . $ank->patronymic : '') . ($ank->surname ? " " . $ank->surname : '');
if ($name) {
$nn = ($ank->surname && $ank->patronymic) ? __('ФИО') : __('Имя');
$post->content[] = '[b]' . __('%s', $nn) . ' :[/b] ' . __('%s', $name);
} else {
$post->content[] = '[b]' . __('ФИО') . ':[/b] ' . __('не заполнено');
}
if ($ank->ank_d_r && $ank->ank_m_r && $ank->ank_g_r) {
$post->content[] = '[b]' . __('Дата рождения') . ':[/b] ' . __('%s %s %s', $ank->ank_d_r, misc::getLocaleMonth($ank->ank_m_r), $ank->ank_g_r);
} elseif ($ank->ank_d_r && $ank->ank_m_r) {
$post->content[] = '[b]' . __('День рождения') . ':[/b] ' . __('%s %s', $ank->ank_d_r, misc::getLocaleMonth($ank->ank_m_r));
} else {
$post->content[] = '[b]' . __('Дата рождения') . ':[/b] ' . __('не заполнено');
}
if ($ank->languages) {
$post->content[] = '[b]' . __('Языки') . ':[/b] ' . __('%s', $ank->languages);
} else {
$post->content[] = '[b]' . __('Языки') . ':[/b] ' . __('не заполнено');
}
$q = $db->query("SELECT `login` FROM `login_history` WHERE `id_user` = '$ank->id' ORDER BY `time` DESC LIMIT 3");
$res = $q->fetchAll();
if ($res) {
$logins = array();
foreach ($res AS $v) {
$logins[] = $v['login'];
}
$post->content[] = '[b][url="/profile.login.php?id=' . $ank->id . '"]' . __('История логинов') . ':[/url][/b] ' . implode(', ', $logins);
}
if ($ank->icq_uin) {
if ($ank->is_friend($user) || $ank->vis_icq) {
$post->content[] = '[b]ICQ UIN:[/b]' . $ank->icq_uin;
} else {
$post->content[] = '[b]ICQ UIN:[/b] Информация скрыта [url="/faq.php?info=hide&return=' . URL . '"][?][/url]';
}
} else {
$post->content[] = '[b]ICQ UIN:[/b] ' . __('не заполнено');
}
if ($ank->skype) {
if ($ank->is_friend($user) || $ank->vis_skype) {
$post->content[] = '[b]Skype:[/b] ' . $ank->skype;
} else {
$post->content[] = '[b]Skype:[/b] Информация скрыта [url="/faq.php?info=hide&return=' . URL . '"][?][/url]';
}
} else {
$post->content[] = '[b]Skype:[/b] ' . __('не заполнено');
}
if ($ank->email) {
if ($ank->is_friend($user) || $ank->vis_email) {
$post->content[] = '[b]E-mail:[/b] ' . $ank->email;
} else {
$post->content[] = '[b]E-mail:[/b] Информация скрыта [url="/faq.php?info=hide&return=' . URL . '"][?][/url]';
}
} else {
$post->content[] = '[b]E-mail:[/b] ' . __('не заполнено');
}
if ($ank->reg_mail) {
if ($user->group > $ank->group) {
$post->content[] = '[b]' . __('Регистрационный E-mail') . ':[/b] ' . __('%s', $ank->reg_mail);
}
}
$post->content[] = '[b]' . __('Дата регистрации') . ':[/b] ' . __('%s', date("d-m-Y", $ank->reg_date));
if ($ank->description) {
$post->content[] = '[b]' . __('О себе') . ':[/b] ' . __('%s', $ank->description);
} else {
$post->content[] = '[b]' . __('О себе') . ':[/b] ' . __('не заполнено');
}
$post = $listing->post();
if ($ank->donate_rub) {
$post->highlight = true;
$post->icon('donate');
$post->title = __('Пожертвования %s руб.', $ank->donate_rub);
}
$post->content[] = '[b]' . __('Последний визит') . ':[/b] ' . __('%s', misc::when($ank->last_visit));
$post->content[] = '[b]' . __('Всего переходов') . ':[/b] ' . __('%s', $ank->conversions);
$post->content[] = '[b]' . __('Проведено времени на сайте') . ':[/b] ' . __('%s', misc::vremja_sec($ank->time2));
if ($user->id == $ank->id)
$post->content[] = '[b]' . __('Баллов') . ':[/b] ' . __(' %s ', $ank->balls) . '[url="/obmenb/"][' . __('Получить') . '][/url]';
if ($user->id && $user->id == $ank->id) {
$res = $db->prepare("SELECT COUNT(*) FROM `my_guests` WHERE `id_ank` = ? AND `read`= ?");
$res->execute(Array($user->id, 1));
$new_g = $res->fetchColumn();
$post = $listing->post();
$post->icon('guest');
$post->title = __('Гости');
$post->url = '/myguest/index.php';
if ($new_g != 0)
$post->counter = '+' . $new_g;
}
if ($ank->is_friend($user) || $ank->vis_friends) {
$res = $db->prepare("SELECT COUNT(*) FROM `friends` WHERE `id_user` = ? AND `confirm` = '1'");
$res->execute(Array($ank->id));
$k_friends = $res->fetchColumn();
$post = $listing->post();
$post->title = __('Друзья');
$post->url = $ank->id == $user->id ? "/my.friends.php" : "/profile.friends.php?id={$ank->id}";
$post->counter = $k_friends;
$post->icon('user.1');
$q = $db->prepare("SELECT * FROM `friends` WHERE `id_user` = ? AND `confirm` = '1' ORDER BY `confirm` ASC, `time` DESC LIMIT 5;"); // надо настройку количества вывода
$q->execute(Array($ank->id));
while ($ank2 = $q->fetch()) {
$p_user = new user($ank2['id_friend']);
$post->post .= ' <a href="/profile.view.php?id=' . $p_user->id . '">' . $p_user->nick() . '</a> ';
}
} else {
$post = $listing->post();
$post->title = __('Друзья');
$post->icon('user.1');
$post->url = '/faq.php?info=hide&return=' . URL;
$post->content = __('Информация скрыта');
}
//region Рейтинг
$post = $listing->post();
$post->title = __('Рейтинг');
$post->url = '/profile.reviews.php?id=' . $ank->id;
$post->counter = $ank->rating;
//endregion
if ($ank->id) {
// папка фотоальбомов пользователей
$photos = new files(FILES . '/.photos');
// папка альбомов пользователя
$albums_path = FILES . '/.photos/' . $ank->id;
if (!@is_dir($albums_path)) {
if ($albums_dir = $photos->mkdir($ank->login, $ank->id)) {
$albums_dir->group_show = 0;
$albums_dir->group_write = min($ank->group, 2);
$albums_dir->group_edit = max($ank->group, 4);
$albums_dir->id_user = $ank->id;
unset($albums_dir);
}
}
$albums_dir = new files($albums_path);
$photos_count ['all'] = $albums_dir->count();
if ($photos_count ['all']) {
$photos_count ['new'] = $albums_dir->count(NEW_TIME);
$post = $listing->post();
$post->title = __('Фотографии');
$post->icon('photos');
$post->url = '/photos/albums.php?id=' . $ank->id;
$post->counter = $photos_count ['new'] ? $photos_count ['all'] . ' /+' . $photos_count ['new'] : $photos_count ['all'];
//Вывод фото по ид
$content = $photos->getFilesByUserId($ank->id);
$files = & $content['files'];
$count = count($files);
$image = array();
if ($dcms->browser_type == 'full') {
$size = 35;
$height = 50;
} else {
$size = 35;
$height = 50;
}
for ($i = 0; $i < $count && $i < 6; $i++) {
$path = explode('/', $files[$i]->getPath());
$image[] = '<a style="margin:2px;" href="/photos/photo.php?id=' . $files[$i]->id_user . '&album=' . urlencode($path[3]) . '&photo=' . urlencode($files[$i]->name) . '"><span class ="photo" style="background:url(' . $files[$i]->image(300) . ') center center no-repeat;background-size: cover;width:' . $size . 'px;height:' . $height . 'px"></span></a>';
}
$hheight = $height + 9;
$post->content = '<div class="Profile_content_photo" style="height:' . $hheight . 'px">' . implode("", $image) . '</div>';
}
}
if ($ank->id == $user->id) {
$res = $db->prepare("SELECT COUNT(*) FROM `chit` WHERE `id_friend` = ? AND `confirm` = ?");
$res->execute(Array($ank->id, '1'));
$k_chit = $res->fetchColumn();
$post = $listing->post();
$post->title = __('Мои подписчики');
$post->url = '/chit.php?id=' . $ank->id;
$post->counter = $k_chit;
//$my = mysql_result(mysql_query("SELECT COUNT(*) FROM `mynews` WHERE `id_kont` = '$user->id' AND `read` = '0' "), 0);
$res = $db->prepare("SELECT COUNT(*) FROM `mynews` WHERE `id_kont` = ? AND `read` = ?");
$res->execute(Array($ank->id, '0'));
$my = $res->fetchColumn();
$post = $listing->post();
$post->title = __('Новости друзей');
$post->url = '/mynews.php';
$post->counter = $my ? '+'.$my:null;
}
$listing->display();
//endregion
if ($user->group > $ank->group)
$doc->act(__('Доступные действия'), "/dpanel/user.actions.php?id={$ank->id}");
if ($user->group && $ank->id == $user->id) {
$listing = new listing();
$post = $listing->post();
$post->title = __('Очистить стену');
$post->url = '/clear.stena.php';
$post->icon('delete');
$listing->display();
}
$pages = new pages($db->query("SELECT COUNT(*) FROM `stena` WHERE `id_ank` = '$ank->id' ")->fetchColumn());
$pages->this_page();
$can_write = true;
if (!$user->is_writeable) {
$doc->msg(__('Писать запрещено'), 'write_denied');
$can_write = false;
}
if ($can_write) {
if (isset($_POST['send']) && isset($_POST['message']) && isset($_POST['token']) && $user->group) {
$message = (string) $_POST['message'];
$users_in_message = text::nickSearch($message);
$message = text::input_text($message);
if (!antiflood::useToken($_POST['token'], 'stena')) {
// нет токена (обычно, повторная отправка формы)
} elseif ($dcms->censure && $mat = is_valid::mat($message)) {
$doc->err(__('Обнаружен мат: %s', $mat));
} elseif ($message) {
// $user->balls += $dcms->add_balls_chat ;
$res = $db->prepare("INSERT INTO `stena` (`id_user`, `id_ank`, `time`, `text`) VALUES (?, ?, ?, ?)");
$res->execute(Array($user->id, $ank->id, TIME, $message));
if ($users_in_message) {
for ($i = 0; $i < count($users_in_message) && $i < 20; $i++) {
$user_id_in_message = $users_in_message[$i];
if ($user_id_in_message == $user->id) {
continue;
}
$ank_in_message = new user($user_id_in_message);
if ($ank_in_message->notice_mention) {
$ank_in_message->mess("[user]{$user->id}[/user] ответил" . ($user->sex ? '' : 'а') . " на [url=/profile.view.php?id=" . $ank->id . "]стене[/url] ");
}
}
} elseif ($user->group && $ank->id != $user->id) {
$ank->mess("[user]{$user->id}[/user] написал" . ($user->sex ? '' : 'а') . " у вас [url=/profile.view.php]на стене[/url]");
}
header('Refresh: 1; url=?id=' . $ank->id);
$doc->ret(__('Вернуться'), '?' . passgen());
$doc->msg(__('Успешно отправлено'));
if ($doc instanceof document_json) {
$doc->form_value('message', '');
$doc->form_value('token', antiflood::getToken('stena'));
}
exit;
} else {
$doc->err(__('Сообщение пусто'));
}
if ($doc instanceof document_json)
$doc->form_value('token', antiflood::getToken('stena'));
}
if ($user->group) {
$message_form = '';
if (isset($_GET ['message']) && is_numeric($_GET ['message'])) {
$id_message = (int) $_GET ['message'];
$q = $db->prepare("SELECT * FROM `stena` WHERE `id` = ? LIMIT 1");
$q->execute(Array($id_message));
if ($message = $q->fetch()) {
$ank = new user($message['id_ank']);
$ank3 = new user($message['id_user']);
if (isset($_GET['reply'])) {
$message_form = '@' . $ank3->login . ', ';
} elseif (isset($_GET['quote'])) {
$message_form = "@$ank3->login,[quote id_user="{$ank3->id}" time="{$message['time']}"]{$message['text']}[/quote]";
}
}
}
if (!AJAX) {
$form = new form('?id=' . $ank->id . '&' . passgen());
$form->refresh_url('?id=' . $ank->id . '&' . passgen());
$form->setAjaxUrl('?id=' . $ank->id . '&' . passgen());
$form->hidden('token', antiflood::getToken('stena'));
$form->textarea('message', __('Написать на стене'), $message_form, true);
$form->button(__('Отправить'), 'send', false);
$form->display();
}
}
}
$listing = new listing();
// привязываем форму к листингу, чтобы листинг мог обновиться при отправке формы через AJAX
if (!empty($form))
$listing->setForm($form);
$q = $db->prepare("SELECT * FROM `stena` WHERE `id_ank` = ? ORDER BY `id` DESC LIMIT $pages->limit");
$q->execute(Array($ank->id));
$after_id = false;
if ($arr = $q->fetchAll()) {
foreach ($arr AS $message) {
$ank2 = new user($message['id_user']);
$post = $listing->post();
$post->id = 'stena_' . $message['id'];
$post->url = '/profile.view.php?id=' . $ank2->id;
$post->time = misc::when($message['time']);
$post->title = $ank2->nick();
$post->image = $ank2->ava();
$post->post = text::toOutput($message['text']);
if ($user->group) {
$post->action('reply', '?id=' . $ank->id . '&message=' . $message['id'] . '&reply');
$post->action('quote', '?id=' . $ank->id . '&message=' . $message['id'] . '&quote');
}
if (!$doc->last_modified)
$doc->last_modified = $message['time'];
if ($doc instanceof document_json)
$doc->add_post($post, $after_id);
$after_id = $post->id;
}
}
if ($doc instanceof document_json && !$arr) {
$post = new listing_post(__('Сообщения отсутствуют'));
$post->icon('empty');
$doc->add_post($post);
}
$listing->setAjaxUrl('?id=' . $ank->id . '&page=' . $pages->this_page);
$listing->display(__('Сообщения отсутствуют'));
$pages->display('?id=' . $ank->id . '&'); // вывод страниц
if ($doc instanceof document_json)
$doc->set_pages($pages);
if ($user->group)
$doc->ret(__('Личное меню'), '/menu.user.php');