".$this->T("链接位置")."
",$replacement); $replacement = preg_replace_callback("/(```|`)([^`]*)(?1)/U", function($matches){ $rep = preg_replace('/-@>/','->',$matches[0]); $rep = preg_replace('/<@-/','<-',$rep); $rep = preg_replace('/=@>/','=>',$rep); $rep = preg_replace('/<@=/','<=',$rep); $rep = preg_replace('/\R@([+]{3,})\R/',PHP_EOL.'$1'.PHP_EOL,$rep); $rep = preg_replace('/\[@-/','[-',$rep); $rep = preg_replace('/\{@/','{',$rep); $rep = preg_replace('/(en|zh|any)@\|(en|zh|any)/','$1|$2',$rep); return $rep; }, $replacement); return $replacement; } function CanShowPost(&$p){ if(!isset($p) || isset($p['comment_to'])) return false; $is_mark_exp = (isset($p['tid'])&&isset($p['tid']['exp'])&&$p['tid']['exp']) || (isset($p['mark_value'])&&$p['mark_value']==6); $is_mark_slf = (isset($p['tid'])&&isset($p['tid']['slf'])&&$p['tid']['slf']) || (isset($p['mark_value'])&&$p['mark_value']==7); if($is_mark_slf && !$this->LoggedIn){ return false; } if(isset($this->WayBack)){ if(isset($p['version'])) { if ($p['version']>$this->WayBack) return false; } else if ($p['id']>$this->WayBack) return false; } if(!$this->InExperimentalMode){ if(!$this->LoggedIn){ if($is_mark_exp) return false; return true; } return true; }else{ if($is_mark_exp) return true; return false; } } function SkipProduct(&$p){ if($this->LoggedIn) return false; return (isset($p['mark_value']) && $p['mark_value']==5); } function GetRedirect($args=NULL){ $str = 'index.php?'; if(isset($args['post'])) $str.='&post='.$args['post']; else if(isset($_GET['post'])) $str.='&post='.$_GET['post']; if(isset($args['gallery'])) $str.='&gallery='.$args['gallery']; else if(isset($_GET['gallery'])) $str.='&gallery='.$_GET['gallery']; if(isset($args['pic'])) $str.='&pic='.$args['pic']; else if(isset($_GET['pic'])) $str.='&pic='.$_GET['pic']; if(isset($args['settings'])) $str.='&settings='.$args['settings']; else if(isset($_GET['settings'])) $str.='&settings='.$_GET['settings']; if(isset($args['extras'])) $str.='&extras='.$args['extras']; else if(isset($_GET['extras'])) $str.='&extras='.$_GET['extras']; if(isset($args['category'])) $str.='&category='.$args['category']; else if(isset($_GET['category'])) $str.='&category='.$_GET['category']; if(isset($args['history'])) $str.='&history='.$args['history']; else if(isset($_GET['history'])) $str.='&history='.$_GET['history']; if(isset($args['version'])) $str.='&version='.$args['version']; else if(isset($_GET['version'])) $str.='&version='.$_GET['version']; if(isset($args['search'])) $str.='&search='.$args['search']; else if(isset($_GET['search'])) $str.='&search='.$_GET['search']; return $str; } function WriteAsNecessary(){ if(!$this->LoggedIn || isset($this->WayBack)){return;} if($this->NeedWritePosts){ $this->CachePostLinks(); $this->WritePosts(); } if($this->NeedWriteImages){ $this->WriteImages(); } if($this->NeedWriteArchive){ $this->WriteArchive(); } } function APubEnsureWebfinger($name, $host){ if(!is_dir('.well-known')) mkdir('.well-known'); if(!is_dir('.well-known/webfinger')) mkdir('.well-known/webfinger'); $f = fopen('.well-known/webfinger/index.php',"w"); $without_protocol = parse_url($host, PHP_URL_HOST); $finger = ["subject"=>"acct:".$name.'@'.$without_protocol, "links"=>[["rel"=>"self", "type"=>"application/activity+json", "href"=>$host."?apub_actor=1"]]]; fwrite($f, ""); fclose($f); if(!file_exists('.well-known/apub_public_key.pem') || !file_exists('.well-known/apub_private_key.php')){ $res = openssl_pkey_new(); $this->APubPublicKey = openssl_pkey_get_details($res)['key']; openssl_pkey_export($res, $this->APubPrivateKey); $f = fopen('.well-known/apub_public_key.pem',"w"); fwrite($f, $this->APubPublicKey); fclose($f); $f = fopen('.well-known/apub_private_key.php',"w"); fwrite($f, "".PHP_EOL.PHP_EOL.$this->APubPrivateKey); fclose($f); } } function APubEnsureInfo(){ if(!isset($this->APubID) || !isset($this->HostURL)) return; if(!file_exists('.well-known/apub_public_key.pem')){$this->APubEnsureWebfinger($this->APubID, $this->HostURL);} $pk = file_get_contents('.well-known/apub_public_key.pem'); //$pk = preg_replace('/\n/u','\\n',$pk); $actor = ["@context"=>["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1"], "id"=> $this->HostURL."?apub_actor=1", "type"=> "Person", "name"=> $this->DisplayName, "url"=> $this->HostURL, "summary"=> "Lazy... No summary", "preferredUsername"=> $this->APubID, "inbox"=> $this->HostURL."?apub_inbox=1", "outbox"=> $this->HostURL."?apub_outbox=1", "publicKey"=> ["id"=> $this->HostURL."?apub_actor=1#main-key", "owner"=> $this->HostURL."?apub_actor=1", "publicKeyPem"=>$pk]]; $this->APubActor = json_encode($actor, JSON_UNESCAPED_SLASHES); } function APubMakeOutbox(){ $this->ReadPosts();$this->ReadImages(); $obj = ["@context"=>"https://www.w3.org/ns/activitystreams", "id"=>$this->HostURL."?apub_outbox=1", "type"=>"OrderedCollection"]; $items=[]; $i=0; foreach(array_reverse($this->Posts) as &$p){ $this->ConvertPost($p); $text = strip_tags(preg_replace('/<\/(p|blockquote|h[0-9])>/u',"\n\n",$p['html'])); $time = DateTime::createFromFormat('YmdHis', $p['id'], new DateTimeZone('+0800')); $ob = ["@context"=>"https://www.w3.org/ns/activitystreams", "type"=> "Create", "id"=> $this->HostURL."?post=".$p['id']."?apub_object=1", "published"=> $time->format('Y-m-d\TH:i:s\Z'), //"to"=> ["https://chatty.example/ben/"], "actor"=> $this->HostURL."?apub_actor=1", "to"=> ["https://www.w3.org/ns/activitystreams#Public"], "object"=> ["type"=> "Note", "id"=> $this->HostURL."?post=".$p['id'], "published"=> $time->format('Y-m-d\TH:i:s\Z'), "attributedTo"=> $this->HostURL."?apub_actor=1", "to"=> ["https://www.w3.org/ns/activitystreams#Public"], "content"=> $text]]; $items[] = $ob; $i++; if($i>20) break; } $obj['orderedItems'] = $items; $obj["totalItems"] = sizeof($items); return json_encode($obj, JSON_UNESCAPED_SLASHES); } function ProcessRequest(&$message=NULL, &$redirect=NULL){ if(isset($_GET['gallery']) && $_GET['gallery']=='default'){ $redirect = "index.php?gallery=".(isset($this->DefaultGallery)&&$this->DefaultGallery!=''?$this->DefaultGallery:"main"); return 0; } if(isset($_GET['set_language'])){ setcookie('la_language',$_GET['set_language'],time()+3600*24*7); $_COOKIE['la_language'] = $_GET['set_language']; $redirect=$this->GetRedirect(); return 0; } if(isset($_GET['toggle_font'])){ $use_font='local'; if(!isset($_COOKIE['la_font']) || $_COOKIE['la_font']!='remote') $use_font='remote'; setcookie('la_font',$use_font,time()+3600*24*7); $_COOKIE['la_font'] = $use_font; $redirect=$this->GetRedirect(); return 0; } if(isset($_GET['set_wayback'])){ if($_GET['set_wayback']!='false'){ $wayback= date('YmdHis'); if($_GET['set_wayback']=='post'){ if(isset($_POST['wayback_year'])) $wayback=substr_replace($wayback,str_pad($_POST['wayback_year'],4,"0",STR_PAD_LEFT),0,4); if(isset($_POST['wayback_month'])) $wayback=substr_replace($wayback,str_pad($_POST['wayback_month'],2,"0",STR_PAD_LEFT),4,2); if(isset($_POST['wayback_day'])) $wayback=substr_replace($wayback,str_pad($_POST['wayback_day'],2,"0",STR_PAD_LEFT),6,2); if(isset($_POST['wayback_hour'])) $wayback=substr_replace($wayback,str_pad($_POST['wayback_hour'],2,"0",STR_PAD_LEFT),8,2); if(isset($_POST['wayback_minute'])) $wayback=substr_replace($wayback,str_pad($_POST['wayback_minute'],2,"0",STR_PAD_LEFT),10,2); }else{ if(preg_match('/[0-9]{14}/u', $_GET['set_wayback'])) $wayback = $_GET['set_wayback']; } setcookie('la_wayback',$wayback); $_COOKIE['la_wayback'] = $wayback; }else{ setcookie('la_wayback', null, -1); unset($_COOKIE['la_wayback']); } $redirect=$this->GetRedirect(); return 0; } if(isset($_GET['post'])){ $this->CurrentPostID = $_GET['post']; $this->TagID = $this->CurrentPostID; } if(isset($_GET['offset'])){ $this->CurrentOffset = $_GET['offset']; } if(isset($_GET['part'])){ if($_GET['part'] == 'hot') $this->ExtraScripts.="ShowLeftSide();"; else if ($_GET['part'] == 'recent') $this->ExtraScripts.="ShowCenterSide();"; } if(isset($_GET['post'])){ $this->ExtraScripts.="window.addEventListener('load', (event) => {ScrollToPost('".$_GET['post']."');});"; } if(isset($_POST['search_content'])){ $redirect='index.php?search='.$_POST['search_content'];return 0; } if(isset($_GET['image_info']) || isset($_GET['show_image'])){ $m=isset($_GET['image_info'])?$_GET['image_info']:$_GET['show_image']; $direct_return = !isset($_GET['show_image']); $this->ReadImages(); $this->ReadPosts(); $this->SwitchWayBackMode(); if(isset($this->WayBack)){$this->ReadArchive();} $im = &$this->FindImage($m); if($im==NULL || !isset($im['refs']) || !isset($im['refs'][0])){ echo "not_found"; exit; } if($direct_return){ echo "".sizeof($im['refs']).""; echo "\s*\@.*?<\/p>/mu","",$html); $html = preg_replace("/
\s*\{\s*INTERESTING\s+(.*?)\}\s*<\/p>/imu","",$html); $html = preg_replace("/\{\s*REVERSED\s*\}/imu","",$html); $images = []; $images_noclick = []; $images_orig_src_list = []; $html = preg_replace_callback( "/(
\s*)?(]*)src=[\'\"])(images\/([0-9]{14,}\.(jpg|png|jpeg|gif)))([\'\"][^>]*)\/>(\s*<\/p>)?/u",
                    function($m) use (&$images,&$images_noclick,&$images_orig_src_list) {
                        $orig_src = $src = $m[5]; $keep = false; $original = false;
                        if (preg_match('/alt=[\'\"].*keep_inline.*[\'\"]/u',$m[3]) ||
                            preg_match('/alt=[\'\"].*keep_inline.*[\'\"]/u',$m[7])) { $keep=true; }
                        if ($keep && preg_match('/alt=[\'\"].*original.*[\'\"]/u',$m[3]) ||
                                     preg_match('/alt=[\'\"].*original.*[\'\"]/u',$m[7])) { $original=true; }
                        if(($im = &$this->FindImage($m[5]))!=NULL && isset($im['thumb'])){ 
                            $src = $im['thumb']; $orig_src=$im['file'];
                        }if($im == NULL){ $im = &$this->NULL_IMAGE_DUMMY; }
                        if($this->InExperimentalMode){
                            $click = "
\s*<\/p>/u',"", $html); if($html==""){$html="
";} if(sizeof($images)){ if(sizeof($images)==1){$html.= $images[0]; } else{ $html.="
\s*<\/p>/u',"", $html);
            if (preg_match('/ \s*\{big_table\}\s*<\/p>\s*( ".$post['product']['title']." ".$post['product']['short']." ".$post['product']['price']." \s*\{read_more\}\s*<\/p>[\s\S]*/u'," [".$this->T("阅读更多")."] \s*\{read_more\}\s*<\/p>/u',"", $ht);
        }
        if ($strip_tags){
            $ht = strip_tags($ht,' \s*<\/p>/u',"", $ht);
            $ht = " \s*\{big_table\}\s*<\/p>/u','',$ht);
            }
        }
        if ($strip_tags && $generate_thumbs && isset($post['images']) && isset($post['images'][0])){
            $ht.="  ".$this->T("已关闭评论")."  =$this->T('话题')?> &history=1'>=$this->GetPostTitle($mver)?> =$this->T('并入这里')?>
                     ".$name.":".$mail." =$this->T('引用')?>:    =$this->T('分类')?> | ".($c=='none'?$this->T('未分类'):$this->T($c))." "; } ?>         =$this->T('选择、粘贴或者拖动到页面以上传图片。')?>         =$this->T('当心!下列操作将立即执行:')?>
        WayBack)){
            $time=(isset($_COOKIE['la_wayback']) && preg_match('/[0-9]{14}/u',$_COOKIE['la_wayback']))?$_COOKIE['la_wayback']:date('YmdHis');
            $year=substr($time,0,4);$month=substr($time,4,2);$day=substr($time,6,2);
            $hour=substr($time,8,2);$minute=substr($time,10,2);?> [\s\S]*?<\/table>)/u', function ($m) use (&$table){
            $table = $m[1];
            return "";
        }, $html);
        $table_out = $table;
        return $new_html;
    }
    function GenerateSinglePost(&$post, $strip_tags, $generate_anchor=false, $generate_refs=false,
                                 $generate_thumbs=false, &$table_out, $hide_long = false){
        $this->ConvertPost($post);
        if($generate_anchor){ $this->CreatePostAnchor($post); }
        $ht = $post['html'];
        if(isset($post['mark_value']) && $post['mark_value']==5 && ($generate_thumbs || !$generate_anchor)){
            $ht="
');
            $ht = preg_replace('/
";
            foreach($post['images'] as $im){
                $ht.="
".$title."
                
        =$this->T('评论')?>
        CommentEnabled){
            echo "
"; } ?>
        =isset($search_term)?$this->T('搜索'):
                                (isset($category)?("".$this->T('分类')." ".
                                    ($category=='none'?$this->T('未分类'):$this->T($category))):($this->T('最近')).
                                    " ")?>
            
                
                
                T('搜索')?>
            
                
            LoggedIn){ ?>
                
                SpecialPinned) && ($p = &$this->GetPost($this->SpecialPinned))!=NULL && !$this->CurrentOffset) &&
                       $this->CanShowPost($p)){
                        $this->MakeSinglePost($p, true, false, false, false, true, false, false, false, true, false);
                    }
                    $i = 0;
                    if(isset($this->UsePosts[0])) foreach(array_reverse($this->UsePosts) as &$p){
                        if(!$this->CanShowPost($p) || $this->SkipProduct($p)) continue;
                        if(isset($p['tid'])){ /* Should always be set. */
                            $th = &$p['tid']; if($p['tid']['count']==0) continue;
                            if(!isset($search_term)) { $p = &$th['last']; }
                        }
                        if(isset($search_term)){
                            if ($search_term=='' || !preg_match("/".preg_quote($search_term)."/iu", $p['content'])) continue;
                        }else if(isset($category)){
                            $cat = isset($p['tid'])?(isset($p['tid']['categories'])?($p['tid']['categories']):[]):
                                                    (isset($p['categories'])?($p['categories']):[]);
                            if ($category=='none') { if($cat!=[]) continue; }
                            else{ if ($category=='' || !in_array($category, $cat)) continue; }
                            if(isset($p['tid'])){ if(isset($p['tid']['displayed'])) continue; $p['tid']['displayed'] = True; }
                        }else{
                            if(in_array($p['id'],
                                [$this->SpecialPinned,$this->SpecialFooter,$this->SpecialFooter2,$this->SpecialNavigation])) continue;
                            if(isset($p['tid'])){ if(isset($p['tid']['displayed'])) continue; $p['tid']['displayed'] = True; }
                        }
                        if($i < $this->PostsPerPage * $this->CurrentOffset) {$i++; continue;}
                        $this->MakeSinglePost($p, true, false, NULL, false, !isset($search_term), false, false, false, false, isset($search_term));
                        $i++;
                        if($i >= $this->PostsPerPage * (1+$this->CurrentOffset)) {break;}
                    }?>
            
            
        
        >=$this->T('链接')?>
        
                =$this->T('没有历史记录')?>
            =$this->T('帖子')?> '>=$title?>
        
            =$this->T('历史记录')?>
            =$this->T('帖子')?> '>=$title?>
            
            
            
GetArchiveHandle($from); if(!isset($fromah)) continue;
                    $ver = &$fromah['list'][sizeof($fromah['list'])-1];?>
                    
                GetArchiveHandle($pm); 
                    $mver = &$this->GetPost($pm); if(!isset($mver) && isset($mah)) $mver = &$mah['list'][sizeof($mah['list'])-1]; ?>
                    GetArchiveHandle($from); if(!isset($fromah)) continue;
                        $ver = &$fromah['list'][sizeof($fromah['list'])-1];?>
                        
=$this->T('版本不存在')?>
            
            =$this->T('差异')?>
            GetArchiveHandle($pm); 
                $mver = &$this->GetPost($pm); if(!isset($mver) && isset($mah)) $mver = &$mah['list'][sizeof($mah['list'])-1]; ?>
                
 =sizeof($this_ver['merged_thread'][0]);?> =$this->T('个帖子')?> 
                    
            
            =$this->T('没有更旧的版本')?>
                        =$this->T('上一个版本')?> 
                        
=$this->ReadableTime($last_ver['version'])?>=$this->T('选择的版本')?> 
=$this->ReadableTime($this_ver['version'])?>=isset($last_ver)?$last_ver['content']:""?>
=$this_ver['content']?>
&set_wayback==isset($this_ver['version'])?$this_ver['version']:$this_ver['id']?>'>=$this->T('前往该版本时间')?> ←
        
    GetArchiveHandle($this->CurrentPostID);
        $p = &$post; if(!isset($post)){ $p=&$ah['list'][0]; }
        $show_latest = isset($ah)?(!isset($ah['list'][sizeof($ah['list'])-1]['merged_into'])):true;
        ?>
        
        =$this->T('评论')?> (=$comment_count;?>)
            ";
                    foreach($to_post['comments'] as $p){
                        $ht = $this->GenerateSinglePost($p, false, false, false, false, $t, false);
                        $name = isset($p['link'])?("".$p['name']."↗"):$p['name'];
                        $mail = $this->LoggedIn?(""):"";
                        echo "=$this->T('有趣')?>
                '>→
            
                    GetPost($ref);
                        if(isset($post['mark_value']) && $post['mark_value']==5){ $count_product++; continue; }
                        if(!$this->CanShowPost($po)){ continue; }
                        echo "
                LoggedIn && (!$this->InExperimentalMode)){ ?>
                    
                
                 
                ConvertPost($p);
                    $mark_value = isset($p['mark_value'])?$this->Markers[$p['mark_value']]:-1;
                    $ref_count = isset($p['refs'])?sizeof($p['refs']):0;
                    $is_current = $p['id']==$this->CurrentPostID;
                    $is_deleted = (isset($p['mark_delete'])&&$p['mark_delete']);  ?>
                    
                     =$this->T($header);?> 
                ' =$is_deleted?"data-mark-delete='true'":""?>
                        onDblClick='ClickImage(this)'> 
                    0){ ?>
                     class='clean_a paa'>
                         
                        GetPost($ref);
                            if(isset($post['mark_value']) && $post['mark_value']==5){ $count_product++; continue; }
                            if(!$this->CanShowPost($po)){ continue; }
                            echo "
            MakeCommentSection($th['first']); ?>
        
            1; if($is_thread){ $th = $post['tid'];?>
                =$this->T('话题')?>  =$this->T('详细')?>
            
            MakePostTools();
            if($cat){ ?>
                
            IsReversedThread($th); $hinted=false; if($is_reversed){
                        $use_arr=array_reverse($th['arr']); $fp=array_pop($use_arr); array_unshift($use_arr,$fp); }
                    foreach($use_arr as &$p){
                        $use_class = ($p == $post)?'focused_post':'';
                        $show_link = ($p == $post)?false:true;
                        $make_title = ($p == $post);
                        $this->MakeSinglePost($p,$show_link,false,$use_class,false, false, false, true, false, false);
                        if($make_title){?>
                        
                        
                            
        
=$this->T('该话题最新帖子在前')?>
                        MakeSinglePost($post,false, false, 'focused_post',false, false, false, true, false, false);
                    ?>
                
=$this->ReadableTime(isset($post['tid']['last']['version'])?
                        $post['tid']['last']['version']:$post['tid']['last']['id']);?>
                
            IsReversedThread($th);
                    $hinted=false; if($is_reversed){
                        $use_arr=array_reverse($th['arr']); $fp=array_pop($use_arr); array_unshift($use_arr,$fp); }
                    foreach($use_arr as &$p){
                        $this->MakeSinglePostExp($p);
                        if($p == $th['first']){?>
                        
                        
                            
        
=$this->T('该话题最新帖子在前')?>=$this->T('点击图片以插入:')?>
            
            
            
            =(isset($name) && ($gal=$this->GetGallery($name))!=NULL)?
                                    ("".$this->T('相册').":".$this->T($name)):
                                    ($_GET['gallery']=='trash'?$this->T('垃圾桶'):$this->T('画廊'))?>
            =$year;?>
            =$this->T('设置')?>
            
                LoggedIn){ ?>
                    
                    
            LoggedIn){ ?>
                ' />
            
                ' />
            
        =$this->T('选项')?> =$this->T('值')?> =$this->T('网站标题')?> 
                        =$this->T('短标题')?> 
                        =$this->T('显示名称')?> 
                        =$this->T('电子邮件')?> 
                        =$this->T('导航栏')?>
                        =isset($this->SpecialNavigation)?"→":""?> 
                        =$this->T('脚注')?> 1=isset($this->SpecialFooter)?"→":""?> 
                        =$this->T('脚注')?> 2=isset($this->SpecialFooter2)?"→":""?> 
                        =$this->T('置顶文')?>=isset($this->SpecialPinned)?"→":""?> 
                        =$this->T('默认相册')?> 
                        =$this->T('SelfAuth 路径')?> 
                        =$this->T('启用评论')?> 
                        CommentEnabled?"checked":""?>/> =$this->T('附加操作')?> =$this->T('进入')?>   =$this->T('长毛象')?> =$this->T('长毛象实例')?> 
                        =$this->T('长毛象令牌')?> 
                        =$this->T('偏好语言')?> 
                        =$this->T('本站地址')?> 
                          =$this->T('Activity Pub')?> =$this->T('用户名')?> 
                          =$this->T('实验访问')?> =$this->T('主机')?>=isset($this->ExpHost)?"→":""?> 
                        =$this->T('网站标题')?> 
                        =$this->T('短标题')?> 
                        =$this->T('首次提示')?>=isset($this->ExpCaution)?"→":""?> 
                        =$this->T('索引')?>=isset($this->ExpIndex)?"→":""?> 
                        =$this->T('导航栏')?>
                        =isset($this->ExpNavigation)?"→":""?> 
                        =$this->T('脚注')?>=isset($this->ExpFooter)?"→":""?> 
                          =$this->T('管理员')?> 
                        =$this->T('登出')?> =$this->T('帐号')?> 
                        =$this->T('新密码')?> 
                        =$this->T('再次输入')?> 
                        =$this->T('旧密码')?> 
                        =$this->T('请登录')?> =$this->T('帐号')?> 
                        =$this->T('密码')?> 
                        =$this->T('附加操作')?>
            =$this->T('返回一般设置')?>
            =$this->T('自动重定向')?>
            
                =$this->T('P为帖子跳转,匹配REQUEST_URI跳到目标文章;S为站点跳转,可以重定向来源域名,例子:')?>
            P discount:20001001010101;
            
            
            ' />
            
S old_domain:www.new_domain.com:20001001010101;=$this->T('自定义翻译')?>
            
                =$this->T('填写格式:')?>
            - 语言 | Language
            
            
            ' />
            
Posts) as $p){ if(!isset($p['comment_to'])) continue; if($i < $this->CommentsPerPage * $this->CurrentOffset) {$i++; continue;} $ht = $this->GenerateSinglePost($p, false, false, false, false, $t, false); $name = isset($p['link'])?("".$p['name']."↗"):$p['name']; $post_to = $this->GetPost($p['comment_to']); $post_title = $this->GetPostTitle($post_to); if(!$post_to) $post_title = "?"; $mail = " ". "@ ". (isset($p['ip'])?$p['ip']:"?")." ";
                
                $i++;
            }
        ?>
        
". "(".$post_title.")"; echo "
".$name.":".$mail."
".$ht."