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/includes/templates/ |
<?php /** * Class AMP_Content * * @package AMP */ /** * Class AMP_Content * * @codeCoverageIgnore * @deprecated 1.5 Reader mode now sanitizes its entire template through the standard post-processor. * @internal */ class AMP_Content { /** * Content. * * @var string */ private $content; /** * AMP content. * * @var string */ private $amp_content = ''; /** * AMP scripts. * * @var array */ private $amp_scripts = []; /** * AMP stylesheets. * * @since 1.0 * @var array */ private $amp_stylesheets = []; /** * Args. * * @var array */ private $args; /** * Embed handlers. * * @var AMP_Base_Embed_Handler[] */ private $embed_handlers; /** * Sanitizers, with keys as class names and values as arguments. * * @var array[] */ private $sanitizer_classes; /** * AMP_Content constructor. * * @param string $content Content. * @param array[] $embed_handler_classes Embed handlers, with keys as class names and values as arguments. * @param array[] $sanitizer_classes Sanitizers, with keys as class names and values as arguments. * @param array $args Args. */ public function __construct( $content, $embed_handler_classes, $sanitizer_classes, $args = [] ) { $this->content = $content; $this->args = $args; $this->embed_handlers = $this->register_embed_handlers( $embed_handler_classes ); $this->sanitizer_classes = $sanitizer_classes; $this->sanitizer_classes[ AMP_Embed_Sanitizer::class ]['embed_handlers'] = $this->embed_handlers; $this->transform(); } /** * Get AMP content. * * @return string */ public function get_amp_content() { return $this->amp_content; } /** * Get AMP scripts. * * @return array */ public function get_amp_scripts() { return $this->amp_scripts; } /** * Get AMP styles. * * @deprecated Since 1.0 in favor of the get_amp_stylesheets method. * @return array Empty list. */ public function get_amp_styles() { _deprecated_function( __METHOD__, '1.0', __CLASS__ . '::get_amp_stylesheets' ); return []; } /** * Get AMP styles. * * @since 1.0 * @return array */ public function get_amp_stylesheets() { return $this->amp_stylesheets; } /** * Transform. */ private function transform() { $content = $this->content; // First, embeds + the_content filter. /** This filter is documented in wp-includes/post-template.php */ $content = apply_filters( 'the_content', $content ); $this->unregister_embed_handlers( $this->embed_handlers ); // Then, sanitize to strip and/or convert non-amp content. $content = $this->sanitize( $content ); $this->amp_content = $content; } /** * Add scripts. * * @param array $scripts Scripts. */ private function add_scripts( $scripts ) { $this->amp_scripts = array_merge( $this->amp_scripts, $scripts ); } /** * Add stylesheets. * * @since 1.0 * @param array $stylesheets Styles. */ private function add_stylesheets( $stylesheets ) { $this->amp_stylesheets = array_merge( $this->amp_stylesheets, $stylesheets ); } /** * Register embed handlers. * * @param array[] $embed_handler_classes Embed handlers, with keys as class names and values as arguments. * @return AMP_Base_Embed_Handler[] Registered embed handlers. */ private function register_embed_handlers( $embed_handler_classes ) { $embed_handlers = []; foreach ( $embed_handler_classes as $embed_handler_class => $args ) { $embed_handler = new $embed_handler_class( array_merge( $this->args, $args ) ); if ( ! $embed_handler instanceof AMP_Base_Embed_Handler ) { _doing_it_wrong( __METHOD__, esc_html( sprintf( /* translators: 1: embed handler. 2: AMP_Base_Embed_Handler */ __( 'Embed Handler (%1$s) must extend `%2$s`', 'amp' ), esc_html( $embed_handler_class ), AMP_Base_Embed_Handler::class ) ), '0.1' ); continue; } $embed_handler->register_embed(); $embed_handlers[] = $embed_handler; } return $embed_handlers; } /** * Unregister embed handlers. * * @param AMP_Base_Embed_Handler[] $embed_handlers Embed handlers. */ private function unregister_embed_handlers( $embed_handlers ) { foreach ( $embed_handlers as $embed_handler ) { $this->add_scripts( $embed_handler->get_scripts() ); // @todo Why add_scripts here? Shouldn't it be array_diff()? $embed_handler->unregister_embed(); } } /** * Sanitize. * * @see AMP_Content_Sanitizer::sanitize() * @param string $content Content. * @return string Sanitized content. */ private function sanitize( $content ) { $dom = AMP_DOM_Utils::get_dom_from_content( $content ); $results = AMP_Content_Sanitizer::sanitize_document( $dom, $this->sanitizer_classes, $this->args ); $this->add_scripts( $results['scripts'] ); $this->add_stylesheets( $results['stylesheets'] ); return AMP_DOM_Utils::get_content_from_dom( $dom ); } }