header("Content-type: text/html; charset=koi8-r"); require ('config.php'); require ('lib.php'); start_timer(); $hash=substr($HTTP_GET_VARS["message"],0,128); $mode=substr($HTTP_GET_VARS["mode"],0,128); $subject=$HTTP_POST_VARS["subject"]; $reply=$HTTP_POST_VARS["reply"]; $toaddr=$HTTP_POST_VARS["toaddr"]; $toname=$HTTP_POST_VARS["toname"]; $text=$HTTP_POST_VARS["text"]; if ($HTTP_GET_VARS["area"]) { $area=strtoupper(substr($HTTP_GET_VARS["area"],0,128)); } else { $area="NETMAIL"; } connect_to_sql($sql_host,$sql_base,$sql_user,$sql_pass); fix_magic_quotes_gpc(); if ($HTTP_GET_VARS["logout"]) { logout($_COOKIE['SESSION']); } if ($HTTP_GET_VARS["login"]) { login($HTTP_POST_VARS["login"],$HTTP_POST_VARS["password"],$HTTP_POST_VARS["remember"]); exit; }else{ $point=check_session($_COOKIE['SESSION']); } //Получаем инфо о юзере $row = mysql_fetch_object(mysql_query("select * from `users` where point='$point'")); $myaddr=$mynode.".".$row->point; $myname=$row->name; if ($row->origin) { $myorigin=$row->origin; } else { $myorigin=$defaultorigin; } // Получаем права на эху. 4 - антиспам, 3 - rw, 2 - премодерация, 1 - ro, 0 - прав нет. $permission=get_area_permissions($area); if ($mode=="ansver" and $toname and ($area!="NETMAIL" or $toaddr)){ //пихаем сообщение в базу, в таблицу outbox. if ($permission=="3") { //полный доступ $hash=md5(rand()); mysql_query("insert into `outbox` set area='$area', fromname='$myname', toname='$toname', subject='$subject', text='$text', fromaddr='$myaddr', toaddr='$toaddr', origin='$myorigin', reply='$reply', date=now(), hash='$hash', sent='0', aprove='1';"); } elseif ($permission=="2") { //доступ с премодерацией $hash=md5(rand()); mysql_query("insert into `outbox` set area='$area', fromname='$myname', toname='$toname', subject='$subject', text='$text', fromaddr='$myaddr', toaddr='$toaddr', origin='$myorigin', reply='$reply', date=now(), hash='$hash', sent='0', aprove='0';"); } elseif ($permission=="4") { //доступ через антиспам $hash=md5(rand()); if (antispam($subject, $text)) { // возможно, спам. отправляем на премодерацию. mysql_query("insert into `outbox` set area='$area', fromname='$myname', toname='$toname', subject='$subject', text='$text', fromaddr='$myaddr', toaddr='$toaddr', origin='$myorigin', reply='$reply', date=now(), hash='$hash', sent='0', aprove='0';"); } else { // не спам. отправляем в эху. mysql_query("insert into `outbox` set area='$area', fromname='$myname', toname='$toname', subject='$subject', text='$text', fromaddr='$myaddr', toaddr='$toaddr', origin='$myorigin', reply='$reply', date=now(), hash='$hash', sent='0', aprove='1';"); } } else { // если права 1 или 0, значит прав на запись нет. mysql_query(" insert into `outbox` set area='NETMAIL', fromname='Sysop', toname='$fromname', subject='Нет прав на запись в эху', text=' Привет, $myname! К сожалению, у тебя нет прав на запись в $area. Письмо, которое не было отправлено: ======================================= AREA: $area FROM: $myname($myaddr) TO: $toname($toaddr) ======================================= $text * Origin: $myorigin ', fromaddr='$mynode', toaddr='$myaddr', origin='Bad robot', reply='', date=now(), hash='$hash', sent='0', aprove='1';"); } header ('HTTP/1.1 301 Moved Permanently'); header ('Location: ?area='.$area."&message=".$hash); exit; } elseif ($mode=="add_to_favorites"){ mysql_query("insert ignore into `favorites` set point='$point', message='$hash', uniq_index='$point-$hash';"); } elseif ($mode=="remove_from_favorites"){ mysql_query("delete from `favorites` where point='$point' and message='$hash';"); } print "
| "; if ($mode=="thread" or $mode=="tree") { print planka("thread"); } else { print planka("messages"); } print " | |||||||||||||||||||||||||||||||
|
";
//Рисуем список эх
//Нетмайл:
$result=mysql_query("select count(messages.area) as nummsg, unix_timestamp(max(messages.recieved)) as rec, unix_timestamp(view.last_view_date) as last_view_date from messages,view where messages.area='' and (messages.toaddr='$myaddr' or messages.fromaddr='$myaddr') and view.area='NETMAIL' and view.point='$point' group by view.area;");
//считаем количество сообщений
if (mysql_num_rows($result)){
$row = mysql_fetch_object($result);
$nummsg = $row->nummsg;
} else {
$nummsg="0";
}
//если эха выбрана, то выделяем ее цветом
if ($area=="NETMAIL") {
$class="selected";
} else {
$class="netmail";
if (($row->last_view_date - $row->rec) < 0){
$newmessages="*";
} else {
$newmessages="";
}
}
print "
NETMAIL ($nummsg) $newmessages \n"; //Карбонка: $result=mysql_query("select count(view.last_view_date) as nummsg, messages.area, unix_timestamp(messages.recieved) as rec, unix_timestamp(view.last_view_date) as last_view_date from messages,view where messages.toname='$myname' and messages.area!='' and view.area='CARBONAREA' and view.point='$point' group by view.last_view_date;"); $result2=mysql_query("select count(view.last_view_date) as nummsg, messages.area, unix_timestamp(messages.recieved) as rec, unix_timestamp(view.last_view_date) as last_view_date from messages,view where messages.fromname='$myname' and messages.area!='' and view.area='CARBONAREA' and view.point='$point' group by view.last_view_date;"); if (mysql_num_rows($result) or mysql_num_rows($result2)){ $row = mysql_fetch_object($result); $row2 = mysql_fetch_object($result2); $nummsg = $row->nummsg + $row2->nummsg; } else { $nummsg="0"; } if ($area=="CARBONAREA") { $class="selected"; $newmessages=""; } else { $class="carbonarea"; if ((($row->last_view_date - $row->rec) < 0) or (($row2->last_view_date - $row2->rec) < 0)){ $newmessages="*"; } else { $newmessages=""; } } print "CARBONAREA ($nummsg) $newmessages \n"; //Все остальные эхи: $result=mysql_query("select areas.area, areas.messages as nummsg, unix_timestamp(areas.recieved) as rec, unix_timestamp(view.last_view_date) as last_view_date from areas join subscribe left join view on (view.area=areas.area and view.point='$point') where subscribe.area=areas.area and subscribe.point='$point' order by areas.area;"); if (mysql_num_rows($result)) { while ($row = mysql_fetch_object($result)) { if ($area==strtoupper($row->area)) { $class="selected"; $newmessages=""; } else { $class="echo"; if (($row->last_view_date - $row->rec) < 0){ $newmessages="*"; } else { $newmessages=""; } } if ($mode=="thread" or $mode=="tree"){ print "area&mode=thread';return false\" style=\"cursor: pointer;\" class=\"$class\">area&mode=thread\" class=\"echo\">$row->area ($row->nummsg) $newmessages \n"; } else { print "area';return false\" style=\"cursor: pointer;\" class=\"$class\">area\" class=\"echo\">$row->area ($row->nummsg) $newmessages \n"; } } } //Outbox - уже написанные, но еще не отправленные письма. if ($area=="OUTBOX") { $class="selected"; } else { $class="outbox"; } print "\n"; //Favorites - избранное. if ($area=="FAVORITES") { $class="selected"; } else { $class="favorites"; } print "\n"; print " |
| \n";
if ($area=="OUTBOX"){
$query="select * from `outbox` where hash='$hash' and fromaddr='$myaddr' and sent='0';";
} else {
$query="select * from `messages` where hash='$hash';";
}
$result=mysql_query($query);
if (mysql_num_rows($result) or $mode=="new") {
$row = mysql_fetch_object($result);
//доделать: рисовать в шапке "new" и "reply" только в том случае, если права на запись в эху есть.
print "
|
";
}
}
//Оставляем метку с датой последнего просмотра эхи и указатель на последнее просмотренное письмо
set_area_last_view($area,$hash);
print "
| ||||||||||||||||||||||||||||