PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 3.6.7
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v3.6.7
4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / vendor / wpdevelopers / embera / src / Embera / Html / ResponsiveEmbeds.php
embedpress / vendor / wpdevelopers / embera / src / Embera / Html Last commit date
IgnoreTags.php 5 years ago ResponsiveEmbeds.php 5 years ago
ResponsiveEmbeds.php
101 lines
1 <?php
2 /**
3 * ResponsiveEmbeds.php
4 *
5 * @package Embera
6 * @author Michael Pratt <yo@michael-pratt.com>
7 * @link http://www.michael-pratt.com/
8 *
9 * For the full copyright and license information, please view the LICENSE
10 * file that was distributed with this source code.
11 */
12
13 namespace Embera\Html;
14
15 /**
16 * Class Responsable of converting html into responsive html.
17 */
18 class ResponsiveEmbeds
19 {
20 /**
21 * Attempts to transform the html key of the response
22 * with a responsive alternative.
23 *
24 * @param array $response
25 * @return array
26 */
27 public function transform(array $response)
28 {
29 if (!empty($response['html']) && isset($response['embera_provider_name'], $response['type'])) {
30 $response['html_pre_responsive'] = $response['html'];
31 $response['html'] = $this->removeWidthHeightAttributes($response['html']);
32 $response['html'] = $this->removeWidthHeightStyles($response['html']);
33 $response['html'] = $this->addClasses($response['html'], strtolower($response['type']));
34 $response['html'] = $this->wrapInsideDiv($response['html'], strtolower($response['type']), $response['embera_provider_name']);
35 }
36
37 return $response;
38 }
39
40 /**
41 * Removes the Width and Height attributes from a tag
42 *
43 * @param string $text
44 * @return string
45 *
46 */
47 protected function removeWidthHeightAttributes($text)
48 {
49 return preg_replace('~(width|height)="\d*"\s~i', '', $text);
50 }
51
52 /**
53 * Removes the Width/Height from inline styles
54 *
55 * @param string $text
56 * @return string
57 */
58 protected function removeWidthHeightStyles($text)
59 {
60 return preg_replace('~(width|height|max-width|max-height):[0-9 ]+[a-z]{2};?~i', '',$text);
61 }
62
63 /**
64 * Adds item classes to an html tag
65 *
66 * @param string $text
67 * @param string $type
68 * @return string
69 */
70 protected function addClasses($text, $type)
71 {
72 $class= 'embera-embed-responsive-item embera-embed-responsive-item-' . $type;
73 if (preg_match('~class="(.+?)"~i', $text)) {
74 return preg_replace('~class="(.+?)"~i', 'class="$1 ' . $class . '"', $text);
75 }
76
77 foreach (['iframe', 'img'] as $tag) {
78 if (preg_match('~<' . $tag . '~i', $text)) {
79 return str_ireplace('<' . $tag, '<' . $tag . ' class="' . $class . '"', $text);
80 }
81 }
82
83 return $text;
84 }
85
86 /**
87 * Wraps the whole html inside a new div with custom attributes.
88 *
89 * @param string $text
90 * @param string $type
91 * @param string $providerName
92 * @return string
93 */
94 protected function wrapInsideDiv($text, $type, $providerName)
95 {
96 $providerName = strtolower($providerName);
97 return '<div class="embera-embed-responsive embera-embed-responsive-' . $type . ' embera-embed-responsive-provider-' . $providerName . '">' . $text . '</div>';
98 }
99
100 }
101