Версия CMS — любая.
Заказчик попросил дать пользователям возможность заносить других юзеров в свой Чёрный список.
Если кому пригодится — пожалуйста!
Первым делом создаём в Базе данных таблицу cms_user_black
Кому как удобнее.
Как вариант — в phpMyAdmin открыть свою Базу и во вкладке SQL:
ТУТ МОМЕНТ!!! — CHARSET=cp1251 для версии CMS 1.9 Для CMS 1.10 исправить на CHARSET=utf8
Далее, в профиле пользователей — com_users_profile.tpl — в любом удобном месте размещаем кнопку,
которая будет помещать юзера в Чёрный список, а в случае, если он уже в списке — будет предлагать,
наоборот, убрать из Чёрного списка:
Обработчик кнопки помещаем в /components/users/frontend.php
в раздел
/////////////////////////////// VIEW PROFILE /////////////////////////////////////////////////
if ($do=='profile'){
Для этого, ПЕРЕД строкой
$usr = $model->getUser($id);
добавляем:
ДЛЯ 1.9
ДЛЯ 1.10
Также, в этом же файле, в этом же разделе, добавляем проверку, находится ли юзер в Чёрном списке или нет.
Для этого, ПЕРЕД строкой
$smarty = $inCore->initSmarty('components', 'com_users_profile.tpl');
вставляем:
Собственно всё!!
Любой пользователь может помещать других юзеров в свой Чёрный список! Ну и удалять их оттуда, соответственно.
Какие будут накладываться ограничения, на юзеров, оказавшихся в списке, можете придумываться сами, сколько угодно.
Для примера:
на сайте заказчика, юзеры НЕ МОГУТ отправлять сообщения, пользователям, у которых они находятся в Чёрных списках.
Чтобы это сделать, всё в том же файле /components/users/frontend.php
в разделе
/////////////////////////////// SEND MESSAGE /////////////////////////////////////////////////////////////
if ($do=='sendmessage'){
нужно код:
ЗАМЕНИТЬ на:
ДЛЯ 1.9
ДЛЯ 1.10
Заказчик попросил дать пользователям возможность заносить других юзеров в свой Чёрный список.
Если кому пригодится — пожалуйста!
Первым делом создаём в Базе данных таблицу cms_user_black
Кому как удобнее.
Как вариант — в phpMyAdmin открыть свою Базу и во вкладке SQL:
CREATE TABLE IF NOT EXISTS `cms_user_black` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `user_id` INT(11) NOT NULL, `target_id` INT(11) NOT NULL, `data` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `usr` (`user_id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
Далее, в профиле пользователей — com_users_profile.tpl — в любом удобном месте размещаем кнопку,
которая будет помещать юзера в Чёрный список, а в случае, если он уже в списке — будет предлагать,
наоборот, убрать из Чёрного списка:
{if !$myprofile} {if $usr.in_black} <form name="black" action="" method="POST"> <input name="out_black" type="submit" value="Убрать из списка"> </form> {else} <form name="black" action="" method="POST"> <input name="in_black" type="submit" value="В чёрный список"> </form> {/if} {/if}
в раздел
/////////////////////////////// VIEW PROFILE /////////////////////////////////////////////////
if ($do=='profile'){
Для этого, ПЕРЕД строкой
$usr = $model->getUser($id);
добавляем:
ДЛЯ 1.9
//---------------- Обработка кнопки Чёрный Список ------------------- if($inCore->request('in_black', 'str')){ $inDB->query("DELETE FROM cms_user_black WHERE user_id=".$inUser->id." AND target_id=".$id); $inDB->query("INSERT INTO cms_user_black (user_id, target_id, data) VALUES ('".$inUser->id."', '".$id."', NOW())"); } if($inCore->request('out_black', 'str')){ $inDB->query("DELETE FROM cms_user_black WHERE user_id=".$inUser->id." AND target_id=".$id); } //-------------------------------------------------------------
//---------------- Обработка кнопки Чёрный Список ------------------- $id = $inDB->get_field('cms_users', "login='{$login}'", 'id'); if($inCore->request('in_black', 'str')){ $inDB->query("DELETE FROM cms_user_black WHERE user_id=".$inUser->id." AND target_id=".$id); $inDB->query("INSERT INTO cms_user_black (user_id, target_id, data) VALUES ('".$inUser->id."', '".$id."', NOW())"); } if($inCore->request('out_black', 'str')){ $inDB->query("DELETE FROM cms_user_black WHERE user_id=".$inUser->id." AND target_id=".$id); } //-------------------------------------------------------------
Для этого, ПЕРЕД строкой
$smarty = $inCore->initSmarty('components', 'com_users_profile.tpl');
вставляем:
$usr['in_black'] = $inDB->get_field('cms_user_black', "user_id=".$inUser->id." AND target_id=$id", 'id');
Любой пользователь может помещать других юзеров в свой Чёрный список! Ну и удалять их оттуда, соответственно.
Какие будут накладываться ограничения, на юзеров, оказавшихся в списке, можете придумываться сами, сколько угодно.
Для примера:
на сайте заказчика, юзеры НЕ МОГУТ отправлять сообщения, пользователям, у которых они находятся в Чёрных списках.
Чтобы это сделать, всё в том же файле /components/users/frontend.php
в разделе
/////////////////////////////// SEND MESSAGE /////////////////////////////////////////////////////////////
if ($do=='sendmessage'){
нужно код:
// // Обычная отправка (1 получатель) // if (!$inCore->inRequest('massmail') && !$send_to_group){ //отправляем сообщение $msg_id = cmsUser::sendMessage($from_id, $to_id, $message); // отправляем уведомление на email если нужно $model->sendNotificationByEmail($to_id, $from_id, $msg_id); $inCore->addSessionMessage($_LANG['SEND_MESS_OK'], 'info'); $inCore->redirect('/users/'.$inUser->id.'/messages-sent.html'); }
ДЛЯ 1.9
// // Обычная отправка (1 получатель) // if (!$inCore->inRequest('massmail') && !$send_to_group){ if($inDB->get_field('cms_user_black', "(user_id=$to_id AND target_id=$from_id)", 'id')>0){ $inCore->addSessionMessage("Вы не можете отправлять сообщения этому пользователю", 'info'); $inCore->redirect('/users/'.$inUser->id.'/messages-sent.html'); }else{ //отправляем сообщение $msg_id = cmsUser::sendMessage($from_id, $to_id, $message); // отправляем уведомление на email если нужно $model->sendNotificationByEmail($to_id, $from_id, $msg_id); $inCore->addSessionMessage($_LANG['SEND_MESS_OK'], 'info'); $inCore->redirect('/users/'.$inUser->id.'/messages-sent.html'); } }
// Обычная отправка (1 получатель) // if (!cmsCore::inRequest('massmail') && !$send_to_group){ if($inDB->get_field('cms_user_black', "(user_id=$id AND target_id=".$inUser->id.")", 'id')>0){ cmsCore::jsonOutput(array('error' => true, 'text' => "Вы не можете отправлять сообщения этому пользователю")); }else{ //отправляем сообщение $msg_id = cmsUser::sendMessage($inUser->id, $id, $message); // отправляем уведомление на email если нужно $model->sendNotificationByEmail($id, $inUser->id, $msg_id); // Очищаем токен cmsUser::clearCsrfToken(); } } // // далее идут массовые рассылки, доступные только админам
Реклама #
Fuze 11 лет назад #
lokanaft 11 лет назад #
Димитриус 11 лет назад #
omarov 11 лет назад #
maia 11 лет назад #
Сергей Петрович 11 лет назад #
только при создании таблицы в БД обратите внимание на кодировку
Нил™ 11 лет назад #
Telema93 11 лет назад #
и надо исключить возможность в друзья предложение добавлять, хотя уже проще в плагин запихнуть будет скрипт
Шадринец 11 лет назад #
Александр 6 лет назад #
Александр 6 лет назад #
может кому пригодится
Нил™ 11 лет назад #
строки приведенные тут
Кто нибудь ставил?
Telema93 11 лет назад #
soccer 11 лет назад #
Aleks Shultz 11 лет назад #
Может, если не сложно, выложите код, который работает на 1.10>
Сергей Петрович 11 лет назад #
! ! ! ! !
в 1.10 в профиле отсутствует переменная $id
значит нужно её создать:
код, запрещающий отправку сообщений пользователям, находящимся в Чёрном списке:
Модератор Реальности 10 лет назад #
livecom 11 лет назад #
А кто может подсказать код, чтобы пользователю, занесенному в черный список нельзя было писать на стену тому, кто его занес? И в какой именно файл это изменение внести?
Александр 7 лет назад #
Нужно применить как в примере для личной переписки
В плагине переписки от neomaster сообщения отправляются практически так же, но не совсем, не хватает знаний чтобы написать проверку как надо, фаил:
/plugins/p_neomessenger/nmajax.php
место: