PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 3.9.10
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v3.9.10
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
179 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 wp_enqueue_script(
48 'embedpress-pdfobject',
49 EMBEDPRESS_URL_ASSETS . 'js/pdfobject.min.js',
50 ['jquery'],
51 EMBEDPRESS_PLUGIN_VERSION,
52 true
53 );
54 wp_enqueue_script(
55 'plyr.polyfilled',
56 EMBEDPRESS_URL_ASSETS . 'js/plyr.polyfilled.js',
57 EMBEDPRESS_PLUGIN_VERSION,
58 true
59 );
60 wp_enqueue_script(
61 'initplyr',
62 EMBEDPRESS_URL_ASSETS . 'js/initplyr.js',
63 ['plyr.polyfilled'],
64 EMBEDPRESS_PLUGIN_VERSION,
65 true
66 );
67
68 wp_enqueue_script(
69 'embedpress-front',
70 EMBEDPRESS_URL_ASSETS . 'js/front.js',
71 ['jquery', 'embedpress-pdfobject'],
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 wp_enqueue_script(
84 'embedpress-ads',
85 EMBEDPRESS_URL_ASSETS . 'js/ads.js',
86 ['jquery', 'vimeo-player', 'wp-data'],
87 EMBEDPRESS_PLUGIN_VERSION,
88 true
89 );
90
91
92 wp_enqueue_script( 'embedpress_documents_viewer_script', EMBEDPRESS_URL_ASSETS . 'js/documents-viewer-script.js', ['jquery'],
93 EMBEDPRESS_PLUGIN_VERSION, true );
94
95 wp_localize_script('embedpress-front', 'eplocalize', array(
96 'ajaxurl' => admin_url('admin-ajax.php'),
97 'is_pro_plugin_active' => defined('EMBEDPRESS_SL_ITEM_SLUG'),
98
99 ));
100 }
101
102 /**
103 * Passes any unlinked URLs to EmbedPress\Shortcode::do_shortcode() for potential embedding.
104 *
105 * @since 1.5.0
106 * @static
107 *
108 * @param string $content The content to be searched.
109 *
110 * @return string The potentially modified content.
111 */
112 public static function autoEmbedUrls($content)
113 {
114 $plgSettings = Core::getSettings();
115
116 if (!is_admin() && (bool) $plgSettings->enablePluginInFront === false) {
117 return $content;
118 }
119 // Replace line breaks from all HTML elements with placeholders.
120 $content = wp_replace_in_html_tags($content, ["\n" => '<!-- embedpress-line-break -->']);
121
122 // Look for links in the content (not wrapped by shortcode)
123 if (preg_match('#(^|\s|>)https?://#i', $content)) {
124 $callbackFingerprint = ['\\EmbedPress\\Ends\\Front\\Handler', 'autoEmbedUrlsCallback'];
125
126 // Find URLs on their own line.
127 $content = preg_replace_callback('|^(\s*)(https?://[^\s<>"]+)(\s*)$|im', $callbackFingerprint, $content);
128 // Find URLs in their own paragraph.
129 $content = preg_replace_callback(
130 '|(<p(?: [^>]*)?>\s*)(https?://[^\s<>"]+)(\s*<\/p>)|i',
131 $callbackFingerprint,
132 $content
133 );
134 }
135
136 // Put the line breaks back.
137 return str_replace('<!-- embedpress-line-break -->', "\n", $content);
138 }
139
140 /**
141 * Callback function for \EmbedPress\Ends\Front\Handler::autoEmbedUrls().
142 *
143 * @since 1.5.0
144 * @static
145 *
146 * @param array $match A regex match array.
147 *
148 * @return string The embed HTML on success, otherwise the original URL.
149 */
150 public static function autoEmbedUrlsCallback($match)
151 {
152 $return = Shortcode::do_shortcode([], $match[2]);
153
154 return $match[1] . $return . $match[3];
155 }
156
157 /**
158 * A callback called by the WP `the_editor` filter.
159 *
160 * @since 1.6.0
161 * @static
162 *
163 * @param string $editorHTML The HTML which will be rendered as an editor, like TinyMCE.
164 *
165 * @return string The HTML which will be rendered as an editor, like TinyMCE
166 */
167 public static function renderPreviewBoxInEditors($editorHTML)
168 {
169 $plgSettings = Core::getSettings();
170 if (!is_admin() && (bool) $plgSettings->enablePluginInFront) {
171 $backEndHandler = new BackEndHandler(EMBEDPRESS_PLG_NAME, EMBEDPRESS_VERSION);
172
173 $backEndHandler->enqueueScripts();
174 }
175
176 return $editorHTML;
177 }
178 }
179