Server : Apache System : Linux pod-100823:apache2_74:v0.5.7 5.4.0-1138-gcp #147~18.04.1-Ubuntu SMP Mon Oct 7 21:46:26 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33.7 Disable Function : apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,disk_total_space,diskfreespace,dl,exec,fastcgi_finish_request,link,opcache_compile_file,opcache_get_configuration,opcache_invalidate,opcache_is_script_cached,opcache_reset,passthru,pclose,pcntl_exec,popen,posix_getpid,posix_getppid,posix_getpwuid,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,realpath_cache_get,shell_exec,show_source,symlink,system Directory : /nas/content/live/attorneyexperi/wp-content/plugins/diva/src/DevTools/ |
<?php /** * Class BlockSources * * Captures the themes and plugins responsible for dynamically registered editor blocks. * * @since 2.1 * * @package AmpProject\AmpWP */ namespace AmpProject\AmpWP\DevTools; use AmpProject\AmpWP\Infrastructure\Conditional; use AmpProject\AmpWP\Infrastructure\Registerable; use AmpProject\AmpWP\Infrastructure\Service; use AmpProject\AmpWP\PluginRegistry; /** * BlockSources class. * * @since 2.1 * @internal */ final class BlockSources implements Conditional, Service, Registerable { /** * Key of the cached block source data. * * @var string */ const CACHE_KEY = 'amp_block_sources'; /** * The amount of time to store the block source data in cache. * * @var int */ const CACHE_TIMEOUT = DAY_IN_SECONDS; /** * Block source data. * * @var array|null */ private $block_sources; /** * Plugin registry instance. * * @var PluginRegistry */ private $plugin_registry; /** * Likely culprit detector instance. * * @var LikelyCulpritDetector */ private $likely_culprit_detector; /** * Check whether the conditional object is currently needed. * * @return bool Whether the conditional object is needed. */ public static function is_needed() { // The register_block_type_args filter, which this feature depends on, was introduced in WP 5.5. if ( version_compare( get_bloginfo( 'version' ), '5.5', '<' ) ) { return false; } return is_admin() || wp_doing_ajax() || wp_doing_cron() || ( defined( 'REST_REQUEST' ) && REST_REQUEST ); } /** * Class constructor. * * @param PluginRegistry $plugin_registry Plugin registry instance. * @param LikelyCulpritDetector $likely_culprit_detector Likely culprit detector instance. */ public function __construct( PluginRegistry $plugin_registry, LikelyCulpritDetector $likely_culprit_detector ) { $this->plugin_registry = $plugin_registry; $this->likely_culprit_detector = $likely_culprit_detector; } /** * Runs on instantiation. */ public function register() { if ( empty( $this->get_block_sources() ) ) { add_filter( 'register_block_type_args', [ $this, 'capture_block_type_source' ] ); // All blocks should be registered well before admin_enqueue_scripts. add_action( 'admin_enqueue_scripts', [ $this, 'cache_block_sources' ], PHP_INT_MAX ); } add_action( 'activated_plugin', [ $this, 'clear_block_sources_cache' ] ); add_action( 'after_switch_theme', [ $this, 'clear_block_sources_cache' ] ); add_action( 'upgrader_process_complete', [ $this, 'clear_block_sources_cache' ] ); } /** * Registers the google font style. * * @param array $args Array of arguments for registering a block type. * @return array Filtered block type args. */ public function capture_block_type_source( $args ) { if ( isset( $this->get_block_sources()[ $args['name'] ] ) ) { return $args; } $likely_culprit = $this->likely_culprit_detector->analyze_backtrace(); if ( in_array( $likely_culprit[ FileReflection::SOURCE_TYPE ], [ FileReflection::TYPE_PLUGIN, FileReflection::TYPE_MU_PLUGIN ], true ) ) { $plugin = $this->plugin_registry->get_plugin_from_slug( $likely_culprit[ FileReflection::SOURCE_NAME ], FileReflection::TYPE_MU_PLUGIN === $likely_culprit[ FileReflection::SOURCE_TYPE ] ); $likely_culprit['title'] = isset( $plugin['data']['Title'] ) ? $plugin['data']['Title'] : $likely_culprit[ FileReflection::SOURCE_NAME ]; } elseif ( FileReflection::TYPE_THEME === $likely_culprit[ FileReflection::SOURCE_TYPE ] ) { $theme = wp_get_theme( $likely_culprit['name'] ); $likely_culprit['title'] = $theme->get( 'Name' ) ?: $likely_culprit[ FileReflection::SOURCE_NAME ]; } else { $likely_culprit['title'] = __( 'WordPress core', 'amp' ); } $this->block_sources[ $args['name'] ] = $likely_culprit; return $args; } /** * Saves the block source data to cache. */ public function cache_block_sources() { set_transient( __CLASS__ . self::CACHE_KEY, $this->block_sources, self::CACHE_TIMEOUT ); } /** * Clears the cached block source data. */ public function clear_block_sources_cache() { delete_transient( __CLASS__ . self::CACHE_KEY ); } /** * Retrieves block source data from cache. */ private function set_block_sources_from_cache() { $from_cache = get_transient( __CLASS__ . self::CACHE_KEY ); $this->block_sources = is_array( $from_cache ) ? $from_cache : []; } /** * Retrieves block source data. * * @return array */ public function get_block_sources() { if ( is_null( $this->block_sources ) ) { $this->set_block_sources_from_cache(); } return $this->block_sources; } }