HEX
Server: Apache
System: Linux 162-240-236-42.bluehost.com 3.10.0-1160.114.2.el7.x86_64 #1 SMP Wed Mar 20 15:54:52 UTC 2024 x86_64
User: bt667 (1004)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /home/bt667/www/wp-content/plugins/accelerated-mobile-pages/includes/vendor/tool/DevMode.php
<?php

namespace AmpProject;

use AmpProject\Dom\Document;
use AmpProject\Dom\Element;
use DOMNode;

/**
 * Helper functionality to deal with AMP dev-mode.
 *
 * @link    https://github.com/ampproject/amphtml/issues/20974
 *
 * @package ampproject/amp-toolbox
 */
final class DevMode
{

    /**
     * Attribute name for AMP dev mode.
     *
     * @var string
     */
    const DEV_MODE_ATTRIBUTE = 'data-ampdevmode';

    /**
     * Check whether the provided document is in dev mode.
     *
     * @param Document $document Document for which to check whether dev mode is active.
     * @return bool Whether the document is in dev mode.
     */
    public static function isActiveForDocument(Document $document)
    {
        return $document->documentElement->hasAttribute(self::DEV_MODE_ATTRIBUTE);
    }

    /**
     * Check whether a node is exempt from validation during dev mode.
     *
     * @param DOMNode $node Node to check.
     * @return bool Whether the node should be exempt during dev mode.
     */
    public static function hasExemptionForNode(DOMNode $node)
    {
        if (! $node instanceof Element) {
            return false;
        }

        $document = self::getDocument($node);

        if ($node === $document->documentElement) {
            return $document->hasInitialAmpDevMode();
        }

        return $node->hasAttribute(self::DEV_MODE_ATTRIBUTE);
    }

    /**
     * Check whether a certain node should be exempt from validation.
     *
     * @param DOMNode $node Node to check.
     * @return bool Whether the node should be exempt from validation.
     */
    public static function isExemptFromValidation(DOMNode $node)
    {
        $document = self::getDocument($node);
        return self::isActiveForDocument($document) && self::hasExemptionForNode($node);
    }

    /**
     * Get the document from the specified node.
     *
     * @param DOMNode $node
     * @return Document
     */
    private static function getDocument(DOMNode $node)
    {
        $document = $node->ownerDocument;
        if (! $document instanceof Document) {
            $document = Document::fromNode($node);
        }

        return $document;
    }
}