Файл: system/classes/parse.php
Строк: 93
<?php
/* 
    Appointment: Парсинг данных
    File: parse.php 
 
*/
class parse{
    function BBparse($source, $preview = false){
        global $config;
        $source = preg_replace("#<iframe#i", "<iframe", $source);
        $source = preg_replace("#<script#i", "<script", $source);
        
        $source = str_ireplace("{", "{", $source);
        $source = str_ireplace("`", "`", $source);
        $source = str_ireplace("{theme}", "{theme}", $source);
        
        $source = str_ireplace("[b]", "<b>", str_ireplace("[/b]", "</b>", $source));
        $source = str_ireplace("[i]", "<i>", str_ireplace("[/i]", "</i>", $source));
        $source = str_ireplace("[u]", "<u>", str_ireplace("[/u]", "</u>", $source));
        
        $source = preg_replace("#[(left|right|center)](.+?)[/\1]#is", "<div align="\1">\2</div>", $source);
        
        $source = preg_replace( "#[quote](.+?)[/quote]#is", "<blockquote>\1</blockquote>", $source );
        
        if(stripos($source, "[video]") !== false || stripos($source, "[photo]") !== false || stripos($source, "[link]") !== false){
            $source = preg_replace("#\[video\](.*?)\[/video\]#ies", "$this->BBvideo('\1', '{$preview}')", $source);
            $source = preg_replace("#\[photo\](.*?)\[/photo\]#ies", "$this->BBphoto('\1', '{$preview}')", $source);
            $source = preg_replace("#\[link\](.*?)\[/link\]#ies", "$this->BBlink('\1')", $source);
        }
        
        return $source;
        
    }
    
    function BBvideo($source, $preview = false){
        global $config;
        
        $exp = explode('|', $source);
        $home_url = $config['home_url'];
        if(stripos($source, "{$exp[0]}|{$exp[1]}|{$home_url}") !== false){
            
            if($exp[3])
                if($exp[3] > 175)
                    $width = "width='175'";
                else
                    $width = "width='{$exp[3]}'";
                    
            if($exp[4])
                if($exp[4] > 131)
                    $height = "height='131'";
                else
                    $height = "height='{$exp[4]}'";
            
            if($exp[5])
                $border = 'notes_videoborder';
                
            if($exp[6])
                $blank = 'target="_blank"';
            else
                $blank = "onClick="videos.show({$exp[1]}, this.href, '/notes/view/{note-id}'); return false"";
            
            if($exp[7] == 1)
                $pos = "align="left"";
            elseif($exp[7] == 2)
                $pos = "align="right"";
            else
                $pos = "";
            
            if(!$preview){
                $link = "<a href="/video{$exp[0]}_{$exp[1]}_sec=notes/id={note-id}" {$blank}>";
                $slink = "</a>";
            }
            $source = "<!--video:{$source}-->{$link}<img src="{$exp[2]}" {$width} {$height} {$pos} class="notes_videopad {$border}" />{$slink}<!--/video-->";
        }
        
        return $source;
    }
    
    function BBphoto($source, $preview = false){
        global $config;
        
        $exp = explode('|', $source);
        $home_url = $config['home_url'];
        if(stripos($source, "{$exp[0]}|{$exp[1]}|{$home_url}") !== false){
            
            if($exp[3] > 160)
                $exp[2] = str_replace('/c_', '/', $exp[2]);
                
            if($exp[4] > 120)
                $exp[2] = str_replace('/c_', '/', $exp[2]);
                
            if($exp[3])
                if($exp[3] > 740)
                    $width = "width='740'";
                else
                    $width = "width='{$exp[3]}'";
                    
            if($exp[4])
                if($exp[4] > 547)
                    $height = "height='547'";
                else
                    $height = "height='{$exp[4]}'";
            
            if($exp[5])
                $border = 'notes_videoborder';
                
            if($exp[6])
                $blank = 'target="_blank"';
            else
                $blank = "onClick="Photo.Show(this.href); return false"";
            
            if($exp[7] == 1)
                $pos = "align="left"";
            elseif($exp[7] == 2)
                $pos = "align="right"";
            else
                $pos = "";
                
            if($exp[8] AND !$preview AND $exp[0] AND $exp[1]){
                $link = "<a href="/photo{$exp[0]}_{$exp[1]}_sec=notes/id={note-id}" {$blank}>";
                $elink = "</a>";
            } elseif($exp[8]) {
                $link = "<a href="{$exp[2]}" target="_blank">";
                $elink = "</a>";
            } else {
                $link = '';
                $elink = '';
            }
            
            if($exp[0] AND $exp[1])
                $source = "<!--photo:{$source}-->{$link}<img class="notes_videopad {$border}" src="{$exp[2]}" {$width} {$height} {$pos} />{$elink}<!--/photo-->";
            else
                $source = "<!--photo:{$source}-->{$link}<img class="notes_videopad {$border}" src="{$exp[2]}" {$width} {$height} {$pos} />{$elink}<!--/photo-->";
        }
        
        return $source;
    }
    
    function BBlink($source){
        $exp = explode('|', $source);
        
        if($exp[0]){
            if(!$exp[1])
                $exp[1] = $exp[0];
            $source = "<!--link:{$source}--><a href="{$exp[0]}" target="_blank">{$exp[1]}</a><!--/link-->";
        }
        
        return $source;
    }
    
    function BBdecode($source){
    
        $source = str_ireplace("{", "{", $source);
        $source = str_ireplace("`", "`", $source);
        $source = str_ireplace("{theme}", "{theme}", $source);
        
        $source = str_ireplace("<b>", "[b]", str_ireplace("</b>", "[/b]", $source));
        $source = str_ireplace("<i>", "[i]", str_ireplace("</i>", "[/i]", $source));
        $source = str_ireplace("<u>", "[u]", str_ireplace("</u>", "[/u]", $source));
        
        $source = preg_replace("#<div align="(left|right|center)">(.+?)</div>#is", "[\1]\2[/\1]", $source);
        
        $source = preg_replace( "#[quote](.+?)[/quote]#is", "<blockquote>\1</blockquote>", $source );
        
        $source = preg_replace( "#<blockquote>(.+?)</blockquote>#is", "[quote]\1[/quote]", $source );
        
        if(stripos($source, "<!--photo:") !== false || stripos($source, "<!--video:") !== false || stripos($source, "<!--link:") !== false){
            $source = preg_replace("#\<!--video:(.*?)\<!--/video-->#ies", "$this->BBdecodeVideo('\1')", $source);
            $source = preg_replace("#\<!--photo:(.*?)\<!--/photo-->#ies", "$this->BBdecodePhoto('\1')", $source);
            $source = preg_replace("#\<!--link:(.*?)\<!--/link-->#ies", "$this->BBdecodeLink('\1')", $source);
        }
        
        return $source;
    
    }
    
    function BBdecodePhoto($source){
        $start = explode('-->', $source);
        $source = "[photo]{$start[0]}[/photo]";
        return $source;
    }
    
    function BBdecodeVideo($source){
        $start = explode('-->', $source);
        $source = "[video]{$start[0]}[/video]";
        return $source;
    }
    
    function BBdecodeLink($source){
        $start = explode('-->', $source);
        $source = "[link]{$start[0]}[/link]";
        return $source;
    }
}
?>