создаем data/vote/vote.dat
далее
в корне чата создаем файл users_ban.php с таким содержанием:
<?php
///Конфиг///
$votes_for_ban = 3; //Кол-во голосов для бана.
$raz = 0; // Кол-во фраз для разрешения бана. это если есть подсчет.///Скрипт///
require_once("inc_common.php");
include($ld_engine_path."rooms_get_list.php");
include($engine_path."users_get_list.php");
if (!$is_regist) {
$error_text = "$w_no_user";
include($file_path."designes/".$design."/error_page.php");
exit;
}
include("inc_user_class.php");
include($ld_engine_path."users_get_object.php");
$f_name="полный/путь/к/data/vote/vote.dat";
$expired = time()-120; // время бана в минутах
$result_votes = array();
$result_votes = file($f_name);
for ($i=0; $i<count($result_votes);$i++)
{
$result_vote = str_replace("\n","",$result_votes[$i]);
list($nameban[$i],$whoban[$i],$prich[$i],$golos[$i],$time[$i]) = explode("::",$result_vote);
}
if ($time[0]<$expired) {
($f=fopen($f_name,"w")) or die ("Ошибка открытия файла!!");
fclose($f);
}
$html_to_out = "";
set_variable("op");
$html_to_out .= "<h3>".$w_voting_title."</h3>";
if (($current_user->user_class > 0) && !($tmp_admin_rights & ADM_BAN_MODERATORS)) {
$current_user->sayedmesg = $raz + 1;
}
if ($raz > $current_user->sayedmesg) {
$html_to_out .= "Вам нельзя голосовать вам нужно $raz сообщений, а у вас $current_user->sayedmesg";
include($file_path."designes/".$design."/output_page.php");
exit;
}
if ($op == "") $op = "choose";
switch ($op) {
case "choose":
$result_votes = array();
$f_name="полный/путь/к/data/vote/vote.dat";
$result_votes = file($f_name);
for ($i=0; $i<count($result_votes);$i++)
{
$result_vote = str_replace("\n","",$result_votes[$i]);
list($nameban[$i],$whoban[$i],$prich[$i],$golos[$i],$time[$i]) = explode("::",$result_vote);
}
$html_to_out .= $w_select_nick.": <form method=\"post\" action=\"users_ban.php\" name=\"voteFrm\">".
"<input type=\"hidden\" name=\"session\" value=\"$session\">".
"<input type=\"hidden\" name=\"op\" value=\"do_vote\">".
"<table border=\"0\">";
if ($nameban[0] == "") {
if(count($room_ids)>1){
for($kk=0;$kk<count($room_ids);$kk++){
$html_to_out .= "<tr><td colspan=\"2\">$w_in_room <b>".$rooms[$room_ids[$kk]]["title"]."</b></td></tr>\n";
for ($i=0; $i<count($users); $i++){
$data = explode("\t", $users[$i]);
if ($data[10] == $room_ids[$kk]) {
$name = $data[0];
$html_to_out .= "<tr><td><input type=\"radio\" name=\"toVote\" value=\"$name\"></td><td>$name</td></tr>\n";
}
}
}
}else{
for ($i=0; $i<count($users); $i++){
$data = explode("\t", $users[$i]);
$name = $data[0];
$html_to_out .= "<tr><td><input type=\"radio\" name=\"toVote\" value=\"$name\"></td><td>$name</td></tr>\n";
}
}
}else{
$html_to_out .= "<tr><td><input type=\"radio\" name=\"toVote\" value=\"".$nameban[0]."\"></td><td>".$nameban[0]."</td></tr>\n";
}
$html_to_out .="<tr><td>$w_admin_reason:</td><td><input type=\"text\" name=\"cause\" class=\"input\"></td></tr>\n";
$html_to_out .= "<tr><td colspan=\"2\"><input type=\"submit\" value=\"$w_admin_ban\"></td></tr></table></form>";
break;
case "do_vote":
set_variable("cause");
set_variable("toVote");
if ($cause == "") {$html_to_out .= $w_vote_no_cause; break;}
$cause = htmlspecialchars($cause);
$who_banned = $current_user->nickname;
$f_name="полный/путь/к/data/vote/vote.dat";
($f=fopen($f_name,"a")) or die ("Ошибка открытия файла!!");
fclose($f);
$nameban = array();
$whoban = array();
$prich = array();
$golos = array();
$time = array();
$flood_protection = 0;
$result_votes = array();
$result_votes = file($f_name);
for ($i=0; $i<count($result_votes);$i++)
{
$result_vote = str_replace("\n","",$result_votes[$i]);
list($nameban[$i],$whoban[$i],$prich[$i],$golos[$i],$time[$i]) = explode("::",$result_vote);
}
$tmp_golos = $golos[count($golos) - 1];
$tmp2_golos = $votes_for_ban - 1;
if ($tmp_golos != $tmp2_golos) {
if ($nameban[0] == "") {
($f=fopen($f_name,"a")) or die ("Ошибка открытия файла!!");
$golos_end = 1;
$date_end = time();
fwrite($f,"$toVote::$who_banned::$cause::$golos_end::$date_end\n");
fclose($f);
$messages_to_show[] = array(MESG_TIME=>my_time(),
MESG_ROOM=>$room_id,
MESG_FROM=>"",
MESG_FROMWOTAGS=>"",
MESG_FROMSESSION=>"",
MESG_FROMID=>0,
MESG_FROMAVATAR=>"",
MESG_TO=>"",
MESG_TOSESSION=>"",
MESG_TOID=>"",
MESG_BODY=>"<font color=\"$highlited_color\">".str_replace("#", $toVote, str_replace("*", $cause, $w_voting_organized))."</font>");
include($engine_path."messages_put.php");
$html_to_out .= $w_vote_accepted;
break;
} else {
for ($aaa=0; $aaa<$votes_for_ban; $aaa++){
if ($whoban[$aaa] == $who_banned) {$html_to_out .= "Вы уже проголосовали!"; $asd = "ok"; break;}
}
if ($asd == "ok") {break;}
else {
($f=fopen($f_name,"a")) or die ("Ошибка открытия файла!!");
$zxc = count($golos) -1 ;
$time_end = $time[$zxc];
$golos_end = $golos[$zxc] + 1 ;
fwrite($f,"$toVote::$who_banned::$cause::$golos_end::$time_end\n");
fclose($f);
$messages_to_show[] = array(MESG_TIME=>my_time(),
MESG_ROOM=>$room_id,
MESG_FROM=>"",
MESG_FROMWOTAGS=>"",
MESG_FROMSESSION=>"",
MESG_FROMID=>0,
MESG_FROMAVATAR=>"",
MESG_TO=>"",
MESG_TOSESSION=>"",
MESG_TOID=>"",
MESG_BODY=>"<font color=\"$highlited_color\">".str_replace("#", $toVote, str_replace("*", $golos_end, str_replace("~", $votes_for_ban, $w_now_has_votes)))."</font>");
include($engine_path."messages_put.php");
$html_to_out .= $w_vote_accepted;
}
}
}
else if ($tmp_golos == $tmp2_golos) {
$html_to_out .= "Установлен бан для: ".$nameban[0];
($f=fopen($f_name,"a")) or die ("Ошибка открытия файла!!");
$zxc = count($golos) -1 ;
$time_end = $time[$zxc];
$golos_end = $golos[$zxc] + 1 ;
fwrite($f,"$toVote::$who_banned::$cause::$golos_end::$time_end");
fclose($f);
$sod_file = file($f_name);
$f_name_new = "полный/путь/к/data/vote/ban_".$nameban[0].".dat";
($f=fopen($f_name_new,"w")) or die ("Ошибка открытия файла!!");
for ($i=0;$i<count($sod_file);$i++){ fwrite($f,$sod_file[$i]); }
fclose($f);
($f=fopen($f_name,"w")) or die ("Ошибка открытия файла!!");
fclose($f);
$cause = $prich[0];
$kill_time = "1"; // время голосования в минутах
$nameToBan = $nameban[0];
for ($i=0;$i<count($users);$i++) {
$banuser_array = explode("\t", $users[$i], USER_TOTALFIELDS);
if (strcmp($banuser_array[USER_NICKNAME], $toVote) == 0) {
if ($banuser_array[USER_REGID]) {
//fake is_regist to load user-data
$is_regist = $banuser_array[USER_REGID];
include($ld_engine_path."users_get_object.php");
//current user now contains user to ban
if (($current_user->user_class > 0) && !($tmp_admin_rights & ADM_BAN_MODERATORS)){
$error_text = "$w_adm_cannot_ban_mod";
include($file_path."designes/".$design."/error_page.php");
exit;
}
}
$to_ban = array();
$to_ban[0] = "un|".$banuser_array[USER_CANONNICK];
$to_ban[1] = "ch|".$banuser_array[USER_COOKIE];
$to_ban[] = "ip|".$banuser_array[USER_IP];
$messages_to_show[] = array(MESG_TIME=>my_time(),
MESG_ROOM=>$banuser_array[USER_ROOM],
MESG_FROM=>"",
MESG_FROMWOTAGS=>"",
MESG_FROMSESSION=>"",
MESG_FROMID=>0,
MESG_FROMAVATAR=>"",
MESG_TO=>"",
MESG_TOSESSION=>"",
MESG_TOID=>"",
MESG_BODY=>"<font color=\"$def_color\">".str_replace("*", $toVote, str_replace("~", $cause, $w_vote_banned))."</font>");
include($engine_path."messages_put.php");
if (count($to_ban)>0) {
include($ld_engine_path."admin.php");
}
if ($logging_ban) {
include_once($data_path."engine/files/log_message.php");
log_ban($cu_array[USER_NICKNAME],
$banuser_array[USER_CANONNICK],
$banuser_array[USER_IP],
$banuser_array[USER_ROOM], $cause);
}
}
}
break;
}
break;
}
include($file_path."designes/".$design."/output_page.php");
echo "</div>";
include($file_path."designes/".$design."/common_body_end.php");?>
Обновить: <a></a><head><a href="#" onclick="location.reload()"><img src="<?=$current_design?>grunge/ref.gif" alt="Обновить" border="0">
---------------------------------
меняем в нем строки полный/путь/к/data/vote/vote.dat на свои, их 4 штуки
обратите внимание на строки 3,4,18, 175
==========================================
создаем файл data/engine/mysql/users_ban.php с таким содержанием
<?php
if (!defined("_COMMON_")) {echo "stop";exit;}
include_once($ld_engine_path."inc_connect.php");
$time = time();
mysql_query("INSERT INTO ".$mysql_table_prefix."ban_vote VALUES(NULL, '$toVote', '1', '$who_banned', '$cause', $time)") or die("database error<br>".mysql_error());
?>
=============================================
создаем таблицу:
CREATE TABLE `voc2_ban_vote` (
`id` int(10) unsigned NOT NULL auto_increment,
`ban_name` varchar(15) NOT NULL default '',
`votes` int(5) NOT NULL default '0',
`voters` text NOT NULL,
`cause` varchar(100) NOT NULL default '',
`time` varchar(12) NOT NULL default '',
PRIMARY KEY (`id`)
);
================================================
отдельный флаг:
в admin_navi.php впихиваем :
if ($current_user->user_class & ADM_USERS_BAN) $admin_navi[count($admin_navi)] = array("title"=>kick, "link"=>$chat_url."users_ban.php?&session=".$session);
------------------------------------------------
в inc_common.php вставляем
define('ADM_USERS_BAN',524288);
//число меняем на свое
===================================================
и
$total_admin_levels = 20;
//тотал левел меняем на свой
==========================================
в языковый файл вставляем строки
$w_vote_banned = "Общими усилиями пользователей пользователь * исключен из чата. Причина исключения: ~";
$w_vote_for_ban = "kick";
$w_vote_no_cause = "Не выбрана причина. Вернитесь <a href=\"javascript:history.back('1')\">назад</a> и введите причину.";
$w_voting_organized = "<span class=\"ha\">Поставлено на голосование исключение из чата пользователя #.Вип персоны, если вы согласны с его исключением, проголосуйте за это (ссылка в меню \"kick\").Время голосования: 1 минута. Причина исключения: *</span>";
$w_now_has_votes = "Сейчас пользователь <b>#</b> имеет <b>*</b> голосов за исключение его из чата.<br>Для исключения из чата необходимо ~ голосов(а)";
$w_voting_title = "Голосование за исключение из чата";
$w_vote_exists = "Уже существует голосование против этого пользователя. Попробуем добавить ваш голос к существующим...";
$w_already_voted = "Ошибка. Вы уже голосовали против этого пользователя.";
$w_vote_accepted = "Ваш голос принят.";
$w_adm_level[ADM_USERS_BAN] = "Голосование за исключение";
===================================================
если хотите что б голосовали все то в chat/designes/ваш_диз/navibar.php
впихиваем :
<a href="javascript:;" onclick="javascript:open_win('users_ban.php?session=<?php echo $session;?>&op=choose', 'vote_for_ban');" class="jsnavi"><?php echo $w_vote_for_ban; ?></a>