EmbedHandler.php
59 lines
| 1 | <?php |
| 2 | |
| 3 | namespace EmbedPress\AMP; |
| 4 | |
| 5 | |
| 6 | (defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed."); |
| 7 | |
| 8 | /** |
| 9 | * Entity that represents the embed modifier for AMP. |
| 10 | * |
| 11 | * @package EmbedPress |
| 12 | * @author EmbedPress <help@embedpress.com> |
| 13 | * @copyright Copyright (C) 2020 WPDeveloper. All rights reserved. |
| 14 | * @license GPLv3 or later |
| 15 | * @since 1.4.0 |
| 16 | * @abstract |
| 17 | */ |
| 18 | abstract class EmbedHandler |
| 19 | { |
| 20 | /** |
| 21 | * Process embeds to check if need to adapt for AMP pages. This is compatible |
| 22 | * witht the AMP plugin from Automattic. |
| 23 | * |
| 24 | * @param string $parsedContent |
| 25 | * @param object $urlData |
| 26 | * @param array $attributes |
| 27 | * |
| 28 | * @return object |
| 29 | */ |
| 30 | static function processParsedContent($parsedContent, $urlData, $attributes) |
| 31 | { |
| 32 | // Check if we don't have the AMP plugin installed to bypass |
| 33 | if ( ! class_exists('AMP_Base_Embed_Handler')) { |
| 34 | return $parsedContent; |
| 35 | } |
| 36 | |
| 37 | // Start processing |
| 38 | |
| 39 | $handlerMap = [ |
| 40 | 'twitter' => '\\EmbedPress\\AMP\\Adapter\\Twitter', |
| 41 | 'reddit' => '\\EmbedPress\\AMP\\Adapter\\Reddit', |
| 42 | ]; |
| 43 | |
| 44 | $providerName = strtolower($urlData->provider_name); |
| 45 | |
| 46 | // Check if we have a mapped handler |
| 47 | if (isset($urlData->provider_name) && array_key_exists($providerName, $handlerMap)) { |
| 48 | |
| 49 | $className = $handlerMap[$providerName]; |
| 50 | $handler = new $className($parsedContent, $urlData, $attributes); |
| 51 | |
| 52 | // Modify the HTML according to the AMP embed handler |
| 53 | $parsedContent = $handler->process(); |
| 54 | } |
| 55 | |
| 56 | return $parsedContent; |
| 57 | } |
| 58 | } |
| 59 |