Во всех (почти) чатах есть функция игнора юзера ...
долго думал но не нашёл оптимального решения осуществления этой функции ... может подскажете алгоритм ???
Заранее спасибо ...
Заводишь таблицу, в которой пишешь, кто кого игнорирует (пары идентификаторов: первый игнорирует второго). И перед отправкой сообщения проверяешь, игнорирует ли получатель отправителя. Если игнорирует, то не отправляешь сообщение.
function GetIgnor($Login1,$Login2)
{
$r=mysql_query("select count(Login) from TIgnore where Login='".$Login1."' and Ignores='".$Login2."'");
$m=mysql_fetch_row($r);
return ($m{0})?true:false;
}
function SetIgnor($Login1,$Login2,$mode)
{
$m=GetIgnor($Login1);
if($m&&$mode||!$m&&!$mode) return; //Mode is not changed
if($mode)
mysql_query_log("insert into TIgnore(Login,Ignores) values('".$Login1."','".$Login2."')");
else
mysql_query_log("delete from TIgnore where Login='".$Login1."' and Ignores='".$Login2."'");
NotifyChangedUsers($Login1); //Обновить список пользователей
NotifyChangedUsers($Login2);
}
Да, это из исходников чата, который был написан мной. Исходники этого чата я не распространяю.
Ссылку на другой чат, с исходниками, и на специальный форум, в котором тот чат обсуждается, я уже приводил выше. В том чате так же есть функция игнора.
$m - старый режим.
Согласен, плохое имя для переменной. Но поскольку функция очень простая, и содержимое понятно из первой же строчки функции, то я не стал переделывать и давать другое имя.