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 " Online FTN reader "; print ""; if ($permission or $area=="NETMAIL" or $area=="CARBONAREA" or $area=="FAVORITES" or $area=="OUTBOX") { // Рисуем тело письма 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 "

OUTBOX

\n"; //Favorites - избранное. if ($area=="FAVORITES") { $class="selected"; } else { $class="favorites"; } print "

FAVORITES

\n"; print "
"; } else { if ($permission or $area=="NETMAIL" or $area=="CARBONAREA" or $area=="FAVORITES" or $area=="OUTBOX") { //печатаем список писем в эхе $area_last_read_date=get_area_last_view($area); $last_viewed_message_hash=get_area_last_message($area); if ($area=="NETMAIL") { $query="select area,hash,fromname,toname,subject,date,unix_timestamp(recieved) as rec from `messages` where area='' and (fromaddr='$myaddr' or toaddr='$myaddr') order by rec desc"; } elseif ($area=="CARBONAREA") { $query="select area,hash,fromname,toname,subject,date,unix_timestamp(recieved) as rec from `messages` where (toname='$myname' or fromname='$myname')and area!='' order by rec desc"; } elseif ($area=="OUTBOX") { $query="select area,fromname,toname,fromaddr,toaddr,subject,date,hash from `outbox` where fromaddr='$myaddr' and sent='0' order by date desc"; } elseif ($area=="FAVORITES") { $query="select messages.area as area,messages.fromname as fromname,messages.toname as toname,messages.subject as subject,messages.date as data,messages.hash as hash from `messages` join `favorites` where messages.hash=favorites.message and point='$point' order by date desc"; } else { $query="select area,hash,fromname,toname,subject,date,unix_timestamp(recieved) as rec from `messages` where area='$area' order by rec desc"; } $row=mysql_fetch_object(mysql_query("select `limit` from `users` where `point`='$point';")); $user_limit=$row->limit; if ($user_limit) { $query=$query." limit $user_limit ;"; } else { $query=$query." ;"; } $result=mysql_query($query); if (mysql_num_rows($result)) { print "
\n"; // режим тредов. работает только для обычных эх. не работает для нетмайла, карбонки, избранного и исходящего. if (($mode=="thread" or $mode=="tree") and $area!="OUTBOX" and $area!="CARBONAREA" and $area!="FAVORITES" and $area!="NETMAIL"){ if ($permission) { //печатаем список тредов в эхе if (!$hash) { $hash=get_area_last_message($area); } print "\n"; $result=mysql_query("select thread from `messages` where hash='$hash';"); $thread_selected=""; if (mysql_num_rows($result)){ $row=mysql_fetch_object($result); $thread_selected=$row->thread; } $result=mysql_query(" select subject, hash, last_author_date as date, unix_timestamp(lastupdate) as rec, threads.thread as thread, last_author as fromname, unix_timestamp(last_view_date) as lastview, num from `threads` left join ( select * from `view_thread` where point='$point' and area='$area' ) s0 on (threads.thread=s0.thread) where threads.area='$area' order by lastupdate desc ;"); $header_text=" "; while ($row=mysql_fetch_object($result)){ if (!trim($row->subject)) {$row->subject="(no subject)";} if ($row->rec>$row->lastview and $row->thread==$thread_selected) { $class="newselected"; $header_text="$area: $row->subject"; $element_id=" name=\"selected\", id=\"selected\" "; } elseif ($row->rec>$row->lastview) { $class="new"; $element_id=""; } elseif ($row->thread==$thread_selected){ $class="selected"; $header_text="$area: $row->subject"; $element_id=" name=\"selected\", id=\"selected\" "; } else { $class="msglist"; $element_id=""; } print "hash&mode=thread';return false\" >\n"; } print "
hash&mode=thread\">".txt2html($row->subject)."$row->num$row->date ($row->fromname)
\n"; } else { $header_text="
у вас нет прав для просмотра этой эхоконференции, либо эхоконференция не существует.
"; } print "
$header_text
"; if ($permission) { //печатаем содержимое треда if ($mode=="tree"){ $result=mysql_query("select level from `messages` where hash='$hash' and area='$area';"); $row = mysql_fetch_object($result); $level_first=$row->level; } else {// $mode=="thread" $level_first=0; } $print_start=0; $thread=""; $hash_new=""; // если хотя бы одно новое сообщение есть, то запомним его в этой переменной. $result=mysql_query("select messages.hash,messages.level,messages.date,unix_timestamp(messages.recieved) as rec, messages.fromname,messages.fromaddr,messages.subject,messages.text,messages.thread, unix_timestamp(view_thread.last_view_date) as lastview from `messages` left join `view_thread` on (messages.thread=view_thread.thread and view_thread.point='$point' and view_thread.area='$area') where messages.thread = (select thread from `messages` where hash='$hash') and messages.area='$area' order by inthread;"); while ($row = mysql_fetch_object($result)){ $thread=$row->thread; $class="thread"; $display="none"; if (($row->hash==$hash and $mode=="tree") or $row->level=='0') { $print_start=1; } elseif ($row->level<=$level_first) { $print_start=0; } if ($row->rec>$row->lastview) { $class="threadnew"; $display="block"; if (!$hash_new) { $hash_new=$row->hash; } } elseif ($row->hash==$hash){ $display="block"; } print "
hash\" style='margin-left: ".($row->level)."0;' class=$class>
hash'); return false\">$row->date, $row->fromname ($row->fromaddr): $row->subject
\n"; print "
hash."_content\" style='display: $display;'>\n"; $text=split("\n", $row->text); print message2html($text); print "
\n
\n"; } // Устанавливаем метку со временем последнего просмотра треда. if ($thread){ set_thread_last_view($area, $thread); } } print "
\n"; while ($row = mysql_fetch_object($result)) { //если не указано, какое именно письмо нас интересует, то выбираем последнее просмотренное. //если последнее просмотренное не указано, то показывать будем первое же письмо if (!$hash and $last_viewed_message_hash) { $hash=$last_viewed_message_hash; } elseif (!$hash){ $hash=$row->hash; } //все письма с датой получения больше, чем дата последнего захода в эху, считаем новыми. и выделяем. //выделенное письмо (то на котором стоит "курсор") так же отмечаем if(($area_last_read_date - $row->rec) < 0 and $hash==$row->hash) { $class="newselected"; $element_id=" name=\"selected\", id=\"selected\" "; }elseif(($area_last_read_date - $row->rec) < 0) { $class="new"; $element_id=""; }elseif ($hash==$row->hash){ $class="selected"; $element_id=" name=\"selected\", id=\"selected\" "; } else { $class="msglist"; $element_id=""; } //собственно, печатем строчку с письмом. if (!trim($row->subject)) {$row->subject="(no subject)";} if ($area=="CARBONAREA") { print " \n"; } elseif ($area=="FAVORITES") { print " \n"; } elseif ($area=="OUTBOX"){ print " hash';return false\" style=\"cursor: pointer;\" $element_id> \n"; } else { print " area&message=$row->hash';return false\" style=\"cursor: pointer;\" $element_id> \n"; } } print "
area&message=$row->hash';return false\" class=\"$class\">".strtoupper($row->area)." hash';return false\" class=\"$class\">$row->fromname hash';return false\" class=\"$class\">$row->toname hash';return false\" class=\"$class\">hash\">".txt2html($row->subject)." hash';return false\" class=\"$class\">$row->date
area&message=$row->hash';return false\" class=\"$class\">"; if ($row->area){ print strtoupper($row->area); } else { print "NETMAIL"; } print " hash';return false\" class=\"$class\">$row->fromname hash';return false\" class=\"$class\">$row->toname hash';return false\" class=\"$class\">hash\">".txt2html($row->subject)." hash';return false\" class=\"$class\">$row->date
".strtoupper($row->area)." $row->fromname $row->toname hash\">".txt2html($row->subject)." $row->date
$row->fromname $row->toname area&message=$row->hash\">".txt2html($row->subject)." $row->date
\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 "\n
From: $row->fromname ($row->fromaddr) To: $row->toname ($row->toaddr) Date: $row->date
Subject: ".txt2html($row->subject)." "; if ($area!="OUTBOX") { print "area&message=$row->hash\">message area&message=$row->hash&mode=source\">source area&message=$row->hash&mode=reply\">reply tree "; if ($area!="CARBONAREA"){ print " new "; } if ($area!="FAVORITES") { print "area&message=$row->hash&mode=add_to_favorites\">favorites "; } else { print "hash&mode=remove_from_favorites\">favorites "; } } print "
\n"; $text=split("\n", $row->text); if ($mode=="source"){ print message2source($text); } elseif ($mode=="reply"){ $reply_to_name=split(" ", $row->fromname); $quoute_string=""; foreach ($reply_to_name as $quote_string_tmp){ $quoute_string=$quoute_string.substr($quote_string_tmp,0,1); } print "\n
area&message=$row->hash&mode=ansver\" style=\"width: 100%; height: 100%;\">\n
Subject: subject\">\nTo:fromname\">"; if ($area=="NETMAIL"){ print "fromaddr\">"; } print "msgid\">\n"; print "
\n"; } elseif ($mode=="new"){ print " \n
area&mode=ansver\" style=\"width: 100%; height: 100%\">
Subject: To:"; if ($area=="NETMAIL"){ print ""; } print"
\n"; } else { print message2html($text); } } else { print "
 
"; if ($area!="CARBONAREA" and $area!="OUTBOX"){ print " new"; } else { print " "; } print "
\n"; } } else { print "
у вас нет прав для просмотра этой эхоконференции, либо эхоконференция не существует.
"; } } //Оставляем метку с датой последнего просмотра эхи и указатель на последнее просмотренное письмо set_area_last_view($area,$hash); print "
\n"; ?>