????JFIF??x?x????'403WebShell
403Webshell
Server IP : 104.21.30.238  /  Your IP : 216.73.216.34
Web Server : LiteSpeed
System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : tempvsty ( 647)
PHP Version : 8.0.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/./tempvsty/eaabusiness.com/custom/wp-content/plugins/extendify/app/Agent/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/./tempvsty/eaabusiness.com/custom/wp-content/plugins/extendify/app/Agent/TagTemplateParts.php
<?php

namespace Extendify\Agent;

defined('ABSPATH') || die('No direct access.');

/**
 * Tag blocks inside template parts (header/footer/etc.) with deterministic IDs.
 * - Only runs inside core/template-part scopes.
 * - Preorder numbering per template-part.
 */
class TagTemplateParts
{
    public static function init()
    {
        // Reset per-request state
        add_action('template_redirect', function () {
            $GLOBALS['extendify_part_frames'] = []; // stack of frames
        });

        // Assign IDs at the block-data layer (pre-order, stable)
        add_filter('render_block_data', [self::class, 'onRenderBlockData'], 10, 2);

        // Turn those IDs into DOM attributes & manage scope lifecycle
        add_filter('render_block', [self::class, 'onRenderBlock'], 10, 2);
    }

    private static function isTemplatePart(array $b): bool
    {
        return (($b['blockName'] ?? '') === 'core/template-part');
    }

    private static function currentFrame()
    {
        $stack = $GLOBALS['extendify_part_frames'] ?? [];
        return $stack ? $stack[count($stack) - 1] : null;
    }

    private static function setCurrentFrame(array $frame)
    {
        $GLOBALS['extendify_part_frames'][count($GLOBALS['extendify_part_frames']) - 1] = $frame;
    }

    private static function labelForPart(array $b): string
    {
        if (!empty($b['attrs']['area'])) {
            return (string) $b['attrs']['area'];
        }
        if (!empty($b['attrs']['slug'])) {
            return (string) $b['attrs']['slug'];
        }
        return 'template-part';
    }

    /** Assign IDs/labels into attrs before render (pre-order) */
    public static function onRenderBlockData(array $block, array $source): array
    {
        $name = $block['blockName'] ?? '';
        if ($name === '') {
            return $block;
        }

        // OPEN a template-part scope (do not number the wrapper itself)
        if (self::isTemplatePart($block)) {
            $label = self::labelForPart($block);
            $GLOBALS['extendify_part_frames'][] = [
                'label' => $label,
                'seq' => 0, // per-part counter
            ];
            // mark so we know to pop when this wrapper finishes rendering
            $block['attrs']['__extendify_scope_open'] = 1;
            return $block;
        }

        // Not inside a template-part? Ignore (prevents tagging post content).
        if (empty($GLOBALS['extendify_part_frames'])) {
            return $block;
        }

        // Inside a template part
        $frame = self::currentFrame();
        // Any other block inside the part → number it
        if ($frame) {
            $frame['seq']++;
            $block['attrs']['extendifyAgentBlockId'] = $frame['seq'];
            $block['attrs']['extendifyAgentPart'] = $frame['label'];
            self::setCurrentFrame($frame);
        }

        return $block;
    }

    /** Inject DOM attributes and close scopes after render */
    public static function onRenderBlock(string $html, array $block): string
    {
        $name = $block['blockName'] ?? '';
        if ($name === '') {
            return $html;
        }

        // When the template-part wrapper finishes rendering, POP the frame
        if (self::isTemplatePart($block) && !empty($block['attrs']['__extendify_scope_open'])) {
            // wrapper itself isn’t tagged; just close the scope
            array_pop($GLOBALS['extendify_part_frames']);
            return $html;
        }

        // If we’re not inside a template part, do nothing
        if (empty($GLOBALS['extendify_part_frames'])) {
            return $html;
        }

        // Inject attributes for blocks we numbered
        $id   = $block['attrs']['extendifyAgentBlockId'] ?? null;
        $part = $block['attrs']['extendifyAgentPart'] ?? null;

        if ($id && $html) {
            $tp = new \WP_HTML_Tag_Processor($html);
            if ($tp->next_tag()) {
                $tp->set_attribute('data-extendify-part-block-id', (string) (int) $id);
                if ($part) {
                    $tp->set_attribute('data-extendify-part', $part);
                }
                $html = $tp->get_updated_html();
            }
        }
        return $html;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit