PluginProbe
PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin / trunk
PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin vtrunk
trunk 1.5 1.6 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 All 71 releases
← All changes | pdf-print.php +1843 -1190 1.8.3trunk View file →
@@ -1,750 +1,1029 @@
1 1 <?php
2 -/*
2 +/**
3 3 Plugin Name: PDF & Print by BestWebSoft
4 -Plugin URI: http://bestwebsoft.com/products/
5 -Description: Plugin adds PDF creation and Print button on your site.
4 +Plugin URI: https://bestwebsoft.com/products/wordpress/plugins/pdf-print/
5 +Description: Generate PDF files and print WordPress posts/pages. Customize document header/footer styles and appearance.
6 6 Author: BestWebSoft
7 -Version: 1.8.3
8 -Author URI: http://bestwebsoft.com/
7 +Text Domain: pdf-print
8 +Domain Path: /languages
9 +Version: 2.4.7
10 +Author URI: https://bestwebsoft.com/
9 11 License: GPLv2 or later
10 -*/
12 + */
11 13
12 -/* © Copyright 2015 BestWebSoft ( http://support.bestwebsoft.com )
14 +/**
15 +© Copyright 2021 BestWebSoft ( https://support.bestwebsoft.com )
13 16
14 - This program is free software; you can redistribute it and/or modify
15 - it under the terms of the GNU General Public License, version 2, as
16 - published by the Free Software Foundation.
17 +This program is free software; you can redistribute it and/or modify
18 +it under the terms of the GNU General Public License, version 2, as
19 +published by the Free Software Foundation.
17 20
18 - This program is distributed in the hope that it will be useful,
19 - but WITHOUT ANY WARRANTY; without even the implied warranty of
20 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 - GNU General Public License for more details.
21 +This program is distributed in the hope that it will be useful,
22 +but WITHOUT ANY WARRANTY; without even the implied warranty of
23 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 +GNU General Public License for more details.
22 25
23 - You should have received a copy of the GNU General Public License
24 - along with this program; if not, write to the Free Software
25 - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26 -*/
26 +You should have received a copy of the GNU General Public License
27 +along with this program; if not, write to the Free Software
28 +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
29 + */
27 30
28 -/* Add our own menu */
29 -if ( ! function_exists( 'pdfprnt_add_pages' ) ) {
30 - function pdfprnt_add_pages() {
31 - bws_add_general_menu( plugin_basename( __FILE__ ) );
32 - add_submenu_page( 'bws_plugins', __( 'PDF & Print Settings', 'pdf-print' ), 'PDF & Print', 'manage_options', 'pdf-print.php', 'pdfprnt_settings_page' );
31 +if ( ! defined( 'ABSPATH' ) ) {
32 + exit;
33 +}
34 +
35 +require_once dirname( __FILE__ ) . '/includes/deprecated.php';
36 +
37 +if ( ! function_exists( 'pdfprnt_add_admin_menu' ) ) {
38 + /**
39 + * Add our own menu
40 + */
41 + function pdfprnt_add_admin_menu() {
42 + global $submenu, $pdfprnt_plugin_info, $wp_version, $pdfprnt_options;
43 + if ( ! is_plugin_active( 'pdf-print-pro/pdf-print-pro.php' )/*pls */ && ! is_plugin_active( 'pdf-print-plus/pdf-print-plus.php' )/* pls*/ ) {
44 + $settings = add_menu_page( esc_html__( 'PDF & Print Settings', 'pdf-print' ), 'PDF & Print', 'manage_options', 'pdf-print.php', 'pdfprnt_settings_page' );
45 + add_submenu_page( 'pdf-print.php', esc_html__( 'PDF & Print Settings', 'pdf-print' ), esc_html__( 'Settings', 'pdf-print' ), 'manage_options', 'pdf-print.php', 'pdfprnt_settings_page' );
46 + add_submenu_page( 'pdf-print.php', esc_html__( 'Headers & Footers', 'pdf-print' ), esc_html__( 'Headers & Footers', 'pdf-print' ), 'manage_options', 'pdf-print-templates.php', 'pdfprnt_templates' );
47 + add_submenu_page( 'pdf-print.php', 'BWS Panel', 'BWS Panel', 'manage_options', 'pdfprnt-bws-panel', 'bws_add_menu_render' );
48 + if ( isset( $submenu['pdf-print.php'] ) ) {
49 + $submenu['pdf-print.php'][] = array(
50 + '<span style="color:#d86463"> ' . esc_html__( 'Upgrade to Pro', 'pdf-print' ) . '</span>',
51 + 'manage_options',
52 + 'https://bestwebsoft.com/products/wordpress/plugins/pdf-print/?k=d9da7c9c2046bed8dfa38d005d4bffdb&pn=101&v=' . $pdfprnt_plugin_info['Version'] . '&wp_v=' . $wp_version,
53 + );
54 + }
55 +
56 + add_action( "load-{$settings}", 'pdfprnt_add_tabs' );
57 + }
33 58 }
34 59 }
35 60
36 -/* Init plugin */
37 -if ( ! function_exists ( 'pdfprnt_init' ) ) {
61 +if ( ! function_exists( 'pdfprnt_add_tabs' ) ) {
62 + /**
63 + * Add help tab on settings page
64 + *
65 + * @return void
66 + */
67 + function pdfprnt_add_tabs() {
68 + $args = array(
69 + 'id' => 'pdfprnt',
70 + 'section' => '200538669',
71 + );
72 + bws_help_tab( get_current_screen(), $args );
73 + }
74 +}
75 +
76 +if ( ! function_exists( 'pdfprnt_plugins_loaded' ) ) {
77 + /**
78 + * Localization
79 + */
80 + function pdfprnt_plugins_loaded() {
81 + /* Internationalization */
82 + load_plugin_textdomain( 'pdf-print', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
83 + }
84 +}
85 +
86 +if ( ! function_exists( 'pdfprnt_init' ) ) {
87 + /**
88 + * Init plugin
89 + */
38 90 function pdfprnt_init() {
39 - global $pdfprnt_plugin_info;
40 - /* Internationalization, first(!) */
41 - load_plugin_textdomain( 'pdf-print', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
42 -
43 - require_once( dirname( __FILE__ ) . '/bws_menu/bws_functions.php' );
91 + global $pdfprnt_plugin_info, $pdfprnt_is_old_php;
44 92
93 + $plugin_basename = plugin_basename( __FILE__ );
94 +
95 + require_once dirname( __FILE__ ) . '/bws_menu/bws_include.php';
96 + bws_include_init( $plugin_basename );
97 +
45 98 if ( empty( $pdfprnt_plugin_info ) ) {
46 99 if ( ! function_exists( 'get_plugin_data' ) ) {
47 - require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
100 + require_once ABSPATH . 'wp-admin/includes/plugin.php';
48 101 }
49 102 $pdfprnt_plugin_info = get_plugin_data( __FILE__ );
50 103 }
51 104
52 105 /* check WordPress version */
53 - bws_wp_version_check( plugin_basename( __FILE__ ), $pdfprnt_plugin_info, '3.3' );
106 + bws_wp_min_version_check( $plugin_basename, $pdfprnt_plugin_info, '4.5' );
54 107
108 + /* check PHP version */
109 + $pdfprnt_is_old_php = version_compare( PHP_VERSION, '5.4.0', '<' );
110 +
55 111 /* Get/Register and check settings for plugin */
56 - if ( ! is_admin() || ( isset( $_GET['page'] ) && 'pdf-print.php' == $_GET['page'] ) )
112 + if ( ! is_admin() || ( isset( $_GET['page'] ) && 'pdf-print.php' === $_GET['page'] ) ) {
57 113 pdfprnt_settings();
114 + }
115 +
116 + if ( function_exists( 'wp_register_block_types_from_metadata_collection' ) ) {
117 + wp_register_block_types_from_metadata_collection( __DIR__ . '/includes/build', __DIR__ . '/includes/build/blocks-manifest.php' );
118 + return;
119 + }
120 +
121 + if ( function_exists( 'wp_register_block_metadata_collection' ) ) {
122 + wp_register_block_metadata_collection( __DIR__ . '/includes/build', __DIR__ . '/includes/build/blocks-manifest.php' );
123 + }
124 + $manifest_data = require __DIR__ . '/includes/build/blocks-manifest.php';
125 + foreach ( array_keys( $manifest_data ) as $block_type ) {
126 + register_block_type( __DIR__ . "/includes/build/{$block_type}" );
127 + }
58 128 }
59 129 }
60 130
61 131 if ( ! function_exists( 'pdfprnt_admin_init' ) ) {
132 + /**
133 + * Admin init
134 + */
62 135 function pdfprnt_admin_init() {
63 - global $bws_plugin_info, $pdfprnt_plugin_info;
136 + global $bws_plugin_info, $pdfprnt_plugin_info, $bws_shortcode_list, $pagenow, $pdfprnt_options;
64 137
65 - if ( ! isset( $bws_plugin_info ) || empty( $bws_plugin_info ) )
66 - $bws_plugin_info = array( 'id' => '101', 'version' => $pdfprnt_plugin_info["Version"] );
138 + if ( empty( $bws_plugin_info ) ) {
139 + $bws_plugin_info = array(
140 + 'id' => '101',
141 + 'version' => $pdfprnt_plugin_info['Version'],
142 + );
143 + }
144 + /* add PDF&Print to global $bws_shortcode_list */
145 + $bws_shortcode_list['pdfprnt'] = array(
146 + 'name' => 'PDF&Print',
147 + 'js_function' => 'pdfprnt_shortcode_init',
148 + );
149 + if ( 'plugins.php' === $pagenow ) {
150 + /* Install the option defaults */
151 + if ( function_exists( 'bws_plugin_banner_go_pro' ) ) {
152 + pdfprnt_settings();
153 + bws_plugin_banner_go_pro( $pdfprnt_options, $pdfprnt_plugin_info, 'pdfprnt', 'pdf-print', 'e2f2549f4d70bc4cb9b48071169d264e', '101', 'pdf-print' );
154 + }
155 + }
67 156 }
68 157 }
69 158
70 -/* Register settings for plugin */
159 +
160 +if ( ! function_exists( 'pdfprnt_plugin_activate' ) ) {
161 + /**
162 + * Function for activation
163 + */
164 + function pdfprnt_plugin_activate() {
165 + if ( is_multisite() ) {
166 + switch_to_blog( 1 );
167 + register_uninstall_hook( __FILE__, 'pdfprnt_uninstall' );
168 + restore_current_blog();
169 + } else {
170 + register_uninstall_hook( __FILE__, 'pdfprnt_uninstall' );
171 + }
172 + }
173 +}
174 +
71 175 if ( ! function_exists( 'pdfprnt_settings' ) ) {
176 + /**
177 + * Register settings for plugin
178 + */
72 179 function pdfprnt_settings() {
73 - global $pdfprnt_options_array, $pdfprnt_plugin_info;
180 + global $pdfprnt_options, $pdfprnt_plugin_info;
181 + $options_default = pdfprnt_get_options_default();
182 + if ( ! get_option( 'pdfprnt_options' ) ) {
183 + add_option( 'pdfprnt_options', $options_default );
184 + }
74 185
75 - if ( ! $pdfprnt_plugin_info ) {
76 - if ( ! function_exists( 'get_plugin_data' ) )
77 - require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
78 - $pdfprnt_plugin_info = get_plugin_data( __FILE__ );
186 + $pdfprnt_options = get_option( 'pdfprnt_options' );
187 + if ( ! isset( $pdfprnt_options['plugin_option_version'] ) || $pdfprnt_options['plugin_option_version'] !== $pdfprnt_plugin_info['Version'] ) {
188 + if ( isset( $pdfprnt_options['button_post_types'] ) ) {
189 + unset( $options_default['button_post_types'] );
190 + }
191 + if ( function_exists( 'array_replace_recursive' ) ) {
192 + $pdfprnt_options = array_replace_recursive( $options_default, $pdfprnt_options );
193 + } else {
194 + foreach ( $options_default as $key => $value ) {
195 + if (
196 + ! isset( $pdfprnt_options[ $key ] ) ||
197 + ( isset( $pdfprnt_options[ $key ] ) && is_array( $options_default[ $key ] ) && ! is_array( $pdfprnt_options[ $key ] ) )
198 + ) {
199 + $pdfprnt_options[ $key ] = $options_default[ $key ];
200 + } else {
201 + if ( is_array( $options_default[ $key ] ) ) {
202 + foreach ( $options_default[ $key ] as $key2 => $value2 ) {
203 + if ( ! isset( $pdfprnt_options[ $key ][ $key2 ] ) ) {
204 + $pdfprnt_options[ $key ][ $key2 ] = $options_default[ $key ][ $key2 ];
205 + }
206 + }
207 + }
208 + }
209 + }
210 + }
211 + $is_old_pro = false === strpos( 'pro-', $pdfprnt_options['plugin_option_version'] ) ? false : true;
212 + if ( $is_old_pro ) {
213 + foreach ( array( 'pdf', 'print' ) as $button ) {
214 + if ( 'none' !== $pdfprnt_options['button_image'][ $button ]['type'] ) {
215 + $pdfprnt_options['button_image'][ $button ]['type'] = 'default';
216 + $pdfprnt_options['button_image'][ $button ]['image_src'] = plugins_url( "images/{$button}.png", __FILE__ );
217 + }
218 + }
219 + }
220 +
221 + $pdfprnt_options['plugin_option_version'] = $pdfprnt_plugin_info['Version'];
222 + $pdfprnt_options['hide_premium_options'] = array();
223 + update_option( 'pdfprnt_options', $pdfprnt_options );
224 + pdfprnt_plugin_activate();
79 225 }
80 -
226 + }
227 +}
228 +
229 +if ( ! function_exists( 'pdfprnt_get_options_default' ) ) {
230 + /**
231 + * Get plugin default settings
232 + */
233 + function pdfprnt_get_options_default() {
234 + global $pdfprnt_plugin_info, $wp_roles;
235 +
81 236 /* Variable to verify performance number of once function. */
82 - $pdfprnt_default_post_types = array();
237 + $default_post_types = array();
83 238 /* Default post types of WordPress. */
84 - foreach ( get_post_types( array( 'public' => 1, 'show_ui' => 1, '_builtin' => true ), 'names' ) as $value )
85 - $pdfprnt_default_post_types[] = $value;
239 + foreach ( get_post_types(
240 + array(
241 + 'public' => 1,
242 + 'show_ui' => 1,
243 + '_builtin' => true,
244 + ),
245 + 'names'
246 + ) as $value ) {
247 + $default_post_types[] = $value;
248 + }
249 + $default_post_types[] = 'pdfprnt_search';
250 + $default_post_types[] = 'pdfprnt_archives';
251 + $default_post_types[] = 'pdfprnt_blog';
86 252
87 - $pdfprnt_options_array_defaults = array(
88 - 'plugin_option_version' => $pdfprnt_plugin_info["Version"],
89 - 'position' => 'top-right',
90 - 'position_search_archive' => 'top-right',
91 - 'position_custom' => 'right',
92 - 'show_btn_print' => 1,
93 - 'show_btn_pdf' => 1,
94 - 'show_btn_print_search_archive' => 1,
95 - 'show_btn_pdf_search_archive' => 1,
96 - 'show_btn_print_custom' => 1,
97 - 'show_btn_pdf_custom' => 1,
98 - 'use_theme_stylesheet' => 0,
99 - 'tmpl_shorcode' => 1,
100 - 'use_types_posts' => $pdfprnt_default_post_types,
101 - 'show_print_window' => 0,
102 - 'additional_fonts' => 0
253 + $enabled_roles = array();
254 + $roles = array_keys( $wp_roles->roles );
255 + foreach ( $roles as $key => $role ) {
256 + $enabled_roles[ $role ] = 1;
257 + }
258 + $enabled_roles['unauthorized'] = 1;
259 +
260 + $options_default = array(
261 + 'plugin_option_version' => $pdfprnt_plugin_info['Version'],
262 + 'button_post_types' => array(
263 + 'pdf' => $default_post_types,
264 + 'print' => $default_post_types,
265 + ),
266 + 'buttons_position' => 'top-right',
267 + 'use_default_css' => 0,
268 + 'use_custom_css' => 0,
269 + 'custom_css_code' => '',
270 + 'do_shorcodes' => 1,
271 + 'disable_links' => 0,
272 + 'remove_links' => 0,
273 + 'replace_video' => 0,
274 + 'qr_code_link' => 0,
275 + 'show_print_window' => 0,
276 + 'additional_fonts' => 0,
277 + 'show_title' => 1,
278 + 'show_featured_image' => 0,
279 + 'show_author' => 0,
280 + 'show_date' => 0,
281 + 'show_category' => 0,
282 + 'featured_image_size' => 'thumbnail',
283 + 'button_image' => array(
284 + 'pdf' => array(
285 + 'type' => 'default',
286 + 'image_src' => plugins_url( 'images/pdf.png', __FILE__ ),
287 + ),
288 + 'print' => array(
289 + 'type' => 'default',
290 + 'image_src' => plugins_url( 'images/print.png', __FILE__ ),
291 + ),
292 + ),
293 + 'button_title' => array(
294 + 'pdf' => '',
295 + 'print' => '',
296 + ),
297 + 'pdf_page_size' => 'A4',
298 + 'image_to_pdf' => 0,
299 + 'pdf_margins' => array(
300 + 'left' => 15,
301 + 'right' => 15,
302 + 'top' => 16,
303 + 'bottom' => 16,
304 + ),
305 + 'first_install' => strtotime( 'now' ),
306 + 'suggest_feature_banner' => 1,
307 + 'file_action' => 'open',
308 + 'print_action' => 'plugin_function',
309 + 'enabled_roles' => $enabled_roles,
310 + 'mpdf_library_version' => '8.2.6',
311 + 'hide_classes' => array(),
312 + 'count_generation' => 0,
103 313 );
104 -
105 - if ( ! get_option( 'pdfprnt_options_array' ) )
106 - add_option( 'pdfprnt_options_array', $pdfprnt_options_array_defaults );
107 314
108 - $pdfprnt_options_array = get_option( 'pdfprnt_options_array' );
315 + $options_default = apply_filters( 'pdfprnt_get_additional_options_default', $options_default );
109 316
110 - if ( ! isset( $pdfprnt_options_array['plugin_option_version'] ) || $pdfprnt_options_array['plugin_option_version'] != $pdfprnt_plugin_info["Version"] ) {
111 - if ( in_array( $pdfprnt_options_array['position_search_archive'], array( 'pdfprnt-right', 'pdfprnt-left' ) ) )
112 - $pdfprnt_options_array['position_search_archive'] = 'pdfprnt-left' == $pdfprnt_options_array['position_search_archive'] ? 'top-left' : 'top-right';
113 - if ( in_array( $pdfprnt_options_array['position_custom'], array( 'pdfprnt-right', 'pdfprnt-left' ) ) )
114 - $pdfprnt_options_array['position_custom'] = 'pdfprnt-left' == $pdfprnt_options_array['position_custom'] ? 'left' : 'right';
115 - $pdfprnt_options_array = array_merge( $pdfprnt_options_array_defaults, $pdfprnt_options_array );
116 - $pdfprnt_options_array['plugin_option_version'] = $pdfprnt_plugin_info["Version"];
117 - update_option( 'pdfprnt_options_array', $pdfprnt_options_array );
118 - }
317 + return $options_default;
119 318 }
120 319 }
121 320
122 -/**
123 - * Display <select> on settings page
124 - **/
125 -if ( ! function_exists( 'pdfprnt_display_select' ) ) {
126 - function pdfprnt_display_select( $name, $selected ) {
127 - $positions_values = array(
128 - 'top-left' => __( 'Top Left', 'pdf-print' ),
129 - 'top-right' => __( 'Top Right', 'pdf-print' ),
130 - 'bottom-left' => __( 'Bottom Left', 'pdf-print' ),
131 - 'bottom-right' => __( 'Bottom Right', 'pdf-print' ),
132 - 'top-bottom-left' => __( 'Top & Bottom Left', 'pdf-print' ),
133 - 'top-bottom-right' => __( 'Top & Bottom Right', 'pdf-print' )
134 - );
135 - foreach ( $positions_values as $key => $value ) { ?>
136 - <label><input type="radio" name="<?php echo $name; ?>" value="<?php echo $key ?>"<?php echo $key == $selected ? ' checked="checked"' : ''; ?> />&nbsp;<?php echo $value; ?></label><br/>
137 - <?php }
321 +if ( ! function_exists( 'pdfprnt_settings_page' ) ) {
322 + /**
323 + * Settings page
324 + */
325 + function pdfprnt_settings_page() {
326 + global $pdfprnt_plugin_info;
327 + require_once dirname( __FILE__ ) . '/includes/pro_banners.php';
328 + if ( ! class_exists( 'Bws_Settings_Tabs' ) ) {
329 + require_once dirname( __FILE__ ) . '/bws_menu/class-bws-settings.php';
330 + }
331 + require_once dirname( __FILE__ ) . '/includes/class-pdfprnt-settings.php';
332 + $page = new Pdfprnt_Settings_Tabs( plugin_basename( __FILE__ ) );
333 + if ( method_exists( $page, 'add_request_feature' ) ) {
334 + $page->add_request_feature();
335 + } ?>
336 + <div class="wrap">
337 + <h1 class="pdfprnt-title"><?php esc_html_e( 'PDF & Print Settings', 'pdf-print' ); ?></h1>
338 + <?php
339 + if ( function_exists( 'bws_plugin_promo_banner' ) ) {
340 + echo bws_plugin_promo_banner( $pdfprnt_plugin_info, 'pdfprnt_options', 'pdf-print', 'https://bestwebsoft.com/products/wordpress/plugins/pdf-print/?utm_source=wordpress&utm_medium=plugin_banner&utm_campaign=upgrade' );
341 + }
342 + $page->display_content(); ?>
343 + </div>
344 + <?php
138 345 }
139 346 }
140 -/* Add admin page */
141 -if ( ! function_exists ( 'pdfprnt_settings_page' ) ) {
142 - function pdfprnt_settings_page () {
143 - global $pdfprnt_options_array, $wp_version, $pdfprnt_plugin_info;
144 - $message = $error = "";
145 - $plugin_basename = plugin_basename( __FILE__ );
146 - if ( is_multisite() ) {
147 - switch_to_blog( 1 );
148 - $upload_dir = wp_upload_dir();
149 - restore_current_blog();
347 +
348 +
349 +if ( ! function_exists( 'pdfprnt_templates' ) ) {
350 + /**
351 + * Headers & Footers page
352 + */
353 + function pdfprnt_templates() {
354 + global $wp_version, $pdfprnt_plugin_info, $pdfprnt_options, $pdfprnt_links;
355 + require_once dirname( __FILE__ ) . '/includes/pro_banners.php';
356 +
357 + pdfprnt_settings();
358 + $bws_hide_premium = bws_hide_premium_options_check( $pdfprnt_options );
359 +
360 + $tab_action = ( isset( $_GET['pdfprnt_tab_action'] ) && 'new' === $_GET['pdfprnt_tab_action'] );
361 + if ( $tab_action ) {
362 + $page_title = esc_html__( 'Add New', 'pdf-print' );
363 + $page_name = esc_html__( 'Header & Footer Template', 'pdf-print' );
150 364 } else {
151 - $upload_dir = wp_upload_dir();
365 + $page_title = '';
366 + $page_name = esc_html__( 'Headers & Footers', 'pdf-print' );
152 367 }
153 - $need_fonts_reload = false;
154 - $fonts_path = $upload_dir['basedir'] .'/pdf-print-fonts';
155 - if ( ! function_exists( 'get_plugins' ) )
156 - require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
157 - $all_plugins = get_plugins();
158 - if ( isset( $_REQUEST['pdfprnt_form_submit'] ) && check_admin_referer( $plugin_basename, 'pdfprnt_nonce_name' ) ) {
159 - $pdfprnt_options_array['position'] = isset( $_REQUEST['pdfprnt_position'] ) ? $_REQUEST['pdfprnt_position'] : 'top-right';
160 - $pdfprnt_options_array['position_search_archive'] = isset( $_REQUEST['pdfprnt_position_search_archive'] ) ? $_REQUEST['pdfprnt_position_search_archive'] : 'top-right';
161 - $pdfprnt_options_array['position_custom'] = isset( $_REQUEST['pdfprnt_position_custom'] ) ? $_REQUEST['pdfprnt_position_custom'] : 'right';
162 - $pdfprnt_options_array['use_theme_stylesheet'] = isset( $_REQUEST['pdfprnt_use_theme_stylesheet'] ) ? $_REQUEST['pdfprnt_use_theme_stylesheet'] : 0;
163 - $pdfprnt_options_array['show_btn_pdf'] = isset( $_REQUEST['pdfprnt_show_btn_pdf'] ) ? 1 : 0;
164 - $pdfprnt_options_array['show_btn_print'] = isset( $_REQUEST['pdfprnt_show_btn_print'] ) ? 1 : 0;
165 - $pdfprnt_options_array['show_btn_pdf_search_archive'] = isset( $_REQUEST['pdfprnt_show_btn_pdf_search_archive'] ) ? 1 : 0;
166 - $pdfprnt_options_array['show_btn_print_search_archive'] = isset( $_REQUEST['pdfprnt_show_btn_print_search_archive'] ) ? 1 : 0;
167 - $pdfprnt_options_array['show_btn_pdf_custom'] = isset( $_REQUEST['pdfprnt_show_btn_pdf_custom'] ) ? 1 : 0;
168 - $pdfprnt_options_array['show_btn_print_custom'] = isset( $_REQUEST['pdfprnt_show_btn_print_custom'] ) ? 1 : 0;
169 - $pdfprnt_options_array['tmpl_shorcode'] = isset( $_REQUEST['pdfprnt_tmpl_shorcode'] ) ? 1 : 0;
170 - $pdfprnt_options_array['show_print_window'] = isset( $_REQUEST['pdfprnt_show_print_window'] ) ? 1 : 0;
171 - $pdfprnt_options_array['use_types_posts'] = isset( $_REQUEST['pdfprnt_use_types_posts'] ) ? $_REQUEST['pdfprnt_use_types_posts'] : array();
172 - update_option( 'pdfprnt_options_array', $pdfprnt_options_array );
173 - $message = __( 'Settings saved.', 'pdf-print' );
368 + $display_title = ( ! empty( $page_title ) ) ? "$page_title $page_name" : "$page_name";
369 + if ( ! isset( $_GET['pdfprnt_tab_action'] ) && ! $bws_hide_premium ) {
370 + $display_title .= sprintf(
371 + ' <a class="add-new-h2 pdfprnt_add_new_button" href="%s">%s</a>',
372 + admin_url( 'admin.php?page=pdf-print-templates.php&pdfprnt_tab_action=new' ),
373 + esc_html__( 'Add New', 'pdf-print' )
374 + );
174 375 }
175 - if ( ( ! is_dir( $fonts_path ) ) && 0 != $pdfprnt_options_array['additional_fonts'] ) { /* if "pdf-print-fonts" folder was removed somehow */
176 - $error = __( 'The folder "uploads/pdf-print-fonts" was removed.', 'pdf-print' );
177 - $need_fonts_reload = true;
178 - } elseif (
179 - is_dir( $fonts_path ) &&
180 - $pdfprnt_options_array['additional_fonts'] != count( scandir( $fonts_path ) ) &&
181 - 0 < $pdfprnt_options_array['additional_fonts']
182 - ) { /* if some fonts was removed somehow from "pdf-print-fonts" folder */
183 - $error = __( 'Some fonts were removed from the folder "uploads/pdf-print-fonts".', 'pdf-print' );
184 - $need_fonts_reload = true;
185 - }
186 - if ( $need_fonts_reload ) {
187 - $error .= __( ' You may need to reload fonts.', 'pdf-print' );
188 - $pdfprnt_options_array['additional_fonts'] = 0;
189 - }
190 - if ( isset( $_GET['action'] ) && 'go_pro' == $_GET['action'] ) {
191 - /* GO PRO */
192 - $go_pro_result = bws_go_pro_tab_check( $plugin_basename );
193 - if ( ! empty( $go_pro_result['error'] ) )
194 - $error = $go_pro_result['error'];
195 - }
196 - if ( isset( $_REQUEST['pdfprnt_load_fonts'] ) ) {
197 - /* load additional fonts if javascript is disabled */
198 - $result = pdfprnt_load_fonts();
199 - if ( isset( $result['error'] ) )
200 - $error .= '&nbsp;' . $result['error'];
201 - if ( isset( $result['done'] ) )
202 - $message .= '&nbsp;' . $result['done'];
203 - } ?>
376 + ?>
204 377 <div class="wrap">
205 - <div class="icon32 icon32-bws" id="icon-options-general"></div>
206 - <h2>PDF & Print Pro <?php if ( isset( $_GET['action'] ) && 'templates' == $_GET['action'] ) { ?><a href="admin.php?page=pdf-print.php&amp;action=templates&amp;pdfprnt_tab_action=new" class="<?php if ( 3.8 > $wp_version ) echo 'button '; ?>add-new-h2"><?php _e( 'Add New Template', 'pdf-print' ); ?></a><?php } ?></h2>
207 - <h2 class="nav-tab-wrapper">
208 - <a class="nav-tab<?php if ( !isset( $_GET['action'] ) ) echo ' nav-tab-active'; ?>" href="admin.php?page=pdf-print.php"><?php _e( 'Settings', 'pdf-print' ); ?></a>
209 - <a class="nav-tab<?php if ( isset( $_GET['action'] ) && 'extra' == $_GET['action'] ) echo ' nav-tab-active'; ?>" href="admin.php?page=pdf-print.php&amp;action=extra"><?php _e( 'Extra settings', 'pdf-print' ); ?></a>
210 - <a class="nav-tab<?php if ( isset( $_GET['action'] ) && 'templates' == $_GET['action'] ) echo ' nav-tab-active'; ?>" href="admin.php?page=pdf-print.php&amp;action=templates"><?php _e( 'Templates', 'pdf-print' ); ?></a>
211 - <a class="nav-tab" href="http://bestwebsoft.com/products/pdf-print/faq/" target="_blank"><?php _e( 'FAQ', 'pdf-print' ); ?></a>
212 - <a class="nav-tab bws_go_pro_tab<?php if ( isset( $_GET['action'] ) && 'go_pro' == $_GET['action'] ) echo ' nav-tab-active'; ?>" href="admin.php?page=pdf-print.php&amp;action=go_pro"><?php _e( 'Go PRO', 'pdf-print' ); ?></a>
213 - </h2>
214 - <div class="updated fade" <?php if ( empty( $message ) || "" != $error ) echo "style=\"display:none\""; ?>><p><strong><?php echo $message; ?></strong></p></div>
215 - <div id="pdfprnt_settings_notice" class="updated fade" style="display:none"><p><strong><?php _e( "Notice:", 'pdf-print' ); ?></strong> <?php _e( "The plugin's settings have been changed. In order to save them please don't forget to click the 'Save Changes' button.", 'pdf-print' ); ?></p></div>
216 - <div class="error" <?php if ( "" == $error ) echo "style=\"display:none\""; ?>><p><strong><?php echo $error; ?></strong></p></div>
217 - <?php if ( ! isset( $_GET['action'] ) ) { ?>
218 - <form method="post" action="admin.php?page=pdf-print.php" id="pdfprnt_settings_form">
219 - <table class="form-table pdfprnt_settings_table">
220 - <tr id="pdfprnt_load_fonts_button">
221 - <th scope="row"><?php _e( 'Load additional fonts', 'pdf-print' ); ?></th>
222 - <td style="position: relative;">
223 - <?php if ( 0 == $pdfprnt_options_array['additional_fonts'] && class_exists( 'ZipArchive' ) ) {
224 - $ajax_nonce = wp_create_nonce( 'pdfprnt_ajax_nonce' ); ?>
225 - <input type="submit" class="button" value="<?php _e( 'Load Fonts', 'pdf-print' ); ?>" name="pdfprnt_load_fonts" />&nbsp;<span id="pdfprnt_font_loader" class="pdfprnt_loader"><img src="<?php echo plugins_url( 'images/ajax-loader.gif', __FILE__ ); ?>" alt="loader" /></span><br />
226 - <span class="pdfprnt_info"><?php _e( 'You can load additional fonts, needed for the PDF creation. When creating the PDF-doc, this will allow automatic selection of fonts necessary for text, according to languages used in the content.', 'pdf-print' ); ?></span>
227 - <input type="hidden" name="pdfprnt_action" value="pdfprnt_load_fonts" />
228 - <input type="hidden" name="pdfprnt_ajax_nonce" value="<?php echo $ajax_nonce; ?>" />
229 - <?php } elseif ( 0 == $pdfprnt_options_array['additional_fonts'] && ! class_exists( 'ZipArchive' ) ) { ?>
230 - <span style="color: red"><strong><?php _e( 'WARNING', 'pdf-print' ); ?>:&nbsp;</strong><?php _e( 'Class ZipArchive is not installed on your server. It is impossible to load additional fonts.', 'pdf-print' ); ?></span>
231 - <?php } elseif ( 0 < $pdfprnt_options_array['additional_fonts'] ) { ?>
232 - <span><?php _e( 'Additional fonts were loaded successfully', 'pdf-print' ); ?>.</span>
233 - <?php } ?>
234 - </td>
235 - </tr>
236 - <tr>
237 - <th scope="row"><?php _e( 'Use the theme stylesheet or plugin default style', 'pdf-print' ); ?></th>
238 - <td>
239 - <select name="pdfprnt_use_theme_stylesheet">
240 - <option value="0" <?php if ( 0 == $pdfprnt_options_array['use_theme_stylesheet'] ) echo 'selected="selected"'; ?>><?php echo __( 'Default stylesheet', 'pdf-print' ); ?></option>
241 - <option value="1" <?php if ( 1 == $pdfprnt_options_array['use_theme_stylesheet'] ) echo 'selected="selected"'; ?>><?php echo __( 'Current theme stylesheet', 'pdf-print' ); ?></option>
242 - </select>
243 - </td>
244 - </tr>
245 - <tr>
246 - <th scope="row"><?php _e( 'Types of posts that will be used in the plugin', 'pdf-print' ); ?></th>
247 - <td>
248 - <select name="pdfprnt_use_types_posts[]" multiple="multiple">
249 - <?php foreach ( get_post_types( array( 'public' => 1, 'show_ui' => 1 ), 'objects' ) as $key => $value ) :
250 - if ( 'attachment' != $key ) { ?>
251 - <option value="<?php echo $key; ?>" <?php if ( in_array( $key, $pdfprnt_options_array['use_types_posts'] ) ) echo 'selected="selected"'; ?>><?php echo $value->label; ?></option>
252 - <?php }
253 - endforeach; ?>
254 - </select>
255 - </td>
256 - </tr>
257 - </table>
258 - <table class="form-table pdfprnt_settings_table pdfprnt_buttons" style="width: auto !important;">
259 - <tr class="pdfprnt_table_head">
260 - <th scope="row"></th>
261 - <th><?php _e( 'Posts and pages', 'pdf-print' ); ?></th>
262 - <th><?php _e( 'Search and archive pages', 'pdf-print' ); ?></th>
263 - <th><?php _e( 'Function call', 'pdf-print' ); ?></th>
264 - </tr>
265 - <tr class="pdfprnt_pdf_buttton">
266 - <th scope="row"><?php _e( 'Show PDF button', 'pdf-print' ); ?></th>
267 - <td>
268 - <input type="checkbox" name="pdfprnt_show_btn_pdf" <?php if ( 1 == $pdfprnt_options_array['show_btn_pdf'] ) echo 'checked="checked"'; ?> />
269 - </td>
270 - <td>
271 - <input type="checkbox" name="pdfprnt_show_btn_pdf_search_archive" <?php if ( 1 == $pdfprnt_options_array['show_btn_pdf_search_archive'] ) echo 'checked="checked"'; ?> />
272 - </td>
273 - <td>
274 - <input type="checkbox" name="pdfprnt_show_btn_pdf_custom" <?php if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) echo 'checked="checked"'; ?> />
275 - </td>
276 - </tr>
277 - <tr class="pdfprnt_print_buttton">
278 - <th scope="row"><?php _e( 'Show Print button', 'pdf-print' ); ?></th>
279 - <td>
280 - <input type="checkbox" name="pdfprnt_show_btn_print" <?php if ( 1 == $pdfprnt_options_array['show_btn_print'] ) echo 'checked="checked"'; ?> />
281 - </td>
282 - <td>
283 - <input type="checkbox" name="pdfprnt_show_btn_print_search_archive" <?php if ( 1 == $pdfprnt_options_array['show_btn_print_search_archive'] ) echo 'checked="checked"'; ?> />
284 - </td>
285 - <td>
286 - <input type="checkbox" name="pdfprnt_show_btn_print_custom" <?php if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) echo 'checked="checked"'; ?> />
287 - </td>
288 - </tr>
289 - <tr class="pdfprnt_position_buttton">
290 - <th scope="row"><?php _e( 'Position of buttons in the content', 'pdf-print' ); ?></th>
291 - <td>
292 - <?php pdfprnt_display_select( 'pdfprnt_position', $pdfprnt_options_array['position'] ); ?>
293 - </td>
294 - <td>
295 - <?php pdfprnt_display_select( 'pdfprnt_position_search_archive', $pdfprnt_options_array['position_search_archive'] ); ?>
296 - </td>
297 - <td>
298 - <label><input type="radio" name="pdfprnt_position_custom" value="left"<?php echo 'left' == $pdfprnt_options_array['position_custom'] ? ' checked="checked"' : ''; ?>>&nbsp;<?php _e( 'Left', 'pdf-print' ); ?></label><br/>
299 - <label><input type="radio" name="pdfprnt_position_custom" value="right"<?php echo 'right' == $pdfprnt_options_array['position_custom'] ? ' checked="checked"' : ''; ?>>&nbsp;<?php _e( 'Right', 'pdf-print' ); ?></label>
300 - </td>
301 - </tr>
302 - </table>
303 - <div>
304 - <p>
305 - <?php _e( 'In order to use PDF and Print buttons in the custom post or page template, see', 'pdf-print' ); ?>&nbsp;<a href="http://bestwebsoft.com/products/pdf-print/faq/" target="_blank"><?php _e( 'FAQ', 'pdf-print' ); ?></a>
306 - </p>
307 - </div>
308 - <table class="form-table pdfprnt_settings_table">
309 - <tr>
310 - <th scope="row">
311 - <?php _e( 'Settings for shortcodes', 'pdf-print' ); ?>
312 - </th>
313 - <td>
314 - <label><input type="checkbox" name="pdfprnt_tmpl_shorcode" <?php if ( 1 == $pdfprnt_options_array['tmpl_shorcode'] ) echo 'checked="checked"'; ?> /> <span><?php _e( 'Do!', 'pdf-print' ); ?></span></label>
315 - </td>
316 - </tr>
317 - <tr>
318 - <th scope="row"><?php _e( 'Show the print window', 'pdf-print' ); ?></th>
319 - <td>
320 - <input type="checkbox" name="pdfprnt_show_print_window" <?php if ( 1 == $pdfprnt_options_array['show_print_window'] ) echo 'checked="checked"'; ?> />
321 - </td>
322 - </tr>
323 - </table>
324 - <div class="bws_pro_version_bloc">
325 - <div class="bws_pro_version_table_bloc">
326 - <div class="bws_table_bg"></div>
327 - <table class="form-table bws_pro_version">
328 - <tr>
329 - <th scope="row"><?php _e( 'PDF files name', 'pdf-print' ); ?></th>
330 - <td>
331 - <label><input disabled="disabled" type="radio" name="pdfprntpr_select_file_name" value="1" /> <?php _e( 'use post or page slug', 'pdf-print' ); ?></label><br />
332 - <input type="radio" disabled="disabled" name="pdfprntpr_select_file_name" value="0" /><input disabled="disabled" type="text" name='pdfprntpr_file_name' value="mpdf" /><br />
333 - <span class="pdfprnt_info">
334 - <?php _e( 'File name cannot contain more than 195 symbols. The file name can include Latin letters, numbers and symbols "-" , "_" only.', 'pdf-print' ) ?>
335 - </span>
336 - </td>
337 - </tr>
338 - <tr>
339 - <th scope="row"><?php _e( 'Do not index pdf and print pages', 'pdf-print' ); ?></th>
340 - <td>
341 - <input type="checkbox" name="pdfprntpr_noindex_page" disabled="disabled" />
342 - </td>
343 - </tr>
344 - <tr valign="top">
345 - <th scope="row" colspan="2">
346 - * <?php _e( 'If you upgrade to Pro version, all your settings will be saved.', 'pdf-print' ); ?>
347 - </th>
348 - </tr>
349 - </table>
378 + <h1 class="pdfprnt-title"><?php echo wp_kses_post( $display_title ); ?></h1>
379 + <br>
380 + <?php if ( $bws_hide_premium ) { ?>
381 + <p>
382 + <?php
383 + esc_html_e( 'This tab contains Pro options only.', 'pdf-print' );
384 + echo ' ' . sprintf(
385 + esc_html__( '%1$sChange the settings%2$s to view the Pro options.', 'pdf-print' ),
386 + '<a href="admin.php?page=pdf-print.php&bws_active_tab=misc">',
387 + '</a>'
388 + );
389 + ?>
390 + </p>
391 + <?php } else { ?>
392 + <div class="bws_pro_version_bloc pdfprnt-pro-feature pdfprnt-pro-feature-templates">
393 + <div class="bws_pro_version_table_bloc">
394 + <div class="bws_table_bg" style="z-index: 1098;"></div>
395 + <div class="bws_pro_version">
396 + <?php
397 + if ( ! $tab_action ) {
398 + $date_format = get_option( 'date_format' );
399 + pdfprnt_headers_footers_list_block( $date_format );
400 + } else {
401 + pdfprnt_headers_footers_editor_block();
402 + }
403 + ?>
350 404 </div>
351 - <div class="bws_pro_version_tooltip">
352 - <div class="bws_info">
353 - <?php _e( 'Unlock premium options by upgrading to a PRO version.', 'pdf-print' ); ?>
354 - <a href="http://bestwebsoft.com/products/pdf-print/?k=d9da7c9c2046bed8dfa38d005d4bffdb&pn=101&v=<?php echo $pdfprnt_plugin_info["Version"]; ?>&wp_v=<?php echo $wp_version; ?>" target="_blank" title="PDF & Print Pro"><?php _e( 'Learn More', 'pdf-print' ); ?></a>
355 - </div>
356 - <div class="bws_pro_links">
357 - <a class="bws_button" href="http://bestwebsoft.com/products/pdf-print/buy/?k=d9da7c9c2046bed8dfa38d005d4bffdb&pn=101&v=<?php echo $pdfprnt_plugin_info["Version"]; ?>&wp_v=<?php echo $wp_version; ?>" target="_blank" title="PDF & Print Pro">
358 - <?php _e( 'Go', 'pdf-print' ); ?> <strong>PRO</strong>
359 - </a>
360 - </div>
361 - <div class="clear"></div>
362 - </div>
363 405 </div>
364 - <input type="hidden" name="pdfprnt_form_submit" value="1" />
365 - <p class="submit">
366 - <input type="submit" class="button-primary" value="<?php _e( 'Save Changes', 'pdf-print' ); ?>" />
367 - </p>
368 - <?php wp_nonce_field( $plugin_basename, 'pdfprnt_nonce_name' ); ?>
369 - </form>
370 - <?php bws_plugin_reviews_block( $pdfprnt_plugin_info['Name'], 'pdf-print' ); ?>
371 - <?php } elseif ( 'extra' == $_GET['action'] ) { ?>
372 - <div class="bws_pro_version_bloc">
373 - <div class="bws_pro_version_table_bloc">
374 - <div class="bws_table_bg"></div>
375 - <table class="form-table bws_pro_version">
376 - <tr valign="top">
377 - <td colspan="2">
378 - <?php _e( 'Please choose the necessary post types (or single pages), where PDF & Print buttons should be displayed:', 'pdf-print' ); ?>
379 - </td>
380 - </tr>
381 - <tr valign="top">
382 - <td colspan="2">
383 - <label>
384 - <input disabled="disabled" checked="checked" id="twttrpr_jstree_url" type="checkbox" name="twttrpr_jstree_url" value="1" />
385 - <?php _e( "Show URL for pages", 'pdf-print' );?>
386 - </label>
387 - </td>
388 - </tr>
389 - <tr valign="top">
390 - <td colspan="2">
391 - <img src="<?php echo plugins_url( 'images/pro_screen_1.png', __FILE__ ); ?>" alt="<?php _e( "Example of site pages' tree", 'pdf-print' ); ?>" title="<?php _e( "Example of site pages' tree", 'pdf-print' ); ?>" />
392 - </td>
393 - </tr>
394 - <tr valign="top">
395 - <td colspan="2">
396 - <input disabled="disabled" type="submit" class="button-primary" value="<?php _e( 'Save Changes', 'pdf-print' ); ?>" />
397 - </td>
398 - </tr>
399 - <tr valign="top">
400 - <th scope="row" colspan="2">
401 - * <?php _e( 'If you upgrade to Pro version all your settings will be saved.', 'pdf-print' ); ?>
402 - </th>
403 - </tr>
404 - </table>
406 + <div class="bws_pro_version_tooltip" style="z-index: 1099;">
407 + <a class="bws_button" href="https://bestwebsoft.com/products/wordpress/plugins/pdf-print/?k=d9da7c9c2046bed8dfa38d005d4bffdb&pn=101&v=<?php echo esc_attr( $pdfprnt_plugin_info['Version'] ); ?>&wp_v=<?php echo esc_attr( $wp_version ); ?>" target="_blank" title="PDF & Print Pro Plugin"><?php esc_html_e( 'Upgrade to Pro', 'pdf-print' ); ?></a>
408 + <div class="clear"></div>
405 409 </div>
406 - <div class="bws_pro_version_tooltip">
407 - <div class="bws_info">
408 - <?php _e( 'Unlock premium options by upgrading to a PRO version.', 'pdf-print' ); ?>
409 - <a href="http://bestwebsoft.com/products/pdf-print/?k=d9da7c9c2046bed8dfa38d005d4bffdb&pn=101&v=<?php echo $pdfprnt_plugin_info["Version"]; ?>&wp_v=<?php echo $wp_version; ?>" target="_blank" title="PDF & Print Pro"><?php _e( 'Learn More', 'pdf-print' ); ?></a>
410 - </div>
411 - <a class="bws_button" href="http://bestwebsoft.com/products/pdf-print/buy/?k=d9da7c9c2046bed8dfa38d005d4bffdb&pn=101&v=<?php echo $pdfprnt_plugin_info["Version"]; ?>&wp_v=<?php echo $wp_version; ?>" target="_blank" title="PDF & Print Pro">
412 - <?php _e( 'Go', 'pdf-print' ); ?> <strong>PRO</strong>
413 - </a>
414 - <div class="clear"></div>
415 - </div>
416 410 </div>
417 - <?php bws_plugin_reviews_block( $pdfprnt_plugin_info['Name'], 'pdf-print' ); ?>
418 - <?php } elseif ( 'templates' == $_GET['action'] ) { ?>
419 - <div class="bws_pro_version_bloc">
420 - <div class="bws_pro_version_table_bloc">
421 - <div class="bws_table_bg"></div>
422 - <?php if ( isset( $_GET['pdfprnt_tab_action'] ) && 'new' == $_GET['pdfprnt_tab_action'] ) { ?>
423 - <h2><?php _e( 'Add New template', 'pdf-print' ); ?></h2>
424 - <p class="hide-if-no-js desription"><i><?php _e( 'For more info click "Help" tab at the top of the page.', 'pdf-print' ); ?></i></p>
425 - <div id="pdfprntpr_template_page">
426 - <div id="titlediv"><div id="titlewrap"><input disabled type="text" name="pdfprntpr_template_title" size="30" value="" id="title" placeholder="<?php _e( 'Enter Template Title', 'pdf-print' ); ?>" /></div></div>
427 - <h3><span><?php _e( 'Top running title', 'pdf-print' ); ?></span></h3>
428 - <div class="postarea wp-editor-expand">
429 - <div id="wp-pdfprntpr_top-wrap" class="wp-core-ui wp-editor-wrap tmce-active">
430 - <div id="wp-pdfprntpr_top-editor-tools" class="wp-editor-tools hide-if-no-js">
431 - <div id="wp-pdfprntpr_top-media-buttons" class="wp-media-buttons">
432 - <link rel='stylesheet' id='editor-buttons-css' href='#' type='text/css' media='all' />
433 - <a disabled href="#" id="insert-media-button" class="button insert-media add_media" data-editor="pdfprntpr_top" title="<?php _e( 'Add Media', 'pdf-print' ); ?>"><span class="wp-media-buttons-icon"></span> <?php _e( 'Add Media', 'pdf-print' ); ?></a>
434 - </div>
435 - </div>
436 - <div id="wp-pdfprntpr_top-editor-container" class="wp-editor-container"><textarea disabled style="width: 100%;" class="pdfprntpr_top wp-editor-area" rows="5" autocomplete="off" name="pdfprntpr_top" id="pdfprntpr_top"></textarea></div>
437 - </div>
438 - </div>
439 - <h3><span><?php _e( 'Bottom running title', 'pdf-print' ); ?></span></h3>
440 - <div class="postarea wp-editor-expand">
441 - <div id="wp-pdfprntpr_bottom-wrap" class="wp-core-ui wp-editor-wrap tmce-active">
442 - <div id="wp-pdfprntpr_bottom-editor-tools" class="wp-editor-tools hide-if-no-js">
443 - <div id="wp-pdfprntpr_bottom-media-buttons" class="wp-media-buttons"><a disabled href="#" class="button insert-media add_media" data-editor="pdfprntpr_bottom" title="<?php _e( 'Add Media', 'pdf-print' ); ?>"><span class="wp-media-buttons-icon"></span> <?php _e( 'Add Media', 'pdf-print' ); ?></a></div>
444 - </div>
445 - <div id="wp-pdfprntpr_bottom-editor-container" class="wp-editor-container"><textarea disabled style="width: 100%;" class="pdfprntpr_bottom wp-editor-area" rows="5" autocomplete="off" name="pdfprntpr_bottom" id="pdfprntpr_bottom"></textarea></div>
446 - </div>
447 - </div>
448 - </div>
449 - <p><input disabled name="pdfprntpr_template_submit" type="submit" class="button-primary" value="<?php _e( 'Save template', 'pdf-print' ); ?>" /></p>
450 - <?php } else { ?>
451 - <ul class='subsubsub'>
452 - <li class='all'><a class="current" href="#"><?php _e( 'All', 'pdf-print' ); ?><span class="count"> ( 2 )</span></a> |</li>
453 - <li class='trash'><a href="#"><?php _e( 'Trash', 'pdf-print' ); ?><span class="count"> ( 0 )</span></a></li>
454 - </ul>
455 - <p class="search-box">
456 - <label class="screen-reader-text" for="pdfprntpr-search-input"><?php _e( 'search', 'pdf-print' ); ?>:</label>
457 - <input disabled type="search" id="pdfprntpr-search-input" name="s" value="" />
458 - <input disabled type="submit" id="search-submit" class="button" value="<?php _e( 'search', 'pdf-print' ); ?>" />
459 - </p>
460 - <div class="tablenav top">
461 - <div class="alignleft actions bulkactions">
462 - <label for='bulk-action-selector-top' class='screen-reader-text'><?php _e( 'Select bulk action', 'pdf-print' ); ?></label>
463 - <select disabled name='action' id='bulk-action-selector-top'>
464 - <option value='-1' selected='selected'><?php _e( 'Bulk Actions', 'pdf-print' ); ?></option>
465 - <option value='trash'><?php _e( 'Trash', 'pdf-print' ); ?></option>
466 - </select>
467 - <input disabled type="submit" id="doaction" class="button action" value="<?php _e( 'Apply', 'pdf-print' ); ?>" />
468 - </div>
469 - <div class='tablenav-pages one-page'>
470 - <span class="displaying-num">2 <?php _e( 'items', 'pdf-print' ); ?></span>
471 - <span class='pagination-links'><a class='first-page disabled' title='<?php _e( 'Go to the first page', 'pdf-print' ); ?>' href='#'>&laquo;</a>
472 - <a class='prev-page disabled' title='<?php _e( 'Go to the previous page', 'pdf-print' ); ?>' href='#'>&lsaquo;</a>
473 - <span class="paging-input">
474 - <label for="current-page-selector" class="screen-reader-text"><?php _e( 'Select Page', 'pdf-print' ); ?></label>
475 - <input disabled class='current-page' id='current-page-selector' title='<?php _e( 'Current page', 'pdf-print' ); ?>' type='text' name='paged' value='1' size='1' /> <?php _e( 'of', 'pdf-print' ); ?> <span class='total-pages'>1</span>
476 - </span>
477 - <a class='next-page disabled' title='<?php _e( 'Go to the next page', 'pdf-print' ); ?>' href='#'>&rsaquo;</a>
478 - <a class='last-page disabled' title='<?php _e( 'Go to the last page', 'pdf-print' ); ?>' href='#'>&raquo;</a>
479 - </span>
480 - </div>
481 - <br class="clear" />
482 - </div>
483 - <table class="wp-list-table widefat striped templates">
484 - <thead>
485 - <tr><th scope='col' id='cb' class='manage-column column-cb check-column' style=""><label class="screen-reader-text" for="cb-select-all-1"><?php _e( 'Select All', 'pdf-print' ); ?></label><input disabled id="cb-select-all-1" type="checkbox" /></th><th scope='col' id='title' class='manage-column column-title sortable desc' style=""><a href="#"><span><?php _e( 'Title', 'pdf-print' ); ?></span><span class="sorting-indicator"></span></a></th><th scope='col' id='pdf' class='manage-column column-pdf' style="">PDF</th><th scope='col' id='print' class='manage-column column-print' style="">Print</th><th scope='col' id='date' class='manage-column column-date sortable desc' style=""><a href="#"><span><?php _e( 'Date', 'pdf-print' ); ?></span><span class="sorting-indicator"></span></a></th></tr>
486 - </thead>
487 - <tbody id="the-list" data-wp-lists='list:template'>
488 - <tr><th scope="row" class="check-column"><input disabled id="cb_2" type="checkbox" name="pdfprntpr_template_id[]" value=" 2" /></th><td class='title column-title'><strong><a href="#">Custom template</a></strong> <div class="row-actions"><span class='edit'><a href="#"><?php _e( 'Edit', 'pdf-print' ); ?></a> | </span><span class='trash'><a class="submitdelete" href="#"><?php _e( 'Trash', 'pdf-print' ); ?></a></span></div></td><td class='pdf column-pdf'><input disabled type="radio" name="pdfprntpr_template_for_pdf" value="2" /></td><td class='print column-print'><input disabled type="radio" name="pdfprntpr_template_for_print" value="2" checked="checked" /></td><td class='date column-date'>June 26, 2015</td></tr><tr><th scope="row" class="check-column"><input disabled id="cb_1" type="checkbox" name="pdfprntpr_template_id[]" value=" 1" /></th><td class='title column-title'><strong><a href="#">New template</a></strong> <div class="row-actions"><span class='edit'><a href="#"><?php _e( 'Edit', 'pdf-print' ); ?></a> | </span><span class='trash'><a class="submitdelete" href="#"><?php _e( 'Trash', 'pdf-print' ); ?></a></span></div></td><td class='pdf column-pdf'><input disabled type="radio" name="pdfprntpr_template_for_pdf" value="1" checked="checked" /></td><td class='print column-print'><input disabled type="radio" name="pdfprntpr_template_for_print" value="1" /></td><td class='date column-date'>June 25, 2015</td></tr>
489 - </tbody>
490 - <tfoot>
491 - <tr><th scope='col' class='manage-column column-cb check-column' style=""><label class="screen-reader-text" for="cb-select-all-2"><?php _e( 'Select All', 'pdf-print' ); ?></label><input disabled id="cb-select-all-2" type="checkbox" /></th><th scope='col' class='manage-column column-title sortable desc' style=""><a href="#"><span><?php _e( 'Title', 'pdf-print' ); ?></span><span class="sorting-indicator"></span></a></th><th scope='col' class='manage-column column-pdf' style="">PDF</th><th scope='col' class='manage-column column-print' style="">Print</th><th scope='col' class='manage-column column-date sortable desc' style=""><a href="#"><span><?php _e( 'Date', 'pdf-print' ); ?></span><span class="sorting-indicator"></span></a></th></tr>
492 - </tfoot>
493 - </table>
494 - <div class="tablenav bottom">
495 - <div class="alignleft actions bulkactions">
496 - <label for='bulk-action-selector-top' class='screen-reader-text'><?php _e( 'Select bulk action', 'pdf-print' ); ?></label>
497 - <select disabled name='action' id='bulk-action-selector-top'>
498 - <option value='-1' selected='selected'><?php _e( 'Bulk Actions', 'pdf-print' ); ?></option>
499 - <option value='trash'><?php _e( 'Trash', 'pdf-print' ); ?></option>
500 - </select>
501 - <input disabled type="submit" id="doaction" class="button action" value="<?php _e( 'Apply', 'pdf-print' ); ?>" />
502 - </div>
503 - <div class='tablenav-pages one-page'>
504 - <span class="displaying-num">2 <?php _e( 'items', 'pdf-print' ); ?></span>
505 - <span class='pagination-links'><a class='first-page disabled' title='<?php _e( 'Go to the first page', 'pdf-print' ); ?>' href='#'>&laquo;</a>
506 - <a class='prev-page disabled' title='<?php _e( 'Go to the previous page', 'pdf-print' ); ?>' href='#'>&lsaquo;</a>
507 - <span class="paging-input">
508 - <label for="current-page-selector" class="screen-reader-text"><?php _e( 'Select Page', 'pdf-print' ); ?></label>
509 - <input disabled class='current-page' id='current-page-selector' title='<?php _e( 'Current page', 'pdf-print' ); ?>' type='text' name='paged' value='1' size='1' /> <?php _e( 'of', 'pdf-print' ); ?> <span class='total-pages'>1</span>
510 - </span>
511 - <a class='next-page disabled' title='<?php _e( 'Go to the next page', 'pdf-print' ); ?>' href='#'>&rsaquo;</a>
512 - <a class='last-page disabled' title='<?php _e( 'Go to the last page', 'pdf-print' ); ?>' href='#'>&raquo;</a>
513 - </span>
514 - </div>
515 - <br class="clear" />
516 - </div>
517 - <?php } ?>
518 - </div>
519 - <div class="bws_pro_version_tooltip">
520 - <div class="bws_info">
521 - <?php _e( 'Unlock premium options by upgrading to a PRO version.', 'pdf-print' ); ?>
522 - <a href="http://bestwebsoft.com/products/pdf-print/?k=d9da7c9c2046bed8dfa38d005d4bffdb&pn=101&v=<?php echo $pdfprnt_plugin_info["Version"]; ?>&wp_v=<?php echo $wp_version; ?>" target="_blank" title="PDF & Print Pro"><?php _e( 'Learn More', 'pdf-print' ); ?></a>
523 - </div>
524 - <a class="bws_button" href="http://bestwebsoft.com/products/pdf-print/buy/?k=d9da7c9c2046bed8dfa38d005d4bffdb&pn=101&v=<?php echo $pdfprnt_plugin_info["Version"]; ?>&wp_v=<?php echo $wp_version; ?>" target="_blank" title="PDF & Print Pro">
525 - <?php _e( 'Go', 'pdf-print' ); ?> <strong>PRO</strong>
526 - </a>
527 - <div class="clear"></div>
528 - </div>
529 - </div>
530 - <?php bws_plugin_reviews_block( $pdfprnt_plugin_info['Name'], 'pdf-print' ); ?>
531 - <?php } elseif ( 'go_pro' == $_GET['action'] ) {
532 - bws_go_pro_tab( $pdfprnt_plugin_info, $plugin_basename, 'pdf-print.php', 'pdf-print-pro.php', 'pdf-print-pro/pdf-print-pro.php', 'pdf-print', 'd9da7c9c2046bed8dfa38d005d4bffdb', '101', isset( $go_pro_result['pro_plugin_is_activated'] ) );
533 - } ?>
411 + <?php } ?>
534 412 </div>
535 - <?php }
413 + <?php
414 + }
536 415 }
537 416
538 -/* Positioning buttons in the page */
417 +if ( ! function_exists( 'pdfprnt_shortcode' ) ) {
418 + /**
419 + * PDF&Print shortcode
420 + * [bws_pdfprint]
421 + *
422 + * @param array $attr Attribute for shortcode.
423 + */
424 + function pdfprnt_shortcode( $attr ) {
425 + global $pdfprnt_options, $pdfprnt_is_old_php;
426 +
427 + if ( isset( $_REQUEST['print'] ) || $pdfprnt_is_old_php || ! pdfprnt_is_user_role_enabled() ) {
428 + return;
429 + }
430 +
431 + $buttons = '';
432 + if ( is_home() ) {
433 + global $post;
434 + $permalink = get_permalink( $post );
435 + } else {
436 + $permalink = isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ? ( is_ssl() ? 'https://' : 'http://' ) . sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ) : '';
437 + }
438 + $shortcode_atts = shortcode_atts( array( 'display' => 'pdf' ), $attr );
439 + $shortcode_atts = str_word_count( $shortcode_atts['display'], 1 );
440 +
441 + foreach ( $shortcode_atts as $value ) {
442 + if ( 'pdf' === $value ) {
443 + $buttons .= pdfprnt_get_button( 'pdf', $permalink );
444 + }
445 + if ( 'print' === $value ) {
446 + $buttons .= pdfprnt_get_button( 'print', $permalink );
447 + }
448 + }
449 + if ( 1 === $pdfprnt_options['count_generation'] ) {
450 + $post_type = get_post_type();
451 + if ( in_array( $post_type, $pdfprnt_options['button_post_types']['pdf'] ) || in_array( $post_type, $pdfprnt_options['button_post_types']['print'] ) ) {
452 + $count = get_post_meta( get_the_ID(), 'pdfprnt_count_generation', true );
453 + $buttons .= ' <span class="pdfprnt-count-generation">' . $count . '</span>';
454 + }
455 + }
456 + if ( ! empty( $buttons ) ) {
457 + $buttons = sprintf(
458 + '<div class="pdfprnt-buttons">%s</div>',
459 + $buttons
460 + );
461 + add_action( 'wp_footer', 'pdfprnt_add_script' );
462 + }
463 +
464 + return $buttons;
465 + }
466 +}
467 +
468 +if ( ! function_exists( 'pdfprnt_shortcode_pagebreak' ) ) {
469 + /**
470 + * [pdfprnt_shortcode_pagebreak]
471 + */
472 + function pdfprnt_shortcode_pagebreak() {
473 + if ( isset( $_GET['print'] ) && 'pdf' === $_GET['print'] ) {
474 + return '<div style="page-break-after:always"></div>';
475 + }
476 + return '';
477 + }
478 +}
479 +
480 +
481 +if ( ! function_exists( 'pdfprnt_qr_code_content' ) ) {
482 + /**
483 + * Add custom fields shortcodes button
484 + *
485 + * @param string $content Post content.
486 + */
487 + function pdfprnt_qr_code_content( $content ) {
488 + global $pdfprnt_options;
489 + if ( 1 === $pdfprnt_options['replace_video'] ) {
490 + $provider_match_masks = array(
491 + 'youtube' => '/http.*(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/)[^\"\'>]+/',
492 + 'vimeo' => '/http.*vimeo\.com\/[^\"\'>]+/',
493 + 'dailymotion' => '/http.*dailymotion.com\/[^\"\'>]+/',
494 + 'videopress' => array(
495 + '/(?:http(?:s)?:\/\/)?videos\.files\.wordpress\.com\/[^\"\'>]+/i',
496 + '/(?:http(?:s)?:\/\/)?(?:www\.)?video(?:\.word)?press\.com\/(?:v|embed)\/[^\"\'>]+/i',
497 + ),
498 + );
499 + $find_replace = array();
500 + foreach ( $provider_match_masks as $provider => $match_mask ) {
501 + if ( ! is_array( $match_mask ) ) {
502 + $match_mask = array( $match_mask );
503 + }
504 + foreach ( $match_mask as $mask ) {
505 + $matches = array();
506 + preg_match_all( $mask, $content, $matches, PREG_OFFSET_CAPTURE );
507 + if ( isset( $matches[0][0] ) ) {
508 + $pos_start = strrpos( substr( $content, 0, $matches[0][0][1] ), '<', 0 );
509 + $pos_end = strpos( substr( $content, $pos_start ), '>', 0 );
510 + preg_match( '/<.*>/', substr( $content, $pos_start + $pos_end, 15 ), $matches2 );
511 + $text = substr( $content, $pos_start, $pos_end + 1 ) . $matches2[0];
512 + $find_replace[] = array( $matches[0][0][0], $matches[0][0][1], $text );
513 + }
514 + }
515 + }
516 + if ( ! empty( $find_replace ) ) {
517 + require_once( dirname( __FILE__ ) . '/includes/qr_code/qr_code.php' );
518 +
519 + foreach( $find_replace as $replace ) {
520 + $qr_code = QRCode::getMinimumQRCode( $replace[0], QR_ERROR_CORRECT_LEVEL_L );
521 +
522 + $image = $qr_code->createImage( 6, 4 );
523 + ob_start();
524 + imagejpeg( $image );
525 + $contents = ob_get_contents();
526 + ob_end_clean();
527 + $image_data = "data:image/jpeg;base64," . base64_encode( $contents );
528 +
529 + if ( 1 === $pdfprnt_options['qr_code_link'] ) {
530 + $content = str_replace( $replace[2], '<a href="' . $replace[0] . '"><img src="' . $image_data . '" /></a>', $content );
531 + } else {
532 + $content = str_replace( $replace[2], '<img src="' . $image_data . '" />', $content );
533 + }
534 + }
535 + }
536 + }
537 + return $content;
538 + }
539 +}
540 +if ( ! function_exists( 'pdfprnt_shortcode_button_content' ) ) {
541 + /**
542 + * Add shortcode content
543 + *
544 + * @param string $content Post content.
545 + */
546 + function pdfprnt_shortcode_button_content( $content ) {
547 + ?>
548 + <div id="pdfprnt" style="display:none;">
549 + <fieldset>
550 + <?php esc_html_e( 'Add PDF & Print Buttons to your page or post', 'pdf-print' ); ?>
551 + <br />
552 + <label>
553 + <input type="checkbox" name="pdfprnt_selected_pdf" value="pdf" checked="checked" />
554 + <?php esc_html_e( 'PDF', 'pdf-print' ); ?>
555 + </label>
556 + <br />
557 + <label>
558 + <input type="checkbox" name="pdfprnt_selected_print" value="print" />
559 + <?php esc_html_e( 'Print', 'pdf-print' ); ?>
560 + </label>
561 + <input class="bws_default_shortcode" type="hidden" name="default" value="[bws_pdfprint]" />
562 + <div class="clear"></div>
563 + </fieldset>
564 + </div>
565 + <?php
566 + $script = "function pdfprnt_shortcode_init() {
567 + ( function( $ ) {
568 + $( '.mce-reset input[name^=\"pdfprnt_selected\"]' ).change( function() {
569 + var result = '';
570 + $( '.mce-reset input[name^=\"pdfprnt_selected\"]' ).each( function() {
571 + if ( $( this ).is( ':checked' ) ) {
572 + result += $( this ).val() + ',';
573 + }
574 + } );
575 +
576 + if ( '' == result ) {
577 + $( '.mce-reset #bws_shortcode_display' ).text( '' );
578 + } else {
579 + result = result.slice( 0, - 1 );
580 + $( '.mce-reset #bws_shortcode_display' ).text( '[bws_pdfprint display=\"' + result + '\"]' );
581 + }
582 + } );
583 + } ) ( jQuery );
584 + }";
585 +
586 + wp_register_script( 'pdfprnt_bws_shortcode_button', '//', false, null, false );
587 + wp_enqueue_script( 'pdfprnt_bws_shortcode_button' );
588 + wp_add_inline_script( 'pdfprnt_bws_shortcode_button', sprintf( $script ) );
589 + }
590 +}
591 +
592 +if ( ! function_exists( 'pdfprnt_get_button' ) ) {
593 + /**
594 + * Forming button
595 + *
596 + * @param string $button button name: 'pdf' or 'print'.
597 + * @param string $url page url or permalink.
598 + * @param string $custom_query_arg custom query arg to add to query.
599 + * @return string $link formed link with image and button title.
600 + */
601 + function pdfprnt_get_button( $button = 'pdf', $url = '', $custom_query_arg = '' ) {
602 + global $pdfprnt_options;
603 +
604 + if ( empty( $url ) ) {
605 + $url = home_url( '/' );
606 + }
607 + $button = ( 'print' === $button ) ? 'print' : 'pdf';
608 +
609 + if ( 'default' === $pdfprnt_options['button_image'][ $button ]['type'] && ! empty( $pdfprnt_options['button_image'][ $button ]['image_src'] ) ) {
610 + $image = sprintf(
611 + '<img src="%s" alt="image_%s" title="%s" />',
612 + esc_url( $pdfprnt_options['button_image'][ $button ]['image_src'] ),
613 + $button,
614 + ( ( 'print' === $button ) ? esc_html__( 'Print Content', 'pdf-print' ) : ( ( 'open' === $pdfprnt_options['file_action'] ) ? esc_html__( 'View PDF', 'pdf-print' ) : esc_html__( 'Download PDF', 'pdf-print' ) ) )
615 + );
616 + } else {
617 + $image = '';
618 + }
619 +
620 + $custom_query_arg = ( ! empty( $custom_query_arg ) ) ? $custom_query_arg : $button;
621 + $url = esc_url( $url );
622 + $url = add_query_arg( 'print', $custom_query_arg, $url );
623 + $target = '_blank';
624 +
625 + $title = ( ! empty( $pdfprnt_options['button_title'][ $button ] ) ) ?
626 + sprintf(
627 + '<span class="pdfprnt-button-title pdfprnt-button-%s-title">%s</span>',
628 + $button,
629 + $pdfprnt_options['button_title'][ $button ]
630 + )
631 + :
632 + '';
633 + if ( $pdfprnt_options['image_to_pdf'] && 'pdf' === $custom_query_arg ) {
634 + $url = 'javascript: imageToPdf(' . get_the_ID() . ')';
635 + $target = '_self';
636 + }
637 +
638 + if ( 'print' === $button && 'ctrl_p' === $pdfprnt_options['print_action'] ) {
639 + $url = "javascript: window.print()";
640 + $target = '_self';
641 + }
642 +
643 + $link = sprintf(
644 + '<a href="%s" class="pdfprnt-button pdfprnt-button-%s" target="%s" >%s%s</a>',
645 + $url,
646 + $button,
647 + $target,
648 + $image,
649 + $title
650 + );
651 +
652 + $link = apply_filters( 'pdfprnt_add_atribute_rel', $link, $url, $button, $target, $image, $title );
653 +
654 + return $link;
655 + }
656 +}
657 +
658 +if ( ! function_exists( 'pdfprnt_is_user_role_enabled' ) ) {
659 + /**
660 + * Check is enabled for user role
661 + */
662 + function pdfprnt_is_user_role_enabled() {
663 + global $pdfprnt_options, $current_user;
664 + if ( ! is_user_logged_in() || empty( $current_user->roles ) ) {
665 + return ! empty( $pdfprnt_options['enabled_roles']['unauthorized'] );
666 + } else {
667 + $role = $current_user->roles[0];
668 + return ! empty( $pdfprnt_options['enabled_roles'][ $role ] );
669 + }
670 + }
671 +}
672 +
539 673 if ( ! function_exists( 'pdfprnt_content' ) ) {
674 + /**
675 + * Positioning buttons in content of standart posts and pages
676 + *
677 + * @param string $content Post content.
678 + * @return string $content
679 + */
540 680 function pdfprnt_content( $content ) {
541 - if ( is_admin() )
542 - return;
543 - global $pdfprnt_options_array, $post;
544 - if ( is_search() || is_archive() || is_category() || is_tax() || is_tag() || is_author() || ! in_array( $post->post_type, $pdfprnt_options_array['use_types_posts'] ) ) // Check for existence the type of posts.
681 + global $pdfprnt_options, $post, $pdfprnt_is_old_php;
682 +
683 + if ( $pdfprnt_is_old_php || is_admin() || is_feed() || is_search() || is_category() || is_tax() || is_tag() || is_author() || ! pdfprnt_is_user_role_enabled() || post_password_required( $post->ID ) ) {
545 684 return $content;
546 - if ( 1 == $pdfprnt_options_array['show_btn_pdf'] || 1 == $pdfprnt_options_array['show_btn_print'] ) {
547 - $str = '<div class="pdfprnt-' . $pdfprnt_options_array['position'] . '">';
548 - if ( 1 == $pdfprnt_options_array['show_btn_pdf'] ) {
549 - if ( ! is_front_page () )
550 - $permalink = add_query_arg( 'print' , 'pdf' , get_permalink( $post->ID ) );
551 - else
552 - $permalink = add_query_arg( 'print' , 'pdf' , get_permalink() . '?page_id=' . $post->ID );
553 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="View PDF" /></a>';
685 + }
686 +
687 + $show_button_pdf = ! empty( $pdfprnt_options['button_post_types']['pdf'] ) && in_array( $post->post_type, $pdfprnt_options['button_post_types']['pdf'], true );
688 + $show_button_print = ! empty( $pdfprnt_options['button_post_types']['print'] ) && in_array( $post->post_type, $pdfprnt_options['button_post_types']['print'], true );
689 +
690 + if ( $show_button_pdf || $show_button_print ) {
691 +
692 + $str = '<div class="pdfprnt-buttons pdfprnt-buttons-' . $post->post_type . ' pdfprnt-' . $pdfprnt_options['buttons_position'] . '">';
693 + if ( is_home() ) {
694 + $permalink = get_permalink( $post );
695 + } else {
696 + $permalink = isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ? ( is_ssl() ? 'https://' : 'http://' ) . sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) . sanitize_text_field( wp_unslash( urldecode( $_SERVER['REQUEST_URI'] ) ) ) : '';
554 697 }
555 - if ( 1 == $pdfprnt_options_array['show_btn_print'] ) {
556 - if ( ! is_front_page () )
557 - $permalink = add_query_arg( 'print' , 'print' , get_permalink( $post->ID ) );
558 - else
559 - $permalink = add_query_arg( 'print' , 'print' , get_permalink() . '?page_id=' . $post->ID );
560 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
698 +
699 + if ( $show_button_pdf ) {
700 + $str .= pdfprnt_get_button( 'pdf', $permalink );
701 + if ( ! is_archive() && ! is_home() ) {
702 + add_action( 'wp_footer', 'pdfprnt_add_script' );
703 + }
561 704 }
705 + if ( $show_button_print ) {
706 + $str .= pdfprnt_get_button( 'print', $permalink );
707 + }
708 + if ( 1 === $pdfprnt_options['count_generation'] ) {
709 + $post_type = get_post_type();
710 + if ( in_array( $post_type, $pdfprnt_options['button_post_types']['pdf'] ) || in_array( $post_type, $pdfprnt_options['button_post_types']['print'] ) ) {
711 + $count = get_post_meta( get_the_ID(), 'pdfprnt_count_generation', true );
712 + $str .= ' <span class="pdfprnt-count-generation">' . $count . '</span>';
713 + }
714 + }
562 715 $str .= '</div>';
563 716
564 - if ( 'top-left' == $pdfprnt_options_array['position'] || 'top-right' == $pdfprnt_options_array['position'] )
717 + if ( 'top-left' === $pdfprnt_options['buttons_position'] || 'top-right' === $pdfprnt_options['buttons_position'] ) {
565 718 $content = $str . $content;
566 - elseif ( 'bottom-left' == $pdfprnt_options_array['position'] || 'bottom-right' == $pdfprnt_options_array['position'] )
719 + } elseif ( 'bottom-left' === $pdfprnt_options['buttons_position'] || 'bottom-right' === $pdfprnt_options['buttons_position'] ) {
567 720 $content = $content . $str;
568 - else
721 + } else {
569 722 $content = $str . $content . $str;
723 + }
570 724 }
571 725 return $content;
572 726 }
573 727 }
574 728
575 -/* Output buttons for search or archive pages */
729 +if ( ! function_exists( 'pdfprnt_excerpt' ) ) {
730 + /**
731 + * Remove Print word from excerpt
732 + *
733 + * @param string $content Post excerpt.
734 + * @return string $content
735 + */
736 + function pdfprnt_excerpt( $content ) {
737 + global $pdfprnt_options;
738 + $temp = array();
739 + $temp[1] = $content;
740 + $title = isset( $pdfprnt_options['button_title'] ) ? $pdfprnt_options['button_title'] : array( 'pdf' => '', 'print' => '' );
741 + if ( ! empty( $title['pdf'] ) ) {
742 + $temp = explode( $title['pdf'], $content );
743 + }
744 + if ( ! empty( $title['print'] ) ) {
745 + $temp = explode( $title['print'], $content );
746 + }
747 + if ( isset( $temp[1] ) ) {
748 + return $temp[1];
749 + } else {
750 + return $content;
751 + }
752 + }
753 +}
754 +
576 755 if ( ! function_exists( 'pdfprnt_show_buttons_search_archive' ) ) {
577 - function pdfprnt_show_buttons_search_archive( $loop_position ) {
578 - global $pdfprnt_options_array, $wp, $posts, $pdfprnt_show_archive_start, $pdfprnt_show_archive_end;
579 - if ( ! ( 1 == $pdfprnt_options_array['show_btn_pdf_search_archive'] || 1 == $pdfprnt_options_array['show_btn_print_search_archive'] ) )
580 - return;
581 - /* Check for existence the type of posts. */
582 - $is_return = true;
583 - foreach ( $posts as $post ) {
584 - if ( in_array( $post->post_type, $pdfprnt_options_array['use_types_posts'] ) ) {
585 - $is_return = false;
586 - break;
756 + /**
757 + * Output buttons for search or archive pages
758 + *
759 + * @param string $content Post content.
760 + */
761 + function pdfprnt_show_buttons_search_archive( $content ) {
762 + global $wp_query;
763 +
764 + /* make sure that we display pdf/print buttons only with main loop */
765 + if ( is_main_query() && $content === $wp_query ) {
766 + global $pdfprnt_options, $wp, $posts, $pdfprnt_show_archive_start, $pdfprnt_show_archive_end;
767 +
768 + $is_search = ( is_search() );
769 + $is_archive = ( is_archive() || is_category() || is_tax() || is_tag() || is_author() );
770 + $is_blog = ( is_home() );
771 +
772 + if ( $is_search ) {
773 + $show_button_pdf = ( in_array( 'pdfprnt_search', $pdfprnt_options['button_post_types']['pdf'], true ) );
774 + $show_button_print = ( in_array( 'pdfprnt_search', $pdfprnt_options['button_post_types']['print'], true ) );
775 + } elseif ( $is_archive ) {
776 + $show_button_pdf = ( in_array( 'pdfprnt_archives', $pdfprnt_options['button_post_types']['pdf'], true ) );
777 + $show_button_print = ( in_array( 'pdfprnt_archives', $pdfprnt_options['button_post_types']['print'], true ) );
778 + } elseif ( $is_blog ) {
779 + $show_button_pdf = ( in_array( 'pdfprnt_blog', $pdfprnt_options['button_post_types']['pdf'], true ) );
780 + $show_button_print = ( in_array( 'pdfprnt_blog', $pdfprnt_options['button_post_types']['print'], true ) );
781 + } else {
782 + $show_button_pdf = false;
783 + $show_button_print = false;
587 784 }
588 - }
589 - if ( $is_return )
590 - return;
591 785
592 - if ( ( 'loop_start' == $loop_position && $pdfprnt_show_archive_start == 1 ) || ( 'loop_end' == $loop_position && $pdfprnt_show_archive_end == 1 ) )
593 - return;
786 + $loop_position = current_filter();
787 + if ( ! ( $show_button_pdf || $show_button_print ) ) {
788 + return;
789 + }
594 790
595 - $current_url = ( empty( $wp->request ) ) ? add_query_arg( $wp->query_string, '', home_url() ) : home_url( $wp->request );
791 + if ( ( 'loop_start' === $loop_position && intval( $pdfprnt_show_archive_start ) === 1 ) || ( 'loop_end' === $loop_position && intval( $pdfprnt_show_archive_end ) === 1 ) ) {
792 + return;
793 + }
596 794
597 - $str = '<div class="pdfprnt-' . $pdfprnt_options_array['position_search_archive'] . '">';
598 - if ( 1 == $pdfprnt_options_array['show_btn_pdf_search_archive'] ) {
599 - $permalink = add_query_arg( 'print' , 'pdf-page' , $current_url );
600 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
795 + if ( $show_button_pdf || $show_button_print ) {
796 + global $pdfprnt_is_search_archive;
797 + $current_url = isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ? set_url_scheme( ( is_ssl() ? 'https://' : 'http://' ) . sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) . sanitize_text_field( wp_unslash( urldecode( $_SERVER['REQUEST_URI'] ) ) ) ) : '';
798 + $pdfprnt_is_search_archive = true;
799 + $str = '<div class="pdfprnt-buttons pdfprnt-buttons-' . ( ( $is_search ) ? 'search' : 'archive' ) . ' pdfprnt-' . $pdfprnt_options['buttons_position'] . '">';
800 + if ( $show_button_pdf ) {
801 + $str .= pdfprnt_get_button( 'pdf', $current_url, 'pdf-search' );
802 + add_action( 'wp_footer', 'pdfprnt_add_script' );
803 + }
804 +
805 + if ( $show_button_print ) {
806 + $str .= pdfprnt_get_button( 'print', $current_url, 'print-search' );
807 + }
808 + $str .= '</div>';
809 + echo wp_kses_post( $str );
810 + if ( 'loop_start' === $loop_position ) {
811 + $pdfprnt_show_archive_start++;
812 + } elseif ( 'loop_end' === $loop_position ) {
813 + $pdfprnt_show_archive_end++;
814 + }
815 + }
601 816 }
602 - if ( 1 == $pdfprnt_options_array['show_btn_print_search_archive'] ) {
603 - $permalink = add_query_arg( 'print' , 'print-page' , $current_url );
604 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
605 - }
606 - $str .= '</div>';
607 - echo $str;
608 - if ( 'loop_start' == $loop_position )
609 - $pdfprnt_show_archive_start++;
610 - elseif ( 'loop_end' == $loop_position )
611 - $pdfprnt_show_archive_end++;
612 817 }
613 818 }
614 -/**
615 - * Display buttons only with main loop
616 - * @param array $content list with data of posts, which needs to displaing in the loop
617 - * @return void
618 - */
619 -if ( ! function_exists( 'pdfprnt_display_with_loop' ) ) {
620 - function pdfprnt_display_with_loop( $content ) {
819 +
820 +if ( ! function_exists( 'pdfprnt_return_buttons_search_archive' ) ) {
821 + /**
822 + * Return buttons for search or archive pages
823 + */
824 + function pdfprnt_return_buttons_search_archive() {
621 825 global $wp_query;
622 - if ( is_main_query() && $content === $wp_query ) { /* make sure that we display pdf/print buttons only with main loop */
623 - pdfprnt_show_buttons_search_archive( current_filter() );
826 +
827 + global $pdfprnt_options, $wp, $posts, $pdfprnt_show_archive_start, $pdfprnt_show_archive_end;
828 +
829 + $is_search = ( is_search() );
830 + $is_archive = ( is_archive() || is_category() || is_tax() || is_tag() || is_author() );
831 + $is_blog = ( is_home() );
832 +
833 + if ( $is_search ) {
834 + $show_button_pdf = ( in_array( 'pdfprnt_search', $pdfprnt_options['button_post_types']['pdf'], true ) );
835 + $show_button_print = ( in_array( 'pdfprnt_search', $pdfprnt_options['button_post_types']['print'], true ) );
836 + } elseif ( $is_archive ) {
837 + $show_button_pdf = ( in_array( 'pdfprnt_archives', $pdfprnt_options['button_post_types']['pdf'], true ) );
838 + $show_button_print = ( in_array( 'pdfprnt_archives', $pdfprnt_options['button_post_types']['print'], true ) );
839 + } elseif ( $is_blog ) {
840 + $show_button_pdf = ( in_array( 'pdfprnt_blog', $pdfprnt_options['button_post_types']['pdf'], true ) );
841 + $show_button_print = ( in_array( 'pdfprnt_blog', $pdfprnt_options['button_post_types']['print'], true ) );
842 + } else {
843 + $show_button_pdf = false;
844 + $show_button_print = false;
624 845 }
846 +
847 + $loop_position = current_filter();
848 + if ( ! ( $show_button_pdf || $show_button_print ) ) {
849 + return;
850 + }
851 +
852 + if ( ( 'loop_start' === $loop_position && intval( $pdfprnt_show_archive_start ) === 1 ) || ( 'loop_end' === $loop_position && intval( $pdfprnt_show_archive_end ) === 1 ) ) {
853 + return;
854 + }
855 +
856 + if ( $show_button_pdf || $show_button_print ) {
857 + global $pdfprnt_is_search_archive;
858 + $current_url = isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ? set_url_scheme( ( is_ssl() ? 'https://' : 'http://' ) . sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) . sanitize_text_field( wp_unslash( urldecode( $_SERVER['REQUEST_URI'] ) ) ) ) : '';
859 + $pdfprnt_is_search_archive = true;
860 + $str = '<div class="pdfprnt-buttons pdfprnt-buttons-' . ( ( $is_search ) ? 'search' : 'archive' ) . ' pdfprnt-' . $pdfprnt_options['buttons_position'] . '">';
861 + if ( $show_button_pdf ) {
862 + $str .= pdfprnt_get_button( 'pdf', $current_url );
863 + add_action( 'wp_footer', 'pdfprnt_add_script' );
864 + }
865 +
866 + if ( $show_button_print ) {
867 + $str .= pdfprnt_get_button( 'print', $current_url, 'print-search' );
868 + }
869 + $str .= '</div>';
870 + if ( 'loop_start' === $loop_position ) {
871 + $pdfprnt_show_archive_start++;
872 + } elseif ( 'loop_end' === $loop_position ) {
873 + $pdfprnt_show_archive_end++;
874 + }
875 + return $str;
876 + }
625 877 }
626 878 }
627 879
628 880 if ( ! function_exists( 'pdfprnt_auto_show_buttons_search_archive' ) ) {
881 + /**
882 + * Add buttons before or after the loop
883 + */
629 884 function pdfprnt_auto_show_buttons_search_archive() {
630 - if ( is_search() || is_archive() || is_category() || is_tax() || is_tag() || is_author() ) {
631 - global $pdfprnt_options_array, $pdfprnt_show_archive_start, $pdfprnt_show_archive_end;
632 - $pdfprnt_show_archive_start = $pdfprnt_show_archive_end = 0;
633 - if ( in_array( $pdfprnt_options_array['position_search_archive'], array( 'top-left', 'top-right' ) ) ) {
634 - add_action( 'loop_start', 'pdfprnt_display_with_loop' );
635 - } elseif ( in_array( $pdfprnt_options_array['position_search_archive'], array( 'bottom-left', 'bottom-right' ) ) ) {
636 - add_action( 'loop_end', 'pdfprnt_display_with_loop' );
885 + global $pdfprnt_options, $pdfprnt_is_old_php, $pdfprnt_plugin_info;
886 + $check_page = false;
887 + if ( $pdfprnt_is_old_php || apply_filters( 'pdfprnt_prevent_display_buttons', $check_page ) ) {
888 + return;
889 + }
890 +
891 + $display_in_search = ( is_search() && ( in_array( 'pdfprnt_search', $pdfprnt_options['button_post_types']['pdf'], true ) || in_array( 'pdfprnt_search', $pdfprnt_options['button_post_types']['print'], true ) ) );
892 + $display_in_archive = ( ( is_archive() || is_category() || is_tax() || is_tag() || is_author() ) && ( in_array( 'pdfprnt_archives', $pdfprnt_options['button_post_types']['pdf'], true ) || in_array( 'pdfprnt_archives', $pdfprnt_options['button_post_types']['print'], true ) ) );
893 + $display_in_blog = ( ( is_home() ) && ( in_array( 'pdfprnt_blog', $pdfprnt_options['button_post_types']['pdf'], true ) || in_array( 'pdfprnt_blog', $pdfprnt_options['button_post_types']['print'], true ) ) );
894 +
895 + if ( ( $display_in_search || $display_in_archive || $display_in_blog ) && pdfprnt_is_user_role_enabled() ) {
896 + global $pdfprnt_show_archive_start, $pdfprnt_show_archive_end;
897 + $pdfprnt_show_archive_start = 0;
898 + $pdfprnt_show_archive_end = 0;
899 +
900 + $css = wp_remote_get( get_bloginfo( 'stylesheet_url' ) );
901 +
902 + if ( is_array( $css ) && ! empty( $css['body'] ) && ( ! empty( mb_stristr( $css['body'], 'Twenty Twenty-Two', true ) ) || ! empty( mb_stristr( $css['body'], 'Twenty Twenty-Three', true ) ) ) ) {
903 + $out1 = pdfprnt_return_buttons_search_archive();
904 + if ( ! empty( $out1 ) ) {
905 + wp_enqueue_script( 'pdfprnt_custom_script', plugins_url( 'js/custom_script.js', __FILE__ ), array( 'jquery' ), $pdfprnt_plugin_info['Version'], true );
906 + }
907 + }
908 + if ( in_array( $pdfprnt_options['buttons_position'], array( 'top-left', 'top-right' ), true ) ) {
909 + add_action( 'loop_start', 'pdfprnt_show_buttons_search_archive' );
910 + if ( isset( $out1 ) && ! empty( $out1 ) ) {
911 + wp_localize_script(
912 + 'pdfprnt_custom_script',
913 + 'pdfprnt_display_buttons',
914 + array(
915 + 'top' => $out1,
916 + )
917 + );
918 + }
919 + } elseif ( in_array( $pdfprnt_options['buttons_position'], array( 'bottom-left', 'bottom-right' ), true ) ) {
920 + add_action( 'loop_end', 'pdfprnt_show_buttons_search_archive' );
921 + if ( isset( $out1 ) && ! empty( $out1 ) ) {
922 + wp_localize_script(
923 + 'pdfprnt_custom_script',
924 + 'pdfprnt_display_buttons',
925 + array(
926 + 'bottom' => $out1,
927 + )
928 + );
929 + }
637 930 } else {
638 - add_action( 'loop_start', 'pdfprnt_display_with_loop' );
639 - add_action( 'loop_end', 'pdfprnt_display_with_loop' );
931 + if ( isset( $out1 ) && ! empty( $out1 ) ) {
932 + wp_localize_script(
933 + 'pdfprnt_custom_script',
934 + 'pdfprnt_display_buttons',
935 + array(
936 + 'top' => $out1,
937 + 'bottom' => $out1,
938 + )
939 + );
940 + }
941 + add_action( 'loop_start', 'pdfprnt_show_buttons_search_archive' );
942 + add_action( 'loop_end', 'pdfprnt_show_buttons_search_archive' );
640 943 }
641 944 }
642 945 }
643 946 }
644 947
645 -/* Output buttons of page for BWS Portfolio plugin */
646 -if( ! function_exists( 'pdfprnt_show_buttons_for_bws_portfolio' ) ) {
647 - function pdfprnt_show_buttons_for_bws_portfolio() {
648 - global $pdfprnt_options_array, $wp;
649 - if ( ! ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] || 1 == $pdfprnt_options_array['show_btn_print_custom'] ) && in_array( 'portfolio', $pdfprnt_options_array['use_types_posts'] ) )
948 +if ( ! function_exists( 'pdfprnt_display_plugin_buttons' ) ) {
949 + /**
950 + * Display plugin buttons via action call
951 + *
952 + * @param string $where where to display.
953 + * @param mixed $user_query WP_Query parameters.
954 + */
955 + function pdfprnt_display_plugin_buttons( $where = 'top', $user_query = '' ) {
956 + global $pdfprnt_options, $pdfprnt_is_old_php;
957 +
958 + if ( $pdfprnt_is_old_php ) {
650 959 return;
651 -
652 - if ( empty( $wp->request ) )
653 - $current_url = add_query_arg( $wp->query_string, '', home_url() );
654 - else
655 - $current_url = home_url( $wp->request );
656 -
657 - $str = '<div class="pdfprnt-' . $pdfprnt_options_array['position_custom'] . '">';
658 - if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) {
659 - $permalink = add_query_arg( 'print' , 'pdf-portfolio-page' , $current_url );
660 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
661 960 }
662 - if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) {
663 - $permalink = add_query_arg( 'print' , 'print-portfolio-page' , $current_url );
664 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
665 - }
666 - $str .= '</div>';
667 - return $str;
668 - }
669 -}
670 961
671 -/* Output buttons of post for BWS Portfolio plugin */
672 -if ( ! function_exists( 'pdfprnt_show_buttons_for_bws_portfolio_post' ) ) {
673 - function pdfprnt_show_buttons_for_bws_portfolio_post() {
674 - global $pdfprnt_options_array;
675 - if (
676 - ! ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] || 1 == $pdfprnt_options_array['show_btn_print_custom'] ) &&
677 - in_array( 'portfolio', $pdfprnt_options_array['use_types_posts'] )
678 - )
679 - return;
680 - $current_url = get_permalink();
681 - $str = '<div class="pdfprnt-' . $pdfprnt_options_array['position_custom'] . '">';
682 - if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) {
683 - $permalink = add_query_arg( 'print' , 'pdf-portfolio' , $current_url );
684 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
962 + if ( preg_match( '|' . $where . '|', $pdfprnt_options['buttons_position'] ) || empty( $where ) ) {
963 + echo wp_kses_post( pdfprnt_show_buttons_for_custom_post_type( $user_query ) );
685 964 }
686 - if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) {
687 - $permalink = add_query_arg( 'print' , 'print-portfolio' , $current_url );
688 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
689 - }
690 - $str .= '</div>';
691 - return $str;
692 965 }
693 966 }
694 967
695 -/* Output buttons of page for custom post type */
696 968 if ( ! function_exists( 'pdfprnt_show_buttons_for_custom_post_type' ) ) {
969 + /**
970 + * Output buttons of page for custom post type
971 + *
972 + * @param string $user_query (Optional) User query.
973 + * @return string $str
974 + */
697 975 function pdfprnt_show_buttons_for_custom_post_type( $user_query = '' ) {
698 - global $pdfprnt_options_array, $post, $wp, $posts;
699 - if (
700 - ( ! ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] || 1 == $pdfprnt_options_array['show_btn_print_custom'] ) ) ||
976 + global $pdfprnt_options, $post, $posts;
977 +
978 + $show_button_pdf = in_array( $post->post_type, $pdfprnt_options['button_post_types']['pdf'], true );
979 + $show_button_print = in_array( $post->post_type, $pdfprnt_options['button_post_types']['print'], true );
980 +
981 + $show_button_pdf = apply_filters( 'pdfprnt_show_buttons_for_custom_post_type', 'pdf', $show_button_pdf );
982 + $show_button_print = apply_filters( 'pdfprnt_show_buttons_for_custom_post_type', 'print', $show_button_print );
983 +
984 + if (
985 + /* not display anything if displaying buttons for post and pages is disabled */
986 + ( ! ( $show_button_pdf || $show_button_print ) ) ||
987 + /* not display anything if we have wrong $user_query */
701 988 ( ! ( is_array( $user_query ) || is_string( $user_query ) ) )
702 - )
989 + ) {
703 990 return;
704 -
705 - $is_return = true;
991 + }
992 + $current_url = isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ? set_url_scheme( ( is_ssl() ? 'https://' : 'http://' ) . sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) . sanitize_text_field( wp_unslash( urldecode( $_SERVER['REQUEST_URI'] ) ) ) ) : '';
993 + $current_url = esc_url( $current_url );
994 + $is_return = true;
995 +
706 996 if ( empty( $user_query ) ) { /* set necessary values of parameters for pdf/print buttons */
707 - $current_url = empty( $wp->request ) ? add_query_arg( $wp->query_string, '', home_url() ) : home_url( $wp->request );
708 997 $nothing_else = false;
709 - if ( is_search() || is_archive() || is_category() || is_tax() || is_tag() || is_author() ) { /* search, cattegories, archives */
998 + if ( is_search() || is_archive() || is_category() || is_tax() || is_tag() || is_author() || ! pdfprnt_is_user_role_enabled() ) { /* search, cattegories, archives */
710 999 foreach ( $posts as $value ) {
711 - if ( in_array( $value->post_type, $pdfprnt_options_array['use_types_posts'] ) ) {
1000 + if ( in_array( $value->post_type, $pdfprnt_options['button_post_types']['pdf'], true ) || in_array( 'page', $pdfprnt_options['button_post_types']['print'], true ) ) {
712 1001 $is_return = false;
713 1002 break;
714 1003 }
715 1004 }
716 - if ( $is_return )
1005 + if ( $is_return ) {
717 1006 return;
718 - $pdf_query_parameter = 'pdf-page';
719 - $print_query_parameter = 'print-page';
1007 + }
1008 + $pdf_query_parameter = 'pdf-search';
1009 + $print_query_parameter = 'print-search';
720 1010 } elseif ( is_page() ) { /* pages */
721 - $page_template = get_post_meta( $post->ID, '_wp_page_template');
722 - if ( in_array( $page_template[0], array( 'portfolio.php', 'portfolio-pro.php' ) ) ) {
723 - if ( in_array( 'portfolio', $pdfprnt_options_array['use_types_posts'] ) ) {
724 - $pdf_query_parameter = 'pdf-portfolio-page';
725 - $print_query_parameter = 'print-portfolio-page';
726 - } else {
727 - return;
728 - }
1011 + if ( in_array( 'page', $pdfprnt_options['button_post_types']['pdf'], true ) || in_array( 'page', $pdfprnt_options['button_post_types']['print'], true ) ) {
1012 + $nothing_else = true;
729 1013 } else {
730 - $nothing_else = true;
1014 + return;
731 1015 }
732 1016 } elseif ( is_single() ) { /* posts */
733 1017 $post_type = get_post_type( $post->ID );
734 - if ( 'portfolio' == $post_type ) {
735 - if ( in_array( 'portfolio', $pdfprnt_options_array['use_types_posts'] ) ) {
736 - $pdf_query_parameter = 'pdf-portfolio';
737 - $print_query_parameter = 'print-portfolio';
738 - } else {
739 - return;
740 - }
1018 + if ( in_array( $post_type, $pdfprnt_options['button_post_types']['pdf'], true ) || in_array( $post_type, $pdfprnt_options['button_post_types']['print'], true ) ) {
1019 + $nothing_else = true;
741 1020 } else {
742 - $nothing_else = true;
1021 + return;
743 1022 }
744 - } else {
1023 + } else {
745 1024 $nothing_else = true;
746 - }
1025 + }
747 1026 if ( $nothing_else ) {
748 1027 $pdf_query_parameter = 'pdf';
749 1028 $print_query_parameter = 'print';
750 1029 }
@@ -749,45 +1028,58 @@
749 1028 $print_query_parameter = 'print';
750 1029 }
751 1030 } else {
752 1031 $custom_query = new WP_Query( $user_query );
753 - $current_url = add_query_arg( $custom_query->query, '', home_url() );
1032 + $current_url = add_query_arg( $custom_query->query, '', $current_url );
754 1033 /* Check for existence the type of posts. */
755 - if ( ! empty( $custom_query->posts) ) {
1034 + if ( ! empty( $custom_query->posts ) ) {
756 1035 foreach ( $custom_query->posts as $post ) {
757 - if ( in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) ) {
1036 + if ( in_array( get_post_type( $post ), $pdfprnt_options['button_post_types']['pdf'], true ) || in_array( get_post_type( $post ), $pdfprnt_options['button_post_types']['print'], true ) ) {
758 1037 $is_return = false;
759 1038 break;
760 1039 }
761 1040 }
762 1041 }
763 - if ( $is_return )
1042 + if ( $is_return ) {
764 1043 return;
765 - $pdf_query_parameter = 'pdf-custom-page';
766 - $print_query_parameter = 'print-custom-page';
1044 + }
1045 + global $pdfprnt_is_custom_post_type;
1046 + $pdfprnt_is_custom_post_type = true;
1047 + $pdf_query_parameter = 'pdf-custom';
1048 + $print_query_parameter = 'print-custom';
767 1049 }
768 1050
769 - $str = '<div class="pdfprnt-' . $pdfprnt_options_array['position_custom'] . '">';
770 - if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) {
771 - $permalink = add_query_arg( 'print' , $pdf_query_parameter , $current_url );
772 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
1051 + $str = '<div class="pdfprnt-buttons pdfprnt-buttons-custom pdfprnt-buttons-' . $post->post_type . ' pdfprnt-' . $pdfprnt_options['buttons_position'] . '">';
1052 + $current_url = apply_filters( 'pdfprnt_current_url_filter', $current_url );
1053 + if ( $show_button_pdf ) {
1054 + $str .= pdfprnt_get_button( 'pdf', $current_url, $pdf_query_parameter );
1055 + add_action( 'wp_footer', 'pdfprnt_add_script' );
773 1056 }
774 - if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) {
775 - $permalink = add_query_arg( 'print' , $print_query_parameter , $current_url );
776 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
1057 + if ( $show_button_print ) {
1058 + $str .= pdfprnt_get_button( 'print', $current_url, $print_query_parameter );
777 1059 }
1060 + if ( 1 === $pdfprnt_options['count_generation'] && ( $show_button_pdf || $show_button_print ) ) {
1061 + $count = get_post_meta( get_the_ID(), 'pdfprnt_count_generation', true );
1062 + $str .= ' <span class="pdfprnt-count-generation">' . $count . '</span>';
1063 + }
778 1064 $str .= '</div>';
779 1065 return $str;
780 1066 }
781 1067 }
782 1068
783 -/* Add links */
784 1069 if ( ! function_exists( 'pdfprnt_action_links' ) ) {
1070 + /**
1071 + * Add action links
1072 + *
1073 + * @param array $links Links array.
1074 + * @param string $file Plugin file.
1075 + * @return array $links
1076 + */
785 1077 function pdfprnt_action_links( $links, $file ) {
786 - if ( ! is_network_admin() ) {
1078 + if ( ! is_network_admin() && is_plugin_inactive( 'pdf-print-pro/pdf-print-pro.php' ) ) {
787 1079 $base = plugin_basename( __FILE__ );
788 - if ( $file == $base ) {
789 - $settings_link = '<a href="admin.php?page=pdf-print.php">' . __( 'Settings', 'pdf-print' ) . '</a>';
1080 + if ( $file === $base ) {
1081 + $settings_link = '<a href="admin.php?page=pdf-print.php">' . esc_html__( 'Settings', 'pdf-print' ) . '</a>';
790 1082 array_unshift( $links, $settings_link );
791 1083 }
792 1084 }
793 1085 return $links;
@@ -793,55 +1085,121 @@
793 1085 return $links;
794 1086 }
795 1087 }
796 1088
797 -/* Add links */
798 1089 if ( ! function_exists( 'pdfprnt_links' ) ) {
1090 + /**
1091 + * Add Settings, FAQ and Support links
1092 + *
1093 + * @param array $links Links array.
1094 + * @param string $file Plugin file.
1095 + * @return array $links
1096 + */
799 1097 function pdfprnt_links( $links, $file ) {
800 1098 $base = plugin_basename( __FILE__ );
801 - if ( $file == $base ) {
802 - if ( ! is_network_admin() )
803 - $links[] = '<a href="admin.php?page=pdf-print.php">' . __( 'Settings', 'pdf-print' ) . '</a>';
804 - $links[] = '<a href="http://wordpress.org/plugins/pdf-print/faq/" target="_blank">' . __( 'FAQ', 'pdf-print' ) . '</a>';
805 - $links[] = '<a href="http://support.bestwebsoft.com">' . __( 'Support', 'pdf-print' ) . '</a>';
1099 + if ( $file === $base ) {
1100 + if ( ! is_network_admin() && is_plugin_inactive( 'pdf-print-pro/pdf-print-pro.php' ) ) {
1101 + $links[] = '<a href="admin.php?page=pdf-print.php">' . esc_html__( 'Settings', 'pdf-print' ) . '</a>';
1102 + }
1103 + $links[] = '<a href="https://support.bestwebsoft.com/hc/en-us/sections/200538669" target="_blank">' . esc_html__( 'FAQ', 'pdf-print' ) . '</a>';
1104 + $links[] = '<a href="https://support.bestwebsoft.com">' . esc_html__( 'Support', 'pdf-print' ) . '</a>';
806 1105 }
807 1106 return $links;
808 1107 }
809 1108 }
810 1109
811 -/* Add stylesheets */
812 -if ( ! function_exists ( 'pdfprnt_admin_head' ) ) {
1110 +if ( ! function_exists( 'pdfprnt_admin_head' ) ) {
1111 + /**
1112 + * Add stylesheets
1113 + */
813 1114 function pdfprnt_admin_head() {
814 - global $wp_version;
815 - if ( $wp_version < 3.8 )
816 - wp_enqueue_style( 'pdfprnt_stylesheet', plugins_url( 'css/style_wp_before_3.8.css', __FILE__ ) );
817 - else
818 - wp_enqueue_style( 'pdfprnt_stylesheet', plugins_url( 'css/style.css', __FILE__ ) );
1115 + global $pdfprnt_plugin_info, $pdfprnt_options, $post;
819 1116
820 - if ( isset( $_GET['page'] ) && "pdf-print.php" == $_GET['page'] ) {
821 - wp_enqueue_script( 'pdfprnt_script', plugins_url( 'js/script.js', __FILE__ ) );
822 - wp_localize_script( 'pdfprnt_script', 'pdfprnt_var', array(
823 - 'loading_fonts' => __( 'Loading of fonts. It might take a several minutes', 'pdf-print' ),
824 - 'ajax_nonce' => wp_create_nonce( 'pdfprnt_ajax_nonce' ),
825 - )
1117 + if ( is_admin() ) {
1118 + wp_enqueue_style( 'pdfprnt_general', plugins_url( 'css/style-general.css', __FILE__ ), false, $pdfprnt_plugin_info['Version'] );
1119 +
1120 + if ( isset( $_GET['page'] ) && 'pdf-print.php' === $_GET['page'] ) {
1121 + wp_enqueue_style( 'pdfprnt_stylesheet', plugins_url( 'css/style.css', __FILE__ ), false, $pdfprnt_plugin_info['Version'] );
1122 + bws_enqueue_settings_scripts();
1123 + bws_plugins_include_codemirror();
1124 + wp_enqueue_script( 'pdfprnt_script', plugins_url( 'js/script.js', __FILE__ ), array( 'jquery', 'jquery-ui-accordion', 'jquery-ui-slider' ), $pdfprnt_plugin_info['Version'], false );
1125 + wp_localize_script(
1126 + 'pdfprnt_script',
1127 + 'pdfprnt_var',
1128 + array(
1129 + 'loading_fonts' => esc_html__( 'Loading of fonts. It might take a several minutes.', 'pdf-print' ),
1130 + 'loading_mpdf' => esc_html__( 'Loading the mPDF library. It will take few minutes.', 'pdf-print' ),
1131 + 'ajax_nonce' => wp_create_nonce( 'pdfprnt_ajax_nonce' ),
1132 + 'need_reload' => '&nbsp;' . sprintf(
1133 + esc_html__( 'It is necessary to reload fonts. For more info, please see %s.', 'pdf-print' ),
1134 + '<a href="https://support.bestwebsoft.com/hc/en-us/articles/206693223" target="_blank">' . esc_html__( 'FAQ', 'pdf-print' ) . '</a>'
1135 + ),
1136 + )
1137 + );
1138 + }
1139 + if ( isset( $_GET['page'] ) && 'pdf-print-templates.php' === $_GET['page'] ) {
1140 + wp_enqueue_style( 'pdfprnt_stylesheet', plugins_url( 'css/templates.css', __FILE__ ), false, $pdfprnt_plugin_info['Version'] );
1141 + }
1142 + } elseif ( isset( $post->post_title ) ) {
1143 + wp_enqueue_style( 'pdfprnt_frontend', plugins_url( 'css/frontend.css', __FILE__ ), false, $pdfprnt_plugin_info['Version'] );
1144 + }
1145 + }
1146 +}
1147 +
1148 +if ( ! function_exists( 'pdfprnt_add_script' ) ) {
1149 + /**
1150 + * Sending data for front js
1151 + */
1152 + function pdfprnt_add_script() {
1153 + global $pdfprnt_plugin_info , $post, $pdfprnt_options;
1154 + if ( 1 === intval( $pdfprnt_options['image_to_pdf'] ) ) {
1155 + $file_name = $post->post_title;
1156 + wp_enqueue_script( 'html2canvas.js', plugins_url( 'js/html2canvas.js', __FILE__ ), array(), $pdfprnt_plugin_info['Version'], false );
1157 + wp_enqueue_script( 'jspdf.js', plugins_url( 'js/jspdf.js', __FILE__ ), array(), $pdfprnt_plugin_info['Version'], false );
1158 + wp_enqueue_script( 'pdfprnt_front_script', plugins_url( 'js/front-script.js', __FILE__ ), array( 'jquery', 'html2canvas.js', 'jspdf.js' ), $pdfprnt_plugin_info['Version'] . '.7', false );
1159 + wp_localize_script(
1160 + 'pdfprnt_front_script',
1161 + 'pdfprnt_file_settings',
1162 + array(
1163 + 'margin_left' => $pdfprnt_options['pdf_margins']['left'],
1164 + 'margin_right' => $pdfprnt_options['pdf_margins']['right'],
1165 + 'margin_top' => $pdfprnt_options['pdf_margins']['top'],
1166 + 'margin_bottom' => $pdfprnt_options['pdf_margins']['bottom'],
1167 + 'page_size' => $pdfprnt_options['pdf_page_size'],
1168 + 'file_action' => $pdfprnt_options['file_action'],
1169 + 'file_name' => $file_name,
1170 + 'hide_classes' => implode( ', ', $pdfprnt_options['hide_classes'] ),
1171 + 'ajax_nonce' => wp_create_nonce( 'pdfprnt_ajax_nonce' ),
1172 + 'ajaxurl' => admin_url( 'admin-ajax.php' ),
1173 + 'count_generation' => $pdfprnt_options['count_generation']
1174 + )
826 1175 );
827 1176 }
828 1177 }
829 1178 }
830 -/* Remove inline 'font-family' and 'font' styles from content */
1179 +
831 1180 if ( ! function_exists( 'pdfprnt_preg_replace' ) ) {
832 - function pdfprnt_preg_replace( $pattern, $content ) {
833 - $content = preg_replace( "/" . $pattern . "(.*?);/", "", $content );
834 - preg_match_all( "~style=(\"\'?)~", $content, $quotes );/* get array with quotes */
835 - if ( isset( $quotes[1] ) && ! empty( $quotes[1] ) ) {
836 - foreach ( $quotes[1] as $quote ) {
837 - preg_match_all( "~style=" . $quote . "(.*?)" . $quote . "~", $content, $styles );
838 - if ( ! empty( $styles[1] ) ) {
839 - foreach ( $styles[1] as $style ) {
840 - if ( preg_match( "/" . $pattern . "/", $style ) )
841 - $content = preg_replace( "/" . $style . "/", "", $content );
1181 + /**
1182 + * Remove inline 'font-family' and 'font' styles from content
1183 + *
1184 + * @param array $patterns Patterns array.
1185 + * @param string $content Post content.
1186 + * @return string $content
1187 + */
1188 + function pdfprnt_preg_replace( $patterns, $content ) {
1189 + foreach ( $patterns as $pattern ) {
1190 + $content = preg_replace( '/' . $pattern . '(.*?);/', '', $content );
1191 + preg_match_all( "~style=(\"\'?)~", $content, $quotes );/* get array with quotes */
1192 + if ( isset( $quotes[1] ) && ! empty( $quotes[1] ) ) {
1193 + foreach ( $quotes[1] as $quote ) {
1194 + preg_match_all( '~style=' . $quote . '(.*?)' . $quote . '~', $content, $styles );
1195 + if ( ! empty( $styles[1] ) ) {
1196 + foreach ( $styles[1] as $style ) {
1197 + if ( preg_match( '/' . $pattern . '/', $style ) ) {
1198 + $content = preg_replace( '/' . $style . '/', '', $content );
1199 + }
1200 + }
842 1201 }
843 -
844 1202 }
845 1203 }
846 1204 }
847 1205 return $content;
@@ -847,146 +1205,127 @@
847 1205 return $content;
848 1206 }
849 1207 }
850 1208
851 -/* Generate templates for pdf file or print */
852 1209 if ( ! function_exists( 'pdfprnt_generate_template' ) ) {
853 - function pdfprnt_generate_template( $content, $isprint = false ) {
854 - global $pdfprnt_options_array;
855 - ob_start(); /* Starting output buffering */ ?>
856 - <html>
857 - <head>
858 - <?php if ( 1 == $pdfprnt_options_array['use_theme_stylesheet'] ) {
859 - /* remove 'font-family' and 'font' styles from theme css-file if additional fonts not loaded */
860 - if ( 0 == $pdfprnt_options_array['additional_fonts'] ) {
861 - $css = file_get_contents( get_bloginfo( 'stylesheet_url' ) );
862 - if ( ( ! empty( $css ) ) ) {
863 - $css = preg_replace( "/font:(.*?);/", "", $css );
864 - $css = preg_replace( "/font-family(.*?);/", "", $css );
865 - echo '<style type="text/css">' . $css . '</style>';
866 - }
867 - } else { ?>
868 - <link type="text/css" rel="stylesheet" href="<?php echo get_bloginfo( 'stylesheet_url' ); ?>" media="all" />
869 - <?php }
870 - } else { ?>
871 - <link type="text/css" rel="stylesheet" href="<?php echo plugins_url( 'css/default.css', __FILE__ ); ?>" media="all" />
872 - <?php }
873 - if ( $isprint && 1 == $pdfprnt_options_array['show_print_window'] ) {
874 - echo '<script>window.onload = function(){ window.print(); };</script>';
875 - } ?>
876 - </head>
877 - <body>
878 - <?php if ( 0 == $pdfprnt_options_array['additional_fonts'] ) {
879 - /* Remove inline 'font-family' and 'font' styles from content */
880 - $content = pdfprnt_preg_replace( "font-family", $content );
881 - $content = pdfprnt_preg_replace( "font:", $content );
882 - }
883 - echo $content; ?>
884 - </body>
885 - </html>
886 - <?php $html = ob_get_contents(); /* Getting output buffering */
887 - ob_end_clean(); /* Closing output buffering */
888 - return $html; /* Now we done with template */
889 - }
890 -}
891 -
892 -if ( ! function_exists( 'pdfprnt_generate_template_for_bws_portfolio' ) ) {
893 - function pdfprnt_generate_template_for_bws_portfolio() {
894 - global $post;
895 - ob_start(); /* Starting output buffering */
896 - $short_descr = $link = $date_compl = '';
897 - $meta_values = get_post_custom( $post->ID );
898 - $post_thumbnail_id = get_post_thumbnail_id( $post->ID );
899 - if ( empty ( $post_thumbnail_id ) ) {
900 - $args = array(
901 - 'post_parent' => $post->ID,
902 - 'post_type' => 'attachment',
903 - 'post_mime_type' => 'image',
904 - 'numberposts' => 1
1210 + /**
1211 + * Generate templates for pdf file or print
1212 + *
1213 + * @param string $content Post content.
1214 + * @param bool $is_print (Optional) Flag for print version.
1215 + * @return string $html
1216 + */
1217 + function pdfprnt_generate_template( $content, $is_print = false ) {
1218 + global $pdfprnt_options, $wp_locale, $post;
1219 + $html =
1220 + '<html>
1221 + <head>';
1222 + $html .= apply_filters( 'pdfprnt_add_meta_tag_robots', $html );
1223 + if ( $is_print && $post instanceof WP_Post ) {
1224 + if ( is_archive() || is_category() || is_tax() || is_tag() || is_author() || ! pdfprnt_is_user_role_enabled() ) {
1225 + $title = ( function_exists( 'get_the_archive_title' ) ) ? get_the_archive_title() : wp_title( '', false );
1226 + } elseif ( is_search() ) {
1227 + $title = sprintf( esc_html__( 'Search Results for: %s', 'pdf-print' ), get_search_query() );
1228 + } else {
1229 + $title = get_the_title();
1230 + }
1231 + $html .= sprintf(
1232 + '<title>%s - %s</title>',
1233 + wp_strip_all_tags( $title ),
1234 + get_bloginfo( 'name' )
905 1235 );
906 - $attachments = get_children( $args );
907 - $post_thumbnail_id = key( $attachments );
908 1236 }
909 - $image = wp_get_attachment_image_src( $post_thumbnail_id, 'portfolio-thumb' );
910 - $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true );
911 - $image_desc = get_post( $post_thumbnail_id );
912 - $image_desc = $image_desc->post_content;
913 - $post_meta = get_post_meta( $post->ID, 'prtfl_information', true );
914 - if ( ! empty( $post_meta ) ) {
915 - $date_compl = $post_meta['_prtfl_date_compl'];
916 - if ( ! empty( $date_compl ) && 'in progress' != $date_compl ) {
917 - $date_compl = explode( '/', $date_compl );
918 - $date_compl = date( get_option( 'date_format' ), strtotime( $date_compl[1] . '-' . $date_compl[0] . '-' . $date_compl[2] ) );
1237 + if ( ! empty( $pdfprnt_options['use_default_css'] ) && 1 === intval( $pdfprnt_options['use_default_css'] ) ) {
1238 + /* remove 'font-family' and 'font' styles from theme css-file if additional fonts not loaded */
1239 + if ( 0 === intval( $pdfprnt_options['additional_fonts'] ) ) {
1240 + $css = wp_remote_get( get_bloginfo( 'stylesheet_url' ) );
1241 + if ( is_array( $css ) && ! empty( $css['body'] ) ) {
1242 + $html .= '<style type="text/css">' . preg_replace( '/(font:(.*?);)|(font-family(.*?);)/', '', $css['body'] ) . '</style>';
1243 + }
1244 + } else {
1245 + $html .= '<link type="text/css" rel="stylesheet" href="' . get_bloginfo( 'stylesheet_url' ) . '" media="all" />';
919 1246 }
920 - $link = $post_meta['_prtfl_link'];
921 - $short_descr = $post_meta['_prtfl_short_descr'];
922 - }
923 - if ( ! empty( $image[1] ) ) { ?>
924 - <img src="<?php echo $image[0]; ?>" width="<?php echo $image[1]; ?>" alt="<?php echo $image_alt; ?>" />
925 - <?php } ?>
926 - <div>
927 - <p>
928 - <strong><?php _e( 'Date of completion', 'pdf-print' ); ?>:</strong> <?php echo $date_compl; ?><br/>
929 - <strong><?php _e( 'Link', 'pdf-print' ); ?>:</strong> <a href="<?php echo $link; ?>"><?php echo $link; ?></a><br/>
930 - <strong><?php _e( 'Description', 'pdf-print' ); ?>:</strong> <?php echo $short_descr; ?><br/>
931 - </p>
932 - </div>
933 - <?php $terms = wp_get_object_terms( $post->ID, 'portfolio_technologies' );
934 - if ( is_array( $terms ) && count( $terms ) > 0 ) { ?>
935 - <div style="clear:both;">
936 - <strong><?php _e( 'Technologies', 'pdf-print' ); ?>: </strong>
937 - <?php $count = 0;
938 - foreach ( $terms as $term ) {
939 - if ( 0 < $count )
940 - echo ', ';
941 - echo '<a href="' . get_term_link( $term->slug, 'portfolio_technologies' ) . '" title="' . sprintf( __( "View all posts in %s" ), $term->name ) . '" ' . '>' . $term->name . '</a>';
942 - $count++;
943 - } ?>
944 - </div>
945 - <?php }
946 - $content = ob_get_contents(); /* Getting output buffering */
947 - ob_end_clean(); /* Closing output buffering */
948 - return $content; /* Now we done with template */
1247 + } else {
1248 + $html .= '<link type="text/css" rel="stylesheet" href="' . plugins_url( 'css/default.css', __FILE__ ) . '" media="all" />';
1249 + }
1250 + $html .= pdfprnt_additional_styles( $is_print );
1251 + if ( 1 === intval( $pdfprnt_options['use_custom_css'] ) && ! empty( $pdfprnt_options['custom_css_code'] ) ) {
1252 + $html .= '<style type="text/css">' . $pdfprnt_options['custom_css_code'] . '</style>';
1253 + }
1254 + if ( $is_print && 1 === intval( $pdfprnt_options['show_print_window'] ) ) {
1255 + $html .= '<script>window.onload = function(){ window.print(); };</script>';
1256 + }
1257 + if ( ! empty( $pdfprnt_options['hide_classes'] ) ) {
1258 + $html .= '<style>' . implode( ',', $pdfprnt_options['hide_classes'] ) . '{ display: none; }</style>';
1259 + }
1260 + $html .= apply_filters( 'pdfprnt_woocommerce_layout', $html, $is_print );
1261 + $html .=
1262 + '</head>
1263 + <body class="' . ( $is_print ? 'pdfprnt_print ' : '' ) . $wp_locale->text_direction . '">';
1264 + /* Remove inline 'font-family' and 'font' styles from content */
1265 + if ( 0 === intval( $pdfprnt_options['additional_fonts'] ) ) {
1266 + $content = pdfprnt_preg_replace( array( 'font-family', 'font:' ), $content );
1267 + }
1268 + if ( function_exists( 'has_blocks' ) && has_blocks( $content ) ) {
1269 + $content = preg_replace( '/\s?<!--.*-->\s?/', '', $content );
1270 + $content = preg_replace( '~<p></p>~', '', $content );
1271 + }
1272 + $html .= $content .
1273 + '</body>
1274 + </html>';
1275 + return $html;
949 1276 }
950 1277 }
951 1278
952 -/* Generate query posts for Portfolio plugin */
953 -if ( ! function_exists( 'generate_query_posts_for_portfolio' ) ) {
954 - function generate_query_posts_for_portfolio() {
955 - global $wp_query;
956 - $paged = isset( $wp_query->query_vars['paged'] ) ? $wp_query->query_vars['paged'] : 1;
957 - $technologies = isset( $wp_query->query_vars["technologies"] ) ? $wp_query->query_vars["technologies"] : "";
958 - if ( "" != $technologies ) {
959 - $args = array(
960 - 'post_type' => 'portfolio',
961 - 'post_status' => 'publish',
962 - 'posts_per_page' => get_option('posts_per_page'),
963 - 'paged' => $paged,
964 - 'tax_query' => array(
965 - array(
966 - 'taxonomy' => 'portfolio_technologies',
967 - 'field' => 'slug',
968 - 'terms' => $technologies
969 - )
970 - )
971 - );
972 - } else {
973 - $args = array(
974 - 'post_type' => 'portfolio',
975 - 'post_status' => 'publish',
976 - 'posts_per_page' => get_option('posts_per_page'),
977 - 'paged' => $paged
978 - );
1279 +if ( ! function_exists( 'pdfprnt_additional_styles' ) ) {
1280 + /**
1281 + * Additinal styles for plugin
1282 + *
1283 + * @param bool $is_print Flag for print version.
1284 + * @return string $html
1285 + */
1286 + function pdfprnt_additional_styles( $is_print ) {
1287 + $styles = apply_filters( 'bwsplgns_add_pdf_print_styles', array() );
1288 + $html = '';
1289 + if ( ! empty( $styles ) && is_array( $styles ) ) {
1290 + $url = get_bloginfo( 'url' );
1291 + require_once ABSPATH . 'wp-admin/includes/file.php';
1292 + $path = get_home_path();
1293 + foreach ( $styles as $style ) {
1294 + if ( ! empty( $style[0] ) && file_exists( $path . $style[0] ) ) {
1295 + /* if "get print" */
1296 + if ( $is_print ) {
1297 + if ( ( isset( $style[1] ) && 'print' === $style[1] ) || ! isset( $style[1] ) ) {
1298 + $html .= '<link type="text/css" rel="stylesheet" href="' . $url . '/' . $style[0] . '" media="all" />';
1299 + }
1300 + /* if "get pdf" */
1301 + } else {
1302 + if ( ( isset( $style[1] ) && 'pdf' === $style[1] ) || ! isset( $style[1] ) ) {
1303 + $html .= '<link type="text/css" rel="stylesheet" href="' . $url . '/' . $style[0] . '" media="all" />';
1304 + }
1305 + }
1306 + }
1307 + }
979 1308 }
980 - query_posts( $args );
1309 + return $html;
981 1310 }
982 1311 }
983 1312
984 -/* Output print page or pdf document and include plugin script */
985 1313 if ( ! function_exists( 'pdfprnt_print' ) ) {
1314 + /**
1315 + * Output print page or pdf document and include plugin script
1316 + *
1317 + * @param string $query Query for post.
1318 + */
986 1319 function pdfprnt_print( $query ) {
987 - global $pdfprnt_options_array, $posts, $post;
988 - if ( $print = get_query_var( 'print' ) ) {
1320 + global $pdfprnt_options, $posts, $post, $pdfprnt_is_old_php, $pdfprnt_links;
1321 + $print = get_query_var( 'print' );
1322 +
1323 + if ( $pdfprnt_is_old_php || empty( $print ) || ! pdfprnt_is_user_role_enabled() || post_password_required() ) {
1324 + return;
1325 + }
1326 +
1327 + if ( apply_filters( 'bwsplgns_remove_content_filters', true ) ) {
989 1328 remove_all_filters( 'the_content' );
990 1329 add_filter( 'the_content', 'capital_P_dangit', 11 );
991 1330 add_filter( 'the_content', 'wptexturize' );
992 1331 add_filter( 'the_content', 'convert_smilies' );
@@ -991,361 +1330,357 @@
991 1330 add_filter( 'the_content', 'wptexturize' );
992 1331 add_filter( 'the_content', 'convert_smilies' );
993 1332 add_filter( 'the_content', 'convert_chars' );
994 1333 add_filter( 'the_content', 'wpautop' );
995 - if ( ! 0 == $pdfprnt_options_array['tmpl_shorcode'] ) {
996 - add_filter( 'the_content', 'do_shortcode' ); /* executing shortcodes on the page */
997 - } else {
998 - $pattern = get_shortcode_regex();
999 - if ( preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches ) ) { /* getting all shortcodes we are using */
1000 - foreach ( array_unique( $matches[0] ) as $value) {
1001 - $post->post_content = str_replace( $value, "", $post->post_content ); /* replacing shortcodes to an empty string */
1334 +
1335 + if ( ! class_exists( 'WP_Embed' ) ) {
1336 + require_once ABSPATH . WPINC . '/class-wp-embed.php';
1337 + }
1338 + new WP_Embed();
1339 + }
1340 + do_action( 'bwsplgns_pdf_print_the_content' );
1341 + if ( 1 === intval( $pdfprnt_options['do_shorcodes'] ) ) {
1342 + add_filter( 'the_content', 'do_shortcode' );
1343 + $pattern = false;
1344 + } else {
1345 + $pattern = get_shortcode_regex();
1346 + }
1347 +
1348 + $doc_type = explode( '-', $print );
1349 +
1350 + if ( ! is_array( $doc_type ) ) {
1351 + return;
1352 + }
1353 +
1354 + /* for search or archives */
1355 + if ( isset( $doc_type[1] ) ) {
1356 + switch ( $doc_type[1] ) {
1357 + case 'custom':
1358 + $url_data = isset( $_SERVER['REQUEST_URI'] ) ? wp_parse_url( sanitize_text_field( wp_unslash( urldecode( $_SERVER['REQUEST_URI'] ) ) ) ) : array();
1359 + parse_str( $url_data['query'], $args );
1360 + unset( $args['print'] );
1361 + if ( ! empty( $args ) ) {
1362 + $posts = query_posts( $args );
1002 1363 }
1003 - }
1364 + break;
1365 + case 'search':
1366 + do_action( 'pdfprnt_rewrite_posts_woocommerce' );
1367 + break;
1368 + default:
1369 + break;
1004 1370 }
1005 - /* set path to directory with fonts for PDF document */
1006 - if ( ! ( 0 == $pdfprnt_options_array['additional_fonts'] && defined( "_MPDF_SYSTEM_TTFONTS" ) ) ) {
1007 - if ( is_multisite() ) {
1008 - switch_to_blog( 1 );
1009 - $upload_dir = wp_upload_dir();
1010 - restore_current_blog();
1011 - } else {
1012 - $upload_dir = wp_upload_dir();
1371 + /* for single posts or pages */
1372 + } elseif (
1373 + ( is_ssl() ? 'https://' : 'http://' ) . sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) . sanitize_text_field( wp_unslash( urldecode( $_SERVER['REQUEST_URI'] ) ) ) === get_home_url() . '/?print=' . $doc_type[0]
1374 + &&
1375 + 'page' === get_option( 'show_on_front' )
1376 + ) {
1377 + $post_id = get_option( 'page_on_front' );
1378 + $posts = query_posts( array( 'page_id' => $post_id ) );
1379 + } else {
1380 + if ( ! is_home() ) {
1381 + $posts = array( $post );
1382 + $count_generation = get_post_meta( $post->ID, 'pdfprnt_count_generation', true );
1383 + update_post_meta( $post->ID, 'pdfprnt_count_generation', (int) ++$count_generation );
1384 + }
1385 + }
1386 +
1387 + switch ( $doc_type[0] ) {
1388 + case 'pdf':
1389 + /* set path to directory with fonts */
1390 + if ( ! ( 0 === intval( $pdfprnt_options['additional_fonts'] ) && defined( '_MPDF_SYSTEM_TTFONTS' ) ) ) {
1391 + if ( is_multisite() ) {
1392 + switch_to_blog( 1 );
1393 + $upload_dir = wp_upload_dir();
1394 + restore_current_blog();
1395 + } else {
1396 + $upload_dir = wp_upload_dir();
1397 + }
1398 + @define( '_MPDF_SYSTEM_TTFONTS', $upload_dir['basedir'] . '/pdf-print-fonts/' );
1013 1399 }
1014 - define( '_MPDF_SYSTEM_TTFONTS', $upload_dir['basedir'] .'/pdf-print-fonts/' );
1015 - }
1016 - switch ( $print ) {
1017 - case 'pdf': /* Content for PDF from post */
1018 - include ( 'mpdf/mpdf.php' );
1019 - $user_info = get_userdata( $post->post_author );
1020 - $default_font = 0 == $pdfprnt_options_array['additional_fonts'] ? 'dejavusansmono' : '';
1021 - $mpdf = new mPDF( '+aCJK', 'A4', 0, $default_font );
1022 - $mpdf->allow_charset_conversion = true;
1023 - $mpdf->charset_in = get_bloginfo( 'charset' );
1024 - if ( ! 0 == $pdfprnt_options_array['additional_fonts'] ) {
1025 - $mpdf->autoScriptToLang = true;
1026 - $mpdf->autoLangToFont = true;
1027 - $mpdf->baseScript = 1;
1028 - $mpdf->autoVietnamese = true;
1029 - $mpdf->autoArabic = true;
1400 +
1401 + /* prepare data */
1402 + $titles = array();
1403 + $authors = array();
1404 + $default_font = 0 === intval( $pdfprnt_options['additional_fonts'] ) ? 'dejavusansmono' : '';
1405 + $last = count( $posts );
1406 + $i = 1;
1407 + $html = '<div id="content">';
1408 + foreach ( $posts as $p ) {
1409 + if ( function_exists( 'et_theme_builder_get_template_layouts' ) && function_exists( 'et_theme_builder_frontend_render_header' ) ) {
1410 + $layouts = et_theme_builder_get_template_layouts();
1411 + ob_start();
1412 + et_theme_builder_frontend_render_header(
1413 + $layouts[ ET_THEME_BUILDER_HEADER_LAYOUT_POST_TYPE ]['id'],
1414 + $layouts[ ET_THEME_BUILDER_HEADER_LAYOUT_POST_TYPE ]['enabled'],
1415 + $layouts[ ET_THEME_BUILDER_TEMPLATE_POST_TYPE ]
1416 + );
1417 + $html .= ob_get_clean();
1030 1418 }
1031 - if ( is_rtl() )
1032 - $mpdf->SetDirectionality( 'rtl' );
1033 - $mpdf->SetAuthor( $user_info->display_name );
1034 - $mpdf->SetTitle( $post->post_title );
1035 - $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
1036 - $html = '<div id="content">
1037 - <div class="post">
1038 - <div class="entry-header"><h1 class="entry-title"><a href="' . get_permalink( $post->ID ) . '">' . $post->post_title . '</a></h1></div><br/>
1039 - <div class="entry-content">' . apply_filters( 'the_content', $post->post_content ) . '</div>
1040 - </div>
1041 - </div>';
1042 - $mpdf->WriteHTML( pdfprnt_generate_template( $html ) );
1043 - $mpdf->Output();
1044 - unset( $user_info );
1045 - unset( $html );
1046 - unset( $mpdf );
1047 - die();
1048 - break;
1049 - case 'print': /* Content for printing from post */
1050 - $html = '<div id="content">
1051 - <div class="post">
1052 - <div class="entry-header"><h1 class="entry-title">' . $post->post_title . '</h1></div><br/>
1053 - <div class="entry-content">' . apply_filters( 'the_content', $post->post_content ) . '</div>
1054 - </div>
1055 - </div>';
1056 - echo pdfprnt_generate_template( $html, true );
1057 - unset( $html );
1058 - die();
1059 - break;
1060 - case 'pdf-page': /* Content for PDF from archive or searching page */
1061 - $titles = array();
1062 - $authors = array();
1063 - include ( 'mpdf/mpdf.php' );
1064 - $user_info = get_userdata( $post->post_author );
1065 - $default_font = 0 == $pdfprnt_options_array['additional_fonts'] ? 'dejavusansmono' : '';
1066 - $mpdf = new mPDF( '+aCJK', 'A4', 0, $default_font );
1067 - $mpdf->allow_charset_conversion = true;
1068 - $mpdf->charset_in = get_bloginfo( 'charset' );
1069 - if ( ! 0 == $pdfprnt_options_array['additional_fonts'] ) {
1070 - $mpdf->autoScriptToLang = true;
1071 - $mpdf->autoLangToFont = true;
1072 - $mpdf->baseScript = 1;
1073 - $mpdf->autoVietnamese = true;
1074 - $mpdf->autoArabic = true;
1419 + $title_filter = apply_filters( 'bwsplgns_get_pdf_print_title', apply_filters( 'the_title', $p->post_title, $p->ID ), $p );
1420 + $titles[] = $title_filter;
1421 + $user_info = get_userdata( $p->post_author );
1422 + $authors[] = $user_info->display_name;
1423 + $title = 1 === intval( $pdfprnt_options['show_title'] ) ? '<div class="entry-header"><h1 class="entry-title"><a href="' . get_permalink( $p ) . '">' . $title_filter . '</a></h1></div>' : '';
1424 + $image = 1 === intval( $pdfprnt_options['show_featured_image'] ) && has_post_thumbnail( $p->ID ) ? '<div class="entry-thumbnail">' . get_the_post_thumbnail( $p->ID, $pdfprnt_options['featured_image_size'] ) . '</div>' : '';
1425 + $date = 1 === intval( $pdfprnt_options['show_date'] ) ? '<span class="entry-date">' . get_the_date( get_option( 'date_format' ) ) . '</span>' : '';
1426 + $author = 1 === intval( $pdfprnt_options['show_author'] ) ? '<span class="entry-author">' . esc_html__( 'written by', 'pdf-print' ) . ' ' . get_the_author_meta( 'display_name', $p->post_author ) . '</span>' : '';
1427 + $category = 1 === intval( $pdfprnt_options['show_category'] ) && has_category( '', $p->ID ) ? '<div class="entry-category">' . __( 'Category', 'pdf-print-pro' ) . ': ' . implode( ',', wp_get_post_categories( $p->ID, array( 'fields' => 'names' ) ) ) . '</div>' : '';
1428 + /* replacing shortcodes to an empty string which were added to the content */
1429 + if ( $pattern && preg_match_all( '/' . $pattern . '/s', $p->post_content, $matches ) ) {
1430 + foreach ( array_unique( $matches[0] ) as $value ) {
1431 + $p->post_content = str_replace( $value, '', $p->post_content );
1432 + }
1075 1433 }
1076 - if ( is_rtl() )
1077 - $mpdf->SetDirectionality( 'rtl' );
1078 - $html = '<div id="content">';
1079 - foreach ( $posts as $p ) {
1080 - if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
1081 - continue;
1082 - $titles[] = $p->post_title;
1083 - $user_info = get_userdata( $p->post_author );
1084 - $authors[] = $user_info->display_name;
1085 - $html .= '<div class="post">
1086 - <div class="entry-title"><h1 class="entry-header"><a href="' . get_permalink( $p->ID ) . '">' . $p->post_title . '</a></h1></div><br/>
1087 - <div class="entry-content">' . apply_filters( 'the_content', $p->post_content ) . '</div>
1088 - </div><br/><hr/><br/>';
1089 - unset( $user_info );
1434 + if ( 1 === intval( $pdfprnt_options['remove_links'] ) ) {
1435 + $p->post_content = preg_replace( '~<a\b[^>]*+>|</a\b[^>]*+>~', '$2', $p->post_content );
1436 + $p->post_content = preg_replace( '@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@', '', $p->post_content );
1090 1437 }
1091 - $html .= '</div>';
1092 - $titles = array_unique( $titles );
1093 - $authors = array_unique( $authors );
1094 - $mpdf->SetTitle( implode( ',', $titles ) );
1095 - $mpdf->SetAuthor( implode( ',', $authors ) );
1096 - $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
1097 - $mpdf->WriteHTML( pdfprnt_generate_template( $html ) );
1098 - $mpdf->Output();
1099 - unset( $authors );
1100 - unset( $titles );
1101 - unset( $html );
1102 - unset( $mpdf );
1103 - die();
1104 - break;
1105 - case 'print-page': /* Content for printing from archive or searching page */
1106 - $html = '<div id="content">';
1107 - foreach ( $posts as $p ) {
1108 - if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
1109 - continue;
1110 - $html .= '<div class="post">
1111 - <div class="entry-header"><h1 class="entry-title">' . $p->post_title . '</h1></div><br/>
1112 - <div class="entry-content">' . apply_filters( 'the_content', $p->post_content ) . '</div>
1113 - </div><br/><hr/><br/>';
1438 + if ( 1 === intval( $pdfprnt_options['disable_links'] ) ) {
1439 + $html .= '<style> a {text-decoration: none; color:#000000 !important; } </style>';
1114 1440 }
1115 - $html .= '</div>';
1116 - echo pdfprnt_generate_template( $html, true );
1117 - unset( $html );
1118 - die();
1119 - break;
1120 - case 'pdf-portfolio': /* Content for PDF from portfolio post */
1121 - include ( 'mpdf/mpdf.php' );
1122 - $user_info = get_userdata( $post->post_author );
1123 - $default_font = 0 == $pdfprnt_options_array['additional_fonts'] ? 'dejavusansmono' : '';
1124 - $mpdf = new mPDF( '+aCJK', 'A4', 0, $default_font );
1125 - $mpdf->allow_charset_conversion = true;
1126 - $mpdf->charset_in = get_bloginfo( 'charset' );
1127 - if ( ! 0 == $pdfprnt_options_array['additional_fonts'] ) {
1128 - $mpdf->autoScriptToLang = true;
1129 - $mpdf->autoLangToFont = true;
1130 - $mpdf->baseScript = 1;
1131 - $mpdf->autoVietnamese = true;
1132 - $mpdf->autoArabic = true;
1441 +
1442 + $post_visible = ( ! empty( $p->post_excerpt ) && ! is_singular() ) ? $p->post_excerpt : $p->post_content;
1443 + $post_content = apply_filters( 'bwsplgns_get_pdf_print_content', $post_visible, $p );
1444 + $shortcodes = implode( '|', apply_filters( 'bwsplgns_pdf_print_remove_shortcodes', array( 'vc_', 'az_', 'multilanguage_switcher' ) ) );
1445 + $post_content = preg_replace( "/\[\/?({$shortcodes})[^\]]*?\]/", '', $post_content );
1446 + $post_content = apply_filters( 'the_content', $post_content );
1447 + $post_content = apply_filters( 'bwsplgns_pdf_customize_content', $post_content );
1448 + $post_content = apply_filters( 'bwsplgns_pdf_replace_content', $post_content );
1449 + $separator = '';
1450 + if ( ! empty( $author ) && ! empty( $date ) ) {
1451 + $separator = ' | ';
1133 1452 }
1134 - if ( is_rtl() )
1135 - $mpdf->SetDirectionality( 'rtl' );
1136 - $mpdf->SetAuthor( $user_info->display_name );
1137 - $mpdf->SetTitle( $post->post_title );
1138 - $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
1139 - $html = '<div id="content">
1140 - <div class="post">
1141 - <div class="entry-header"><h1 class="entry-title"><a href="' . get_permalink( $post->ID ) . '">' . $post->post_title . '</a></h1></div><br/>
1142 - <div class="entry-content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
1143 - </div>
1144 - </div>';
1145 - $mpdf->WriteHTML( pdfprnt_generate_template( $html ) );
1146 - $mpdf->Output();
1147 - unset( $html );
1148 - unset( $user_info );
1149 - unset( $mpdf );
1150 - die();
1151 - break;
1152 - case 'print-portfolio': /* Content for printing from porfolio post */
1153 - $html = '<div id="content">
1154 - <div class="post">
1155 - <div class="entry-header"><h1 class="entry-title">' . $post->post_title . '</h1></div><br/>
1156 - <div class="entry-content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
1157 - </div>
1158 - </div>';
1159 - echo pdfprnt_generate_template( $html, true );
1160 - unset( $html );
1161 - die();
1162 - break;
1163 - case 'pdf-portfolio-page': /* Content for PDF from portfolio page */
1164 - $html = '<div id="content">';
1165 - $titles = array();
1166 - $authors = array();
1167 - generate_query_posts_for_portfolio();
1168 - while ( have_posts() ) {
1169 - the_post();
1170 - global $post;
1171 - if ( ! in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) )
1172 - continue;
1173 - $titles[] = $post->post_title;
1174 - $user_info = get_userdata( $post->post_author );
1175 - $authors[] = $user_info->display_name;
1176 - $html .= '<div class="post">
1177 - <div class="entry-header"><h1 class="entry-title"><a href="' . get_permalink( $post->ID ) . '">' . $post->post_title . '</a></h1></div><br/>
1178 - <div class="entry-content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
1179 - </div><br/><hr/><br/>';
1180 - unset( $user_info );
1453 + $html .=
1454 + '<div class="post">' .
1455 + $title .
1456 + $category .
1457 + '<div class="postmetadata">' . $author . $separator . $date . '</div>' .
1458 + $image .
1459 + '<div class="entry-content">' . $post_content . '</div>
1460 + </div>';
1461 + if ( $i !== $last ) {
1462 + $html .= '<br/><hr/><br/>';
1463 + $i ++;
1181 1464 }
1182 - $html .= '</div>';
1183 - include ( 'mpdf/mpdf.php' );
1184 - $default_font = 0 == $pdfprnt_options_array['additional_fonts'] ? 'dejavusansmono' : '';
1185 - $mpdf = new mPDF( '+aCJK', 'A4', 0, $default_font );
1186 - $mpdf->allow_charset_conversion = true;
1187 - $mpdf->charset_in = get_bloginfo( 'charset' );
1188 - if ( ! 0 == $pdfprnt_options_array['additional_fonts'] ) {
1189 - $mpdf->autoScriptToLang = true;
1190 - $mpdf->autoLangToFont = true;
1191 - $mpdf->baseScript = 1;
1192 - $mpdf->autoVietnamese = true;
1193 - $mpdf->autoArabic = true;
1465 + }
1466 + if ( function_exists( 'et_theme_builder_get_template_layouts' ) && function_exists( 'et_theme_builder_frontend_render_footer' ) ) {
1467 + ob_start();
1468 + et_theme_builder_frontend_render_footer(
1469 + $layouts[ ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE ]['id'],
1470 + $layouts[ ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE ]['enabled'],
1471 + $layouts[ ET_THEME_BUILDER_TEMPLATE_POST_TYPE ]
1472 + );
1473 + $html .= ob_get_clean();
1474 + }
1475 + $html .= '</div>';
1476 + $titles = array_unique( $titles );
1477 + $authors = array_unique( $authors );
1478 +
1479 + $pdfprnt_links = $pdfprnt_options['disable_links'];
1480 +
1481 + /* generate PDF-document */
1482 + $path = $upload_dir['basedir'] . '/vendor/mpdf';
1483 + $is_installed = file_exists( $path );
1484 + if ( $is_installed ) {
1485 + /* Implement mPDF v7.1.5 */
1486 + if ( ! class_exists( '\Mpdf\Mpdf' ) ) {
1487 + include $upload_dir['basedir'] . '/vendor/autoload.php';
1194 1488 }
1195 - if ( is_rtl() )
1196 - $mpdf->SetDirectionality( 'rtl' );
1197 - $titles = array_unique( $titles );
1198 - $authors = array_unique( $authors );
1199 - $mpdf->SetTitle( implode( ',', $titles ) );
1200 - $mpdf->SetAuthor( implode( ',', $authors ) );
1201 - $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
1202 - $mpdf->WriteHTML( pdfprnt_generate_template( $html ) );
1489 + $mpdf_config = array(
1490 + 'mode' => '+aCJK',
1491 + 'format' => $pdfprnt_options['pdf_page_size'],
1492 + 'default_font_size' => 0,
1493 + 'default_font' => $default_font,
1494 + 'margin_left' => $pdfprnt_options['pdf_margins']['left'],
1495 + 'margin_right' => $pdfprnt_options['pdf_margins']['right'],
1496 + 'margin_top' => $pdfprnt_options['pdf_margins']['top'],
1497 + 'margin_bottom' => $pdfprnt_options['pdf_margins']['bottom'],
1498 + );
1499 + $mpdf = new \Mpdf\Mpdf( $mpdf_config );
1500 +
1501 + } else {
1502 + include dirname( __FILE__ ) . '/mpdf/mpdf.php';
1503 + $mpdf = new mPDF(
1504 + '+aCJK',
1505 + $pdfprnt_options['pdf_page_size'],
1506 + 0,
1507 + $default_font,
1508 + $pdfprnt_options['pdf_margins']['left'],
1509 + $pdfprnt_options['pdf_margins']['right'],
1510 + $pdfprnt_options['pdf_margins']['top'],
1511 + $pdfprnt_options['pdf_margins']['bottom']
1512 + );
1513 + }
1514 + $mpdf->allow_charset_conversion = true;
1515 + $mpdf->charset_in = get_bloginfo( 'charset' );
1516 + if ( 0 !== intval( $pdfprnt_options['additional_fonts'] ) ) {
1517 + $mpdf->autoScriptToLang = true;
1518 + $mpdf->autoLangToFont = true;
1519 + $mpdf->baseScript = 1;
1520 + $mpdf->autoVietnamese = true;
1521 + $mpdf->autoArabic = true;
1522 + }
1523 + if ( is_rtl() ) {
1524 + $mpdf->SetDirectionality( 'rtl' );
1525 + }
1526 + $mpdf->SetTitle( htmlspecialchars_decode( implode( ',', $titles ) ) );
1527 + $mpdf->SetAuthor( implode( ',', $authors ) );
1528 + $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
1529 + $mpdf->WriteHTML( pdfprnt_generate_template( $html ) );
1530 + do_action_ref_array( 'bwsplgns_mpdf', array( &$mpdf ) );
1531 + if ( 'download' === $pdfprnt_options['file_action'] ) {
1532 + $mpdf->Output( '', 'D' );
1533 + } else {
1203 1534 $mpdf->Output();
1204 - unset( $authors );
1205 - unset( $titles );
1206 - unset( $html );
1207 - unset( $mpdf );
1208 - die();
1209 - break;
1210 - case 'print-portfolio-page': /* Content for printing from portfolio page */
1211 - generate_query_posts_for_portfolio();
1212 - $html = '<div id="content">';
1213 - while ( have_posts() ) {
1214 - the_post();
1215 - global $post;
1216 - if ( ! in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) )
1217 - continue;
1218 - $html .= '<div class="post">
1219 - <div class="entry-header"><h1 class="entry-title">' . $post->post_title . '</h1></div><br/>
1220 - <div class="entry-content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
1221 - </div><br/><hr/><br/>';
1535 + }
1536 + die();
1537 + break;
1538 + case 'print':
1539 + $last = count( $posts );
1540 + $i = 1;
1541 + $html = '<div id="content">';
1542 + foreach ( $posts as $p ) {
1543 + if ( function_exists( 'et_theme_builder_get_template_layouts' ) && function_exists( 'et_theme_builder_frontend_render_header' ) ) {
1544 + $layouts = et_theme_builder_get_template_layouts();
1545 + ob_start();
1546 + et_theme_builder_frontend_render_header(
1547 + $layouts[ ET_THEME_BUILDER_HEADER_LAYOUT_POST_TYPE ]['id'],
1548 + $layouts[ ET_THEME_BUILDER_HEADER_LAYOUT_POST_TYPE ]['enabled'],
1549 + $layouts[ ET_THEME_BUILDER_TEMPLATE_POST_TYPE ]
1550 + );
1551 + $html .= ob_get_clean();
1222 1552 }
1223 - $html .= '</div>';
1224 - echo pdfprnt_generate_template( $html, true );
1225 - unset( $html );
1226 - die();
1227 - break;
1228 - case 'pdf-custom-page': /* Content for PDF from custom post */
1229 - $html = '<div id="content">';
1230 - $titles = $authors = array();
1231 1553
1232 - foreach ( $posts as $p ) {
1233 - if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
1234 - continue;
1235 - $titles[] = $p->post_title;
1236 - $user_info = get_userdata( $p->post_author );
1237 - $authors[] = $user_info->display_name;
1238 - $html .= '<div class="post">
1239 - <div class="entry-header"><h1 class="entry-title"><a href="' . get_permalink( $p->ID ) . '">' . $p->post_title . '</a></h1></div><br/>
1240 - <div class="entry-content">';
1241 - /*if ( has_post_thumbnail( $p->ID ) )
1242 - $html .= get_the_post_thumbnail( $p->ID, 'thumbnail' );*/
1243 - $html .= apply_filters( 'the_content', $p->post_content ) . '</div></div><br/><hr/><br/>';
1244 - unset( $user_info );
1554 + $title = 1 === intval( $pdfprnt_options['show_title'] ) ? '<div class="entry-header"><h1 class="entry-title">' . apply_filters( 'bwsplgns_get_pdf_print_title', apply_filters( 'the_title', $p->post_title, $p->ID ), $p ) . '</h1></div>' : '';
1555 + $image = 1 === intval( $pdfprnt_options['show_featured_image'] ) && has_post_thumbnail( $p->ID ) ? '<div class="entry-thumbnail">' . get_the_post_thumbnail( $p->ID, $pdfprnt_options['featured_image_size'] ) . '</div>' : '';
1556 + $date = 1 === intval( $pdfprnt_options['show_date'] ) ? '<span class="entry-date">' . get_the_date( get_option( 'date_format' ) ) . '</span>' : '';
1557 + $author = 1 === intval( $pdfprnt_options['show_author'] ) ? '<span class="entry-author">' . esc_html__( 'written by', 'pdf-print' ) . ' ' . get_the_author_meta( 'display_name', $p->post_author ) . '</span>' : '';
1558 + $category = 1 === intval( $pdfprnt_options['show_category'] ) && has_category( '', $p->ID ) ? '<div class="entry-category">' . __( 'Category', 'pdf-print-pro' ) . ': ' . implode( ',', wp_get_post_categories( $p->ID, array( 'fields' => 'names' ) ) ) . '</div>' : '';
1559 + /* replacing shortcodes to an empty string which were added to the content */
1560 + if ( $pattern && preg_match_all( '/' . $pattern . '/s', $p->post_content, $matches ) ) {
1561 + foreach ( array_unique( $matches[0] ) as $value ) {
1562 + $p->post_content = str_replace( $value, '', $p->post_content );
1563 + }
1245 1564 }
1246 - $html .= '</div>';
1247 - include ( 'mpdf/mpdf.php' );
1248 - $default_font = 0 == $pdfprnt_options_array['additional_fonts'] ? 'dejavusansmono' : '';
1249 - $mpdf = new mPDF( '+aCJK', 'A4', 0, $default_font );
1250 - $mpdf->allow_charset_conversion = true;
1251 - $mpdf->charset_in = get_bloginfo( 'charset' );
1252 - if ( ! 0 == $pdfprnt_options_array['additional_fonts'] ) {
1253 - $mpdf->autoScriptToLang = true;
1254 - $mpdf->autoLangToFont = true;
1255 - $mpdf->baseScript = 1;
1256 - $mpdf->autoVietnamese = true;
1257 - $mpdf->autoArabic = true;
1565 + if ( 1 === intval( $pdfprnt_options['remove_links'] ) ) {
1566 + $p->post_content = preg_replace( '~<a\b[^>]*+>|</a\b[^>]*+>~', '$2', $p->post_content );
1567 + $p->post_content = preg_replace( '@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@', '', $p->post_content );
1258 1568 }
1259 - if ( is_rtl() )
1260 - $mpdf->SetDirectionality( 'rtl' );
1261 - $titles = array_unique( $titles );
1262 - $authors = array_unique( $authors );
1263 - $mpdf->SetTitle( implode( ',', $titles ) );
1264 - $mpdf->SetAuthor( implode( ',', $authors ) );
1265 - $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
1266 - $mpdf->WriteHTML( pdfprnt_generate_template( $html ) );
1267 - $mpdf->Output();
1268 - unset( $authors );
1269 - unset( $titles );
1270 - unset( $html );
1271 - unset( $mpdf );
1272 - die();
1273 - break;
1274 - case 'print-custom-page': /* Content for printing from custom post */
1275 - $html = '<div id="content">';
1276 - foreach ( $posts as $p ) {
1277 - if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
1278 - continue;
1279 - $html .= '<div class="post">
1280 - <div class="entry-header"><h1 class="entry-title">' . $p->post_title . '</h1></div><br/>
1281 - <div class="entry-content">';
1282 - /*if ( has_post_thumbnail( $p->ID ) )
1283 - $html .= get_the_post_thumbnail( $p->ID, 'thumbnail' );*/
1284 - $html .= apply_filters( 'the_content', $p->post_content ) . '</div></div><br/><hr/><br/>';
1569 + if ( 1 === intval( $pdfprnt_options['disable_links'] ) ) {
1570 + $html .= '<style> a {text-decoration: none; color:#000000 !important; } </style>';
1285 1571 }
1286 - $html .= '</div>';
1287 - echo pdfprnt_generate_template( $html, true );
1288 - unset( $html );
1289 - die();
1290 - break;
1291 - }
1572 +
1573 + $post_content = apply_filters( 'bwsplgns_get_pdf_print_content', $p->post_content, $p );
1574 + $shortcodes = implode( '|', apply_filters( 'bwsplgns_pdf_print_remove_shortcodes', array( 'vc_', 'az_', 'multilanguage_switcher' ) ) );
1575 + $post_content = preg_replace( "/\[\/?({$shortcodes})[^\]]*?\]/", '', $post_content );
1576 + $post_content = apply_filters( 'the_content', $post_content );
1577 + $separator = '';
1578 +
1579 + if ( ! empty( $author ) && ! empty( $date ) ) {
1580 + $separator = ' | ';
1581 + }
1582 +
1583 + ob_start();
1584 + ?>
1585 + <div class="post">
1586 + <?php
1587 + echo wp_kses_post( $title ) .
1588 + wp_kses_post( $category ) .
1589 + '<div class="postmetadata">' . wp_kses_post( $author . $separator . $date ) . '</div>' .
1590 + wp_kses_post( $image );
1591 + ?>
1592 + <div class="entry-content"><?php echo $post_content; ?></div>
1593 + </div>
1594 + <?php
1595 + $html .= ob_get_clean();
1596 + if ( $i !== $last ) {
1597 + $html .= '<br/><hr/><br/>';
1598 + $i ++;
1599 + }
1600 + }
1601 + if ( function_exists( 'et_theme_builder_get_template_layouts' ) && function_exists( 'et_theme_builder_frontend_render_footer' ) ) {
1602 + ob_start();
1603 + et_theme_builder_frontend_render_footer(
1604 + $layouts[ ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE ]['id'],
1605 + $layouts[ ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE ]['enabled'],
1606 + $layouts[ ET_THEME_BUILDER_TEMPLATE_POST_TYPE ]
1607 + );
1608 + $html .= ob_get_clean();
1609 + }
1610 + $html .= '</div>';
1611 + echo pdfprnt_generate_template( $html, true );
1612 + die();
1613 + default:
1614 + break;
1292 1615 }
1293 1616 }
1294 1617 }
1295 1618
1296 -/* Add query vars */
1297 -if ( ! function_exists( 'print_vars_callback' ) ) {
1298 - function print_vars_callback( $query_vars ) {
1619 +if ( ! function_exists( 'pdfprnt_print_vars_callback' ) ) {
1620 + /**
1621 + * Add query vars
1622 + *
1623 + * @param array $query_vars Query vars array.
1624 + */
1625 + function pdfprnt_print_vars_callback( $query_vars ) {
1299 1626 $query_vars[] = 'print';
1300 1627 return $query_vars;
1301 1628 }
1302 1629 }
1303 1630
1304 -/**
1305 - * Class Pdfprnt_ZipArchive for extracting
1306 - * necessary folder from zip-archive
1307 - */
1308 1631 if ( class_exists( 'ZipArchive' ) && ! class_exists( 'Pdfprnt_ZipArchive' ) ) {
1632 + /**
1633 + * Class Pdfprnt_ZipArchive for extracting
1634 + * necessary folder from zip-archive
1635 + */
1309 1636 class Pdfprnt_ZipArchive extends ZipArchive {
1310 1637 /**
1311 - * constructor of class
1638 + * Constructor of class
1639 + *
1640 + * @param string $destination Directory for zip.
1641 + * @param string $subdir Subdirectory for zip.
1312 1642 */
1313 1643 public function extractSubdirTo( $destination, $subdir ) {
1314 - $errors = array();
1644 + $errors = array();
1315 1645 $charset = get_bloginfo( 'charset' );
1316 - // Prepare dirs
1317 - $destination = str_replace( array("/", "\\"), DIRECTORY_SEPARATOR, $destination );
1318 - $subdir = str_replace( array("/", "\\"), "/", $subdir);
1646 + /* Prepare dirs */
1647 + $destination = str_replace( array( '/', '\\' ), DIRECTORY_SEPARATOR, $destination );
1648 + $subdir = str_replace( array( '/', '\\' ), '/', $subdir );
1319 1649
1320 - if ( substr( $destination, mb_strlen( DIRECTORY_SEPARATOR, $charset ) * -1 ) != DIRECTORY_SEPARATOR )
1650 + if ( substr( $destination, mb_strlen( DIRECTORY_SEPARATOR, $charset ) * -1 ) !== DIRECTORY_SEPARATOR ) {
1321 1651 $destination .= DIRECTORY_SEPARATOR;
1652 + }
1322 1653
1323 - if ( substr( $subdir, -1 ) != "/" )
1324 - $subdir .= "/";
1325 - // Extract files
1654 + if ( substr( $subdir, -1 ) !== '/' ) {
1655 + $subdir .= '/';
1656 + }
1657 + /* Extract files */
1326 1658 for ( $i = 0; $i < $this->numFiles; $i++ ) {
1327 1659 $filename = $this->getNameIndex( $i );
1328 1660
1329 - if ( substr( $filename, 0, mb_strlen( $subdir, $charset ) ) == $subdir ) {
1330 - $relativePath = substr( $filename, mb_strlen( $subdir, $charset ) );
1331 - $relativePath = str_replace( array( "/", "\\" ), DIRECTORY_SEPARATOR, $relativePath );
1661 + if ( substr( $filename, 0, mb_strlen( $subdir, $charset ) ) === $subdir ) {
1662 + $relative_path = substr( $filename, mb_strlen( $subdir, $charset ) );
1663 + $relative_path = str_replace( array( '/', '\\' ), DIRECTORY_SEPARATOR, $relative_path );
1332 1664
1333 - if ( mb_strlen( $relativePath, $charset ) > 0 ) {
1334 - if ( substr( $filename, -1 ) == "/" ) {
1335 - if ( ! is_dir( $destination . $relativePath ) )
1336 - if ( ! @mkdir( $destination . $relativePath, 0755, true ) )
1337 - $errors[$i] = $filename;
1665 + if ( mb_strlen( $relative_path, $charset ) > 0 ) {
1666 + if ( substr( $filename, -1 ) === '/' ) {
1667 + if ( ! is_dir( $destination . $relative_path ) ) {
1668 + if ( ! @mkdir( $destination . $relative_path, 0755, true ) ) {
1669 + $errors[ $i ] = $filename;
1670 + }
1671 + }
1338 1672 } else {
1339 - if ( dirname( $relativePath) != "." ) {
1340 - if ( ! is_dir( $destination . dirname( $relativePath ) ) ) {
1341 - // New dir (for file)
1342 - @mkdir( $destination . dirname( $relativePath ), 0755, true );
1673 + if ( dirname( $relative_path ) !== '.' ) {
1674 + if ( ! is_dir( $destination . dirname( $relative_path ) ) ) {
1675 + /* New dir (for file) */
1676 + @mkdir( $destination . dirname( $relative_path ), 0755, true );
1343 1677 }
1344 1678 }
1345 - // New file
1346 - if ( @file_put_contents( $destination . $relativePath, $this->getFromIndex( $i ) ) === false )
1347 - $errors[$i] = $filename;
1679 + /* New file */
1680 + if ( @file_put_contents( $destination . $relative_path, $this->getFromIndex( $i ) ) === false ) {
1681 + $errors[ $i ] = $filename;
1682 + }
1348 1683 }
1349 1684 }
1350 1685 }
1351 1686 }
@@ -1353,51 +1688,58 @@
1353 1688 }
1354 1689 }
1355 1690 }
1356 1691
1357 -/**
1358 - * Download Zip
1359 - */
1360 1692 if ( ! function_exists( 'pdfprnt_download_zip' ) ) {
1361 - function pdfprnt_download_zip( $zip_file, $upload_dir ) {
1362 - /* check permissions */
1693 + /**
1694 + * Download Zip
1695 + *
1696 + * @param array $zip_file Zip file name.
1697 + * @param array $upload_dir Path for upload directory.
1698 + * @param array $url Url for Curl.
1699 + * @return array $result
1700 + */
1701 + function pdfprnt_download_zip( $zip_file, $upload_dir, $url ) {
1702 + /* Check permissions */
1363 1703 if ( is_writable( $upload_dir ) ) {
1364 - /* load ZIP-archive */
1704 + /* Load ZIP-archive */
1365 1705 $result = array();
1366 - $fp = fopen( $zip_file, 'w+');
1367 - $curl = curl_init();
1706 + $fp = fopen( $zip_file, 'w+' );
1707 + /* File size is too big to use wp_remote_get function */
1708 + $curl = curl_init();
1368 1709 $curl_parametres = array(
1369 - CURLOPT_URL => 'http://mpdf1.com/repos/MPDF60.zip',
1710 + CURLOPT_URL => $url,
1370 1711 CURLOPT_FILE => $fp,
1371 - CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0"
1712 + CURLOPT_USERAGENT => ( isset( $_SERVER['HTTP_USER_AGENT'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0' ),
1372 1713 );
1373 1714 curl_setopt_array( $curl, $curl_parametres );
1374 1715 if ( curl_exec( $curl ) ) {
1375 1716 $result['done'] = 'ok';
1376 1717 } else {
1377 - $result['error'] = curl_error( $curl ) . '<br />' . __( 'Check your internet connection', 'pdf-print' );
1718 + $result['error'] = curl_error( $curl ) . '<br />' . esc_html__( 'Check your internet connection', 'pdf-print' );
1378 1719 }
1379 1720 curl_close( $curl );
1380 1721 fclose( $fp );
1381 1722 } else {
1382 - $result['error'] = __( 'Cannot load files in to "uploads" folder. Check your permissions', 'pdf-print' );
1383 - }
1723 + $result['error'] = esc_html__( 'Cannot load files in to "uploads" folder. Check your permissions', 'pdf-print' );
1724 + }
1384 1725 return $result;
1385 1726 }
1386 1727 }
1387 1728
1388 -/**
1389 - * Copy neccesary fonts to mpdf/ttfonts
1390 - * @param string $zip_file path to zip archive
1391 - */
1392 1729 if ( ! function_exists( 'pdfprnt_copy_fonts' ) ) {
1730 + /**
1731 + * Extract additional fonts to uploads/pdf-print-fonts
1732 + *
1733 + * @param string $zip_file Path to zip archive.
1734 + * @param string $upload_dir Name for zip archive.
1735 + */
1393 1736 function pdfprnt_copy_fonts( $zip_file, $upload_dir ) {
1394 - global $pdfprnt_options_array;
1395 - if ( empty( $pdfprnt_options_array ) )
1396 - $pdfprnt_options_array = get_option( 'pdfprnt_options_array' );
1397 - if ( is_multisite() )
1398 - $network_options = get_site_option( 'pdfprnt_options_array' );
1399 - $destination = $upload_dir .'/pdf-print-fonts';
1737 + global $pdfprnt_options;
1738 + if ( empty( $pdfprnt_options ) ) {
1739 + $pdfprnt_options = get_option( 'pdfprnt_options' );
1740 + }
1741 + $destination = $upload_dir . '/pdf-print-fonts';
1400 1742 if ( ! file_exists( $destination ) ) {
1401 1743 mkdir( $destination, 0755, true );
1402 1744 }
1403 1745 $result = array();
@@ -1406,60 +1748,121 @@
1406 1748 $zip = new Pdfprnt_ZipArchive();
1407 1749 /* open zip-archive */
1408 1750 if ( true === $zip->open( $zip_file ) ) {
1409 1751 /* extract folder with fonts */
1410 - $errors = $zip->extractSubdirTo( $destination, "mpdf60/ttfonts" );
1752 + $errors = $zip->extractSubdirTo( $destination, 'mpdf-master/ttfonts' );
1411 1753 $zip->close();
1412 - /* delete zip-archive */
1754 + if ( empty( $errors ) ) {
1755 + $result['done'] = esc_html__( 'Additional fonts were loaded successfully.', 'pdf-print' );
1756 + unlink( $zip_file );
1757 + } else {
1758 + $result['error'] = esc_html__( 'Some errors occurred during loading files.', 'pdf-print' );
1759 + }
1760 + } else {
1761 + $result['error'] = esc_html__( 'Can not extract files from zip-archive.', 'pdf-print' );
1413 1762 unlink( $zip_file );
1763 + }
1764 + } else {
1765 + $result['error'] = sprintf( esc_html__( 'Cannot create %s folder. Check your permissions.', 'pdf-print' ), '"uploads/pdf-print-fonts"' );
1766 + }
1767 + $files = scandir( $destination );
1768 + $value = isset( $result['error'] ) ? -1 : count( $files );
1769 + $opt = 'additional_fonts';
1770 + pdfprnt_update_option( $opt, $value, true );
1771 + return $result;
1772 + }
1773 +}
1774 +
1775 +
1776 +if ( ! function_exists( 'pdfprnt_extract_mpdf_library' ) ) {
1777 + /**
1778 + * Extract mPDF library ( verson 7.1.5 ) from zip-archive
1779 + *
1780 + * @param string $zip_file Path to zip-archive.
1781 + * @param string $upload_dir Path to "Upload" folder.
1782 + * @return string $result Result message.
1783 + */
1784 + function pdfprnt_extract_mpdf_library( $zip_file, $upload_dir ) {
1785 + global $wpdb;
1786 +
1787 + $result = array();
1788 + /* check permissions */
1789 + if ( is_writable( $upload_dir ) ) {
1790 + $zip = new Pdfprnt_ZipArchive();
1791 + /* open zip-archive */
1792 + if ( true === $zip->open( $zip_file ) ) {
1793 + /* extract folder with fonts */
1794 + $errors = $zip->extractSubdirTo( $upload_dir, 'mpdf' );
1795 + $zip->close();
1414 1796 if ( empty( $errors ) ) {
1415 - $result['done'] = __( 'Additional fonts were successfully loaded', 'pdf-print' );
1416 - $pdfprnt_options_array['additional_fonts'] = count( scandir( $destination ) );
1417 - update_option( 'pdfprnt_options_array', $pdfprnt_options_array );
1418 - if ( is_multisite() ) {
1419 - $network_options['additional_fonts'] = $pdfprnt_options_array['additional_fonts'];
1420 - update_site_option( 'pdfprnt_options_array', $network_options );
1421 - }
1797 + $options_default = pdfprnt_get_options_default();
1798 + $value = $options_default['mpdf_library_version'];
1799 + $result['done'] = esc_html__( 'The mPDF library has been loaded successfully.', 'pdf-print' );
1800 + unlink( $zip_file );
1422 1801 } else {
1423 - $result['error'] = __( 'Some errors occur during loading files', 'pdf-print' );
1802 + $result['error'] = esc_html__( 'Some errors occurred during loading files.', 'pdf-print' );
1424 1803 }
1425 1804 } else {
1426 - $result['error'] = __( 'Some errors occur during loading files', 'pdf-print' );
1805 + $result['error'] = esc_html__( 'Can not extract files from zip-archive.', 'pdf-print' );
1806 + unlink( $zip_file );
1427 1807 }
1428 1808 } else {
1429 - $result['error'] = __( 'Cannot create "uploads/pdf-print-fonts" folder. Check your permissions', 'pdf-print' );
1809 + $result['error'] = sprintf( esc_html__( 'Cannot extract files into %s folder. Check your permissions.', 'pdf-print' ), $upload_dir );
1430 1810 }
1811 + if ( ! isset( $value ) ) {
1812 + $value = '6.1';
1813 + }
1814 +
1815 + $opt = 'mpdf_library_version';
1816 + pdfprnt_update_option( $opt, $value, true );
1431 1817 return $result;
1432 1818 }
1433 1819 }
1434 1820
1435 -/**
1436 - * Download ZIP-archive with MPDF library,
1437 - * copy fonts to folder 'pdf-print-fons'
1438 - */
1439 1821 if ( ! function_exists( 'pdfprnt_load_and_copy' ) ) {
1440 - function pdfprnt_load_and_copy( $zip_file, $upload_dir ) {
1441 - if ( file_exists( $zip_file ) )
1442 - unlink( $zip_file );
1443 - /* load ZIP-archive */
1444 - $result = pdfprnt_download_zip( $zip_file, $upload_dir );
1445 - /* if ZIP-archive was download successfully */
1446 - if ( isset( $result['done'] ) )
1822 + /**
1823 + * Download ZIP-archive with MPDF library,
1824 + * copy fonts to folder 'pdf-print-fons'
1825 + *
1826 + * @param string $zip_file path to zip-archive.
1827 + * @param string $upload_dir path to "Upload" folder.
1828 + * @param boolean $url url for archive.
1829 + * @param boolean $old_dir old dir for archive.
1830 + * @return string $result result message.
1831 + */
1832 + function pdfprnt_load_and_copy( $zip_file, $upload_dir, $url, $old_dir = '' ) {
1833 + $result = file_exists( $zip_file ) ? array( 'done' => 'ok' ) : pdfprnt_download_zip( $zip_file, $upload_dir, $url );
1834 + if ( is_multisite() ) {
1835 + switch_to_blog( 1 );
1836 + $dir = wp_upload_dir();
1837 + restore_current_blog();
1838 + } else {
1839 + $dir = wp_upload_dir();
1840 + }
1841 + if ( ! empty( $old_dir ) && plugin_dir_path( __FILE__ ) . 'mpdf' === $old_dir && isset( $result['done'] ) ) {
1842 + $result = pdfprnt_extract_mpdf_library( $zip_file, $upload_dir );
1843 + } elseif ( isset( $result['done'] ) ) {
1447 1844 $result = pdfprnt_copy_fonts( $zip_file, $upload_dir );
1845 + }
1448 1846 return $result;
1449 1847 }
1450 1848 }
1451 -/**
1452 - * Function to load fonts for MPDF library
1453 - */
1849 +
1850 +
1454 1851 if ( ! function_exists( 'pdfprnt_load_fonts' ) ) {
1852 + /**
1853 + * Function to load fonts for MPDF library
1854 + */
1455 1855 function pdfprnt_load_fonts() {
1456 - global $pdfprnt_options_array;
1457 - if ( empty( $pdfprnt_options_array ) )
1458 - $pdfprnt_options_array = get_option( 'pdfprnt_options_array' );
1459 - $ajax_request = isset( $_REQUEST['action'] ) && 'pdfprnt_load_fonts' == $_REQUEST['action'] ? true : false;
1460 - $php_request = isset( $_REQUEST['pdfprnt_action'] ) && 'pdfprnt_load_fonts' == $_REQUEST['pdfprnt_action'] ? true : false;
1461 - $verified = isset( $_REQUEST['pdfprnt_ajax_nonce'] ) && wp_verify_nonce( $_REQUEST['pdfprnt_ajax_nonce'], 'pdfprnt_ajax_nonce' ) ? true : false;
1856 + global $pdfprnt_options;
1857 + if ( empty( $pdfprnt_options ) ) {
1858 + $pdfprnt_options = get_option( 'pdfprnt_options' );
1859 + }
1860 + $ajax_request = isset( $_REQUEST['action'] ) && 'pdfprnt_load_fonts' === sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) ? true : false;
1861 + $php_request = isset( $_REQUEST['pdfprnt_action'] ) && 'pdfprnt_load_fonts' === sanitize_text_field( wp_unslash( $_REQUEST['pdfprnt_action'] ) ) ? true : false;
1862 + $verified = isset( $_REQUEST['pdfprnt_ajax_nonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['pdfprnt_ajax_nonce'] ) ), 'pdfprnt_ajax_nonce' ) ? true : false;
1863 + /* Sourse of the fonts */
1864 + $url = 'https://bestwebsoft.com/wp-content/plugins/paid-products/plugins/fontdownloads/?action=loading_fonts';
1462 1865 if ( ( $ajax_request || $php_request ) && $verified ) {
1463 1866 $result = array();
1464 1867 $flag = false;
1465 1868 /* get path to directory for ZIP-archive uploading */
@@ -1469,56 +1872,288 @@
1469 1872 restore_current_blog();
1470 1873 } else {
1471 1874 $upload_dir = wp_upload_dir();
1472 1875 }
1473 - $zip_file = $upload_dir['basedir'] . '/MPDF60.zip';
1474 - $destination = $upload_dir['basedir'] .'/pdf-print-fonts';
1876 + $zip_file = $upload_dir['basedir'] . '/mpdf-master.zip';
1877 + $destination = $upload_dir['basedir'] . '/pdf-print-fonts';
1475 1878 if ( file_exists( $destination ) ) { /* if folder with fonts already exists */
1476 - if ( is_multisite() ) {
1477 - $network_options = get_site_option( 'pdfprnt_options_array' ); /* get network options */
1478 - if ( $network_options['additional_fonts'] == count( scandir( $destination ) ) ) { /* if all fonts was loaded successfully */
1479 - $pdfprnt_options_array['additional_fonts'] = $network_options['additional_fonts'];
1480 - update_option( 'pdfprnt_options_array', $pdfprnt_options_array ); /* update only option of current blog */
1481 - $result['done'] = __( 'Additional fonts was successfully loaded', 'pdf-print' );
1879 + if ( is_multisite() ) {
1880 + $network_options = get_site_option( 'pdfprnt_options' ); /* get network options */
1881 + $files = scandir( $destination );
1882 + if ( intval( $network_options['additional_fonts'] ) === count( $files ) ) { /* if all fonts was loaded successfully */
1883 + $result['done'] = esc_html__( 'Additional fonts were loaded successfully.', 'pdf-print' );
1884 + $opt = 'additional_fonts';
1885 + pdfprnt_update_option( $opt, $network_options['additional_fonts'], true );
1482 1886 } else { /* if something wrong */
1483 - $result = pdfprnt_load_and_copy( $zip_file, $upload_dir['basedir'] ); /* load fonts */
1887 + $result = pdfprnt_load_and_copy( $zip_file, $upload_dir['basedir'], $url ); /* load fonts */
1484 1888 }
1485 1889 } else {
1486 - $result = pdfprnt_load_and_copy( $zip_file, $upload_dir['basedir'] ); /* load fonts */
1890 + $result = pdfprnt_load_and_copy( $zip_file, $upload_dir['basedir'], $url ); /* load fonts */
1487 1891 }
1488 1892 } else {
1489 1893 mkdir( $destination, 0755, true );
1490 - $result = pdfprnt_load_and_copy( $zip_file, $upload_dir['basedir'] );
1894 + $result = pdfprnt_load_and_copy( $zip_file, $upload_dir['basedir'], $url );
1491 1895 }
1492 - if ( $ajax_request )
1493 - echo json_encode( $result );
1494 - else
1896 + if ( $ajax_request ) {
1897 + echo wp_json_encode( $result );
1898 + } else {
1495 1899 return $result;
1900 + }
1496 1901 }
1497 - if ( $ajax_request )
1902 + if ( $ajax_request ) {
1498 1903 die();
1904 + }
1499 1905 }
1500 1906 }
1501 1907
1502 -if ( ! function_exists ( 'pdfprnt_plugin_banner' ) ) {
1503 - function pdfprnt_plugin_banner() {
1908 +if ( ! function_exists( 'pdfprnt_upgrade_library' ) ) {
1909 + /**
1910 + * Function to upgrade the MPDF library from version 6.1 to verson 7.1.5
1911 + *
1912 + * @return string $result result message
1913 + */
1914 + function pdfprnt_upgrade_library() {
1915 + global $pdfprnt_options, $wpdb;
1916 +
1917 + $ajax_request = isset( $_REQUEST['action'] ) && 'pdfprnt_upgrade_library' === $_REQUEST['action'] ? true : false;
1918 +
1919 + $php_request = isset( $_REQUEST['pdfprnt_action'] ) && 'pdfprnt_upgrade_library' === sanitize_text_field( wp_unslash( $_REQUEST['pdfprnt_action'] ) ) ? true : false;
1920 + $verified = isset( $_REQUEST['pdfprnt_ajax_nonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['pdfprnt_ajax_nonce'] ) ), 'pdfprnt_ajax_nonce' ) ? true : false;
1921 + $old_dir = plugin_dir_path( __FILE__ ) . 'mpdf';
1922 + $result = array();
1923 + if ( ( $ajax_request || $php_request ) && true === $verified ) {
1924 + /* get path to directory for ZIP-archive uploading */
1925 + if ( is_multisite() ) {
1926 + switch_to_blog( 1 );
1927 + $upload_dir = wp_upload_dir();
1928 + restore_current_blog();
1929 + } else {
1930 + $upload_dir = wp_upload_dir();
1931 + }
1932 + $zip_file = $upload_dir['basedir'] . '/mpdf.zip';
1933 +
1934 + /* Sourse of the MPDF library */
1935 + $url = 'https://bestwebsoft.com/wp-content/plugins/paid-products/plugins/pdf-print-mpdf/?action=loading_library';
1936 + $new_dir = $upload_dir['basedir'] . '/vendor';
1937 +
1938 + if ( ! file_exists( $new_dir ) ) {
1939 + $result = pdfprnt_load_and_copy( $zip_file, $upload_dir['basedir'], $url, $old_dir ); /* load library */
1940 + }
1941 + if ( ! isset( $result['error'] ) ) {
1942 + pdfprnt_delete_old_library( $old_dir );
1943 + }
1944 + }
1945 + if ( true === $ajax_request ) {
1946 + echo wp_json_encode( $result );
1947 + wp_die();
1948 + } else {
1949 + return $result;
1950 + }
1951 + }
1952 +}
1953 +
1954 +if ( ! function_exists( 'pdfprnt_pdf_count' ) ) {
1955 + /**
1956 + * Function to update pdf count generation
1957 + */
1958 + function pdfprnt_pdf_count() {
1959 + global $pdfprnt_options;
1960 + if ( empty( $pdfprnt_options ) ) {
1961 + $pdfprnt_options = get_option( 'pdfprnt_options' );
1962 + }
1963 + if ( 1 === $pdfprnt_options['count_generation'] ) {
1964 + $verified = isset( $_REQUEST['pdfprnt_ajax_nonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['pdfprnt_ajax_nonce'] ) ), 'pdfprnt_ajax_nonce' ) ? true : false;
1965 + if ( true === $verified && isset( $_REQUEST['id'] ) ) {
1966 + $count_generation = get_post_meta( intval( $_REQUEST['id'] ), 'pdfprnt_count_generation', true );
1967 + update_post_meta( intval( $_REQUEST['id'] ), 'pdfprnt_count_generation', (int) ++$count_generation );
1968 + }
1969 + }
1970 + wp_die();
1971 + }
1972 +}
1973 +
1974 +if ( ! function_exists( 'pdfprnt_delete_old_library' ) ) {
1975 + /**
1976 + * Delete old library
1977 + *
1978 + * @param string $dir path to library dir.
1979 + * @return bool resullt removing dir.
1980 + */
1981 + function pdfprnt_delete_old_library( $dir ) {
1982 + $files = scandir( $dir );
1983 + $files = array_diff( $files, array( '.', '..' ) );
1984 + foreach ( $files as $file ) {
1985 + ( is_dir( "$dir/$file" ) ) ? pdfprnt_delete_old_library( "$dir/$file" ) : unlink( "$dir/$file" );
1986 + }
1987 + return rmdir( $dir );
1988 + }
1989 +}
1990 +
1991 +if ( ! function_exists( 'pdfprnt_update_option' ) ) {
1992 + /**
1993 + * Update options
1994 + *
1995 + * @param string $opt option slug.
1996 + * @param string $value new value.
1997 + * @param bool $update_network (Optional) flag for update network.
1998 + */
1999 + function pdfprnt_update_option( $opt, $value, $update_network = false ) {
2000 + global $pdfprnt_options;
2001 + if ( empty( $pdfprnt_options ) ) {
2002 + $pdfprnt_options = get_option( 'pdfprnt_options' );
2003 + }
2004 + $pdfprnt_options[ $opt ] = $value;
2005 + update_option( 'pdfprnt_options', $pdfprnt_options );
2006 + if ( $update_network ) {
2007 + $network_options = get_site_option( 'pdfprnt_options' );
2008 + $network_options[ $opt ] = $value;
2009 + update_site_option( 'pdfprnt_options', $network_options );
2010 + }
2011 + }
2012 +}
2013 +
2014 +if ( ! function_exists( 'pdfprnt_get_pdf_page_sizes' ) ) {
2015 + /**
2016 + * Pafe sizes array
2017 + */
2018 + function pdfprnt_get_pdf_page_sizes() {
2019 + $page_sizes = array(
2020 + 'A0',
2021 + 'A1',
2022 + 'A2',
2023 + 'A3',
2024 + 'A4',
2025 + 'A5',
2026 + 'A6',
2027 + 'A7',
2028 + 'A8',
2029 + 'A9',
2030 + 'A10',
2031 + 'B0',
2032 + 'B1',
2033 + 'B2',
2034 + 'B3',
2035 + 'B4',
2036 + 'B5',
2037 + 'B6',
2038 + 'B7',
2039 + 'B8',
2040 + 'B9',
2041 + 'B10',
2042 + 'C0',
2043 + 'C1',
2044 + 'C2',
2045 + 'C3',
2046 + 'C4',
2047 + 'C5',
2048 + 'C6',
2049 + 'C7',
2050 + 'C8',
2051 + 'C9',
2052 + 'C10',
2053 + '4A0',
2054 + '2A0',
2055 + 'RA0',
2056 + 'RA1',
2057 + 'RA2',
2058 + 'RA3',
2059 + 'RA4',
2060 + 'SRA0',
2061 + 'SRA1',
2062 + 'SRA2',
2063 + 'SRA3',
2064 + 'SRA4',
2065 + 'Letter',
2066 + 'Legal',
2067 + 'Executive',
2068 + 'Folio',
2069 + 'Demy',
2070 + 'Royal',
2071 + 'A',
2072 + 'B',
2073 + );
2074 + $page_sizes = apply_filters( 'pdfprnt_get_pdf_page_sizes', $page_sizes );
2075 + return $page_sizes;
2076 + }
2077 +}
2078 +
2079 +if ( ! function_exists( 'pdfprnt_plugin_banner' ) ) {
2080 + /**
2081 + * Display plugn banner
2082 + */
2083 + function pdfprnt_plugin_banner() {
1504 2084 global $hook_suffix, $pdfprnt_plugin_info;
1505 - if ( 'plugins.php' == $hook_suffix ) {
1506 - bws_plugin_banner( $pdfprnt_plugin_info, 'pdfprnt', 'pdf-print', 'e2f2549f4d70bc4cb9b48071169d264e', '101', '//ps.w.org/pdf-print/assets/icon-128x128.png' );
2085 + if ( 'plugins.php' === $hook_suffix ) {
2086 + bws_plugin_banner_to_settings( $pdfprnt_plugin_info, 'pdfprnt_options', 'pdf-print', 'admin.php?page=pdf-print.php' );
2087 + if ( function_exists( 'bws_plugin_banner_to_promo' ) ) {
2088 + bws_plugin_banner_to_promo( $pdfprnt_plugin_info, 'pdfprnt_options', 'pdf-print', 'admin.php?page=pdf-print.php', array( __( 'Test your PDF Generation Settings', 'bestwebsoft' ), __( "Ensure your PDF & Print plugin is correctly configured. Check your settings now!", 'bestwebsoft' ) ) );
2089 + }
2090 +
2091 + if ( isset( $_REQUEST['page'] ) && 'pdf-print.php' === $_REQUEST['page'] ) {
2092 + bws_plugin_suggest_feature_banner( $pdfprnt_plugin_info, 'pdfprnt_options', 'pdf-print' );
2093 + }
1507 2094 }
1508 2095 }
1509 2096 }
1510 2097
1511 -/* Deleting plugin options on uninstalling */
2098 +if ( ! function_exists( 'pdfprnt_register_buttons_widget' ) ) {
2099 + /**
2100 + * Register buttons Widget
2101 + */
2102 + function pdfprnt_register_buttons_widget() {
2103 + global $pdfprnt_is_old_php;
2104 + if ( ! $pdfprnt_is_old_php ) {
2105 + if ( ! class_exists( 'Pdfprnt_Buttons_Widget' ) ) {
2106 + require_once dirname( __FILE__ ) . '/includes/class-pdfprnt-buttons-widget.php';
2107 + }
2108 + register_widget( 'Pdfprnt_Buttons_Widget' );
2109 + }
2110 + }
2111 +}
2112 +
2113 +
1512 2114 if ( ! function_exists( 'pdfprnt_uninstall' ) ) {
2115 + /**
2116 + * Deleting plugin options on uninstalling
2117 + */
1513 2118 function pdfprnt_uninstall() {
1514 - delete_option( 'pdfprnt_options_array' );
2119 + if ( ! function_exists( 'get_plugins' ) ) {
2120 + require_once ABSPATH . 'wp-admin/includes/plugin.php';
2121 + }
2122 + $all_plugins = get_plugins();
2123 +
2124 + if ( ! array_key_exists( 'pdf-print-pro/pdf-print-pro.php' /*pls */ && ! array_key_exists( 'pdf-print-plus/pdf-print-plus.php', $all_plugins )/* pls*/, $all_plugins ) ) {
2125 + global $wpdb;
2126 + if ( is_multisite() ) {
2127 + /* Get all blog ids */
2128 + $blogids = $wpdb->get_col( "SELECT `blog_id` FROM $wpdb->blogs" );
2129 + $tables = '';
2130 + $old_blog = $wpdb->blogid;
2131 + foreach ( $blogids as $blog_id ) {
2132 + switch_to_blog( $blog_id );
2133 + delete_option( 'pdfprnt_options' );
2134 + delete_option( 'widget_pdfprint_buttons' );
2135 + }
2136 + switch_to_blog( $old_blog );
2137 + delete_site_option( 'pdfprnt_options' );
2138 + delete_option( 'widget_pdfprnt_buttons' );
2139 + } else {
2140 + delete_option( 'pdfprnt_options' );
2141 + delete_option( 'widget_pdfprnt_buttons' );
2142 + }
2143 + }
2144 +
2145 + require_once dirname( __FILE__ ) . '/bws_menu/bws_include.php';
2146 + bws_include_init( plugin_basename( __FILE__ ) );
2147 + bws_delete_plugin( plugin_basename( __FILE__ ) );
1515 2148 }
1516 2149 }
1517 2150
1518 2151 /* Adding function to output PDF document or pirnt page */
1519 -add_action( 'wp', 'pdfprnt_print' );
2152 +register_activation_hook( __FILE__, 'pdfprnt_plugin_activate' );
2153 +add_action( 'wp', 'pdfprnt_print', 20, 1 );
1520 2154 add_action( 'wp_head', 'pdfprnt_auto_show_buttons_search_archive' );
2155 +add_action( 'plugins_loaded', 'pdfprnt_plugins_loaded' );
1521 2156 /* Initialization */
1522 2157 add_action( 'init', 'pdfprnt_init' );
1523 2158 add_action( 'admin_init', 'pdfprnt_admin_init' );
1524 2159 /* Adding stylesheets */
@@ -1524,18 +2159,36 @@
1524 2159 /* Adding stylesheets */
1525 2160 add_action( 'admin_enqueue_scripts', 'pdfprnt_admin_head' );
1526 2161 add_action( 'wp_enqueue_scripts', 'pdfprnt_admin_head' );
1527 2162 /* Adding 'BWS Plugins' admin menu */
1528 -add_action( 'admin_menu', 'pdfprnt_add_pages' );
2163 +add_action( 'admin_menu', 'pdfprnt_add_admin_menu' );
1529 2164 /* Add query vars */
1530 -add_filter( 'query_vars', 'print_vars_callback' );
2165 +add_filter( 'query_vars', 'pdfprnt_print_vars_callback' );
2166 +
2167 +add_shortcode( 'bws_pdfprint', 'pdfprnt_shortcode' );
2168 +add_shortcode( 'bws_pdfprint_pagebreak', 'pdfprnt_shortcode_pagebreak' );
2169 +
2170 +add_filter( 'bwsplgns_pdf_replace_content', 'pdfprnt_qr_code_content', 10, 1 );
2171 +
2172 +/* custom filter for bws button in tinyMCE */
2173 +add_filter( 'bws_shortcode_button_content', 'pdfprnt_shortcode_button_content' );
2174 +
1531 2175 /* Additional links on the plugin page */
1532 2176 add_filter( 'plugin_action_links', 'pdfprnt_action_links', 10, 2 );
1533 2177 add_filter( 'plugin_row_meta', 'pdfprnt_links', 10, 2 );
1534 2178 /* Adding buttons plugin to content */
1535 2179 add_filter( 'the_content', 'pdfprnt_content' );
2180 +/* Remove Print word from excerpt */
2181 +add_filter( 'get_the_excerpt', 'pdfprnt_excerpt' );
1536 2182 /* load additional fonts */
1537 2183 add_action( 'wp_ajax_pdfprnt_load_fonts', 'pdfprnt_load_fonts' );
2184 +/* load mPDF library */
2185 +add_action( 'wp_ajax_pdfprnt_upgrade_library', 'pdfprnt_upgrade_library' );
2186 +add_action( 'wp_ajax_pdfprnt_pdf_count', 'pdfprnt_pdf_count' );
2187 +add_action( 'wp_ajax_nopriv_pdfprnt_pdf_count', 'pdfprnt_pdf_count' );
1538 2188 /* Adding banner */
1539 2189 add_action( 'admin_notices', 'pdfprnt_plugin_banner' );
1540 -/* Plugin uninstall function */
1541 -register_uninstall_hook( __FILE__, 'pdfprnt_uninstall' );
2190 +
2191 +/* Register widget */
2192 +add_action( 'widgets_init', 'pdfprnt_register_buttons_widget' );
2193 +
2194 +add_action( 'bwsplgns_display_pdf_print_buttons', 'pdfprnt_display_plugin_buttons', 10, 2 );