Когда пользователь загружает новую фотографию он конечно же ждет оценок и комментариев, но к сожалению никто даже не догадывается о том что у этого пользователя новая фотография на аве. Пользователю приходится ставить себя в неловкое положение и все писать о новинке, или просто остается ждать пока кто то случайно не откроет его профиль для просмотра.
Отличное решение я увидел в интернете уведомлять о смене фотографии сообщением в общий канал при загрузке новой фотографии пользователем, но к сожалению код был написан ужасно, да и работал не правильно, например сообщение выводится когда фотография загружена с ошибкой или при попытке загрузки фотографии превышающего допустимого в настройках чата размера фотографии.
Я переписал этот код чтобы он работал правильно и + ко всему сделал несколько вариантов сообщений.
Установка:
1. Открываем
chat/user_info_update.php
После (строка 327):
if($big_del == "on" or !$allow_photo_reiting) {
$current_user->photo_voted = array();
$current_user->photo_voted_mark = array();
$current_user->photo_reiting = 0;
}
Вставляем один из понравившихся вариантов:
Вариант 1 Код:
if ($big_photo_name != '' && $ok) {
$flood_protection = 0;
$messages_to_show[] = array(
MESG_TIME => my_time(),
MESG_ROOM => $room_id,
MESG_FROM => '',
MESG_FROMWOTAGS => $user_name,
MESG_CLANID => $cu_array[USER_CLANID],
MESG_FROMSESSION => $session,
MESG_FROMAVATAR => $cu_array[USER_AVATAR],
MESG_FROMID => $is_regist,
MESG_TO => '',
MESG_TOSESSION => '',
MESG_TOID => 0,
MESG_BODY => $current_user->nickname . ' загрузил новую фотографию');
include($engine_path . 'messages_put.php');
}
Вариант 2 Код:
if ($big_photo_name != '' && $ok) {
$flood_protection = 0;
$messages_to_show[] = array(
MESG_TIME => my_time(),
MESG_ROOM => $room_id,
MESG_FROM => '',
MESG_FROMWOTAGS => $user_name,
MESG_CLANID => $cu_array[USER_CLANID],
MESG_FROMSESSION => $session,
MESG_FROMAVATAR => $cu_array[USER_AVATAR],
MESG_FROMID => $is_regist,
MESG_TO => '',
MESG_TOSESSION => '',
MESG_TOID => 0,
MESG_BODY => $current_user->nickname . ' загрузил новую фотографию, [<a href="' . $chat_url .'profiler.php?session=' . $session . '&user_to_search=' . $current_user->nickname . '" target="_blank">Посмотреть<a>]');
include($engine_path . 'messages_put.php');
}
Вариант 3
При нажатии на изображение откроется окно профиля пользователя
Код:
if ($big_photo_name != '' && $ok) {
$u_ids = array();
$user_to_search = $current_user->nickname;
include($ld_engine_path . 'users_search.php');
if (count($u_ids))
{
$text = $current_user->nickname . ' загрузил(а) новую фотографию, <a href="' . $chat_url .'fullinfo.php?session=' . $session . '&user_id=' . $u_ids[0] . '" target="_blank"><img src="' . $chat_url .'photos/' . ((int) ($u_ids[0] / 1000)) . '/' . $u_ids[0] . '.big.jpg?rand=' . rand(0,1000) . '" border="0" style="max-width:60px; max-height:55px;border:1px solid #000;" /><a>';
}
else
{
$text = $current_user->nickname . ' загрузил(а) новую фотографию, [<a href="' . $chat_url .'profiler.php?session=' . $session . '&user_to_search=' . $current_user->nickname . '" target="_blank">Посмотреть<a>]';
}
$flood_protection = 0;
$messages_to_show[] = array(
MESG_TIME => my_time(),
MESG_ROOM => $room_id,
MESG_FROM => '',
MESG_FROMWOTAGS => $user_name,
MESG_CLANID => $cu_array[USER_CLANID],
MESG_FROMSESSION => $session,
MESG_FROMAVATAR => $cu_array[USER_AVATAR],
MESG_FROMID => $is_regist,
MESG_TO => '',
MESG_TOSESSION => '',
MESG_TOID => 0,
MESG_BODY => $text);
include($engine_path . 'messages_put.php');
}
Если у Вас есть свои предложения оформления сообщения, пишите в комментариях
Автор поста:
Skriptoff,
Просмотров:
3877
Создан:
27 мар. 2014 в
22:17
Немного поюзал и выявил такие баги.
Во-первых: На некоторых браузерах, загруженная фотка выводится в полном размере, никак не ограничиваясь. Это очень раздражает пользователей.
По всей видимости, не все браузеры понимают
Вышел из положения, заменив их на:
Второе:
При открытии профиля пользователя, по клику на картинку - передаётся сессия ЗАГРУЗИВШЕГО, а не просматривающего. В итоге, при просмотре, либо срабатывает
система безопасности, либо просто профиль не открывается, если он заблокирован от незарегеных. Но в любом случае, просмотреть и проголосовать - невозможно.
Да и то, что выдаётся чужая сессия всем, кому попало, - не есть гуд...
На счет rand(0,1000) или time(), работать будет и так и так, но при rand есть вероятность что число может повториться, по этому лучше использовать time.
Это необходимо чтобы картинка не кешеровалась в браузере
работать будет безопасно, проверь можно ли ставить оценки фото и писать комментарии
вставить
А строку
заменить на
Если имя бота нужно другим, то его нужно просто вписать между кавычками.
Например:
Если пользователь ставит фотографию в формате .gif , то она не отображается в общем канале. Ссылка автоматически преобразовывается с расширением .jpg .
Пример ссылок:
1