PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents / 3.9.17
EmbedPress – PDF Embedder, 3D PDF FlipBook, Google Reviews, YouTube Videos, Upload & Embed PDF documents v3.9.17
4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 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 / EmbedPress / Ends / Front / Handler.php
embedpress / EmbedPress / Ends / Front Last commit date
Handler.php 2 years ago index.html 7 years ago
Handler.php
205 lines
1 <?php
2
3 namespace EmbedPress\Ends\Front;
4
5 use EmbedPress\Core;
6 use EmbedPress\Ends\Back\Handler as BackEndHandler;
7 use EmbedPress\Ends\Handler as EndHandlerAbstract;
8 use EmbedPress\Shortcode;
9
10 (defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
11
12 /**
13 * The public-facing functionality of the plugin.
14 * Defines the plugin name, version, and enqueue the public-specific stylesheets and scripts.
15 *
16 * @package EmbedPress
17 * @subpackage EmbedPress/Ends/Front
18 * @author EmbedPress <help@embedpress.com>
19 * @copyright Copyright (C) 2023 WPDeveloper. All rights reserved.
20 * @license GPLv3 or later
21 * @since 1.0.0
22 */
23 class Handler extends EndHandlerAbstract
24 {
25 /**
26 * Method that register all stylesheets for the public area.
27 *
28 * @since 1.0.0
29 * @static
30 *
31 * @return void
32 */
33 public static function enqueueStyles()
34 {
35 wp_enqueue_style(EMBEDPRESS_PLG_NAME, EMBEDPRESS_URL_ASSETS . 'css/embedpress.css');
36
37 add_action('wp_enqueue_scripts', function () {
38 wp_enqueue_style('plyr', EMBEDPRESS_URL_ASSETS . 'css/plyr.css');
39 }, 11); // Priority of 11 ensures it is enqueued just before the closing </head> tag
40 }
41
42
43
44 public function enqueueScripts()
45 {
46
47 $elements = (array) get_option(EMBEDPRESS_PLG_NAME . ":elements", []);
48 $g_elementor = isset($elements['elementor']) ? (array) $elements['elementor'] : [];
49 $g_blocks = isset($elements['gutenberg']) ? (array) $elements['gutenberg'] : [];
50
51 if (!empty($g_elementor['embedpress-pdf']) || !empty($g_blocks['embedpress-pdf'])) {
52 wp_enqueue_script(
53 'embedpress-pdfobject',
54 EMBEDPRESS_URL_ASSETS . 'js/pdfobject.min.js',
55 ['jquery'],
56 EMBEDPRESS_PLUGIN_VERSION,
57 true
58 );
59 }
60
61 if (!empty($g_elementor['embedpress']) || !empty($g_blocks['embedpress'])) {
62 wp_enqueue_script(
63 'plyr.polyfilled',
64 EMBEDPRESS_URL_ASSETS . 'js/plyr.polyfilled.js',
65 EMBEDPRESS_PLUGIN_VERSION,
66 true
67 );
68 wp_enqueue_script(
69 'initplyr',
70 EMBEDPRESS_URL_ASSETS . 'js/initplyr.js',
71 ['plyr.polyfilled'],
72 EMBEDPRESS_PLUGIN_VERSION,
73 true
74 );
75
76 wp_enqueue_script(
77 'vimeo-player',
78 EMBEDPRESS_URL_ASSETS . 'js/vimeo-player.js',
79 ['jquery'],
80 EMBEDPRESS_PLUGIN_VERSION,
81 true
82 );
83 }
84
85 $dependencies = ['jquery'];
86
87 if (!empty($g_elementor['embedpress-pdf']) || !empty($g_blocks['embedpress-pdf'])) {
88 $dependencies[] = 'embedpress-pdfobject';
89 }
90
91 if (!empty($g_elementor['embedpress']) || !empty($g_blocks['embedpress']) || !empty($g_elementor['embedpress-pdf']) || !empty($g_blocks['embedpress-pdf']) || !empty($g_elementor['document']) || !empty($g_blocks['document'])) {
92 wp_enqueue_script(
93 'embedpress-front',
94 EMBEDPRESS_URL_ASSETS . 'js/front.js',
95 $dependencies,
96 EMBEDPRESS_PLUGIN_VERSION,
97 true
98 );
99 }
100
101 if (!empty($g_elementor['embedpress']) || !empty($g_blocks['embedpress']) || !empty($g_elementor['embedpress-pdf']) || !empty($g_blocks['embedpress-pdf'])) {
102 wp_enqueue_script(
103 'embedpress-ads',
104 EMBEDPRESS_URL_ASSETS . 'js/ads.js',
105 ['jquery', 'wp-data'],
106 EMBEDPRESS_PLUGIN_VERSION,
107 true
108 );
109 }
110
111
112 if (!empty($g_elementor['embedpress-document']) || !empty($g_blocks['document'])) {
113 wp_enqueue_script(
114 'embedpress_documents_viewer_script',
115 EMBEDPRESS_URL_ASSETS . 'js/documents-viewer-script.js',
116 ['jquery'],
117 EMBEDPRESS_PLUGIN_VERSION,
118 true
119 );
120 }
121
122 wp_localize_script('embedpress-front', 'eplocalize', array(
123 'ajaxurl' => admin_url('admin-ajax.php'),
124 'is_pro_plugin_active' => defined('EMBEDPRESS_SL_ITEM_SLUG'),
125 ));
126 }
127
128 /**
129 * Passes any unlinked URLs to EmbedPress\Shortcode::do_shortcode() for potential embedding.
130 *
131 * @since 1.5.0
132 * @static
133 *
134 * @param string $content The content to be searched.
135 *
136 * @return string The potentially modified content.
137 */
138 public static function autoEmbedUrls($content)
139 {
140 $plgSettings = Core::getSettings();
141
142 if (!is_admin() && (bool) $plgSettings->enablePluginInFront === false) {
143 return $content;
144 }
145 // Replace line breaks from all HTML elements with placeholders.
146 $content = wp_replace_in_html_tags($content, ["\n" => '<!-- embedpress-line-break -->']);
147
148 // Look for links in the content (not wrapped by shortcode)
149 if (preg_match('#(^|\s|>)https?://#i', $content)) {
150 $callbackFingerprint = ['\\EmbedPress\\Ends\\Front\\Handler', 'autoEmbedUrlsCallback'];
151
152 // Find URLs on their own line.
153 $content = preg_replace_callback('|^(\s*)(https?://[^\s<>"]+)(\s*)$|im', $callbackFingerprint, $content);
154 // Find URLs in their own paragraph.
155 $content = preg_replace_callback(
156 '|(<p(?: [^>]*)?>\s*)(https?://[^\s<>"]+)(\s*<\/p>)|i',
157 $callbackFingerprint,
158 $content
159 );
160 }
161
162 // Put the line breaks back.
163 return str_replace('<!-- embedpress-line-break -->', "\n", $content);
164 }
165
166 /**
167 * Callback function for \EmbedPress\Ends\Front\Handler::autoEmbedUrls().
168 *
169 * @since 1.5.0
170 * @static
171 *
172 * @param array $match A regex match array.
173 *
174 * @return string The embed HTML on success, otherwise the original URL.
175 */
176 public static function autoEmbedUrlsCallback($match)
177 {
178 $return = Shortcode::do_shortcode([], $match[2]);
179
180 return $match[1] . $return . $match[3];
181 }
182
183 /**
184 * A callback called by the WP `the_editor` filter.
185 *
186 * @since 1.6.0
187 * @static
188 *
189 * @param string $editorHTML The HTML which will be rendered as an editor, like TinyMCE.
190 *
191 * @return string The HTML which will be rendered as an editor, like TinyMCE
192 */
193 public static function renderPreviewBoxInEditors($editorHTML)
194 {
195 $plgSettings = Core::getSettings();
196 if (!is_admin() && (bool) $plgSettings->enablePluginInFront) {
197 $backEndHandler = new BackEndHandler(EMBEDPRESS_PLG_NAME, EMBEDPRESS_VERSION);
198
199 $backEndHandler->enqueueScripts();
200 }
201
202 return $editorHTML;
203 }
204 }
205