private function _parseTags($tags)
        {
            if(count($tags) > 0)
            {   
//              loop through the tags
                foreach($tags as $key=>$tag)
                {   
//                  if a tag is delayed, it is rendered after everything else and it's has to be re parsed.
                    if(isset($tag['attributes']) === true && isset($tag['attributes']->delayed) === true && $tag['attributes']->delayed === 'true')
                    {
                        continue;
                    }
//                  check for buried preserved tags, so they can be replaced.
//                  NOTE: this only works with no collected tags. Collected tags are a massive pain in the rectum.
                    if(($has_buried = preg_match_all('!------@@%([0-9\-]+)%@@------!', $tag['content'], $info)) > 0)
                    {   
                        $containers = $info[0];
                        $indexs = $info[1];
                        $replacements = array();
                        foreach ($indexs as $key2=>$index)
                        {
                            $index_parts = explode('-', $index);
                            $tag_index = array_pop($index_parts);
                            if(isset($tags[$tag_index]['parsed']) === true)
                            {
                                $replacements[$key2] = $tags[$tag_index]['parsed'];
                            }
                            else
                            {   
                                if(isset($tags[$tag_index]['block']) === true)
                                {
                                    $block = preg_replace('/ delayed="true"/', '', $tags[$tag_index]['block'], 1);
                                    if(isset($tag['block']) === true)
                                    {
                                        $tag['block'] = str_replace($containers[$key2], $block, $tag['block']); 
                                    }
                                    $tag['content'] = str_replace($containers[$key2], $block, $tag['content']); 
                                }
                            }
                        }
                        $tags[$key]['buried_source_markers'] = $tag['buried_source_markers'] = $containers;
                    }

//                  if the tag is a nocahe tag then the block must be replaced as is for later processing
                    if($tag['name'] === 'nocache')
                    {
                        array_push(self::$nocache_tags, $tag);
                        $tags[$key]['parsed'] = $tag['source_marker'];
//                      $tags[$key]['parsed'] = $tag['block'];
                    }
//                  if the tag is just plain text then just shove the content back into the parsed as it doesn't require processing
                    else if($tag['name'] === '___text')
                    {
                        $tags[$key]['parsed'] = $tag['content'];
                    }
//                  otherwise we have a tag and must post process
                    else
                    {   
                        $tags[$key]['parsed'] = $this->_parseTag($tag);
                    }
//                  update any buried tags within the parsed content
                    $tags[$key]['parsed'] = $has_buried > 0 ? str_replace($containers, $replacements, $tags[$key]['parsed']) : $tags[$key]['parsed'];
                }
// //              if there are items within the nocache elements, parse the contents to pull them out
//                 $tagname = $this->_options['tag_name'];
//                 if(substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':') > substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':nocache'))
//                 {
//                     $tags[$key]['parsed'] = $this->parse($tags[$key]['parsed'], true, true);
// //                  $tags[$key]['parsed'] = $this->_processTags($tags[$key]['parsed'], true);
//                 }
                
//                 Debug::info($tags[$key]);
                
                return $tags[$key]['parsed'];
            }
            return false;
        }
private function _parseTags($tags)
        {
            if(count($tags) > 0)
            {   
//              loop through the tags
                foreach($tags as $key=>$tag)
                {   
//                  if a tag is delayed, it is rendered after everything else and it's has to be re parsed.
                    if(isset($tag['attributes']) === true && isset($tag['attributes']->delayed) === true && $tag['attributes']->delayed === 'true')
                    {
                        continue;
                    }
//                  check for buried preserved tags, so they can be replaced.
//                  NOTE: this only works with no collected tags. Collected tags are a massive pain in the rectum.
                    if(($has_buried = preg_match_all('!------@@%([0-9\-]+)%@@------!', $tag['content'], $info)) > 0)
                    {   
                        $containers = $info[0];
                        $indexs = $info[1];
                        $replacements = array();
                        foreach ($indexs as $key2=>$index)
                        {
                            $index_parts = explode('-', $index);
                            $tag_index = array_pop($index_parts);
                            if(isset($tags[$tag_index]['parsed']) === true)
                            {
                                $replacements[$key2] = $tags[$tag_index]['parsed'];
                            }
                            else
                            {   
                                if(isset($tags[$tag_index]['block']) === true)
                                {
                                    $block = preg_replace('/ delayed="true"/', '', $tags[$tag_index]['block'], 1);
                                    if(isset($tag['block']) === true)
                                    {
                                        $tag['block'] = str_replace($containers[$key2], $block, $tag['block']); 
                                    }
                                    $tag['content'] = str_replace($containers[$key2], $block, $tag['content']); 
                                }
                            }
                        }
                        $tags[$key]['buried_source_markers'] = $tag['buried_source_markers'] = $containers;
                    }

//                  if the tag is a nocahe tag then the block must be replaced as is for later processing
                    if($tag['name'] === 'nocache')
                    {
                        array_push(self::$nocache_tags, $tag);
                        $tags[$key]['parsed'] = $tag['source_marker'];
//                      $tags[$key]['parsed'] = $tag['block'];
                    }
//                  if the tag is just plain text then just shove the content back into the parsed as it doesn't require processing
                    else if($tag['name'] === '___text')
                    {
                        $tags[$key]['parsed'] = $tag['content'];
                    }
//                  otherwise we have a tag and must post process
                    else
                    {   
                        $tags[$key]['parsed'] = $this->_parseTag($tag);
                    }
//                  update any buried tags within the parsed content
                    $tags[$key]['parsed'] = $has_buried > 0 ? str_replace($containers, $replacements, $tags[$key]['parsed']) : $tags[$key]['parsed'];
                }
// //              if there are items within the nocache elements, parse the contents to pull them out
//                 $tagname = $this->_options['tag_name'];
//                 if(substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':') > substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':nocache'))
//                 {
//                     $tags[$key]['parsed'] = $this->parse($tags[$key]['parsed'], true, true);
// //                  $tags[$key]['parsed'] = $this->_processTags($tags[$key]['parsed'], true);
//                 }
                
//                 Debug::info($tags[$key]);
                
                return $tags[$key]['parsed'];
            }
            return false;
        }
private function _parseTags ( $ tags ) { if ( count ( $ tags ) > 0 ) { //              loop through the tags foreach ( $ tags as $ key => $ tag ) { //                  if a tag is delayed, it is rendered after everything else and it's has to be re parsed. if ( isset ( $ tag [ 'attributes' ] ) === true && isset ( $ tag [ 'attributes' ] -> delayed ) === true && $ tag [ 'attributes' ] -> delayed === 'true' ) { continue ; } //                  check for buried preserved tags, so they can be replaced. //                  NOTE: this only works with no collected tags. Collected tags are a massive pain in the rectum. if ( ( $ has_buried = preg_match_all ( '!------@@%([0-9\-]+)%@@------!' , $ tag [ 'content' ] , $ info ) ) > 0 ) { $ containers = $ info [ 0 ] ; $ indexs = $ info [ 1 ] ; $ replacements = array ( ) ; foreach ( $ indexs as $ key2 => $ index ) { $ index_parts = explode ( '-' , $ index ) ; $ tag_index = array_pop ( $ index_parts ) ; if ( isset ( $ tags [ $ tag_index ] [ 'parsed' ] ) === true ) { $ replacements [ $ key2 ] = $ tags [ $ tag_index ] [ 'parsed' ] ; } else { if ( isset ( $ tags [ $ tag_index ] [ 'block' ] ) === true ) { $ block = preg_replace ( '/ delayed="true"/' , '' , $ tags [ $ tag_index ] [ 'block' ] , 1 ) ; if ( isset ( $ tag [ 'block' ] ) === true ) { $ tag [ 'block' ] = str_replace ( $ containers [ $ key2 ] , $ block , $ tag [ 'block' ] ) ; } $ tag [ 'content' ] = str_replace ( $ containers [ $ key2 ] , $ block , $ tag [ 'content' ] ) ; } } } $ tags [ $ key ] [ 'buried_source_markers' ] = $ tag [ 'buried_source_markers' ] = $ containers ; } //                  if the tag is a nocahe tag then the block must be replaced as is for later processing if ( $ tag [ 'name' ] === 'nocache' ) { array_push ( self :: $ nocache_tags , $ tag ) ; $ tags [ $ key ] [ 'parsed' ] = $ tag [ 'source_marker' ] ; //                      $tags[$key]['parsed'] = $tag['block']; } //                  if the tag is just plain text then just shove the content back into the parsed as it doesn't require processing else if ( $ tag [ 'name' ] === '___text' ) { $ tags [ $ key ] [ 'parsed' ] = $ tag [ 'content' ] ; } //                  otherwise we have a tag and must post process else { $ tags [ $ key ] [ 'parsed' ] = $ this -> _parseTag ( $ tag ) ; } //                  update any buried tags within the parsed content $ tags [ $ key ] [ 'parsed' ] = $ has_buried > 0 ? str_replace ( $ containers , $ replacements , $ tags [ $ key ] [ 'parsed' ] ) : $ tags [ $ key ] [ 'parsed' ] ; } // //              if there are items within the nocache elements, parse the contents to pull them out //                 $tagname = $this->_options['tag_name']; //                 if(substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':') > substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':nocache')) //                 { //                     $tags[$key]['parsed'] = $this->parse($tags[$key]['parsed'], true, true); // //                  $tags[$key]['parsed'] = $this->_processTags($tags[$key]['parsed'], true); //                 } //                 Debug::info($tags[$key]); return $ tags [ $ key ] [ 'parsed' ] ; } return false ; }
Loops and parses the found custom tags.
@access private
@param array $tags An array of found custom tag data.
@return mixed|string|boolean Returns false if there are no tags, string otherwise.
Loops and parses the found custom tags .