Ergebnis 1 bis 5 von 5

Thema: External noopener noreferrer ändern bei Datalife Engine (PHP bearbeiten)

  1. #1
    Junior Avatar von Charly-Brown
    Registriert
    Jan 2016
    Beiträge
    77
    Gefällt mir!
    63
    Du gefällst: 27

    External noopener noreferrer ändern bei Datalife Engine (PHP bearbeiten)

    Hallo,

    ich brauche Hilfe bei der Bearbeitung einer PHP-Datei von Datalife Engine 11.1.

    Ich würde gerne das External Noopener Noreferrer aus dem Script entfernen. Sprich, es soll der Referrer mitgesendet werden.
    Nachdem ich den Support angeschrieben habe, wurde mir nur mitgeteilt, das ich die Datei "parse.class.php" bearbeiten soll.
    Leider wurde mir da nicht gesagt, welchen Teil bzw. was ich ändern muß.

    Kann mir da jemand von euch helfen und mal "drüber schauen"?

    Der Grund.

    Mein Referrer wird bei "Filecrypt.cc" nicht erkannt, d.h. der Referrer wird unterbunden


    Ich danke euch schon mal im voraus für die Hilfe

    PHP-Code:
    <?php

    if( ! defined'DATALIFEENGINE' ) ) {
        die( 
    "Hacking attempt!" );
    }

    class 
    ParseFilter {
        var 
    $tagsArray;
        var 
    $attrArray;
        var 
    $tagsMethod;
        var 
    $attrMethod;
        var 
    $xssAuto;
        var 
    $video_config = array ();
        var 
    $code_text = array ();
        var 
    $code_count 0;
        var 
    $frame_code = array ();
        var 
    $codes_param = array ();
        var 
    $frame_count 0;
        var 
    $wysiwyg false;
        var 
    $safe_mode false;
        var 
    $allow_code true;
        var 
    $leech_mode false;
        var 
    $filter_mode true;
        var 
    $allow_url true;
        var 
    $allow_image true;
        var 
    $edit_mode true;
        var 
    $allowbbcodes true;
        var 
    $not_allowed_tags false;
        var 
    $not_allowed_text false;
        var 
    $allowed_domains = array("vkontakte.ru""ok.ru""vk.com""youtube.com""maps.google.ru""maps.google.com""player.vimeo.com""facebook.com""mover.uz""v.kiwi.kz""dailymotion.com""bing.com""ustream.tv""w.soundcloud.com""coveritlive.com""video.yandex.ru""player.rutv.ru""promodj.com""rutube.ru""skydrive.live.com""docs.google.com""api.video.mail.ru""megogo.net""mapsengine.google.com""google.com""videoapi.my.mail.ru""coub.com""music.yandex.ru""mixcloud.com");
        var 
    $tagBlacklist = array ('applet''body''bgsound''base''basefont''frame''frameset''head''html''id''ilayer''layer''link''meta''name''script''style''title''xml' );
        var 
    $attrBlacklist = array ('action''background''codebase''dynsrc''lowsrc''data' );

        var 
    $font_sizes = array (=> '8'=> '10'=> '12'=> '14'=> '18'=> '24'=> '36' );

        function 
    __construct($tagsArray = array(), $attrArray = array(), $tagsMethod 0$attrMethod 0$xssAuto 1) {
            global 
    $config;
            
            for(
    $i 0$i count$tagsArray ); $i ++)
                
    $tagsArray[$i] = strtolower$tagsArray[$i] );
            for(
    $i 0$i count$attrArray ); $i ++)
                
    $attrArray[$i] = strtolower$attrArray[$i] );
            
    $this->tagsArray = ( array ) $tagsArray;
            
    $this->attrArray = ( array ) $attrArray;
            
    $this->tagsMethod $tagsMethod;
            
    $this->attrMethod $attrMethod;
            
    $this->xssAuto $xssAuto;
            
            if (
    function_exists('mb_internal_encoding')) {
               
    mb_internal_encoding($config['charset']);
            }

        }
        function 
    process($source) {
        
            if( 
    function_exists"get_magic_quotes_gpc" ) && get_magic_quotes_gpc() ) $source stripslashes$source );

            
    $source str_ireplace"{include""{include"$source );
            
    $source str_ireplace"{content""{content"$source );
            
    $source str_ireplace"{custom""{custom"$source );

            
    $source $this->remove$this->decode$source ) );

            if( 
    $this->code_count ) {
                foreach ( 
    $this->code_text as $key_find => $key_replace ) {
                    
    $find[] = $key_find;
                    
    $replace[] = $key_replace;
                }

                
    $source str_replace$find$replace$source );
            }

            
    $this->code_count 0;
            
    $this->code_text = array ();

            
    $source preg_replace"#<script#i""&lt;script"$source );

            if ( !
    $this->safe_mode ) {
                
    $source preg_replace_callback"#<iframe(.+?)src=['\"](.+?)['\"](.*?)>(.*?)</iframe>#is", array( &$this'check_frame'), $source );
            }

            
    $source str_ireplace"<iframe""&lt;iframe"$source );
            
    $source str_ireplace"</iframe>""&lt;/iframe&gt;"$source );
            
    $source str_replace"<?""&lt;?"$source );
            
    $source str_replace"?>""?&gt;"$source );

            
    $source addslashes$source );
            return 
    $source;

        }
        function 
    remove($source) {
            
    $loopCounter 0;
        
            
    $var $this->filterTags$source ); 
            
            while ( 
    $source != $var ) {
                
    $source $var;
                
    $var $this->filterTags$var );
                
    $loopCounter ++;
                if( 
    $loopCounter 50 ) { $source ""$var ""; break; }
                
            }
        
            return 
    $source;
        }
        
        function 
    filterTags($source) {
            
    $preTag null;
            
    $postTag $source;
            
    $tagOpen_start $this->_strpos$source'<' );

            while ( 
    $tagOpen_start !== false ) {
                
    $preTag .= $this->_substr$postTag0$tagOpen_start );
                
    $postTag $this->_substr$postTag$tagOpen_start );
                
    $fromTagOpen $this->_substr$postTag);
                
    $tagOpen_end $this->_strpos$fromTagOpen'>' );
                if( 
    $tagOpen_end === false ) {
                    if(
    $postTag[0] == '<'$postTag "&lt;".$this->_substr$postTag);
                    break;
                }
                
    $tagOpen_nested $this->_strpos$fromTagOpen'<' );
                if( (
    $tagOpen_nested !== false) && ($tagOpen_nested $tagOpen_end) ) {

                    if(
    $postTag[0] == '<'$preTag .= "&lt;".$this->_substr$postTag1, ($tagOpen_nested) );
                    else 
    $preTag .= $this->_substr$postTag0, ($tagOpen_nested 1) );
                    
                    
    $postTag $this->_substr$postTag, ($tagOpen_nested 1) );
                    
    $tagOpen_start $this->_strpos$postTag'<' );
                    continue;
                }
                
    $tagOpen_nested = ($this->_strpos$fromTagOpen'<' ) + $tagOpen_start 1);
                
                
    $currentTag $this->_substr$fromTagOpen0$tagOpen_end );
                
    $tagLength $this->_strlen$currentTag );
                if( ! 
    $tagOpen_end ) {
                    
    $preTag .= $postTag;
                    
    $tagOpen_start $this->_strpos$postTag'<' );
                }
                
    $tagLeft $currentTag;
                
    $attrSet = array ();
                
    $currentSpace $this->_strpos$tagLeft' ' );
                if( 
    $this->_substr$currentTag0) == "/" ) {
                    
    $isCloseTag TRUE;
                    list ( 
    $tagName ) = explode' '$currentTag );
                    
    $tagName $this->_substr$tagName);
                } else {
                    
    $isCloseTag FALSE;
                    list ( 
    $tagName ) = explode(' '$currentTag );
                }
                if( (!
    preg_match"/^[a-z][a-z0-9]*$/i"$tagName )) || (! $tagName) || ((in_arraystrtolower$tagName ), $this->tagBlacklist )) && ($this->xssAuto)) ) {
                    
    $postTag $this->_substr$postTag, ($tagLength 2) );
                    
    $tagOpen_start $this->_strpos$postTag'<' );
                    continue;
                }
                
                
    $tagLeft str_replace"\n"""$tagLeft );
                
    $tagLeft str_replace"\r"""$tagLeft );
                
    $tagLeft preg_replace'/\s+/'' '$tagLeft);
                
    $tagLeft preg_replace("/=\s+/""="$tagLeft);
                
    $tagLeft preg_replace("/\s+=/""="$tagLeft);
                
                while ( 
    $currentSpace !== FALSE ) {
                    
    $fromSpace $this->_substr$tagLeft, ($currentSpace 1) );
                    
    $nextSpace $this->_strpos$fromSpace' ' );
                    
    $openQuotes $this->_strpos$fromSpace'"' );
                    
    $closeQuotes $this->_strpos$this->_substr$fromSpace, ($openQuotes 1) ), '"' ) + $openQuotes 1;
                    
                    if( 
    $this->_strpos$fromSpace'=' ) !== FALSE AND $nextSpace $openQuotes) {
                        if( (
    $openQuotes !== FALSE) && ($this->_strpos$this->_substr$fromSpace, ($openQuotes 1) ), '"' ) !== FALSE) ) $attr $this->_substr$fromSpace0, ($closeQuotes 1) );
                        else 
    $attr $this->_substr$fromSpace0$nextSpace );
                    } else
                        
    $attr $this->_substr$fromSpace0$nextSpace );
                        
                    if( ! 
    $attr $attr $fromSpace;
                    
    $attrSet[] = $attr;
                    
    $tagLeft $this->_substr$fromSpace$this->_strlen$attr ) );
                    
    $currentSpace $this->_strpos$tagLeft' ' );
                }

                
    $tagFound in_arraystrtolower$tagName ), $this->tagsArray );
                if( (!
    $tagFound && $this->tagsMethod) || ($tagFound && ! $this->tagsMethod) ) {
                    if( !
    $isCloseTag ) {
                        
    $attrSet $this->filterAttr$attrSetstrtolower$tagName ) );
                        
    $preTag .= '<' $tagName;
                        for(
    $i 0$i count$attrSet ); $i ++)
                            
    $preTag .= ' ' $attrSet[$i];
                        if( 
    $this->_strpos$fromTagOpen"</" $tagName ) ) $preTag .= '>';
                        else 
    $preTag .= ' />';
                    } else
                        
    $preTag .= '</' $tagName '>';
                }
                
    $postTag $this->_substr$postTag, ($tagLength 2) );
                
    $tagOpen_start $this->_strpos$postTag'<' );
            }
            
    $preTag .= $postTag;
            return 
    $preTag;
        }

        function 
    filterAttr($attrSet$tagName) {

            global 
    $config;

            
    $newSet = array ();
            for(
    $i 0$i count$attrSet ); $i ++) {
                if( ! 
    $attrSet[$i] ) continue;

                
    $attrSet[$i] = trim$attrSet[$i] );

                
    $exp $this->_strpos$attrSet[$i], '=' );
                if( 
    $exp === false $attrSubSet = Array ($attrSet[$i] );
                else {
                    
    $attrSubSet = Array ();
                    
    $attrSubSet[] = $this->_substr$attrSet[$i], 0$exp );
                    
    $attrSubSet[] = $this->_substr$attrSet[$i], $exp );
                    
    $attrSubSet[1] = stripslashes$attrSubSet[1] );
                }

                list ( 
    $attrSubSet[0] ) = explode' '$attrSubSet[0] );

                
    $attrSubSet[0] = strtolower$attrSubSet[0] );

                if( (!
    preg_match"/^[a-z\-]*$/i"$attrSubSet[0] )) || (($this->xssAuto) && ((in_array$attrSubSet[0], $this->attrBlacklist )) || ($this->_substr$attrSubSet[0], 0) == 'on'))) ) continue;
                
                if( 
    $attrSubSet[1] ) {
                    
    $attrSubSet[1] = str_replace'&#'''$attrSubSet[1] );

                    if ( 
    strtolower($config['charset']) == "utf-8"$attrSubSet[1] = preg_replace'/\s+/u'' '$attrSubSet[1] );
                    else 
    $attrSubSet[1] = preg_replace'/\s+/'' '$attrSubSet[1] );

                    
    $attrSubSet[1] = str_replace'"'''$attrSubSet[1] );
                    if( (
    $this->_substr$attrSubSet[1], 0) == "'") && ($this->_substr$attrSubSet[1], ($this->_strlen$attrSubSet[1] ) - 1), ) == "'") ) $attrSubSet[1] = $this->_substr$attrSubSet[1], 1, ($this->_strlen$attrSubSet[1] ) - 2) );
                }

                if( ((
    $this->_strposstrtolower$attrSubSet[1] ), 'expression' ) !== false) && ($attrSubSet[0] == 'style')) || ($this->_strposstrtolower$attrSubSet[1] ), 'javascript:' ) !== false) || ($this->_strposstrtolower$attrSubSet[1] ), 'behaviour:' ) !== false) || ($this->_strposstrtolower$attrSubSet[1] ), 'vbscript:' ) !== false) || ($this->_strposstrtolower$attrSubSet[1] ), 'mocha:' ) !== false) || ($this->_strposstrtolower$attrSubSet[1] ), 'data:' ) !== false AND $attrSubSet[0] == "href") || ($this->_strposstrtolower$attrSubSet[1] ), 'data:' ) !== false AND $attrSubSet[0] == "data") || ($this->_strposstrtolower$attrSubSet[1] ), 'data:' ) !== false AND $attrSubSet[0] == "src") || ($attrSubSet[0] == "href" AND @$this->_strposstrtolower$attrSubSet[1] ), $config['admin_path'] ) !== false AND preg_match"/[?&%<\[\]]/"$attrSubSet[1] )) || ($this->_strposstrtolower$attrSubSet[1] ), 'livescript:' ) !== false) ) continue;
                
                if( 
    $tagName == "img" AND $attrSubSet[0] == "src" AND preg_match"/[?&]/"$attrSubSet[1]) ){
                    if( (
    $temp_dmax $this->_strpos$attrSubSet[1], '?')) !== false $attrSubSet[1] = $this->_substr$attrSubSet[1], 0$temp_dmax );
                    if( (
    $temp_dmax $this->_strpos$attrSubSet[1], '&')) !== false $attrSubSet[1] = $this->_substr$attrSubSet[1], 0$temp_dmax );
                }
                
                
    $attrFound in_array$attrSubSet[0], $this->attrArray );
                if( (! 
    $attrFound && $this->attrMethod) || ($attrFound && ! $this->attrMethod) ) {
                    if( 
    $attrSubSet[1] ) $newSet[] = $attrSubSet[0] . '="' $attrSubSet[1] . '"';
                    elseif( 
    $attrSubSet[1] == "0" $newSet[] = $attrSubSet[0] . '="0"';
                    elseif( isset(
    $attrSubSet[1]) ) $newSet[] = $attrSubSet[0] . '=""';
                    else 
    $newSet[] = $attrSubSet[0];
                }
            }

            return 
    $newSet;
        }

        function 
    decode($source) {
            global 
    $config;

            if( 
    $this->allow_code AND $this->allowbbcodes)
                
    $source preg_replace_callback"#\[code\](.+?)\[/code\]#is",  array( &$this'code_tag'), $source );

            if( 
    $this->safe_mode AND !$this->wysiwyg ) {

                
    $source htmlspecialchars$sourceENT_QUOTES$config['charset'] );
                
    $source str_replace'&amp;''&'$source );

            } else {

                
    $source str_replace"<>""&lt;&gt;"str_replace">>""&gt;&gt;"str_replace"<<""&lt;&lt;"$source ) ) );
                
    $source str_replace"<!--""&lt;!--"$source );

            }

            return 
    $source;
        }

        function 
    BB_Parse($source$use_html TRUE) {
            global 
    $config$lang;

            if( 
    $this->allowbbcodes$source preg_replace_callback"#\[code\](.+?)\[/code\]#is",  array( &$this'hide_code_tag'), $source );
                
            
    $find = array ('/data:/i','/about:/i','/vbscript:/i','/onclick/i','/onload/i','/onunload/i','/onabort/i','/onerror/i','/onblur/i','/onchange/i','/onfocus/i','/onreset/i','/onsubmit/i','/ondblclick/i','/onkeydown/i','/onkeypress/i','/onkeyup/i','/onmousedown/i','/onmouseup/i','/onmouseover/i','/onmouseout/i','/onselect/i','/javascript/i','/onmouseenter/i','/onwheel/i','/onshow/i','/onafterprint/i','/onbeforeprint/i','/onbeforeunload/i','/onhashchange/i','/onmessage/i','/ononline/i','/onoffline/i','/onpagehide/i','/onpageshow/i','/onpopstate/i','/onresize/i','/onstorage/i','/oncontextmenu/i','/oninvalid/i','/oninput/i','/onsearch/i','/ondrag/i','/ondragend/i','/ondragenter/i','/ondragleave/i','/ondragover/i','/ondragstart/i','/ondrop/i','/onmousemove/i','/onmousewheel/i','/onscroll/i','/oncopy/i','/oncut/i','/onpaste/i','/oncanplay/i','/oncanplaythrough/i','/oncuechange/i','/ondurationchange/i','/onemptied/i','/onended/i','/onloadeddata/i','/onloadedmetadata/i','/onloadstart/i','/onpause/i','/onprogress/i',    '/onratechange/i','/onseeked/i','/onseeking/i','/onstalled/i','/onsuspend/i','/ontimeupdate/i','/onvolumechange/i','/onwaiting/i','/ontoggle/i');
            
    $replace = array ("data:""about:""vbscript<b></b>:""onclick""onload""onunload""onabort""onerror""onblur""onchange""onfocus""onreset""onsubmit""ondblclick""onkeydown""onkeypress""onkeyup""onmousedown""onmouseup""onmouseover""onmouseout""onselect""javascript"'onmouseenter''onwheel''onshow''onafterprint','onbeforeprint','onbeforeunload','onhashchange','onmessage','ononline','onoffline','onpagehide','onpageshow','onpopstate','onresize','onstorage','oncontextmenu','oninvalid','oninput','onsearch','ondrag','ondragend','ondragenter','ondragleave','ondragover','ondragstart','ondrop','onmousemove','onmousewheel','onscroll','oncopy','oncut','onpaste','oncanplay','oncanplaythrough','oncuechange','ondurationchange','onemptied','onended','onloadeddata','onloadedmetadata','onloadstart','onpause','onprogress',    'onratechange','onseeked','onseeking','onstalled','onsuspend','ontimeupdate','onvolumechange','onwaiting','ontoggle');

            if( 
    $use_html == false ) {
                
    $find[] = "'\r'";
                
    $replace[] = "";
                
    $find[] = "'\n'";
                
    $replace[] = "<br />";
            } else {
                
    $source str_replace"\r\n\r\n""\n"$source );
            }

            
    $smilies_arr explode","$config['smilies'] );
            
            foreach ( 
    $smilies_arr as $smile ) {
                
                
    $smile trim$smile );
                
    $sm_image ="";
                
                if( 
    file_existsROOT_DIR "/engine/data/emoticons/" $smile ".png" ) ) {
                    if( 
    file_existsROOT_DIR "/engine/data/emoticons/" $smile "@2x.png" ) ) {
                        
    $sm_image "<img alt=\"{$smile}\" class=\"emoji\" src=\"{$config['http_home_url']}engine/data/emoticons/{$smile}.png\" srcset=\"{$config['http_home_url']}engine/data/emoticons/{$smile}@2x.png 2x\" />";
                    } else {
                        
    $sm_image "<img alt=\"{$smile}\" class=\"emoji\" src=\"{$config['http_home_url']}engine/data/emoticons/{$smile}.png\" />";    
                    }
                } elseif ( 
    file_existsROOT_DIR "/engine/data/emoticons/" $smile ".gif" ) ) {
                    if( 
    file_existsROOT_DIR "/engine/data/emoticons/" $smile "@2x.gif" ) ) {
                        
    $sm_image "<img alt=\"{$smile}\" class=\"emoji\" src=\"{$config['http_home_url']}engine/data/emoticons/{$smile}.gif\" srcset=\"{$config['http_home_url']}engine/data/emoticons/{$smile}@2x.gif 2x\" />";
                    } else {
                        
    $sm_image "<img alt=\"{$smile}\" class=\"emoji\" src=\"{$config['http_home_url']}engine/data/emoticons/{$smile}.gif\" />";    
                    }
                }
                
                if( 
    $sm_image ) {
                    
                    
    $find[] = "':$smile:'";
                    
    $replace[] = "<!--smile:{$smile}-->{$sm_image}<!--/smile-->";

                }
            }

            if( 
    $this->filter_mode $source $this->word_filter$source );

            
    $source preg_replace$find$replace$source );
            
    $source preg_replace"#<iframe#i""&lt;iframe"$source );
            
    $source preg_replace"#<script#i""&lt;script"$source );

            
    $source str_replace"`""`"$source );
            
    $source str_ireplace"{THEME}""{THEME}"$source );
            
    $source str_ireplace"{comments}""{comments}"$source );
            
    $source str_ireplace"{addcomments}""{addcomments}"$source );
            
    $source str_ireplace"{navigation}""{navigation}"$source );
            
    $source str_ireplace"[declination""[declination"$source );

            
    $source str_replace"<?""&lt;?"$source );
            
    $source str_replace"?>""?&gt;"$source );

            if (
    $config['parse_links'] AND $this->allowbbcodes) {
                
    $source preg_replace("#(^|\s|>)((http|https|ftp)://\w+[^\s\[\]\<]+)#i"'\\1[url]\\2[/url]'$source);
            }

            
    $count_start substr_count ($source"[quote");
            
    $count_end substr_count ($source"[/quote]");

            if (
    $count_start AND $count_start == $count_end) {
                
    $source str_ireplace"[quote]""[quote]"$source );

                if ( !
    $this->allow_code ) {
                    
    $source preg_replace_callback"#\[(quote)\](.+?)\[/quote\]#is", array( &$this'clear_div_tag'), $source );
                    
    $source preg_replace_callback"#\[(quote)=(.+?)\](.+?)\[/quote\]#is", array( &$this'clear_div_tag'), $source );
                }

                while( 
    preg_match"#\[quote\](.+?)\[/quote\]#is"$source ) ) {
                    
    $source preg_replace"#\[quote\](.+?)\[/quote\]#is""<!--QuoteBegin--><div class=\"quote\"><!--QuoteEBegin-->\\1<!--QuoteEnd--></div><!--QuoteEEnd-->"$source );
                }
                
                while( 
    preg_match"#\[quote=([^\]|\[|<]+)\](.+?)\[/quote\]#is"$source ) ) {
                    
    $source preg_replace"#\[quote=([^\]|\[|<]+)\](.+?)\[/quote\]#is""<!--QuoteBegin \\1 --><div class=\"title_quote\">{$lang['i_quote']} \\1</div><div class=\"quote\"><!--QuoteEBegin-->\\2<!--QuoteEnd--></div><!--QuoteEEnd-->"$source );
                }
            }
        
            if ( 
    $this->allowbbcodes ) {
                
                
    $count_start substr_count ($source"[spoiler");
                
    $count_end substr_count ($source"[/spoiler]");
        
                if (
    $count_start AND $count_start == $count_end) {
                    
    $source str_ireplace"[spoiler=]""[spoiler]"$source );
        
                    if ( !
    $this->allow_code ) {
                        
    $source preg_replace_callback"#\[(spoiler)\](.+?)\[/spoiler\]#is", array( &$this'clear_div_tag'), $source );
                        
    $source preg_replace_callback"#\[(spoiler)=(.+?)\](.+?)\[/spoiler\]#is", array( &$this'clear_div_tag'), $source );
                    }
                    while( 
    preg_match"#\[spoiler\](.+?)\[/spoiler\]#is"$source ) ) {
                        
    $source preg_replace_callback"#\[spoiler\](.+?)\[/spoiler\]#is", array( &$this'build_spoiler'), $source );
                    }
                    
                    while( 
    preg_match"#\[spoiler=([^\]|\[|<]+)\](.+?)\[/spoiler\]#is"$source ) ) {
                        
    $source preg_replace_callback"#\[spoiler=([^\]|\[|<]+)\](.+?)\[/spoiler\]#is", array( &$this'build_spoiler'), $source);
                    }
        
                }
        
                
    $source preg_replace"#\[(left|right|center|justify)\](.+?)\[/\\1\]#is""<div style=\"text-align:\\1;\">\\2</div>"$source );
        
                while( 
    preg_match"#\[(b|i|s|u|sub|sup)\](.+?)\[/\\1\]#is"$source ) ) {
                    
    $source preg_replace"#\[(b|i|s|u|sub|sup)\](.+?)\[/\\1\]#is""<\\1>\\2</\\1>"$source );
                }
                
                if( 
    $this->allow_url ) {
        
                    
    $source preg_replace_callback"#\[(url)\](\S.+?)\[/url\]#i", array( &$this'build_url'), $source );
                    
    $source preg_replace_callback"#\[(url)\s*=\s*\&quot\;\s*(\S+?)\s*\&quot\;\s*\](.*?)\[\/url\]#i", array( &$this'build_url'), $source );
                    
    $source preg_replace_callback"#\[(url)\s*=\s*(\S.+?)\s*\](.*?)\[\/url\]#i", array( &$this'build_url'), $source );
        
                    
    $source preg_replace_callback"#\[(leech)\](\S.+?)\[/leech\]#i", array( &$this'build_url'), $source );
                    
    $source preg_replace_callback"#\[(leech)\s*=\s*\&quot\;\s*(\S+?)\s*\&quot\;\s*\](.*?)\[\/leech\]#i", array( &$this'build_url'), $source );
                    
    $source preg_replace_callback"#\[(leech)\s*=\s*(\S.+?)\s*\](.*?)\[\/leech\]#i", array( &$this'build_url'), $source );
        
                } else {
        
                    if( 
    stristr$source"[url" ) !== false $this->not_allowed_tags true;
                    if( 
    stristr$source"[leech" ) !== false $this->not_allowed_tags true;
                    if( 
    stristr$source"&lt;a" ) !== false $this->not_allowed_tags true;
        
                }
        
                if( 
    $this->allow_image ) {
        
                    
    $source preg_replace_callback"#\[img\](.+?)\[/img\]#i", array( &$this'build_image'), $source );
                    
    $source preg_replace_callback"#\[img=(.+?)\](.+?)\[/img\]#i", array( &$this'build_image'), $source );
                    
    $source preg_replace_callback"'\[thumb\](.+?)\[/thumb\]'i", array( &$this'build_thumb'), $source );
                    
    $source preg_replace_callback"'\[thumb=(.+?)\](.+?)\[/thumb\]'i", array( &$this'build_thumb'), $source );
        
                } else {
        
                    if( 
    stristr$source"[img" ) !== false OR stristr$source"[thumb" ) !== false $this->not_allowed_tags true;
                    if( 
    stristr$source"&lt;img" ) !== false $this->not_allowed_tags true;
        
                }
        
                
    $source preg_replace_callback"#\[email\s*=\s*\&quot\;([\.\w\-]+\@[\.\w\-]+\.[\.\w\-]+)\s*\&quot\;\s*\](.*?)\[\/email\]#i", array( &$this'build_email'), $source );
                
    $source preg_replace_callback"#\[email\s*=\s*([\.\w\-]+\@[\.\w\-]+\.[\w\-]+)\s*\](.*?)\[\/email\]#i", array( &$this'build_email'), $source );
        
                if( !
    $this->safe_mode ) {
        
                    
    $source preg_replace_callback"'\[medium\](.+?)\[/medium\]'i", array( &$this'build_medium'), $source );
                    
    $source preg_replace_callback"'\[medium=(.+?)\](.+?)\[/medium\]'i", array( &$this'build_medium'), $source );
                    
    $source preg_replace_callback"#\[video\s*=\s*(\S.+?)\s*\]#i", array( &$this'build_video'), $source );
                    
    $source preg_replace_callback"#\[audio\s*=\s*(\S.+?)\s*\]#i", array( &$this'build_audio'), $source );
                    
    $source preg_replace_callback"#\[flash=([^\]]+)\](.+?)\[/flash\]#i", array( &$this'build_flash'), $source );
                    
    $source preg_replace_callback"#\[media=([^\]]+)\]#i", array( &$this'build_media'), $source );
        
                    
    $source preg_replace_callback"#\[ol=([^\]]+)\]\[\*\]#is", array( &$this'build_list'), $source );
                    
    $source preg_replace_callback"#\[ol=([^\]]+)\](.+?)\[\*\]#is", array( &$this'build_list'), $source );
                    
    $source str_ireplace("[list][*]""<!--dle_list--><ul><li>"$source);
                    
    $source preg_replace"#\[list\](.+?)\[\*\]#is""<!--dle_list--><ul><li>"$source );
                    
    $source str_replace("[*]""</li><!--dle_li--><li>"$source);
                    
    $source str_ireplace("[/list]""</li></ul><!--dle_list_end-->"$source);
                    
    $source str_ireplace("[/ol]""</li></ol><!--dle_list_end-->"$source);
        
                    
    $source preg_replace_callback"#\[(size)=([^\]]+)\]#i", array( &$this'font_change'), $source );
                    
    $source preg_replace_callback"#\[(font)=([^\]]+)\]#i", array( &$this'font_change'), $source );
                    
    $source str_ireplace("[/size]""<!--sizeend--></span><!--/sizeend-->"$source);
                    
    $source str_ireplace("[/font]""<!--fontend--></span><!--/fontend-->"$source);
                    
                    while( 
    preg_match"#\[h([1-6]{1})\](.+?)\[/h\\1\]#is"$source ) ) {
                        
    $source preg_replace"#\[h([1-6]{1})\](.+?)\[/h\\1\]#is""<h\\1>\\2</h\\1>"$source );
                    }
                
                    if( 
    $this->frame_count ) {
                        
    $find=array();$replace=array();
                        foreach ( 
    $this->frame_code as $key_find => $key_replace ) {
                            
    $find[] = $key_find;
                            
    $replace[] = $key_replace;
                        }
        
                        
    $source str_replace$find$replace$source );
                    }
                }
        
                
    $source preg_replace_callback"#\[(color)=([^\]]+)\]#i", array( &$this'font_change'), $source );
        
                
    $source str_ireplace("[/color]""<!--colorend--></span><!--/colorend-->"$source);

                
    $source preg_replace_callback"#<a(.+?)>(.*?)</a>#is", array( &$this'add_rel'), $source );

                if( 
    $this->code_count ) {
                    
                    
    $find=array();$replace=array();
                    foreach ( 
    $this->code_text as $key_find => $key_replace ) {
                        
    $find[] = $key_find;
                        
    $replace[] = $key_replace;
                    }
        
                    
    $source str_replace$find$replace$source );

                    
    $this->code_count 0;
                    
    $this->code_text = array ();
                
                    
    $source preg_replace"#\[code\](.+?)\[/code\]#is""<pre><code>\\1</code></pre>"$source );
            
                    if ( !
    $this->allow_code AND $this->edit_mode) {
                        
    $source preg_replace_callback"#<pre><code>(.+?)</code></pre>#is", array( &$this'clear_p_tag'), $source );
                    }
                    
                    
    $source str_replace"__CODENR__""\r"$source );
                    
    $source str_replace"__CODENN__""\n"$source );

                }
                
            }
            
            return 
    trim$source );

        }

        function 
    decodeBBCodes($txt$use_html TRUE$wysiwig false) {

            global 
    $config;

            
    $txt stripslashes$txt );
            if( 
    $this->filter_mode $txt $this->word_filter$txtfalse );

            
    $txt str_ireplace"{THEME}""{THEME}"$txt );
            
    $txt str_ireplace"{comments}""{comments}"$txt );
            
    $txt str_ireplace"{addcomments}""{addcomments}"$txt );
            
    $txt str_ireplace"{navigation}""{navigation}"$txt );
            
    $txt str_ireplace"[declination""[declination"$txt );
            
    $txt str_ireplace"{include""{include"$txt );
            
    $txt str_ireplace"{content""{content"$txt );
            
    $txt str_ireplace"{custom""{custom"$txt );
            
            
    $txt preg_replace_callback"#<!--(TBegin|MBegin):(.+?)-->(.+?)<!--(TEnd|MEnd)-->#i", array( &$this'decode_thumb'), $txt );
            
    $txt preg_replace_callback"#<!--TBegin-->(.+?)<!--TEnd-->#i", array( &$this'decode_oldthumb'), $txt );
            
    $txt preg_replace"#<!--QuoteBegin-->(.+?)<!--QuoteEBegin-->#"'[quote]'$txt );
            
    $txt preg_replace"#<!--QuoteBegin ([^>]+?) -->(.+?)<!--QuoteEBegin-->#""[quote=\\1]"$txt );
            
    $txt preg_replace"#<!--QuoteEnd-->(.+?)<!--QuoteEEnd-->#"'[/quote]'$txt );
            
    $txt preg_replace"#<!--code1-->(.+?)<!--ecode1-->#"'[code]'$txt );
            
    $txt preg_replace"#<!--code2-->(.+?)<!--ecode2-->#"'[/code]'$txt );
            
    $txt preg_replace_callback"#<!--dle_leech_begin--><a href=\"(.+?)\"(.+?)>(.+?)</a><!--dle_leech_end-->#i", array( &$this'decode_leech'), $txt );
            
    $txt preg_replace"#<!--dle_video_begin-->(.+?)src=\"(.+?)\"(.+?)<!--dle_video_end-->#is"'[video=\\2]'$txt );
            
    $txt preg_replace"#<!--dle_video_begin:(.+?)-->(.+?)<!--dle_video_end-->#is"'[video=\\1]'$txt );
            
    $txt preg_replace"#<!--dle_audio_begin:(.+?)-->(.+?)<!--dle_audio_end-->#is"'[audio=\\1]'$txt );
            
    $txt preg_replace_callback"#<!--dle_image_begin:(.+?)-->(.+?)<!--dle_image_end-->#is", array( &$this'decode_dle_img'), $txt );
            
    $txt preg_replace"#<!--dle_youtube_begin:(.+?)-->(.+?)<!--dle_youtube_end-->#is"'[media=\\1]'$txt );
            
    $txt preg_replace"#<!--dle_media_begin:(.+?)-->(.+?)<!--dle_media_end-->#is"'[media=\\1]'$txt );
            
    $txt preg_replace_callback"#<!--dle_flash_begin:(.+?)-->(.+?)<!--dle_flash_end-->#is", array( &$this'decode_flash'), $txt );
            
    $txt preg_replace"#<!--dle_spoiler-->(.+?)<!--spoiler_text-->#is"'[spoiler]'$txt );
            
    $txt preg_replace"#<!--dle_spoiler (.+?) -->(.+?)<!--spoiler_text-->#is"'[spoiler=\\1]'$txt );
            
    $txt str_replace"<!--spoiler_text_end--></div><!--/dle_spoiler-->"'[/spoiler]'$txt );
            
    $txt str_replace"<!--dle_list--><ul><li>""[list]\n[*]"$txt );
            
    $txt str_replace"</li></ul><!--dle_list_end-->"'[/list]'$txt );
            
    $txt str_replace"</li></ol><!--dle_list_end-->"'[/ol]'$txt );
            
    $txt str_replace"</li><!--dle_li--><li>"'[*]'$txt );
            
    $txt preg_replace('/<pre[^>]*><code>/''[code]'$txt);
            
    $txt str_replace"</code></pre>"'[/code]'$txt );
            
    $txt preg_replace"#<!--dle_ol_(.+?)-->(.+?)<!--/dle_ol-->#i""[ol=\\1]\n[*]"$txt );

            if( !
    $wysiwig ) {

                
    $txt str_replace"<b>""[b]"str_replace"</b>""[/b]"$txt ) );
                
    $txt str_replace"<i>""[i]"str_replace"</i>""[/i]"$txt ) );
                
    $txt str_replace"<u>""[u]"str_replace"</u>""[/u]"$txt ) );
                
    $txt str_replace"<s>""[s]"str_replace"</s>""[/s]"$txt ) );
                
    $txt str_replace"<sup>""[sup]"str_replace"</sup>""[/sup]"$txt ) );
                
    $txt str_replace"<sub>""[sub]"str_replace"</sub>""[/sub]"$txt ) );

                
    $txt preg_replace"#<a href=[\"']mailto:(.+?)['\"]>(.+?)</a>#i""[email=\\1]\\2[/email]"$txt );
                
    $txt preg_replace_callback"#<noindex><a href=\"(.+?)\"(.+?)>(.+?)</a></noindex>#i", array( &$this'decode_url'), $txt );
                
    $txt preg_replace_callback"#<a href=\"(.+?)\"(.+?)>(.+?)</a>#i", array( &$this'decode_url'), $txt );

                
    $txt preg_replace"#<!--sizestart:(.+?)-->(.+?)<!--/sizestart-->#""[size=\\1]"$txt );
                
    $txt preg_replace"#<!--colorstart:(.+?)-->(.+?)<!--/colorstart-->#""[color=\\1]"$txt );
                
    $txt preg_replace"#<!--fontstart:(.+?)-->(.+?)<!--/fontstart-->#""[font=\\1]"$txt );

                
    $txt str_replace"<!--sizeend--></span><!--/sizeend-->""[/size]"$txt );
                
    $txt str_replace"<!--colorend--></span><!--/colorend-->""[/color]"$txt );
                
    $txt str_replace"<!--fontend--></span><!--/fontend-->""[/font]"$txt );
                
                
    $txt preg_replace"#<h([1-6]{1})>(.+?)</h\\1>#is""[h\\1]\\2[/h\\1]"$txt );

                
    $txt preg_replace"#<div align=['\"](left|right|center|justify)['\"]>(.+?)</div>#is""[\\1]\\2[/\\1]"$txt );
                
    $txt preg_replace"#<div style=['\"]text-align:(left|right|center|justify);['\"]>(.+?)</div>#is""[\\1]\\2[/\\1]"$txt );



            } else {

                
    $txt str_replace"<!--sizeend--></span><!--/sizeend-->""</span>"$txt );
                
    $txt str_replace"<!--colorend--></span><!--/colorend-->""</span>"$txt );
                
    $txt str_replace"<!--fontend--></span><!--/fontend-->""</span>"$txt );
                
    $txt str_replace"<!--/sizestart-->"""$txt );
                
    $txt str_replace"<!--/colorstart-->"""$txt );
                
    $txt str_replace"<!--/fontstart-->"""$txt );
                
    $txt preg_replace"#<!--sizestart:(.+?)-->#"""$txt );
                
    $txt preg_replace"#<!--colorstart:(.+?)-->#"""$txt );
                
    $txt preg_replace"#<!--fontstart:(.+?)-->#"""$txt );

            }

            
    $txt preg_replace"#<!--smile:(.+?)-->(.+?)<!--/smile-->#is"':\\1:'$txt );
            
    $txt preg_replace_callback"#<a(.+?)>(.*?)</a>#is", array( &$this'remove_rel'), $txt );

            if( ! 
    $use_html ) {
                
    $txt str_ireplace"<br>""\n"$txt );
                
    $txt str_ireplace"<br />""\n"$txt );
            }

            if (!
    $this->safe_mode AND $this->edit_mode$txt htmlspecialchars$txtENT_QUOTES$config['charset'] );
            
    $this->codes_param['html'] = $use_html;
            
    $this->codes_param['wysiwig'] = $wysiwig;
            
    $txt preg_replace_callback"#\[code\](.+?)\[/code\]#is", array( &$this'decode_code'), $txt );

            return 
    trim$txt );

        }
        
        function 
    build_list$matches=array() ) {
            
    $type $matches[1];

            
    $allowed_types = array ("A""a""I""i""1");

            if (
    in_array($type$allowed_types))
                return 
    "<!--dle_ol_{$type}--><ol type=\"{$type}\"><li><!--/dle_ol-->";
            else
                return 
    "<!--dle_ol_1--><ol type=\"1\"><li><!--/dle_ol-->";

        }

        function 
    font_change$matches=array() ) {

            
    $style $matches[2];
            
    $type $matches[1];

            
    $style str_replace'&quot;'''$style );
            
    $style preg_replace"/[&\(\)\.\%\[\]<>\'\"]/"""preg_replace"#^(.+?)(?:;|$)#""\\1"$style ) );

            if( 
    $type == 'size' ) {
                
    $style intval$style );

                if( 
    $this->font_sizes[$style] ) {
                    
    $real $this->font_sizes[$style];
                } else {
                    
    $real 12;
                }

                return 
    "<!--sizestart:{$style}--><span style=\"font-size:" $real "pt;\"><!--/sizestart-->";
            }

            if( 
    $type == 'font' ) {
                
    $style preg_replace"/[^\d\w\#\-\_\s]/s"""$style );
                return 
    "<!--fontstart:{$style}--><span style=\"font-family:" $style "\"><!--/fontstart-->";
            }

            
    $style preg_replace"/[^\d\w\#\s]/s"""$style );
            return 
    "<!--colorstart:{$style}--><span style=\"color:" $style "\"><!--/colorstart-->";
        }

        function 
    build_email$matches=array() ) {

            
    $matches[1] = $this->clear_url$matches[1] );

            return 
    "<a href=\"mailto:{$matches[1]}\">{$matches[2]}</a>";

        }

        function 
    build_flash$matches=array() ) {

            
    $size $matches[1];
            
    $url $matches[2];
            
    $size explode(","$size);

            
    $width trim(intval($size[0]));
            
    $height trim(intval($size[1]));

            if (!
    $width OR !$height) return "[flash=".implode(",",$size)."]".$url."[/flash]";

            
    $url $this->clear_urlurldecode$url ) );

            if( 
    $url == "" ) return;

            if( 
    preg_match"/[?&;<\[\]]/"$url ) ) {

                return 
    "[flash=".implode(",",$size)."]".$url."[/flash]";

            }

            return 
    "<!--dle_flash_begin:{$width}||{$height}||{$url}--><object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='$width' height='$height'><param name='movie' value='$url'><param name='wmode' value='transparent' /><param name='play' value='true'><param name='loop' value='true'><param name='quality' value='high'><param name='allowscriptaccess' value='never'><embed AllowScriptAccess='never' src='$url' width='$width' height='$height' play='true' loop='true' quality='high' wmode='transparent'></embed></object><!--dle_flash_end-->";


        }

        function 
    decode_flash$matches=array() )
        {
            
    $url explode"||"$matches[1] );

            return 
    '[flash='.$url[0].','.$url[1].']'.$url[2].'[/flash]';
        }

        function 
    build_media$matches=array() ) {
            global 
    $config;

            
    $url $matches[1];

            if (!
    count($this->video_config)) {

                include (
    ENGINE_DIR '/data/videoconfig.php');
                
    $this->video_config $video_config;

            }

            
    $get_size explode","trim$url ) );
            
    $sizes = array();

            if (
    count($get_size) == 2)  {

                
    $url $get_size[1];
                
    $sizes explode"x"trim$get_size[0] ) );

                
    $width intval($sizes[0]) > intval($sizes[0]) : $this->video_config['width'];
                
    $height intval($sizes[1]) > intval($sizes[1]) : $this->video_config['height'];

                if (
    $this->_substr $sizes[0], - 1) == '%'$width $width."%";
                if (
    $this->_substr $sizes[1], - 1) == '%'$height $height."%";

            } else {

                
    $width $this->video_config['width'];
                
    $height $this->video_config['height'];

            }

            
    $url $this->clear_urlurldecode$url ) );
            
    $url str_replace("&amp;","&"$url );
            
    $url str_replace("&amp;","&"$url );

            if( 
    $url == "" ) return;

            if ( 
    count($get_size) == $decode_url $width."x".$height.",".$url;
            else 
    $decode_url $url;

            if (
    strpos($url"//") === 0$url "https:".$url;

            
    $source = @parse_url $url );

            
    $source['host'] = str_replace"www."""strtolower($source['host']) );

            if (
    $source['host'] != "youtube.com" AND $source['host'] != "youtu.be" AND $source['host'] != "vimeo.com") return "[media=".$url."]";

            if (
    $source['host'] == "youtube.com" OR $source['host'] == "youtu.be") {
                
                if (
    $source['host'] == "youtube.com") {
        
                    
    $a explode('&'$source['query']);
                    
    $i 0;
        
                    while (
    $i count($a)) {
                        
    $b explode('='$a[$i]);
                        if (
    $b[0] == "v"$video_link htmlspecialchars($b[1], ENT_QUOTES$config['charset']);
                        
    $i++;
                    }
        
                }
        
                if (
    $source['host'] == "youtu.be") {
                    
    $video_link str_replace"/"""$source['path'] );
                    
    $video_link htmlspecialchars($video_linkENT_QUOTES$config['charset']);
                }
            
                if ( 
    $this->video_config['tube_dle'] ) {

                    if( 
    $source['scheme'] ) $source['scheme'] .= ":";

                    if ( 
    count($get_size) == $decode_url $width."x".$height.",{$source['scheme']}//www.youtube.com/watch?v=".$video_link;
                    else 
    $decode_url "{$source['scheme']}//www.youtube.com/watch?v=".$video_link;
                    
                    if (
    $this->_substr $width, - 1) != '%'$width $width."px";

                    
    $width "style=\"width:100%;max-width:{$width};\"";
            
                    return 
    "<!--dle_media_begin:{$decode_url}--><div class=\"dlevideoplayer\" {$width}><ul data-theme=\"{$this->video_config['theme']}\" data-preload=\"metadata\"><li data-title=\"\" data-type=\"youtube\" data-url=\"https://www.youtube.com/watch?v={$video_link}\"></li></ul></div><!--dle_media_end-->";

                } else return 
    '<!--dle_media_begin:'.$decode_url.'--><iframe title="YouTube video player" width="'.$width.'" height="'.$height.'" src="https://www.youtube.com/embed/'.$video_link.'?rel='.intval($this->video_config['tube_related']).'&amp;wmode=transparent" frameborder="0" allowfullscreen></iframe><!--dle_media_end-->';

            } elseif (
    $source['host'] == "vimeo.com") {
                
                if (
    $this->_substr $source['path'], - 1) == '/'$source['path'] = $this->_substr $source['path'], 0, - );
                
    $a explode('/'$source['path']);
                
    $a end($a);

                
    $video_link intval$a );

                if ( 
    count($get_size) == $decode_url $width."x".$height.",".$url;
                else 
    $decode_url $url;

                return 
    '<!--dle_media_begin:'.$decode_url.'--><iframe width="'.$width.'" height="'.$height.'" src="//player.vimeo.com/video/'.$video_link.'" frameborder="0" allowfullscreen></iframe><!--dle_media_end-->';

            }

        }

        function 
    build_url$matches=array() ) {
            global 
    $config$member_id$user_group;

            
    $url = array();

            if (
    $matches[1] == "leech" $url['leech'] = 1;

            
    $option=explode("|"$matches[2]);
            
            
    $url['html'] = $option[0];
            
    $url['tooltip'] = $option[1];
            
    $url['show'] = $matches[3];
            
            if ( !
    $url['show'] ) $url['show'] = $url['html'];

            if ( 
    $user_group[$member_id['user_group']]['force_leech'] ) $url['leech'] = 1;

            if( 
    preg_match"/([\.,\?]|!)$/"$url['show'], $match ) ) {
                
    $url['end'] = $match[1];
                
    $url['show'] = preg_replace"/([\.,\?]|!)$/"""$url['show'] );
            }

            
    $url['html'] = $this->clear_url$url['html'] );
            
    $url['show'] = stripslashes$url['show'] );

            if( 
    $this->safe_mode ) {

                
    $url['show'] = str_replace"&nbsp;"" "$url['show'] );

                if (
    $this->_strlen(trim($url['show'])) < )
                    return 
    "[url=" $url['html'] . "]" $url['show'] . "[/url]";

            }

            if( 
    $this->_strpos$url['html'], $config['http_home_url'] ) !== false AND $this->_strpos$url['html'], $config['admin_path'] ) !== false ) {

                return 
    "[url=" $url['html'] . "]" $url['show'] . "[/url]";

            }

            if( ! 
    preg_match"#^(http|news|https|ed2k|ftp|aim|mms)://|(magnet:?)#"$url['html'] ) AND $url['html'][0] != "/" AND $url['html'][0] != "#") {
                
    $url['html'] = 'http://' $url['html'];
            }

            if (
    $url['html'] == 'http://' )
                return 
    "[url=" $url['html'] . "]" $url['show'] . "[/url]";

            
    $url['show'] = str_replace"&amp;amp;""&amp;"$url['show'] );
            
    $url['show'] = preg_replace"/javascript:/i""javascript: "$url['show'] );

            if( 
    $this->check_home$url['html'] ) OR $url['html'][0] == "/" OR $url['html'][0] == "#"$target "";
            else 
    $target " target=\"_blank\"";

            if( 
    $url['tooltip'] ) {
                
    $url['tooltip'] = htmlspecialcharsstrip_tagsstripslashes$url['tooltip'] ) ), ENT_QUOTES$config['charset'] );
                
                if( 
    $this->safe_mode ) {
                    
    $url['tooltip'] = str_replace"&amp;""&"$url['tooltip'] );
                }
                
                
    $target "title=\"".$url['tooltip']."\"".$target;
            }
            
            if( 
    $url['leech'] ) {

                
    $url['html'] = $config['http_home_url'] . "engine/go.php?url=" rawurlencodebase64_encode$url['html'] ) );

                return 
    "<!--dle_leech_begin--><a href=\"" $url['html'] . "\" " $target ">" $url['show'] . "</a><!--dle_leech_end-->" $url['end'];

            } else {

                if (
    $this->safe_mode AND !$config['allow_search_link'] AND $target)
                    return 
    "<a href=\"" $url['html'] . "\" " $target " rel=\"nofollow\">" $url['show'] . "</a>" $url['end'];
                else
                    return 
    "<a href=\"" $url['html'] . "\" " $target ">" $url['show'] . "</a>" $url['end'];

            }

        }

        function 
    code_tag$matches=array() ) {

            
    $txt $matches[1];

            if( 
    $txt == "" ) {
                return;
            }

            
    $this->code_count ++;

            if ( 
    $this->edit_mode )    {
                
    $txt str_replace"&""&amp;"$txt );
                
    $txt str_replace"'""'"$txt );
                
    $txt str_replace"<""&lt;"$txt );
                
    $txt str_replace">""&gt;"$txt );
                
    $txt str_replace"&quot;"""", $txt );
                
    $txt = str_replace( '"', """, $txt );
                $txt = str_replace( ":", ":", $txt );
                $txt = str_replace( "[", "[", $txt );
                $txt = str_replace( "]", "]", $txt );
                $txt = str_replace( "&amp;#123;include", "{include", $txt );
                $txt = str_replace( "&amp;#123;content", "{content", $txt );
                $txt = str_replace( "&amp;#123;custom", "{custom", $txt );
            
                $txt = str_replace( "{", "{", $txt );

                $txt = str_replace( "\r", "__CODENR__", $txt );
                $txt = str_replace( "\n", "__CODENN__", $txt );

            }

            $p = "[code]{" . $this->code_count . "}[/code]";

            $this->code_text[$p] = "[code]{$txt}[/code]";

            return $p;
        }

        function hide_code_tag( $matches=array() ) {
            $txt = $matches[1];

            if( $txt == "" ) {
                return;
            }

            $this->code_count ++;
            
            $p = "[code]{" . $this->code_count . "}[/code]";

            $this->code_text[$p] = "[code]{$txt}[/code]";

            return $p;
        }
        
        function check_frame( $matches=array() ) {
            $allow_frame = false;

            if ($this->_strpos($matches[3], "src=") !== false) return "";

            $matches[2] = str_replace(chr(0), '', $matches[2]);
            $domain = str_replace("www.", '', $matches[2]);
            
            if ($this->_strpos($domain, "//") === 0) $domain = "http:".$domain;

            $domain = @parse_url ( $domain, PHP_URL_HOST );

            if($domain AND in_array($domain, $this->allowed_domains ) ) {
                $allow_frame = true;
            }

            if ( !$allow_frame ) return "";

            $this->frame_count ++;

            $p = "[frame{$this->frame_count}]";

            $this->frame_code[$p] = "<iframe src=\"{$matches[2]}\" ".trim($matches[1].$matches[3])."></iframe>";

            return $p;

        }

        function decode_code( $matches=array() ) {

            $txt = $matches[1];

            if ( !$this->codes_param['
    wysiwig'] AND $this->edit_mode )    {

                $txt = str_replace( "&amp;", "&", $txt );
            }

            if( !$this->codes_param['
    wysiwig'] AND $this->codes_param['html'] ) {
                $txt = str_replace( "&lt;br /&gt;", "\n", $txt );
            }

            if ( $this->codes_param['
    wysiwig'] AND $this->edit_mode ) {

                return "&lt;pre class=\"language-markup\">&lt;code&gt;".$txt."&lt;/code>&lt;/pre&gt;";
            }

            return "[code]".$txt."[/code]";
        }


        function build_video( $matches=array() ) {
            global $config;

            $url = $matches[1];
            
            if (!count($this->video_config)) {

                include (ENGINE_DIR . '
    /data/videoconfig.php');
                $this->video_config = $video_config;

            }
            
            $get_videos = array();
            $sizes = array();
            $decode_url = array();
            $video_url = array();
            $video_option = array();
            $i = 0;
            
            $width = $this->video_config['
    width'];
            
            if( $this->video_config['
    preload'] ) $preload = "metadata"; else $preload = "none";

            $get_videos = explode( ",", trim( $url ) );

            foreach ($get_videos as $video) {
                
                if( $i == 0 AND count($get_videos) > 1 AND stripos ( $video, "http" ) === false) {
                    
                    $sizes = explode( "x", trim( $video ) );
                    $width = intval($sizes[0]) > 0 ? intval($sizes[0]) : $this->video_config['
    width'];
                    
                    if ($this->_substr ( $sizes[0], - 1, 1 ) == '
    %') $width = $width."%";
                    
                    $decode_url[] = $width;
                    continue;
                
                }
                
                $video = str_replace( "%20", " ", trim( $video ) );
                
                $video_option = explode( "|", trim( $video ) );
                
                $video_option[0] = $this->clear_url( trim($video_option[0]) );
                
                if($video_option[1]) {
                    $video_option[1] = $this->clear_url( trim($video_option[1]) );
                    $preview = "data-poster=\"{$video_option[1]}\" ";
                } else { $preview = ""; }
                
                if($video_option[2]) $video_option[2] = htmlspecialchars( strip_tags( stripslashes( trim($video_option[2]) ) ), ENT_QUOTES, $config['
    charset'] );
                
                $decode_url[] = implode("|", $video_option);
                if( !$video_option[2] ) $video_option[2] = str_replace( "%20", " ", pathinfo( $video_option[0], PATHINFO_FILENAME ) );
                
                $type="m4v";
                
                if( pathinfo( $video_option[0], PATHINFO_EXTENSION ) == "flv") {
                    return "<!--dle_video_begin:{$video_option[0]}--><video width=\"{$width}\" height=\"{$this->video_config['
    height']}\" preload=\"{$preload}\" controls=\"controls\">
                            <source src=\"{$video_option[0]}\"></source>
                            </video><!--dle_video_end-->";
                
                }
                
                if ($this->_strpos ( $video_option[0], "youtube.com" ) !== false) { $type="youtube"; $preload = "metadata"; }
                
                $video_url[] = "<li data-title=\"{$video_option[2]}\" data-type=\"{$type}\" data-url=\"{$video_option[0]}\" {$preview}></li>";
                
                $i++;
            }
            
            if( count($video_url) ){
                $video_url = implode($video_url);
                $decode_url = implode(",",$decode_url);
            } else {
                return "[video=" . $matches[1] . "]";
            }
            
            if ($this->_substr ( $width, - 1, 1 ) != '
    %') $width = $width."px";

            $width = "style=\"width:100%;max-width:{$width};\""; 

            return "<!--dle_video_begin:{$decode_url}--><div class=\"dlevideoplayer\" {$width}>
                <ul data-theme=\"{$this->video_config['
    theme']}\" data-preload=\"{$preload}\">
                    {$video_url}
                </ul>
            </div><!--dle_video_end-->";

        }
        
        function build_audio( $matches=array() ) {
            global $config;

            $url = $matches[1];

            if( $url == "" ) return;

            if (!count($this->video_config)) {

                include (ENGINE_DIR . '
    /data/videoconfig.php');
                $this->video_config = $video_config;

            }

            $get_audios = array();
            $sizes = array();
            $decode_url = array();
            $audio_url = array();
            $audio_option = array();
            $i = 0;
            
            $width = $this->video_config['
    audio_width'];
            
            if( $this->video_config['
    preload'] ) $preload = "metadata"; else $preload = "none";

            $get_audios = explode( ",", trim( $url ) );

            foreach ($get_audios as $audio) {
                
                if( $i == 0 AND count($get_audios) > 1 AND stripos ( $audio, "http" ) === false) {
                    
                    $sizes = explode( "x", trim( $audio ) );
                    $width = intval($sizes[0]) > 0 ? intval($sizes[0]) : $this->video_config['
    audio_width'];
                    
                    if ($this->_substr ( $sizes[0], - 1, 1 ) == '
    %') $width = $width."%";
                    
                    $decode_url[] = $width;
                    continue;
                
                }
                
                $audio = str_replace( "%20", " ", trim( $audio ) );
                
                $audio_option = explode( "|", trim( $audio ) );
                
                $audio_option[0] = $this->clear_url( trim($audio_option[0]) );
                
                if($audio_option[1]) $audio_option[1] = htmlspecialchars( strip_tags( stripslashes( trim($audio_option[1]) ) ), ENT_QUOTES, $config['
    charset'] );
                
                $decode_url[] = implode("|", $audio_option);
                if( !$audio_option[1] ) $audio_option[1] = str_replace( "%20", " ", pathinfo( $audio_option[0], PATHINFO_FILENAME ));
                
                $type="mp3";
                
                $audio_url[] = "<li data-title=\"{$audio_option[1]}\" data-type=\"mp3\" data-url=\"{$audio_option[0]}\"></li>";
                
                $i++;
            }
            
            if( count($audio_url) ){
                $audio_url = implode($audio_url);
                $decode_url = implode(",",$decode_url);
            } else {
                return "[audio=" . $matches[1] . "]";
            }
            
            if ($this->_substr ( $width, - 1, 1 ) != '
    %') $width = $width."px";

            if( $width ) $width = "style=\"width:100%;max-width:{$width};\""; 

            return "<!--dle_audio_begin:{$decode_url}--><div class=\"dleaudioplayer\" {$width}>
                <ul data-theme=\"{$this->video_config['
    theme']}\" data-preload=\"{$preload}\">
                    {$audio_url}
                </ul>
            </div><!--dle_audio_end-->";        


        }

        function build_image( $matches=array() ) {
            global $config;

            if(count($matches) == 2 ) {

                $align = "";
                $url = $matches[1];

            } else {
                $align = $matches[1];
                $url = $matches[2];
            }

            $url = trim( $url );
            $url = urldecode( $url );
            $option = explode( "|", trim( $align ) );
            $align = $option[0];

            if( $align != "left" and $align != "right" ) $align = '';

            if( preg_match( "/[?&;%<\[\]]/", $url ) ) {

                if( $align != "" ) return "[img=" . $align . "]" . $url . "[/img]";
                else return "[img]https://www.szenebox.org/[/img]";

            }

            $url = $this->clear_url( urldecode( $url ) );

            $info = $url;

            $info = $info."|".$align;

            if( $url == "" ) return;

            if( $option[1] != "" ) {

                $alt = htmlspecialchars( strip_tags( stripslashes( $option[1] ) ), ENT_QUOTES, $config['
    charset'] );
                $info = $info."|".$alt;
                $caption = "<span class=\"highslide-caption\">" . $alt . "</span>";
                $alt = "alt=\"" . $alt . "\" title=\"" . $alt . "\" ";

            } else {

                $alt = htmlspecialchars( strip_tags( stripslashes( $_POST['
    title'] ) ), ENT_QUOTES, $config['charset'] );
                $caption = "";
                $alt = "alt=\"" . $alt . "\" title=\"" . $alt . "\" ";

            }

            if( intval( $config['
    tag_img_width'] ) ) {

                if (clean_url( $config['
    http_home_url'] ) != clean_url ( $url ) ) {

                    $img_info = @getimagesize( $url );

                    if( $img_info[0] > $config['
    tag_img_width'] ) {

                        $out_heigh = ($img_info[1] / 100) * ($config['
    tag_img_width'] / ($img_info[0] / 100));
                        $out_heigh = floor( $out_heigh );

                        if( $align == '' ) return "<!--dle_image_begin:{$info}--><a href=\"{$url}\" onclick=\"return hs.expand(this)\" ><img src=\"$url\" width=\"{$config['
    tag_img_width']}\" height=\"{$out_heigh}\" {$alt} /></a>{$caption}<!--dle_image_end-->";
                        else return "<!--dle_image_begin:{$info}--><a href=\"{$url}\" onclick=\"return hs.expand(this)\" ><img src=\"$url\" width=\"{$config['
    tag_img_width']}\" height=\"{$out_heigh}\" style=\"float:{$align};\" {$alt} /></a>{$caption}<!--dle_image_end-->";


                    }
                }
            }


            if( $align == '' ) return "<!--dle_image_begin:{$info}--><img src=\"{$url}\" {$alt} /><!--dle_image_end-->";
            else return "<!--dle_image_begin:{$info}--><img src=\"{$url}\" style=\"float:{$align};\" {$alt} /><!--dle_image_end-->";

        }

        function decode_dle_img( $matches=array() ) {

            $txt = $matches[1];
            $txt = explode("|", $txt );
            $url = $txt[0];
            $align = $txt[1];
            $alt = $txt[2];
            $extra = "";

            if( ! $align and ! $alt ) return "[img]https://www.szenebox.org/[/img]";

            if( $align ) $extra = $align;

            if( $alt ) {

                $alt = str_replace("'", "'", $alt);
                $alt = str_replace("&quot;", '"', 
    $alt);
                
    $alt = str_replace("&amp;", '&', $alt);
                
    $extra .= "|" . $alt;

            }

            return "
    [img]https://www.szenebox.org/[/img]";

        
    }

        function 
    clear_p_tag$matches=array() ) {

            
    $txt $matches[1];

            
    $txt str_replace("\r"""$txt);
            
    $txt str_replace("\n"""$txt);

            
    $txt preg_replace('/<p[^>]*>/'''$txt);
            
    $txt str_replace("</p>""\n"$txt);
            
    $txt preg_replace('/<div[^>]*>/'''$txt);
            
    $txt str_replace("</div>""\n"$txt);
            
    $txt preg_replace('/<br[^>]*>/'"\n"$txt);

            return 
    "<pre><code>".$txt."</code></pre>";

        }

        function 
    clear_div_tag$matches=array() ) {

            
    $spoiler = array();

            if ( 
    count($matches) == ) {
                
    $spoiler['title'] = '';
                
    $spoiler['txt'] = $matches[2];
            } else {
                
    $spoiler['title'] = $matches[2];
                
    $spoiler['txt'] = $matches[3];
            }

            
    $tag $matches[1];

            
    $spoiler['txt'] = preg_replace('/<div[^>]*>/'''$spoiler['txt']);
            
    $spoiler['txt'] = str_replace("</div>""<br />"$spoiler['txt']);

            if (
    $spoiler['title'])
                return 
    "[{$tag}={$spoiler['title']}]".$spoiler['txt']."[/{$tag}]";
            else
                return 
    "[{$tag}]".$spoiler['txt']."[/{$tag}]";

        }

        function 
    build_thumb$matches=array() ) {
            global 
    $config;

            if (
    count($matches) == ) {
                
    $align "";
                
    $gurl $matches[1];
            } else {
                
    $align $matches[1];
                
    $gurl $matches[2];
            }

            if( 
    preg_match"/[?&;%<\[\]]/"$gurl ) ) {

                if( 
    $align != "" ) return "[thumb=" $align "]" $gurl "[/thumb]";
                else return 
    "[thumb]" $gurl "[/thumb]";

            }

            
    $gurl $this->clear_urlurldecode$gurl ) );

            
    $url preg_replace"'([^\[]*)([/\\\\])(.*?)'i""\\1\\2thumbs\\2\\3"$gurl );

            
    $url trim$url );
            
    $gurl trim$gurl );
            
    $option explode"|"trim$align ) );

            
    $align $option[0];

            if( 
    $align != "left" and $align != "right" $align '';

            
    $url $this->clear_urlurldecode$url ) );

            
    $info $gurl;
            
    $info $info."|".$align;

            if( 
    $gurl == "" or $url == "" ) return;

            if( 
    $option[1] != "" ) {

                
    $alt htmlspecialcharsstrip_tagsstripslashes$option[1] ) ), ENT_QUOTES$config['charset'] );

                
    $alt str_replace("&amp;amp;","&amp;",$alt);

                
    $info $info."|".$alt;
                
    $caption "<span class=\"highslide-caption\">" $alt "</span>";
                
    $alt "alt=\"" $alt "\" title=\"" $alt "\" ";

            } else {

                
    $alt htmlspecialcharsstrip_tagsstripslashes$_POST['title'] ) ), ENT_QUOTES$config['charset'] );
                
    $alt "alt='" $alt "' title='" $alt "' ";
                
    $caption "";

            }

            if( 
    $align == '' ) return "<!--TBegin:{$info}--><a href=\"$gurl\" rel=\"highslide\" class=\"highslide\" target=\"_blank\"><img src=\"$url\" {$alt} /></a>{$caption}<!--TEnd-->";
            else return 
    "<!--TBegin:{$info}--><a href=\"$gurl\" rel=\"highslide\" class=\"highslide\" target=\"_blank\"><img src=\"$url\" style=\"float:{$align};\" {$alt} /></a>{$caption}<!--TEnd-->";

        }


        function 
    build_medium$matches=array() ) {
            global 
    $config;

            if (
    count($matches) == ) {
                
    $align "";
                
    $gurl $matches[1];
            } else {
                
    $align $matches[1];
                
    $gurl $matches[2];
            }

            if( 
    preg_match"/[?&;%<\[\]]/"$gurl ) ) {

                if( 
    $align != "" ) return "[medium=" $align "]" $gurl "[/medium]";
                else return 
    "[medium]" $gurl "[/medium]";

            }

            
    $gurl $this->clear_urlurldecode$gurl ) );

            
    $url preg_replace"'([^\[]*)([/\\\\])(.*?)'i""\\1\\2medium\\2\\3"$gurl );

            
    $url trim$url );
            
    $gurl trim$gurl );
            
    $option explode"|"trim$align ) );

            
    $align $option[0];

            if( 
    $align != "left" and $align != "right" $align '';

            
    $url $this->clear_urlurldecode$url ) );

            
    $info $gurl;
            
    $info $info."|".$align;

            if( 
    $gurl == "" or $url == "" ) return;

            if( 
    $option[1] != "" ) {

                
    $alt htmlspecialcharsstrip_tagsstripslashes$option[1] ) ), ENT_QUOTES$config['charset'] );

                
    $alt str_replace("&amp;amp;","&amp;",$alt);

                
    $info $info."|".$alt;
                
    $caption "<span class=\"highslide-caption\">" $alt "</span>";
                
    $alt "alt=\"" $alt "\" title=\"" $alt "\" ";

            } else {

                
    $alt htmlspecialcharsstrip_tagsstripslashes$_POST['title'] ) ), ENT_QUOTES$config['charset'] );
                
    $alt "alt='" $alt "' title='" $alt "' ";
                
    $caption "";

            }

            if( 
    $align == '' ) return "<!--MBegin:{$info}--><a href=\"$gurl\" rel=\"highslide\" class=\"highslide\"><img src=\"$url\" {$alt} /></a>{$caption}<!--MEnd-->";
            else return 
    "<!--MBegin:{$info}--><a href=\"$gurl\" rel=\"highslide\" class=\"highslide\"><img src=\"$url\" style=\"float:{$align};\" {$alt} /></a>{$caption}<!--MEnd-->";

        }

        function 
    build_spoiler$matches=array() ) {
            global 
    $lang;
            
            if (
    count($matches) == ) {
                
                
    $title $matches[1];
                
    $title trim$title );
        
                
    $title str_replace"&amp;amp;""&amp;"$title );
                
    $title preg_replace"/javascript:/i""javascript: "$title );
                
            } else 
    $title false;
            
            
    $id_spoiler "sp".md5microtime().uniqidmt_rand(), TRUE ) );

            if( !
    $title ) {

                return 
    "<!--dle_spoiler--><div class=\"title_spoiler\"><a href=\"javascript:ShowOrHide('" $id_spoiler "')\"><img id=\"image-" $id_spoiler "\" style=\"vertical-align: middle;border: none;\" alt=\"\" src=\"{THEME}/dleimages/spoiler-plus.gif\" /></a>&nbsp;<a href=\"javascript:ShowOrHide('" $id_spoiler "')\"><!--spoiler_title-->" $lang['spoiler_title'] . "<!--spoiler_title_end--></a></div><div id=\"" $id_spoiler "\" class=\"text_spoiler\" style=\"display:none;\"><!--spoiler_text-->{$matches[1]}<!--spoiler_text_end--></div><!--/dle_spoiler-->";

            } else {

                return 
    "<!--dle_spoiler $title --><div class=\"title_spoiler\"><a href=\"javascript:ShowOrHide('" $id_spoiler "')\"><img id=\"image-" $id_spoiler "\" style=\"vertical-align: middle;border: none;\" alt=\"\" src=\"{THEME}/dleimages/spoiler-plus.gif\" /></a>&nbsp;<a href=\"javascript:ShowOrHide('" $id_spoiler "')\"><!--spoiler_title-->" $title "<!--spoiler_title_end--></a></div><div id=\"" $id_spoiler "\" class=\"text_spoiler\" style=\"display:none;\"><!--spoiler_text-->{$matches[2]}<!--spoiler_text_end--></div><!--/dle_spoiler-->";

            }

        }
        
        function 
    clear_url($url) {
            global 
    $config;

            
    $url strip_tagstrimstripslashes$url ) ) );

            
    $url str_replace'\"''"'$url );
            
    $url str_replace"'"""$url );
            
    $url str_replace'"'""$url );
            
    $url str_replace"o""o"$url );
            
            if( !
    $this->safe_mode OR $this->wysiwyg ) {

                
    $url htmlspecialchars$urlENT_QUOTES$config['charset'] );

            }

            
    $url str_ireplace"document.cookie""document.cookie"$url );
            
    $url str_replace" ""%20"$url );
            
    $url str_replace"<""<"$url );
            
    $url str_replace">"">"$url );
            
    $url preg_replace"/javascript:/i""javascript:"$url );
            
    $url preg_replace"/data:/i""data:"$url );

            return 
    $url;

        }

        function 
    decode_leech$matches=array() ) {

            
    $url =     $matches[1];
            
    $show $matches[3];

            if( 
    $this->leech_mode ) return "[url=" $url "]" $show "[/url]";

            
    $url explode"url="$url );
            
    $url end$url );
            
    $url rawurldecode$url );
            
    $url base64_decode$url );
            
    $url str_replace("&amp;","&"$url );
            
            if( 
    preg_match"#title=['\"](.+?)['\"]#i"$matches[2], $match ) ) {
                
    $match[1] = str_replace("&quot;"'"'$match[1]);
                
    $match[1] = str_replace("'""'"$match[1]);
                
    $match[1] = str_replace("&amp;""&"$match[1]);
                
    $url $url."|".$match[1];
            }
            
            return 
    "[leech=" $url "]" $show "[/leech]";
        }

        function 
    decode_url$matches=array() ) {

            
    $show =  $matches[3];
            
    $url $matches[1];
            
    $params trim($matches[2]);

            if( 
    preg_match"#title=['\"](.+?)['\"]#i"$params$match ) ) {
                
    $match[1] = str_replace("&quot;"'"'$match[1]);
                
    $match[1] = str_replace("'""'"$match[1]);
                
    $match[1] = str_replace("&amp;""&"$match[1]);
                
    $url $url."|".$match[1];
                
    $params trim(str_replace($match[0], ""$params));
            }
            
            if( 
    preg_match"#rel=['\"](.+?)['\"]#i"$params$match ) ) {
                
    $params trim(str_replace($match[0], ""$params));
            }
            
            if (!
    $params OR $params == 'target="_blank"') {

                
    $url str_replace("&amp;","&"$url );

                return 
    "[url=" $url "]" $show "[/url]";

             } else {

                return 
    $matches[0];

            }
        }
        
        function 
    add_rel$matches=array() ) {

            
    $params trimstripslashes($matches[1]) );
            
            if( 
    preg_match"#href=['\"](.+?)['\"]#i"$params$match ) ) {
                
                if( 
    $this->check_home($match[1]) ) {
                    return 
    $matches[0];
                }
                
            } else return 
    $matches[0];
            
            if( 
    preg_match"#rel=['\"](.+?)['\"]#i"$params$match ) ) {
                
                
    $match[1] = trimstr_ireplace("external noopener noreferrer"""$match[1]) );
                
                if (
    $match[1]) {
                    
    $params str_ireplace($match[0], "rel=\"{$match[1]} external noopener noreferrer\""$params);
                } else {
                    
    $params str_ireplace($match[0], "rel=\"external noopener noreferrer\""$params);
                }
            
            } else {
                
                
    $params .= " rel=\"external noopener noreferrer\"";
                
            }
            
            
    $params addslashes$params );

            return 
    "<a {$params}>{$matches[2]}</a>";
            
        }
        
        function 
    remove_rel$matches=array() ) {
            
            
    $params trim$matches[1] );
            
            if( 
    preg_match"#rel=['\"](.+?)['\"]#i"$params$match ) ) {
                
                
    $match[1] = trimstr_ireplace("external noopener noreferrer"""$match[1]) );
                
                if (
    $match[1]) {
                    
    $params str_ireplace($match[0], " rel=\"{$match[1]}\""$params);
                } else {
                    
    $params str_ireplace($match[0], ""$params);
                }
                
                
    $params trim($params);
                
                return 
    "<a {$params}>{$matches[2]}</a>";
            
            } else {
                
                return 
    $matches[0];
                
            }
            
        }
        
        function 
    decode_thumb$matches=array() ) {

            if (
    $matches[1] == "TBegin"$tag="thumb"; else $tag="medium";
            
    $txt $matches[2];

            
    $txt stripslashes$txt );
            
    $txt explode("|"$txt );
            
    $url $txt[0];
            
    $align $txt[1];
            
    $alt $txt[2];
            
    $extra "";

            if( ! 
    $align and ! $alt ) return "[{$tag}]{$url}[/{$tag}]";

            if( 
    $align $extra $align;
            if( 
    $alt ) {

                
    $alt str_replace("'""'"$alt);
                
    $alt str_replace("&quot;"'"'$alt);
                
    $alt str_replace("&amp;"'&'$alt);
                
    $extra .= "|" $alt;

            }

            return 
    "[{$tag}={$extra}]{$url}[/{$tag}]";

        }

        function 
    decode_oldthumb$matches=array() ) {

            
    $txt $matches[1];

            
    $align false;
            
    $alt false;
            
    $extra "";
            
    $txt stripslashes$txt );

            
    $url str_replace"<a href=\""""$txt );
            
    $url explode"\""$url );
            
    $url reset$url );

            if( 
    $this->_strpos$txt"align=\"" ) !== false ) {

                
    $align preg_replace"#(.+?)align=\"(.+?)\"(.*)#is""\\2"$txt );
            }

            if( 
    $this->_strpos$txt"alt=\"" ) !== false ) {

                
    $alt preg_replace"#(.+?)alt=\"(.+?)\"(.*)#is""\\2"$txt );
            }

            if( 
    $align != "left" and $align != "right" $align false;

            if( ! 
    $align and ! $alt ) return "[thumb]" $url "[/thumb]";

            if( 
    $align $extra $align;
            if( 
    $alt ) {
                
    $alt str_replace("'""'"$alt);
                
    $alt str_replace("&quot;"'"'$alt);
                
    $alt str_replace("&amp;"'&'$alt);
                
    $extra .= "|" $alt;

            }

            return 
    "[thumb=" $extra "]" $url "[/thumb]";

        }

        function 
    decode_img$matches=array() ) {

            
    $img $matches[1];
            
    $txt $matches[2];
            
    $align false;
            
    $alt false;
            
    $extra "";

            if( 
    $this->_strpos$txt"align=\"" ) !== false ) {

                
    $align preg_replace"#(.+?)align=\"(.+?)\"(.*)#is""\\2"$txt );
            }

            if( 
    $this->_strpos$txt"alt=\"\"" ) !== false ) {

                
    $alt false;

            } elseif( 
    $this->_strpos$txt"alt=\"" ) !== false ) {

                
    $alt preg_replace"#(.+?)alt=\"(.+?)\"(.*)#is""\\2"$txt );
            }

            if( 
    $align != "left" and $align != "right" $align false;

            if( ! 
    $align and ! $alt ) return "[img]" $img "[/img]";

            if( 
    $align $extra $align;
            if( 
    $alt $extra .= "|" $alt;

            return 
    "[img]https://www.szenebox.org/[/img]";

        }

        function 
    check_home($url) {
            global 
    $config;

            
    $url strtolower(@parse_url($urlPHP_URL_HOST));
            
    $value strtolower(@parse_url($config['http_home_url'], PHP_URL_HOST));

            if( !
    $value $value $_SERVER['HTTP_HOST'];

            if( !
    $url ) return true;
            
            if( 
    $url != $value ) return false;
            else return 
    true;
        }

        function 
    word_filter($source$encode true) {
            global 
    $config;

            if( 
    $encode ) {

                
    $all_words = @fileENGINE_DIR '/data/wordfilter.db.php' );
                
    $find = array ();
                
    $replace = array ();

                if( ! 
    $all_words or ! count$all_words ) ) return $source;

                foreach ( 
    $all_words as $word_line ) {
                    
    $word_arr explode"|"$word_line );

                    if( 
    function_exists"get_magic_quotes_gpc" ) && get_magic_quotes_gpc() ) {

                        
    $word_arr[1] = addslashes$word_arr[1] );

                    }

                    if( 
    $word_arr[4] ) {

                        
    $register ="";

                    } else 
    $register ="i";

                    if ( 
    $config['charset'] == "utf-8" $register .= "u";

                    
    $allow_find true;

                    if ( 
    $word_arr[5] == AND $this->safe_mode $allow_find false;
                    if ( 
    $word_arr[5] == AND !$this->safe_mode $allow_find false;

                    if ( 
    $allow_find ) {

                        if( 
    $word_arr[3] ) {

                            
    $find_text "#(^|\b|\s|\<br \/\>)" preg_quote$word_arr[1], "#" ) . "(\b|\s|!|\?|\.|,|$)#".$register;

                            if( 
    $word_arr[2] == "" $replace_text "\\1";
                            else 
    $replace_text "\\1<!--filter:" $word_arr[1] . "-->" $word_arr[2] . "<!--/filter-->\\2";

                        } else {

                            
    $find_text "#(" preg_quote$word_arr[1], "#" ) . ")#".$register;

                            if( 
    $word_arr[2] == "" $replace_text "";
                            else 
    $replace_text "<!--filter:" $word_arr[1] . "-->" $word_arr[2] . "<!--/filter-->";

                        }

                        if ( 
    $word_arr[6] ) {

                            if ( 
    preg_match($find_text$source) ) {

                                
    $this->not_allowed_text true;
                                return 
    $source;

                            }

                        } else {

                            
    $find[] = $find_text;
                            
    $replace[] = $replace_text;
                        }

                    }

                }

                if( !
    count$find ) ) return $source;

                
    $source preg_split'((>)|(<))'$source, - 1PREG_SPLIT_DELIM_CAPTURE );
                
    $count count$source );

                for(
    $i 0$i $count$i ++) {
                    if( 
    $source[$i] == "<" or $source[$i] == "[" ) {
                        
    $i ++;
                        continue;
                    }

                    if( 
    $source[$i] != "" $source[$i] = preg_replace$find$replace$source[$i] );
                }

                
    $source join""$source );

            } else {

                
    $source preg_replace"#<!--filter:(.+?)-->(.+?)<!--/filter-->#""\\1"$source );

            }

            return 
    $source;
        }

        function 
    _strpos($haystack$needle$offset ) {
        
            if (
    function_exists('mb_strpos')) {
                return 
    mb_strpos($haystack$needle$offset);
            }
            
            return 
    strpos($haystack$needle$offset);
            
        }
        
        function 
    _substr($string$start$length NULL ) {

            if (
    function_exists('mb_substr')) {
                
                if(
    $length === NULL ) return mb_substr($string$start);
                else return 
    mb_substr($string$start$length);
     
            }
            
            if(
    $length === NULL ) return substr($string$start);
            else return 
    substr($string$start$length);
            
        }
        
        function 
    _strlen($string) {
            
            if (
    function_exists('mb_strlen')) {
                return 
    mb_strlen($string);
            }
            
            return 
    strlen($string);
        }
        
    }
    ?>

  2. Werbung - Hier werben?
  3. #2
    Senior Avatar von Uranjitsu
    Registriert
    May 2016
    Beiträge
    207
    Gefällt mir!
    223
    Du gefällst: 158
    Im Grunde müsste das hier entfernt werden:

    Zeile: 1505-1537
    PHP-Code:
        function add_rel$matches=array() ) { 

            
    $params trimstripslashes($matches[1]) ); 
             
            if( 
    preg_match"#href=['\"](.+?)['\"]#i"$params$match ) ) { 
                 
                if( 
    $this->check_home($match[1]) ) { 
                    return 
    $matches[0]; 
                } 
                 
            } else return 
    $matches[0]; 
             
            if( 
    preg_match"#rel=['\"](.+?)['\"]#i"$params$match ) ) { 
                 
                
    $match[1] = trimstr_ireplace("external noopener noreferrer"""$match[1]) ); 
                 
                if (
    $match[1]) { 
                    
    $params str_ireplace($match[0], "rel=\"{$match[1]} external noopener noreferrer\""$params); 
                } else { 
                    
    $params str_ireplace($match[0], "rel=\"external noopener noreferrer\""$params); 
                } 
             
            } else { 
                 
                
    $params .= " rel=\"external noopener noreferrer\""
                 
            } 
             
            
    $params addslashes$params ); 

            return 
    "<a {$params}>{$matches[2]}</a>"
             
        } 
    Somit kann die Funktion nicht aufgerufen werden.

    Am besten wäre es noch zu überprüfen in welchen Dateien die Funktion aufgerufen wird:
    PHP-Code:
    add_rel 

  4. Diesen Mitgliedern gefällt dieser Beitrag:


  5. #3
    Junior
    THEMENSTARTER

    Avatar von Charly-Brown
    Registriert
    Jan 2016
    Beiträge
    77
    Gefällt mir!
    63
    Du gefällst: 27
    Hallo,

    Danke Uranjitsu erstmal für die Antwort.. werde das mal probieren.

    Lt. Aussage von DLE-Support reicht es, wenn man nur das "WORT" > "noreferrer" entfernt.. das hab ich zuerst ausprobiert.. das funktioniert aber anscheinend nicht.
    Werde Deine Version mal probieren und das mal entfernen.

    Melde mich dann

    - - - - - - - - - - Beitrag nachträglich erweitert - - - - - - - - - -

    1. Hab das mal geändert.. bin mal gespannt (Leider weiß ich nicht wie "ich" das rausfinden kann ob der Referrer mitgendet wird. Mir ist es bei filecrypt nur aufgefallen).

    2. Hab mal das ganze script mit Notpad++ durchsuchen lassen nach "add-rel"....
    Ergebnis:

    PHP-Code:
     C:\Users\script\datalife\engine\classes\parse.class.php (2 hits)
        
    Line 479:             $source preg_replace_callback"#<a(.+?)>(.*?)</a>#is", array( &$this'add_rel'), $source );
        
    Line 1520:     function add_rel$matches=array() ) { 

  6. #4
    Junior Avatar von TheLab
    Registriert
    Apr 2015
    Beiträge
    24
    Gefällt mir!
    9
    Du gefällst: 3
    Insofern meine Kenntnisse reichen:

    PHP-Code:
    $source preg_replace_callback"#<a(.+?)>(.*?)</a>#is", array( &$this'add_rel'), $source ); 
    Löschen

    und was der Vorposter gesagt hat dann die ungenutze Funktion entfernen!
    Der beste Weg ein Geheimnis zu bewahren, erzähle es niemanden! Zweit bester Weg, erzähl es nur einer Person, wenn Du musst. Einen drittbesten Weg gibt es nicht.

  7. Diesen Mitgliedern gefällt dieser Beitrag:


  8. #5
    Junior
    THEMENSTARTER

    Avatar von Charly-Brown
    Registriert
    Jan 2016
    Beiträge
    77
    Gefällt mir!
    63
    Du gefällst: 27
    Hallo LoomaR,

    danke für den Hinweis... werde das auch noch mitprobieren...

    Melde mich nochmal wenn es nicht geht.

Ähnliche Themen

  1. searchit.cf the best warez search-engine
    Von AntikZ im Forum Archiv
    Antworten: 21
    Letzter Beitrag: 25.01.2020, 23:39
  2. share-online.biz - NOPASTE bearbeiten
    Von Obi-LAN Kenobie im Forum Hoster (OCH, Stream, ...)
    Antworten: 0
    Letzter Beitrag: 17.08.2019, 17:14
  3. Wargaming: World of Tanks erhält neue Grafik-Engine
    Von RedDevil im Forum Gaming (PC, Konsole, MAC, ...)
    Antworten: 1
    Letzter Beitrag: 25.12.2017, 20:47
  4. Antworten: 0
    Letzter Beitrag: 05.07.2016, 09:16
  5. (C & C++) - .exe decodieren und bearbeiten
    Von darkness im Forum Entwicklung / Programmierung
    Antworten: 2
    Letzter Beitrag: 06.05.2015, 12:19

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
SzeneBox.org... im Mittelpunkt der Szene!
© since 2015 szeneBOX.org - All Rights Reserved
Domains: www.szenebox.org