<?
define("NO_USERLOAD",1);
include("__dima.php");
if (!defined('DIMA')) exit("??");
include_once("__other.php");
checkref();
mainsecure();
if (isset($ni)) $ni=substr(trim(@strip_tags($ni)),0,100);
$uni=ue(@$ni);
$hni=html(@$ni);
$formpreg="/^[\x20-\xFF]*$/";
unset($info);
function stop($msg) {
global $form, $sessf, $nick;
include("z-web-part1.php");
echo "<h3>Ошибка при заполнении формы:</h3><br>
<font color=red><b>$msg</b></font><br><br><br>";
echo "<form action=\"login.php\" method=\"post\">$sessf
<input type=\"hidden name=c\" value=\"reg\">";
//echo "<input type=hidden name=form[nick] value=\"".htmlspecialchars($form['nick'])."\">";
foreach ($form as $k=>$v) {
echo "\n<input type=hidden name=form[$k] value=\"".htmlspecialchars($form[$k])."\">";
}
echo "<input type=submit value='Нажмите сюда, чтобы вернуться к форме'></form>";
echo "<hr size=1 noshade>Не нажимайте кнопку 'НАЗАД' (BACK) в вашем браузере, т.к. ".
"уже введенные поля погут быть потеряны (из формы).".
"<br><br><br><br><br><br><br><br><br><br>";
include("z-web-part2.php");
exit;
}
if (!isset($c)) $c="";
switch ($c) {
case "":
include("z-web-part1.php");
$xmain="";
if ($s[1])
$xmain.="<li>Присутствие в чате: активизирован - сейчас вы в чате с ником <font color=blue><b>".html($s['nick'])."</b></font>";
else {
$xmain.="<li>Присутствие в чате: сейчас вы не в чате. ";
if ($s[2] && $s['authnick'])
$xmain.="<a href=$url[chatgo]?mynick=".ue($s['authnick'])."&mypass=&mysecure=$s[se]&js=1&antihack=$s[antihack_joinchat]$sess>".
"<b>Немедленно войти в чат »</b></a>";
}
$secure=&$GLOBALS['conf']['_secure']['rules'];
if ($secure[$s['se']]['httppass']) {
$xmain.="<li>Алгоритм защиты HTTP ключем: ";
if ($s['pr3cnt']<5) $xmain.="не работает";
else $xmain.="активен";
}
if ($s[2]) {
$xmain.="<li>Вы авторизованы под ником <font color=blue><b>$s[authnick]</b></font>: для входа в чат не обязательно вводить пароль";
if ($s[3])
$xmain.="<li><font color=red><b>Вы являетесь администратором чата с уровенем доступа <b>$s[3]</b></b></font>
<ul>
<li><a href='admin.php?$sess'>Администрирование</a> (+$admcmd[admin])
<li><a href='admin.php?c=chat$sess'>Основные настройки чата</a> (+$admcmd[admin_chat])
<li><a href='javascript:userlist()'>Кто в чате - доступна функция добавления банов</a> (+$admcmd[addban])
<li><a href='javascript:banlist()'>Banlist - список банов и их удаление </a> (+$admcmd[banlist]/+$admcmd[delban])
</ul>";
else
$xmain.="<li>Вы не администратор чата";
}
else
$xmain.="<li>Вы не авторизированы";
$xlogout=antihack("logout");
$xlogin="";
if ($s[2]) {
$xauthnick=ue($s['authnick']);
$xlogin2=@strval(plugrun('login_links',0,__FILE__,__LINE__));
$xlogin=xparse(skn("login_main2.html"));
}
$xstat="";
if ($conf['statgo']) {
needstat();
$xcreate=date("d.m.Y H:i",@$cstat['create']);
$xcreate2=floor(doubleval(time()-$cstat['create'])/(24*60*60));
$xdate=date("d.m.Y H:i",@$cstat['peaktime']);
$xnum=@$cstat['peak'];
$xx1=intval(@$cstat['djoin'][$statd1]);
$xx2=intval(@$cstat['djoin'][$statd]);
$xx3=intval(@$cstat['dcnt'][$statd1]);
$xx4=intval(@$cstat['dcnt'][$statd]);
$xx5=statval(intval(@$cstat['dsize'][$statd1]));
$xx6=statval(intval(@$cstat['dsize'][$statd]));
$xx7=statval(intval(@$cstat['size']));
$xstat=xparse(skn("login_stat.html"));
}
echo xparse(skn("login_main.html"));
include("z-web-part2.php");
break;
case "joins":
if (!$conf['statgo']) exit("Ведение статистики отключено");
needstat();
if (!count(@$cstat['joins'])) exit("Данных статистики еще нет - никто не входил в чат");
include("z-web-part1.php");
$flag=$s[3]>=$admcmd['ip']?1:0;
echo "<h3>Статистика</h3>".
backlinks(array('home','login'))."
<Center>
<b>Последние входы в чат</b>
<table border=0 cellspacing=1 cellpadding=2 class=table>
<tr class=ttr>
<td class=ttd width=3%>N</td>
<td class=ttd width=120>Ник</td>
<td class=ttd>Время</td>
<td class=ttd>Как давно</td>";
if ($flag)
echo "
<td class=ttd>Хост</td>
<td class=ttd>Доступ</td>
<td class=ttd>ID юзера</td>
<td class=ttd>ID компьютера</td>";
echo "</tr>";
$i=1;
foreach ($cstat['joins'] as $k=>$v) {
echo "<tr class=btr><td class=btd2".(($flag && !@empty($v[7]))?" rowspan=2":"").">$i</td>".
"<td class=btd2".(($flag && !@empty($v[7]))?" rowspan=2":"").">".
($v[5]?"<a href=$PHP_SELF?c=info&ni=".ue($v[0]).">".html($v[0])."</a></td>":html($v[0])).
"<td class=btd2>".date("d.m.Y H:i",$v[1])."</td>".
"<td class=btd2>".duration(time()-$v[1])."</td>";
if ($flag)
echo
"<td class=btd2>".html($v[3])."</td>".
"<td class=btd2>".($v[2]?$v[2]:'-')."</td>".
"<td class=btd2>$v[4]</td>".
"<td class=btd2>".@$v[6]."</td>".
(!@empty($v[7])?"</tr><tr class=btr><td class=btd colspan=99><Font class=s8>".html(@$v[7])." </font></td>":"");
echo "</tr>";
$i++;
}
echo "</table></center><P>";
if ($s[3]>=$admcmd['viewadminban']) {
echo "<Center>";
echo "<b>Последние отказы во входе из-за банов</b>";
if (count($cstat['joinsban'])) {
echo "<table border=0 cellspacing=1 cellpadding=2 class=table>
<tr class=ttr>
<td class=ttd>N</td>
<td class=ttd width=120>Ник</td>
<td class=ttd>Время</td>
<td class=ttd>Как давно</td>";
if ($s[3]>=$admcmd['ip'])
echo "
<td class=ttd>Хост</td>
<td class=ttd>Доступ</td>
<td class=ttd>ID юзера</td>
<td class=ttd>ID компьютера</td>";
echo "</tr>";
$i=1;
foreach ($cstat['joinsban'] as $k=>$v) {
echo "<tr class=btr><td class=btd2>$i</td>".
"<td class=btd2><a href=$PHP_SELF?c=info&ni=".ue($v[0]).">".html($v[0])."</a></td>".
"<td class=btd2>".date("d.m.Y H:i",$v[1])."</td>".
"<td class=btd2>".duration(time()-$v[1])."</td>";
if ($s[3]>=$admcmd['ip'])
echo
"<td class=btd2>".html($v[3])."</td>".
"<td class=btd2>".($v[2]?$v[2]:'-')."</td>".
"<td class=btd2>$v[4]</td>".
"<td class=btd2>".@$v[5]."</td>";
echo "</tr>";
$i++;
}
echo "</table><P>";
}
else {
echo "<br>Данных нет (никто не подошел под баны)<P>";
}
echo "</center>";
}
if ($s[3]>=$admcmd['viewadminban'])
echo "<small>Поля хост, доступ и un показываются администраторам +$admcmd[ip].
Таблица 'Последние баны' и эта фраза - администраторам +$admcmd[viewadminban].</small>";
include("z-web-part2.php");
break;
case "stats":
if (!$conf['statgo2'] || !$conf['statgo']) exit("Ведение расширенной статистики отключено");
needstat();
if (!count(@$cstat['dcnt'])) exit("Данных статистики еще нет - в чате никто ничего пока не сказал");
include("z-web-part1.php");
echo "<h3>Статистика</h3>
<small><<< <a href=./?$sess><b>вернуться на главную страницу</b></a> |
<a href='$PHP_SELF?$sess'><b>на страницу команд</b></a>
<P>
</small>
Сбор статистики с: ".date("d.m.Y H:i:s",$cstat['create'])."<br>
Всего входов в чат: $cstat[join]<br>
Максимум людей одновременно: $cstat[peak]<br>
Всего отослано сообщений: $cstat[cnt], размером ".statval($cstat['size'])."Byte<br>
Из них приватных: $cstat[cntpriv] (".@sprintf("%.1f",doubleval($cstat['cntpriv'])*100/$cstat['cnt'])."%)<br>
Всего отключений от чата - kick: $cstat[ban]<br>
Всего регистраций пользователей: $cstat[reg]
<P>
<center>
<b>Статистика за несколько последних дней и месяцев</b>
<table border=0 cellspacing=1 cellpadding=2 class=table>
<tr class=ttr>
<td class=ttd>N</td>
<td class=ttd>Дата (день)</td>
<td class=ttd style='font:8pt Verdana'> Входов </td>
<td class=ttd style='font:8pt Verdana'> Пик </td>
<td class=ttd style='font:8pt Verdana'> Фраз </td>
<td class=ttd style='font:8pt Verdana'>Их размер</td>
<td class=ttd style='font:8pt Verdana'> Банов </td>
<td class=ttd style='font:8pt Verdana'>Регистраций</td>
<td class=ttd style='font:8pt Verdana'>Человеко-часов</td>
</tr>
";
$n=1;
$keys=array_keys($cstat['dcnt']);
rsort($keys);
for ($i=0; $i<count($keys); $i++) {
$loginthis=$keys[$i];
$y=sprintf("%02d",floor($loginthis/10000))+2000;
$m=sprintf("%02d",floor($loginthis/100)%100);
$d=sprintf("%02d",$loginthis%100);
echo
"<tr class=btr>".
"<td class=btd2>$n</td>".
"<td class=btd2>$d.$m.$y</td>".
"<td class=btd2>".@intval($cstat['djoin'][$loginthis])."</td>".
"<td class=btd2>".@intval($cstat['dpeak'][$loginthis])."</td>".
"<td class=btd2>".@intval($cstat['dcnt'][$loginthis])."</td>".
"<td class=btd2>".@intval($cstat['dsize'][$loginthis])."</td>".
"<td class=btd2>".@intval($cstat['dban'][$loginthis])."</td>".
"<td class=btd2>".@intval($cstat['dreg'][$loginthis])."</td>".
"<td class=btd2>".sprintf("%02d час %02d мин",floor(@doubleval(@$cstat['dp5'][$loginthis])/12),((@intval(@$cstat['dp5'][$loginthis])%12)*5))."</td>".
"</tr>";
$n++;
}
echo "
<tr class=ttr>
<td class=ttd>N</td>
<td class=ttd>Месяц</td>
<td class=ttd style='font:8pt Verdana'>Входов</td>
<td class=ttd style='font:8pt Verdana'>Пик</td>
<td class=ttd style='font:8pt Verdana'>Фраз</td>
<td class=ttd style='font:8pt Verdana'>Их размер</td>
<td class=ttd style='font:8pt Verdana'>Банов</td>
<td class=ttd style='font:8pt Verdana'>Регистраций</td>
<td class=ttd style='font:8pt Verdana'>Человеко-часов</td>
</tr>";
$n=1;
$keys=array_keys($cstat['mcnt']);
rsort($keys);
$months=explode(' ',$rus_months);
for ($i=0; $i<count($keys); $i++) {
$loginthis=intval($keys[$i]);
$y=floor($loginthis/100)+2000;
$m=$loginthis%100;
echo
"<tr class=btr>".
"<td class=btd2>$n</td>".
"<td class=btd2>".$months[$m-1]." $y</td>".
"<td class=btd2>".@intval($cstat['mjoin'][$loginthis])."</td>".
"<td class=btd2>".@intval($cstat['mpeak'][$loginthis])."</td>".
"<td class=btd2>".@intval($cstat['mcnt'][$loginthis])."</td>".
"<td class=btd2>".@intval($cstat['msize'][$loginthis])."</td>".
"<td class=btd2>".@intval($cstat['mban'][$loginthis])."</td>".
"<td class=btd2>".@intval($cstat['mreg'][$loginthis])."</td>".
"<td class=btd2>".sprintf("%02d час %02d мин",floor(@doubleval(@$cstat['mp5'][$loginthis])/12),((@intval(@$cstat['mp5'][$loginthis])%12)*5))."</td>".
"</tr>";
$n++;
}
echo "</table>";
include("z-web-part2.php");
break;
case "login":
mainsecure();
if ($s[1]) exit("Нельзя проходить авторизацию, находясь в чате. Сначала выйдите из чата.");
if ($s[2] || $s[3]) {
refresh("$PHP_SELF?$sess",2,__FILE__,__LINE__);
exit("Вы уже авторизированы.<p>
<li><a href=$PHP_SELF?c=logout&gourl=0&antihack=".antihack("logout")."$sess>СНЯТЬ АВТОРИЗАЦИЮ</a>
<li><a href=$PHP_SELF?$sess>На страницу команд</a> (автопереход через 3 секунды)");
}
include("z-web-part1.php");
echo "<h3>Авторизация без входа в чат</h3>".
backlinks(array('home','login'))."<center>";
if (isset($error)) echo "<font color=red><b>Ник или пароль неверные.<br>Попробуйте еще раз...</b></font>";
echo "
<form name=enter action=$PHP_SELF>$sessf
<input type=hidden name=c value=slogin><br>
<b>Введите ваш ник: <input type=text size=14 name=nick value=\"".html($s['nick'])."\" class=itext>
пароль: <input type=password size=14 name=pass class=itext>
</b><input type=submit value='Login»' class=ibut></form></center><br>
<font class=s8>Примечание: воспользоваться авторизацией с паролем без входа в чат можно более удобным способом:
<li>введите на главной странице ваш логин и пароль
<li>нажмите Shift+Enter или мышкой кнопку 'Вход в чат', удерживая Shift
<li>вы окажетесь не в чате, а на странице команд/информации 'Команды'
</font><br><br>";
include("z-web-part2.php");
break;
case "slogin":
mainsecure();
checkref();
if ($s[1]) exit("нельзя проходить авторизацию, находясь в чате");
if ($s[2] || $s[3]) {
refresh("$PHP_SELF?$sess",3,__FILE__,__LINE__);
exit("Вы уже авторизированы.<p>
<li><a href=$PHP_SELF?c=logout&gourl=0&antihack=".antihack("logout")."$sess>СНЯТЬ АВТОРИЗАЦИЮ</a>
<li><a href=$PHP_SELF?$sess>На страницу команд</a> (автопереход через 3 секунды)");
}
if (!isset($nick) || !isset($pass)) exit('errL1488');
$nick=substr(pregtrim($nick),0,100);
$s['nick']=$nick;
if (!dbload($nick,$info) || !checkpass($pass,$info['pass'])) {
refresh("$PHP_SELF?$sess&c=login&error=1",0,__FILE__,__LINE__);
return;
}
$s[2]=1;
$s['authnick']=sl($nick);
if (count($info[11])) foreach ($info[11] as $k=>$v) $s[11][$k]=$v;
// если это админ, заводим флаг авторизованного админа
conf2admlist();
if (isset($admlist) && isset($admlist[$s['authnick']])) {
$s[3]=$admlist[$s['authnick']];
if ($adminfo[$s['authnick']]['dead']) {
$s[3]=0;
putlog2("admin login: $s[nick] ($s[host]), access=$s[3] (blocked)");
}
else
putlog2("admin login: $s[nick] ($s[host]), access=$s[3]");
}
else
$s[3]=0;
if ($s[3]==0 && (
@$info[11]['good']==3 ||
$conf['join']==2 && @$info[11]['good']!=0 && @$info[11]['good']!=1 ||
$conf['join']==3 && @$info[11]['good']!=1 ||
$conf['join']==4))
{
$s[3]=0;
$s[2]=0;
$s['authnick']='';
include("z-web-part1.php");
echo backlinks(array('login')).xparse(skn("deny_join.html"));
include("z-web-part2.php");
return;
}
include("src/secure_reset.php");
refresh("$PHP_SELF?$sess",0,__FILE__,__LINE__);
break;
case "logout":
checkhack("logout",__FILE__,__LINE__);
if (!empty($export_url_logout)) exit(refresh($export_url_logout,0,__FILE__,__LINE__));
needuser();
if ($s[1] && isset($user[$s['nick']])) {
include_once("src/misc.php");
loaduser(1);
quituser($s['nick'],'exit');
saveuser();
}
setcookie($cookie_name,"",1);
include_once("src/misc.php");
cleanident();
cleanident2();
$s['authnick']="";
echo "Все ваши временные данные очищены.<P><small><< <a href=./?$sess>Вернуться</a></small>";
if (isset($gourl)) switch ($gourl) {
case "0": refresh("$url[login]?c=login$sess",0,__FILE__,__LINE__); break;
case "1": refresh("./?$sess",0,__FILE__,__LINE__); break;
}
else refresh("$PHP_SELF?$sess",0,__FILE__,__LINE__);
break;
case "reg":
if ($conf['newreg']>0) {
$tmp="Извините, в настоящий момент вы не сможете воспользоваться данной страницей
и зарегистрировать нового пользователя. Это настройка администратора чата.<P>
Текущий статус: <i>сейчас регистрация ";
switch ($conf['newreg']) {
case 1:
exit("$tmp запрещена всем");
case 2:
if (!$s[2] || !$s['authnick'])
exit("$tmp разрешена только авторизованным пользователям (вошедшим с логин/паролем)");
break;
case 3:
if (!$s[2] || !$s['authnick'] || $s[3]<100)
exit("$tmp разрешена только администраторам уровня 100 и выше");
break;
case 4:
if (!$s[2] || !$s['authnick'] || $s[3]<900)
exit("$tmp разрешена только администраторам уровня 900 и выше");
break;
case 5:
if (!$s[2] || !$s['authnick'] || $s[3]<1000)
exit("$tmp разрешена только только администраторам уровня 1000");
break;
}
}
mainsecure();
if ($s[1]) exit("Нельзя проходить регистрацию, находясь в чате. Выйдите из чата, а потом перейдите к регистрации повторно.");
if ($GLOBALS['export']) exit(refresh($export_url_reg,0,__FILE__,__LINE__));
check_config_update();
plugrun('reg_before',null,__FILE__,__LINE__);
define("loginform",1);
include_once("src/login_form.php");
// если был сабмит
if (isset($onSubmit)) {
include_once("src/misc.php");
if (strlen($form['nick'])) check_reg_nick($form['nick'],$error);
}
// сгенерировать форму регистрации
$buf=loginform_show("src/form_loginform.txt",get_defined_vars());
// если это первая загрузка или были ошибки - показать форму
if (!isset($onSubmit) || isset($error)) {
include("z-web-part1.php");
echo "<h3>Регистрация нового пользователя</h3>";
echo "<small><<< <a href='./?$sess'><b>вернуться на главную страницу</b></a>
| <a href=$PHP_SELF?$sess><b>на страницу команд</b></a><P></small>";
echo $buf;
include("z-web-part2.php");
}
// если был пост и не было ошибок - зарегистрировать юзера
else {
plugrun('reg_after',null,__FILE__,__LINE__);
$form[11]=array(
"reg_ip"=>remoteaddr(),
"reg_time"=>time(),
);
if (dbload($form['nick'],$info)) err("errL1485");
dbsave($form['nick'],$form);
$s[2]=1;
$s[3]=0;
$s['authnick']=$form['nick'];
echo "<form name=x action='$PHP_SELF' method='post'>$asessf
<input type=hidden name=c value=\"reg_ok\">
<input type=hidden name=form[pass] value=\"".html($form['pass'])."\">
<input type=hidden name=form[nick] value=\"".html($form['nick'])."\">
</form><script>x.submit()</script>";
if ($conf['statgo']) {
loadstat(1);
@$cstat['reg']++;
@$cstat['dreg'][$statd]++;
@$cstat['mreg'][$statm]++;
savestat();
}
}
break;
case "reg_ok":
include("z-web-part1.php");
$xnick=ue($form['nick']);
$xcrypt_pass=urlencode(encrypt($form['pass'],$cookie_pass));
$xsecure=$s['se'];
$xjoinchat=antihack("joinchat");
echo xparse(skn("login_reg_ok.html"));
include("z-web-part2.php");
break;
case "forget":
mainsecure();
if ($GLOBALS['export']) exit(refresh($export_url_forget,0,__FILE__,__LINE__));
include("z-web-part1.php");
$xadminmail=str_replace("@","@",$conf['adminmail']);
$xadminmail=str_replace(".","<HETCnaMy".mt_rand(0,999999).">.",$xadminmail);
echo xparse(skn("login_forget.html"));
include("z-web-part2.php");
break;
case "sforget":
if ($GLOBALS['export']) exit(refresh($export_url_forget,0,__FILE__,__LINE__));
mainsecure();
function forget_exit($stop) {
global $PHP_SELF, $sess;
refresh("$PHP_SELF?$sess&c=forget_done",0,__FILE__,__LINE__);
if ($stop) exit();
}
//if (isset($s['mailtime']) && time()-$s['mailtime']<120) forget_exit();
//$s['mailtime']=time();
$ni=sl(strip_tags(substr(@trim($ni),0,100)));
$email=sl(strip_tags(substr(@trim($email),0,500)));
if (!isset($ni) || pregchecknick($ni)!="ok") forget_exit(1);
$mail="";
$info=array();
if (@dbload($ni,$info)!==true) exit("Пользователя с таким ником не существует.");
if (isset($info['mail'])) $mail=$info['mail'];
if ($mail=="") return;
if ($info['forget']!=1) exit("Пользователь запретил отправку писем с паролями по почте.");
if (sl($mail)!=$email) forget_exit(1);
forget_exit(0);
$html=myfile(skn("login_mail.html"));
$html=str_replace("[pass]",$info['pass'],$html);
$html=str_replace("[data]",date("d/m/Y H:i:s"),$html);
$html=str_replace("[ref]",html(getenv('HTTP_REFERER')),$html);
$html=str_replace("[www]",'http://'.getenv('HTTP_HOST').getenv('SCRIPT_NAME'),$html);
$html=str_replace("[ip]",remoteaddr(),$html);
$html=str_replace("[dns]",mygethostbyaddr(remoteaddr()),$html);
$html=str_replace("[proxy1]",html(getenv('HTTP_CLIENT_IP')),$html);
$html=str_replace("[proxy2]",html(getenv('HTTP_X_FORWARDED_FOR')),$html);
$html=str_replace("[proxy3]",html(getenv('HTTP_VIA')),$html);
$html=str_replace("[brouser]",user_agent(),$html);
$smail=new html_mime_mail();
$smail->add_html($html);
$smail->build_message('w');
$smail->send('',$mail,$conf['adminmail'],"Your password from chat.php.spb.ru");
putlog("mail send to $mail, nick=$ni, ip=".remoteaddr().", ref=".
getenv('HTTP_REFERER').", browser=".user_agent().
", proxy=".getenv('HTTP_VIA'));
break;
case "forget_done":
if ($GLOBALS['export']) exit(refresh($export_url_forget,0,__FILE__,__LINE__));
include("z-web-part1.php");
echo xparse(skn("login_forget2.html"));
include("z-web-part2.php");
break;
case "info":
mainsecure();
include("z-web-part1.php");
echo "<h3>Просмотр информации о зарегистрированных пользователях</h3>";
echo "<small><<< <a href='./?$sess'><b>вернуться на главную страницу</b></a>
| <a href=$PHP_SELF?$sess><b>на страницу команд</b></a><P></small>";
include_once("__other.php");
if (!isset($ni)) $ni="";
login_info($ni);
include("z-web-part2.php");
break;
case "useredit":
mainsecure();
needuser();
if ($GLOBALS['export']) exit(refresh($export_url_useredit,0,__FILE__,__LINE__));
if (!$s[2] || $s['authnick']=="") exit("Вы не авторизованы, необходимо <A href=$url[login]?c=login$sess>войти с паролем</a>.");
define("loginform",1);
include_once("src/login_form.php");
$obj=unserialize(myfile("src/form_loginform.txt"));
conf2admlist();
$ni=sl(strip_tags(@substr($ni,0,100)));
if (sl($ni)!=sl($s['authnick']) && $s[3]<$GLOBALS['admcmd']['useredit']) {
echo "<center><br><br><h1>Access Denied</h1><img src=im/access_denied.jpg><br><br></center>";
return;
}
if (sl($ni)!=sl($s['authnick']) && isset($admlist[$ni]) &&
$s[3]>=$GLOBALS['admcmd']['useredit'] && $s[3]<=$admlist[$ni] && $s[3]<1000)
{
exit("Хоть вы и админ уровня $s[3], но не иметее право редактировать регистрационную
информацию пользователям с таким же или более высоким доступом.");
}
if (sl($s['authnick'])===$ni) $isme=1; else $isme=0;
if (!$isme) putlog2("login.php/редактирование анкеты юзера $ni (by $s[authnick], $s[3], $s[host], $s[0])");
if (!dbload($ni,$info)) {
echo "<br><br><br>пользователь <font color=blue><b>$ni</b></font> не найден<br><br><br>";
return;
}
include("z-web-part1.php");
unset($obj['nick']);
unset($obj['pass']);
unset($obj['pass2']);
if (!isset($onSubmit)) $form=$info;
$newantihack=getantihack();
$form_html="
<input type=hidden name=c value=\"useredit\">
<input type=hidden name=ni value=\"".html($ni)."\">
<input type=hidden name=antihack value=\"$newantihack\">";
$buf=loginform_show($obj,get_defined_vars());
if (!isset($onSubmit) || isset($error)) {
$s["antihack_L1"]=$newantihack;
echo "<h3>Изменение регистрационных данных пользователя <font color=blue><b>$info[nick]</b></font></h3>
<small><<< <b><a href=./?$sess>вернуться на главную страницу</a></b>
| <a href=$PHP_SELF?$sess><b>на страницу команд</b></a>
| <b><a href=$PHP_SELF?c=info&ni=".ue($ni)."$sess>искать другого пользователя</a></b>
</small><P>";
echo $buf;
echo adminlinks($ni);
}
else {
if ($s["antihack_L1"]!=$antihack) exit("<a href=help.php?help=5>errL442: HackDetect: $antihack</a>");
$form['nick']=$info['nick'];
$form['pass']=$info['pass'];
$form[11]=$info[11];
dbsave($ni,$form);
refresh("$url[login]?c=info&ni=".ue($ni)."$sess",3,__FILE__,__LINE__);
echo "
<h3>Запись изменена!</h3><br><br>
<li><a href=$url[login]?c=useredit&ni=".ue($ni)."$sess>Повторное редактирование пользователя</a><br><br>
<li><a href=$url[login]?c=info&ni=".ue($ni)."$sess>Информация о пользователе</a>
(через 3 секунды авто переход)<br><br>
<li><a href=./?$sess>На главную страницу</a><br><br>
<br><br>";
$ni=finduser($ni);
if ($ni!==false && isset($user[$ni])) {
loaduser(1);
$user[$ni]['sex']=intval($form['sex']);
saveuser();
$s['sex']=intval($form['sex']);
}
}
include("z-web-part2.php");
break;
case "userpass":
mainsecure();
needuser();
if ($GLOBALS['export']) exit(refresh($export_url_userpass,0,__FILE__,__LINE__));
include("z-web-part1.php");
$ni=strip_tags(trim(@substr($ni,0,100)));
if (sl($ni)==sl($admfirst) && $s['authnick']!==sl($admfirst)) exit("Сменить пароль владельцу чата нельзя. Только он сам может изменить свой пароль.<P>");
$xnick=html($ni);
$enick=ue($ni);
$xantihack=antihackform("L2");
echo xparse(skn("login_userpass.html"));
if (sl($ni)!=sl($s['authnick']) && $s[3]>=$GLOBALS['admcmd']['usernewpass']) {
echo "<P>В данный момент вы пытатесь сменить пароль другому пользовалю.
Поэтому в поле СТАРЫЙ ПАРОЛЬ ничего не пишите.";
}
echo adminlinks($ni);
include("z-web-part2.php");
break;
case "userpass_post":
mainsecure();
needuser();
if ($GLOBALS['export']) exit(refresh($export_url_userpass,0,__FILE__,__LINE__));
if (!$s[2] || $s['authnick']=="") exit("Вы не авторизованы, необходимо <A href=$url[login]?c=login$sess>войти с паролем</a>.");
if ($s["antihack_L2"]!=$antihack) exit("<a href=help.php?help=5>errL442: HackDetect</a>");
if (sl($ni)==sl($admfirst) && $s['authnick']!==sl($admfirst)) exit("errL1459");
$ni_=strip_tags(@substr($ni,0,100));
$ni=sl($ni_);
conf2admlist();
if (sl($ni)!=sl($s['authnick']) && $s[3]<$GLOBALS['admcmd']['usernewpass']) {
exit("<center><br><br><h1>Access Denied</h1><img src=im/access_denied.jpg><br><br></center>");
}
if (sl($ni)!=sl($s['authnick']) && isset($admlist[$ni]) &&
$s[3]>=$GLOBALS['admcmd']['usernewpass'] && $s[3]<=$admlist[$ni] && $s[3]<1000)
{
exit("Хоть вы и админ уровня $s[3], но не иметее право менять пароль пользователям с
таким же или более высоким доступом.");
}
if (sl($s['authnick'])===$ni) $isme=1; else $isme=0;
if (!$isme) putlog2("login.php/смена пароля юзеру $ni (by $s[authnick], $s[3], $s[host], $s[0])");
if (!dbload($ni,$info)) {
exit("Пользователь [$ni] не найден");
}
if (sl($pass2)!==sl($pass3)) {
alert("Новые пароли не совпадают. Придумайте и два раза введите новый пароль в два поля.");
refresh("$url[login]?c=userpass&ni=".ue($ni)."$sess",0,__FILE__,__LINE__);
return;
}
if ($s[3]<$GLOBALS['admcmd']['usernewpass'] || sl($ni)==sl($admfirst)) {
if (sl($pass1)!==sl($info['pass'])) {
alert("Старый пароль введен не верно.");
refresh("$url[login]?c=userpass&ni=".ue($ni)."$sess",0,__FILE__,__LINE__);
return;
}
}
if (strlen($pass2)<3 || strlen($pass2)>100) {
alert("Новый пароль должен быть от 3 до 100 символов длины.");
refresh("$url[login]?c=userpass&ni=".ue($ni)."$sess",0,__FILE__,__LINE__);
return;
}
$info['pass']=sl($pass2);
dbsave($ni,$info);
refresh("$url[login]?c=info&ni=".ue($ni_)."$sess",0,__FILE__,__LINE__);
break;
case "userdelete":
mainsecure();
needuser();
if ($GLOBALS['export']) exit(refresh($export_url_userdelete,0,__FILE__,__LINE__));
include("z-web-part1.php");
$ni=strip_tags(@substr($ni,0,100));
if (sl($ni)==sl($admfirst)) exit("Удалять владельца чата нельзя<P>");
echo "
<h3>Удаление пользователя</h3>
<small><<< <b><a href=./?$sess>вернуться на главную страницу</a></b>
| <b><a href=$PHP_SELF?c=info&ni=".ue($ni)."$sess>искать другого пользователя</a></b>
</small><P>
<br><br><br>
<center><font color=red><b>Действительно удалить: $ni?</b></font>
<form action=\"$url[login]\" method=\"post\">$sessf
<input type=hidden name=antihack value=\"".antihack("L3")."\">
<input type=hidden name=c value=\"userdelete_post\">
<input type=hidden name=ni value=\"".html($ni)."\">
<input type=submit value='Удалить'>
</form>
<a href=./?$sess>Отменить удаление</a>
</center><br><br><br>";
include("z-web-part2.php");
break;
case "userdelete_post":
mainsecure();
needuser();
if ($GLOBALS['export']) exit(refresh($export_url_userdelete,0,__FILE__,__LINE__));
if (!$s[2] || $s['authnick']=="") exit("Вы не авторизованы, необходимо <A href=$url[login]?c=login$sess>войти с паролем</a>.");
if ($s["antihack_L3"]!=$antihack) exit("<a href=help.php?help=5>errL442: HackDetect</a>");
$ni=sl(strip_tags(@substr($ni,0,100)));
conf2admlist();
if ($ni==sl($admfirst)) exit("Удалять владельца чата нельзя");
if (sl($ni)!=sl($s['authnick']) && $s[3]<$GLOBALS['admcmd']['userdelete']) {
exit("<center><br><br><h1>Access Denied</h1><img src=im/access_denied.jpg><br><br></center>");
}
if (sl($ni)!=sl($s['authnick']) && isset($admlist[$ni]) &&
$s[3]>=$GLOBALS['admcmd']['userdelete'] && $s[3]<=$admlist[$ni] && $s[3]<1000)
{
exit("Хоть вы и админ уровня $s[3], но не иметее право удалять пользователей с
таким же или более высоким доступом.");
}
if (sl($s['authnick'])===$ni) $isme=1; else $isme=0;
if (!$isme) putlog2("login.php/удаление юзера $ni (by ".mysmask().")");
if (!dbload($ni,$info)) {
exit("Пользователь [$ni] не найден");
}
dbremove($ni);
if (sl($ni)==sl($s['authnick'])) {
if (isset($user[$s['nick']])) {
include_once("src/misc.php");
loaduser(1);
quituser($s['nick'],"User removed by himself (from users database!)");
saveuser();
}
session_destroy();
}
else {
foreach ($user as $k=>$v) {
if (sl($k)==$ni) {
include_once("src/misc.php");
loaduser(1);
quituser($k,"User removed by $s[nick] (from users database!)");
saveuser();
break;
}
}
}
refresh("$url[login]?c=info&ni=".ue($ni)."$sess",0,__FILE__,__LINE__);
break;
case "setup":
mainsecure();
needuser();
if (!isset($ni) || !is_string($ni)) exit("errL828");
if ($s[2]!=1 || $s['authnick']=="") {
include(skn("__skin1.php"));
echo frame1()."Персональные настройки чата".frame2().
"Вы не авторизованы. Настройки чата
доступны только зарегистрированным пользователям.
Настройки дают возможность изменить много полезных опций
и сделать пребываение в чате более комфортным.
Настройки сохраняются на сервере и будут доступны вам с любого
компьютера, где вы подключетесь и войдете в чат.<P>
Чтобы попасть на страницу настроек:<P>
<li>нажмите <ВЫХОД> (внизу справа) и покиньте чат
<li>на главной странице чата выберите <РЕГИСТРАЦИЯ> и зарегистрируйтесь
<li>войдите в чат, введя ваш ник и пароль".frame3();
exit;
}
$jsclose=@intval($jsclose);
$ni=strip_tags(@substr($ni,0,100));
$ni_=$ni;
$ni=sl($ni);
conf2admlist();
if (sl($s['authnick'])===$ni) $isme=1; else $isme=0;
if (!$isme && $s[3]<$GLOBALS['admcmd']['useredit']) {
echo "<center><br><br><h1>Access Denied</h1><img src=im/access_denied.jpg><br><br></center>";
return;
}
if (!$isme && isset($admlist[$ni]) &&
$s[3]>=$GLOBALS['admcmd']['useredit'] && $s[3]<=$admlist[$ni] && $s[3]<1000)
{
exit("Хоть вы и админ уровня $s[3], но не иметее право редактировать личные настройки
пользователям с таким же или более высоким доступом.");
}
if (!$isme) putlog2("login.php/настройки юзера $ni (by $s[authnick], $s[3], $s[host], $s[0])");
if (!dbload($ni,$info)) {
echo "<br><br><br>пользователь <font color=blue><b>$ni_</b></font> не найден<br><br><br>";
return;
}
include_once(skn("__skin1.php"));
// шрифт ника
$lf_font_key=array();
$lf_font_var=array();
foreach ($listmain_f as $k=>$v) {
$lf_font_key[]=$k;
$lf_font_var[]="<OPTIONHTML>style='font: 10pt $v'</OPTIONHTML>$v";
}
// размер ника
$lf_ns_key=array();
$lf_ns_var=array();
for ($i=$listnick_s1; $i<=$listnick_s2; $i++) {
$lf_ns_key[]=$i;
$lf_ns_var[]="{$i}pt";
}
// цвет ника
$lf_nct_key=array();
$lf_nct_var=array();
foreach ($listnick_ct as $k=>$v) {
$lf_nct_key[]=$k;
$lf_nct_var[]="<OPTIONHTML>style='background:$v'</OPTIONHTML>";
}
// цвет фона ника
$lf_ncf_key=array();
$lf_ncf_var=array();
foreach ($listnick_cf as $k=>$v) {
$lf_ncf_key[]=$k;
$lf_ncf_var[]="<OPTIONHTML>style='background:$v'</OPTIONHTML>";
}
// размер сообщений
$lf_ts_key=array();
$lf_ts_var=array();
for ($i=$listtext_s1; $i<=$listtext_s2; $i++) {
$lf_ts_key[]=$i;
$lf_ts_var[]="{$i}pt";
}
// цвет сообщений
$lf_tct_key=array();
$lf_tct_var=array();
foreach ($listtext_ct as $k=>$v) {
$lf_tct_key[]=$k;
$lf_tct_var[]="<OPTIONHTML>style='background:$v'</OPTIONHTML>";
}
// цвет фона сообщений
$lf_tcf_key=array();
$lf_tcf_var=array();
foreach ($listtext_cf as $k=>$v) {
$lf_tcf_key[]=$k;
$lf_tcf_var[]="<OPTIONHTML>style='background:$v'</OPTIONHTML>";
}
// названия скинов
$lf_skins_k=array();
$lf_skins_v=array();
foreach ($skinlist as $k=>$v) {
if ($s[3]>=$v[0]) {
$lf_skins_k[]=$k;
$lf_skins_v[]=$v[1];
}
}
$xnick=html($ni_);
// загрузка анкеты юзера
load_s_file(0,"obj","src/form_setup.txt","buf2");
// удаление запрещенных для редактирования полей
foreach ($nickcss_vars as $k=>$v) {
if ($s[3]<$admcmd[$v]) unset($obj[$v]);
}
if ($s[3]<$admcmd['my_status']) unset($obj['my_status']);
if ($s[3]<$admcmd['usersetup']) unset($obj['good']);
$finduser=finduser($ni);
if ($finduser!==false) $inchat=1; else $inchat=0;
// сохранение старых значений полей для определения, не изменились ли они
$old_status="";
if ($finduser!==false && !empty($user[$finduser]['my_status'])) $old_status=$user[$finduser]['my_status'];
$is_status=0;
$old_tct=$s[11]['tct'];
$is_tct=0;
$old_skin=$s['skin'];
$is_skin=0;
// загрузка библиотеки phpLoginForm
define("LF_BLUR",1);
define("loginform",1);
include_once("src/login_form.php");
$LOAD=array();
// если не было сабмита
if (!isset($onSubmit)) {
$LOAD=$info[11];
}
// основная обработка формы
$buf=loginform_show($obj,get_defined_vars(),$LOAD);
if (!isset($onSubmit) || isset($error)) {
$frame1=frame1();
$frame2=frame2();
$frame3=frame3();
$xauthnick=ue($s['authnick']);
$xhelp=morehelp('',xparse(skn("login_setup_help.html")));
if ($jsclose) {
$xlinks=adminlinks($ni,"_blank");
echo xparse(skn("login_setup.html"),"",get_defined_vars());
}
else {
include("z-web-part1.php");
echo "<h3>Персональные настройка чата пользователя
<font color=blue><b>".html($info['nick'])."</b></font></h3>
<small><<< <b><a href=./?$sess>вернуться на главную страницу</a></b>
| <b><a href=$PHP_SELF?$sess>на страницу команд</a></b><P></small>
<center>
<table width=80% border=0 cellspacing=0 cellpadding=0><tr><td>";
echo $buf;
echo "</td></tr></table>";
echo adminlinks($ni);
include("z-web-part2.php");
}
}
else {
if (isset($form['my_status'])) strip_tags($form['my_status']);
if (isset($form['my_infomsg'])) strip_tags($form['my_infomsg']);
//$form['my_status']=@trim($form['my_status']);
//$form['mymsg_blink']=intval($form['mymsg_blink']);
//$form['msgforme_blink']=intval($form['msgforme_blink']);
foreach ($form as $k=>$v) $info[11][$k]=$v;
//dbsave($ni,$info);
include_once("__other.php");
statusload();
userload(1);
$head_refresh=0;
$total_refresh=0;
//
// Персональный статус
//
if (isset($obj['my_status']) && $old_status!=$form['my_status']) {
if ($inchat) {
$user[$finduser]['my_status']=$form['my_status'];
if (empty($form['my_status'])) cmsg_status($finduser,$confstatus[0]);
else cmsg_status($finduser,$form['my_status']);
write_www_sess($finduser);
}
if ($isme) $s['my_status']=$form['my_status'];
}
//
// Цвет текстовых сообщений
//
if ($isme) {
if ($old_tct!=$form['tct']) $head_refresh=1;
foreach ($info[11] as $k=>$v) $s[11][$k]=$v;
$x=explode("|",$s['nickcss']);
foreach ($nickcss_vars as $k=>$v) {
$x[$k]=@strval($form[$v]);
if ($s[3]<$admcmd[$v] || $x[$k]==-1) $x[$k]="";
}
$s['nickcss']=implode("|",$x);
if ($inchat) $user[$finduser]['nickcss']=$s['nickcss'];
}
else {
$x=array();
foreach ($nickcss_vars as $k=>$v) {
$tmp=@strval($info[11][$v]);
if ($tmp==-1) {
$tmp="";
unset($info[11][$v]);
}
$x[]=$tmp;
}
$x=implode("|",$x);
if ($inchat) $user[$finduser]['nickcss']=$x;
}
//
// Скин
//
if (strpos($form['skin'],"/")===true || strpos($form['skin'],".")===true) exit("errL803: hackdetect");
if ($old_skin!=$form['skin']) {
if ($inchat) {
$user[$finduser]['skin']=$form['skin'];
if ($isme) {
$s['skin']=$form['skin'];
if ($jsclose) $total_refresh=1;
}
}
}
dbsave($ni,$info);
usersave();
//
// Синхронизация с JS переменными:
//
if ($isme && $inchat && !empty($jsclose)) {
echo "<script>";
echo "opener.mymsg_blink=$form[mymsg_blink];\n";
echo "opener.msgforme_blink=$form[msgforme_blink];\n";
echo "opener.my_timeshow=$form[my_timeshow];\n";
if (@intval($s[11]['events'])>1 || !$conf['eventsgo'])
echo "opener.eventsgo=0; opener.startevent=0; ".
"opener.frames.more.document.more_form.stopevent.checked=false\n";
//"try{parent.frames.more.document.more_form.stopevent.checked=false;}catch(_err){}\n";
else
echo "opener.eventsgo=1; opener.startevent=1; ".
"opener.frames.more.document.more_form.stopevent.checked=true\n";
//"try{parent.frames.more.document.more_form.stopevent.checked=true;}catch(_err){}\n";
if (isset($obj['my_status']) && $old_status!=$form['my_status'])
echo "try{opener.frames.more.location.reload()}catch(_E){}\n";
echo "</script>";
}
if ($head_refresh && !empty($jsclose))
echo "<script>opener.frames.head.location=opener.frames.head.location;</script>";
if ($total_refresh && !empty($jsclose)) {
echo "<script>opener.location.href=opener.location.href;</script>";
}
if (isset($ButtonType) && $ButtonType) {
refresh("$PHP_SELF?c=setup&ni=".html($ni_)."&jsclose=".@intval($jsclose).$sess,0,__FILE__,__LINE__);
}
else {
if (!empty($jsclose)) {
echo "<script>opener.set_focus(); window.close();</script>";
}
else {
refresh("$url[login]?c=info&ni=".html($ni_)."$sess",0,__FILE__,__LINE__);
}
}
}
break;
case "event":
if (!$conf['eventsgo']) exit("Извините, функция отключена");
if (!$s[2]) exit("Извините, данная страница доступна только <a href=$PHP_SELF?c=reg$sess>зарегистрированным</a> пользователям");
if (empty($ni)) $ni=$s['authnick'];
if (!@check_operation($ni,false,false,false,"usersetup","звуки-сигналы-спецэффекты",$info,$isme))
exit("errL1169");
mainsecure();
$ni=strip_tags(@substr($ni,0,100));
include("z-web-part1.php");
include_once("src/cnfvar.php");
echo "<h3>Настройка звуков, сигналов и спецэффектов на разные события чата для <font color=blue><b>$info[nick]</b></font>
(<a href=help.php?help=9$sess>справка</a>)</h3>";
echo "<small><<< <a href='./?$sess'><b>вернуться на главную страницу</b></a>
| <a href=$PHP_SELF?$sess><b>на страницу команд</b></a><P></small>";
$soundpath=dellastslash($soundpath);
$tmp=array_keys($eventsinf);
$etype=html(@substr($etype,0,16));
if (empty($etype)) $etype=$tmp[0];
if (!isset($eventsinf[$etype])) exit("errL1228: HackDetect");
if (@strlen($info[11]["e_{$etype}_snd"])==0) $loginthis="";
elseif (isset($info[11]["e_{$etype}_snd"])) $loginthis=$info[11]["e_{$etype}_snd"];
if (!isset($info[11]["e_{$etype}_snd"])) $loginthisdef=$conf['_event']['main'][$etype.'u'][$eventsprm['snd'][0]];
if (!is_dir($soundpath)) exit("Не найден каталог <b>$soundpath</b>");
$dir=opendir("$soundpath") or exit("Ошибка открытия $soundpath");
$files=array();
while (($fn=readdir($dir))!==false) {
if (!preg_match("~(.+)\.($soundext)$~is",$fn,$ok)) continue;
$files[$fn]=array(filesize("$soundpath/$fn"), filemtime("$soundpath/$fn"), $ok[1]);
}
if (count($files)==0) {
echo "<br><br><br>В каталоге $soundpath не найдены звуковые файлы<br><br><br>";
include("z-web-part2.php");
return;
}
ksort($files);
echo "<form action=\"$PHP_SELF\" method=\"post\" name='enter'>
<input type=hidden name=c value=\"event_post\">
<input type=hidden name=antihack value=\"".antihack("L5")."\">
<input type=hidden name=ni value=\"".html($ni)."\">
<b>Выберите тип события:</b>
<select name=etype size=1 class=isel
onChange=\"location.href='$PHP_SELF?c=event&ni=".ue($ni)."&jsclose=0&etype='+document.enter.etype.options[document.enter.etype.selectedIndex].value+'{$sess}'\">";
foreach ($eventsinf as $k=>$v) {
echo "<option value='$k'".($etype==$k?" selected":"").">$v[0]</option>";
}
echo "</select><P>
Описание текущего выбранного события:
<ul>
<i><u>{$eventsinf[$etype][1]}</u></i>
</ul>
<P>
<center><b>Выберите необходимые спецэффексты при наступлении данного события.</b> ".
morehelp("","
Слова 'Вкл/Откл', написанные наклонным шрифтом, являются значениями по-умолчанию
(если вы их никак не выбирали), а жирным - выбранные вами значения для себя.
По-умолчанию любое значение можеть быть либо включенным, либо отключенным.
Ваш выбор перекроет это значение.
Если вы пользуетесь функцией 'История важных сообщений', обязательно включите
их запись, которая по-умолчанию может быть выключена.",0)."</center>
<table width=100% border=0 cellspacing=1 cellpadding=3 class=table>
<tr class=ttr>
<td style='writing-mode:tb-rl;font:9pt Verdana' class=ttd nowrap>По-умолчанию</td>
<td style='writing-mode:tb-rl;font:9pt Verdana' class=ttd>ТЕКУЩЕЕ<BR>ЗНАЧЕНИЕ</td>
<td style='writing-mode:tb-rl;font:9pt Verdana' class=ttd>ОТКЛЮЧИТЬ</td>
<td style='writing-mode:tb-rl;font:9pt Verdana' class=ttd>ВКЛЮЧИТЬ</td>
<td class=ttd width=90%>Список возможных реакций для выбранного в списке выше события</td>
</tr>";
$defval=$conf['_event']['main'][$etype.'u'];
foreach ($eventsprm as $k=>$v) {
if (!$v[1]) continue;
if (!empty($defval[$eventsprm[$k][0]])) $xinfo="<i><u>вкл</u></i>"; else $xinfo="<i>откл</i>";
if (isset($info[11]["e_{$etype}_$k"]))
if (!empty($info[11]["e_{$etype}_$k"])) $xinfo="<b><u>вкл</u></b>"; else $xinfo="<b>откл</b>";
echo "<tr class=btr>
<td class=btd2><input type=radio name=form_$k ".(!isset($info[11]["e_{$etype}_$k"])?"checked":"")." value=''></td>
<td class=btd2>$xinfo</td>
<td class=btd2><input type=radio name=form_$k ".(isset($info[11]["e_{$etype}_$k"]) && $info[11]["e_{$etype}_$k"]==0?"checked":"")." value='0'></td>
<td class=btd2><input type=radio name=form_$k ".(isset($info[11]["e_{$etype}_$k"]) && $info[11]["e_{$etype}_$k"]==1?"checked":"")." value='1'></td>
<td>$v[3]</td></tr>";
}
if (strlen($loginthis)==0) {
if (empty($defval[$eventsprm['snd'][0]])) $xinfo="<i>по-умолчанию - звук отключен</i>";
else $xinfo="<i>по-умолчанию - звук включен: $thisdef ".
"(<a href='#' onclick=\"go('$thisdef');return false;\">прослушать</a>)</i>";
}
else {
if ($loginthis==="0") $xinfo="<b>звук отключен</b>";
else $xinfo="<b>звук включен (<a href='#' onclick=\"go('$loginthis');return false;\">прослушать</a>)</b>";
}
echo "</table>";
echo "<P><center>
<b>Воспроизводить звуковой сигнал из *.WAV, *.MID и других файлов:</b>
<table border=0 cellspacing=1 cellpadding=2 class=table width=70%>
<tr class=ttr>
<td class=ttd>Выбор</td>
<td class=ttd>Файл</td>
<td class=ttd>Размер</td>
<td class=ttd>Описание</td>
<td class=ttd>Модификация</td>
<td class=ttd>Команды</td>
</tr>
<tr class=btr>
<td class=btd2 colspan=10>Текущее значение: $xinfo</td>
</tr>
<tr class=btr>
<td class=btd2><input type=radio name=sound value=\"\" ".($loginthis===""?"checked":"")."></td>
<td class=btd colspan=10>По-умолчанию</small></td>
</tr>
<tr class=btr>
<td class=btd2><input type=radio name=sound value=\"0\" ".($loginthis==="0"?"checked":"")."></td>
<td class=btd colspan=10>Отключить этот звук</td>
</tr>";
if (substr($loginthis,2)!="./" && $loginthis!=="0" && !empty($loginthis))
echo "
<tr class=btr>
<td class=btd2><input type=radio name=sound value=\"my\" checked></td>
<td class=btd colspan=4>Ввести произвольный URL:
<input type=text size=35 name=sndurl class=itext value='$loginthis'><br>
<span class=s8>Используйте звуки только со своего сайта! Не вписывайте
сюда ничего, если это вам кто-то посоветует в чате! Это
может быть очень опасно (см. справку).</span></td>
<td><a href='#' onclick=\"go('$loginthis');return false;\">прослушать</a><br>
<a href=help.php?help=9$sess>справка</a></td>
</tr>";
else
echo "
<tr class=btr>
<td class=btd2><input type=radio name=sound value=\"my\"></td>
<td class=btd colspan=4>Ввести произвольный URL:
<input type=text size=35 name=sndurl class=itext><br>
<span class=s8>
Используйте звуки только со своего сайта! Не вписывайте
сюда ничего, если это вам кто-то посоветует в чате, это
может быть опасно (см. справку).</span></td>
<td><a href=help.php?help=9$sess>справка</a></td>
</tr>";
foreach ($files as $k=>$v) {
$desc="описания нет";
if (file_exists("$soundpath/$v[2].txt")) $desc=myfile("$soundpath/$v[2].txt");
echo "
<tr class=btr>
<td class=btd2><input type=radio name=sound value=\"".html("$soundpath/$k")."\" ";
if ($loginthis=="$soundpath/$k") echo " checked ";
echo "></td>
<td class=btd>$k</td>
<td class=btd align=right>".statval($v[0])."</td>
<td class=btd>$desc</td>
<td class=btd2>".date("d.m.Y",$v[1])."</td>
<td class=btd2><a href='#' onclick=\"go('$soundpath/$k');return false;\">прослушать</a></td>
</tr>";
}
echo "</table>
<script>
function go(name) {
snd.src=name;
}
</script>
<bgsound src='' loop=1 id=snd>";
$kk="vol";
$xval="";
if (@strlen($info[11]["e_{$etype}_{$kk}"])==0) {
$xinfo=intval($defval[$eventsprm[$kk][0]])."% (по-умолчанию)";
}
else {
$xval=intval($info[11]["e_{$etype}_{$kk}"]);
$xinfo="<b>$xval%</b>";
}
echo "Громкость звука от 0 до 100:
<input type=text name=form_{$kk} value=\"$xval\" size=3 class=itext>%.
Текущее значение: $xinfo.<br>";
$kk="loop";
$xval="";
if (@strlen($info[11]["e_{$etype}_{$kk}"])==0) {
$xinfo=intval($defval[$eventsprm[$kk][0]])." (по-умолчанию)";
}
else {
$xval=intval($info[11]["e_{$etype}_{$kk}"]);
$xinfo="<b>$xval</b>";
}
echo "Сколько раз подряд играть звук:
<input type=text name=form_{$kk} value=\"$xval\" size=3 class=itext> раз.
Текущее значение: $xinfo.</center><P>";
if (@strlen($info[11]["e_{$etype}_time"])==0) {
$xval=intval($defval[$eventsprm['time'][0]]);
if (!$xval) $xinfo="<i>по-умолчанию - запускать спецэффекты каждый раз (постоянно)</i>";
else $xinfo="<i>по-умолчанию - запуск не чаще одного раза за $xval сек.</i>";
$xval="";
}
else {
$xval=intval($info[11]["e_{$etype}_time"]);
if (!$xval) $xinfo="<b>запускать спецэффекты каждый раз (постоянно)</b>";
else $xinfo="<b>запуск не чаще одного раза за $xval сек.</b>";
}
echo "<b><center>Защита от надоедливости.</center></b>
Воспроизводить спецэффекты не чаще одного раза в
<input type=text name=form_time value=\"$xval\"
size=10 class=itext> сек.<br>
Текущее значение: $xinfo. ".
morehelp("","
Введите число в секундах, означающих паузу. Введите 0 для постоянных запусков спецэффектов.
Очистите это поле, чтобы использовать настройку времени по-умолчанию.
В течении указанного кол-ва секунд чат будет игнорировть
повторно сработавшее событие, чтобы не слишком часто вас отвлекать.
В не зависимости от этого, сообщения таки будут сохраняться в истории,
если включена опция 'записывать важные сообщения'.",0).
"<P><center>
<input class=ibut type=submit value='Сохранить настройки для текущего события'>
<br>
После сохранения нажмите клавишу F5 в чате, для обновления всей страницы!
</center>
</form>
Данная страница призвана помочь вам <b>вовремя</b> обратить
внимание на чат, если там происходит что-то интересное.
Довольно часто бывает ситуация, когда вы работаете в
других окнах и не видите, что в чате кто-то вас разыскивает.
Для сигнализации используются все возможные методы - звуки,
мигания, новые окна и т.д. Для каждого типа события
вы можете выбрать методы оповещения, которые сочтете нужными.
При измении параметров необходимо перегружать окно чата.
На эту страницу можно быстро попасть из чата,
удерживая Shift и кликнув калочку 'Спецэффекты'.
<P><hr size=1 noshade>";
echo adminlinks($ni);
//pr($info);
include("z-web-part2.php");
break;
case "event_post":
if (!$conf['eventsgo']) exit("Извините, функция отключена");
mainsecure();
if (!check_operation($ni,1,"L5",false,"usersetup","смена звукового файла",$info,$isme)) exit("errL1167");
include_once("src/cnfvar.php");
$etype=html(@substr($etype,0,16));
if (!isset($eventsinf[$etype])) exit("err1230: HackDetect");
if ($sound=="my") $sound=$sndurl;
$sound=substr(preg_replace("![^a-z0-9/:.?%~ _-]!i","",str_replace("\\","/",@trim($sound))),0,500);
if (strlen($sound)==0)
unset($s[11]["e_{$etype}_snd"],$info[11]["e_{$etype}_snd"]);
else
$s[11]["e_{$etype}_snd"]=$info[11]["e_{$etype}_snd"]=$sound;
foreach ($eventsprm as $k=>$v) {
if ($v[2]!=2) continue;
$v=@trim($GLOBALS["form_$k"]);
if (strlen($v)==0)
unset($s[11]["e_{$etype}_$k"],$info[11]["e_{$etype}_$k"]);
else
switch ($k) {
case "vol":
$s[11]["e_{$etype}_$k"]=$info[11]["e_{$etype}_$k"]=max(min(abs(intval($v)),100),1);
break;
default:
$s[11]["e_{$etype}_$k"]=$info[11]["e_{$etype}_$k"]=min(abs(intval($v)),999999);
}
}
foreach ($eventsprm as $k=>$v) {
if ($v[2]!=1) continue;
if (isset($GLOBALS["form_$k"]) && strlen($GLOBALS["form_$k"])>0) {
if ($GLOBALS["form_$k"]=="1")
$s[11]["e_{$etype}_$k"]=$info[11]["e_{$etype}_$k"]="1";
else
$s[11]["e_{$etype}_$k"]=$info[11]["e_{$etype}_$k"]="0";
}
else
unset($s[11]["e_{$etype}_$k"],$info[11]["e_{$etype}_$k"]);
}
//exit(pr($sound).pr($_POST).pr($info[11]));
dbsave($ni,$info);
echo "<b>Сохранено!</b><br><br>
<li><a href=$PHP_SELF?$sess>Перейти на страницу команд</a><br><br>
<li><a href=$PHP_SELF?c=event&etype=$etype&ni=".ue($ni)."$sess><b><<< Вернуться на предыдущую страницу</b></a>
(через 2 сек)";
refresh("$PHP_SELF?c=event&etype=$etype&ni=".ue($ni)."$sess",2,__FILE__,__LINE__);
break;
default:
exit("\$c not set or unknown");
}
?>