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 +1995 -1017 1.8.0trunk View file →
@@ -1,664 +1,1085 @@
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.0
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.0" );
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_output_count_buttons, $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_output_count_buttons = 0;
83 - $pdfprnt_default_post_types = array();
237 + $default_post_types = array();
84 238 /* Default post types of WordPress. */
85 - foreach ( get_post_types( array( 'public' => 1, 'show_ui' => 1, '_builtin' => true ), 'names' ) as $value )
86 - $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';
87 252
88 - $pdfprnt_options_array_defaults = array(
89 - 'plugin_option_version' => $pdfprnt_plugin_info["Version"],
90 - 'position' => 'top-right',
91 - 'position_search_archive' => 'pdfprnt-left',
92 - 'position_custom' => 'pdfprnt-left',
93 - 'show_btn_print' => 1,
94 - 'show_btn_pdf' => 1,
95 - 'show_btn_print_search_archive' => 1,
96 - 'show_btn_pdf_search_archive' => 1,
97 - 'show_btn_print_custom' => 1,
98 - 'show_btn_pdf_custom' => 1,
99 - 'use_theme_stylesheet' => 0,
100 - 'tmpl_post' => 1,
101 - 'tmpl_search' => 1,
102 - 'tmpl_custom' => 1,
103 - 'tmpl_shorcode' => 1,
104 - 'use_types_posts' => $pdfprnt_default_post_types,
105 - 'show_print_window' => 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,
106 313 );
107 -
108 - if ( ! get_option( 'pdfprnt_options_array' ) )
109 - add_option( 'pdfprnt_options_array', $pdfprnt_options_array_defaults );
110 314
111 - $pdfprnt_options_array = get_option( 'pdfprnt_options_array' );
315 + $options_default = apply_filters( 'pdfprnt_get_additional_options_default', $options_default );
112 316
113 - if ( ! isset( $pdfprnt_options_array['plugin_option_version'] ) || $pdfprnt_options_array['plugin_option_version'] != $pdfprnt_plugin_info["Version"] ) {
114 - $pdfprnt_options_array = array_merge( $pdfprnt_options_array_defaults, $pdfprnt_options_array );
115 - $pdfprnt_options_array['plugin_option_version'] = $pdfprnt_plugin_info["Version"];
116 - update_option( 'pdfprnt_options_array', $pdfprnt_options_array );
317 + return $options_default;
318 + }
319 +}
320 +
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';
117 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
118 345 }
119 346 }
120 347
121 -/* Add admin page */
122 -if ( ! function_exists ( 'pdfprnt_settings_page' ) ) {
123 - function pdfprnt_settings_page () {
124 - global $pdfprnt_options_array, $wp_version, $pdfprnt_plugin_info, $bstwbsftwppdtplgns_options;
125 - $message = $error = "";
126 - $plugin_basename = plugin_basename( __FILE__ );
127 - $pdfprnt_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 - );
133 348
134 - if ( ! function_exists( 'get_plugins' ) )
135 - require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
136 - $all_plugins = get_plugins();
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';
137 356
138 - if ( isset( $_REQUEST['pdfprnt_position'] ) &&
139 - isset( $_REQUEST['pdfprnt_position_search_archive'] ) &&
140 - isset( $_REQUEST['pdfprnt_position_custom'] ) &&
141 - isset( $_REQUEST['pdfprnt_use_theme_stylesheet'] ) &&
142 - isset( $_REQUEST['pdfprnt_tmpl_post'] ) &&
143 - isset( $_REQUEST['pdfprnt_tmpl_custom'] ) &&
144 - isset( $_REQUEST['pdfprnt_tmpl_search'] ) &&
145 - check_admin_referer( $plugin_basename, 'pdfprnt_nonce_name' ) ) {
146 - $pdfprnt_options_array['position'] = $_REQUEST['pdfprnt_position'];
147 - $pdfprnt_options_array['position_search_archive'] = $_REQUEST['pdfprnt_position_search_archive'];
148 - $pdfprnt_options_array['position_custom'] = $_REQUEST['pdfprnt_position_custom'];
149 - $pdfprnt_options_array['tmpl_post'] = $_REQUEST['pdfprnt_tmpl_post'];
150 - $pdfprnt_options_array['tmpl_search'] = $_REQUEST['pdfprnt_tmpl_search'];
151 - $pdfprnt_options_array['tmpl_custom'] = $_REQUEST['pdfprnt_tmpl_custom'];
152 - $pdfprnt_options_array['use_theme_stylesheet'] = $_REQUEST['pdfprnt_use_theme_stylesheet'];
153 - $pdfprnt_options_array['show_btn_pdf'] = isset( $_REQUEST['pdfprnt_show_btn_pdf'] ) ? 1 : 0;
154 - $pdfprnt_options_array['show_btn_print'] = isset( $_REQUEST['pdfprnt_show_btn_print'] ) ? 1 : 0;
155 - $pdfprnt_options_array['show_btn_pdf_search_archive'] = isset( $_REQUEST['pdfprnt_show_btn_pdf_search_archive'] ) ? 1 : 0;
156 - $pdfprnt_options_array['show_btn_print_search_archive'] = isset( $_REQUEST['pdfprnt_show_btn_print_search_archive'] ) ? 1 : 0;
157 - $pdfprnt_options_array['show_btn_pdf_custom'] = isset( $_REQUEST['pdfprnt_show_btn_pdf_custom'] ) ? 1 : 0;
158 - $pdfprnt_options_array['show_btn_print_custom'] = isset( $_REQUEST['pdfprnt_show_btn_print_custom'] ) ? 1 : 0;
159 - $pdfprnt_options_array['tmpl_shorcode'] = isset( $_REQUEST['pdfprnt_tmpl_shorcode'] ) ? 1 : 0;
160 - $pdfprnt_options_array['show_print_window'] = isset( $_REQUEST['pdfprnt_show_print_window'] ) ? 1 : 0;
161 - $pdfprnt_options_array['use_types_posts'] = isset( $_REQUEST['pdfprnt_use_types_posts'] ) ? $_REQUEST['pdfprnt_use_types_posts'] : array();
162 - update_option ( 'pdfprnt_options_array', $pdfprnt_options_array );
163 - $message = __( 'Settings saved.', 'pdf-print' );
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' );
364 + } else {
365 + $page_title = '';
366 + $page_name = esc_html__( 'Headers & Footers', 'pdf-print' );
164 367 }
165 - /* GO PRO */
166 - if ( isset( $_GET['action'] ) && 'go_pro' == $_GET['action'] ) {
167 - $go_pro_result = bws_go_pro_tab_check( $plugin_basename );
168 - if ( ! empty( $go_pro_result['error'] ) )
169 - $error = $go_pro_result['error'];
170 - } ?>
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 + );
375 + }
376 + ?>
171 377 <div class="wrap">
172 - <div class="icon32 icon32-bws" id="icon-options-general"></div>
173 - <h2><?php _e( 'PDF & Print Settings', 'pdf-print' ); ?></h2>
174 - <h2 class="nav-tab-wrapper">
175 - <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>
176 - <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>
177 - <a class="nav-tab" href="http://bestwebsoft.com/products/pdf-print/faq/" target="_blank"><?php _e( 'FAQ', 'pdf-print' ); ?></a>
178 - <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>
179 - </h2>
180 - <div class="updated fade" <?php if ( empty( $message ) || "" != $error ) echo "style=\"display:none\""; ?>><p><strong><?php echo $message; ?></strong></p></div>
181 - <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>
182 - <div class="error" <?php if ( "" == $error ) echo "style=\"display:none\""; ?>><p><strong><?php echo $error; ?></strong></p></div>
183 - <?php if ( ! isset( $_GET['action'] ) ) { ?>
184 - <form method="post" action="admin.php?page=pdf-print.php" id="pdfprnt_settings_form">
185 - <table class="form-table pdfprnt_settings_table">
186 - <tr>
187 - <th scope="row"><?php _e( 'Use of theme stylesheet or plugin default style:', 'pdf-print' ); ?></th>
188 - <td>
189 - <select name="pdfprnt_use_theme_stylesheet">
190 - <option value="0" <?php if ( 0 == $pdfprnt_options_array['use_theme_stylesheet'] ) echo 'selected="selected"'; ?>><?php echo __( 'Default stylesheet', 'pdf-print' ); ?></option>
191 - <option value="1" <?php if ( 1 == $pdfprnt_options_array['use_theme_stylesheet'] ) echo 'selected="selected"'; ?>><?php echo __( 'Current theme stylesheet', 'pdf-print' ); ?></option>
192 - </select>
193 - </td>
194 - </tr>
195 - <tr>
196 - <th scope="row"><?php _e( 'The types of posts that the plugin will use:', 'pdf-print' ); ?></th>
197 - <td>
198 - <select name="pdfprnt_use_types_posts[]" multiple="multiple">
199 - <?php foreach ( get_post_types( array( 'public' => 1, 'show_ui' => 1 ), 'objects' ) as $key => $value ) : ?>
200 - <option value="<?php echo $key; ?>" <?php if ( in_array( $key, $pdfprnt_options_array['use_types_posts'] ) ) echo 'selected="selected"'; ?>><?php echo $value->label; ?></option>
201 - <?php endforeach; ?>
202 - </select>
203 - </td>
204 - </tr>
205 - <?php if ( is_plugin_active( 'portfolio/portfolio.php' ) || is_plugin_active( 'portfolio-pro/portfolio-pro.php' ) ) { ?>
206 - <tr>
207 - <th scope="row"></th>
208 - <td>
209 - <span class="pdfprnt_explanation"><?php echo __( 'If you are using a Portfolio plugin (powered by bestwebsoft.com) and you need the output pdf and print buttons next to each post, you just need to insert the strings in loop into the template source code in files portfolio.php and portfolio-post.php', 'pdf-print' ) . ' &#60;?php if ( function_exists( \'pdfprnt_show_buttons_for_bws_portfolio_post\' ) ) echo pdfprnt_show_buttons_for_bws_portfolio_post(); ?&#62;<br/> ' . __( ' In order to use PDF and Print buttons for all posts you need to put the strings below into the template source code in file portfolio.php', 'pdf-print' ) . ' &#60;?php if ( function_exists( \'pdfprnt_show_buttons_for_bws_portfolio\' ) ) echo pdfprnt_show_buttons_for_bws_portfolio(); ?&#62;'; ?></span>
210 - </td>
211 - </tr>
212 - <?php } ?>
213 - <tr>
214 - <th scope="row">
215 - <?php _e( 'Position of buttons in content:', 'pdf-print' ); ?>
216 - </th>
217 - <td>
218 - <select name="pdfprnt_position">
219 - <?php foreach ( $pdfprnt_positions_values as $key => $value ) { ?>
220 - <option value="<?php echo $key; ?>" <?php if ( $pdfprnt_options_array['position'] == $key ) echo 'selected="selected"'; ?>><?php echo $value; ?></option>
221 - <?php } ?>
222 - </select>
223 - </td>
224 - </tr>
225 - <tr>
226 - <th scope="row"><?php _e( 'Show:', 'pdf-print' ); ?></th>
227 - <td>
228 - <label><input type="checkbox" name="pdfprnt_show_btn_pdf" <?php if ( 1 == $pdfprnt_options_array['show_btn_pdf'] ) echo 'checked="checked"'; ?> /> <span><?php echo __( 'PDF button', 'pdf-print' ); ?></span></label><br />
229 - <label><input type="checkbox" name="pdfprnt_show_btn_print" <?php if ( 1 == $pdfprnt_options_array['show_btn_print'] ) echo 'checked="checked"'; ?> /> <span><?php echo __( 'Print button', 'pdf-print' ); ?></span></label>
230 - </td>
231 - </tr>
232 - <tr>
233 - <th scope="row">
234 - <?php _e( 'Default template setting for post:', 'pdf-print' ); ?>
235 - </th>
236 - <td>
237 - <div>
238 - <label>
239 - <img src="<?php echo plugins_url( 'images/template_left.jpg', __FILE__ ); ?>" alt="template_left" />
240 - <input type="radio" name="pdfprnt_tmpl_post" value="1" <?php if ( 1 == $pdfprnt_options_array['tmpl_post'] ) echo 'checked="checked"'; ?> />
241 - </label>
242 - </div>
243 - <div>
244 - <label>
245 - <img src="<?php echo plugins_url( 'images/template_center.jpg', __FILE__ ); ?>" alt="template_center" />
246 - <input type="radio" name="pdfprnt_tmpl_post" value="2" <?php if ( 2 == $pdfprnt_options_array['tmpl_post'] ) echo 'checked="checked"'; ?> />
247 - </label>
248 - </div>
249 - <div>
250 - <label>
251 - <img src="<?php echo plugins_url( 'images/template_right.jpg', __FILE__ ); ?>" alt="template_right" />
252 - <input type="radio" name="pdfprnt_tmpl_post" value="3" <?php if ( 3 == $pdfprnt_options_array['tmpl_post'] ) echo 'checked="checked"'; ?> />
253 - </label>
254 - </div>
255 - </td>
256 - </tr>
257 - <tr>
258 - <th scope="row">
259 - <?php _e( 'Position of buttons in content for custom post:', 'pdf-print' ); ?>
260 - </th>
261 - <td>
262 - <select name="pdfprnt_position_custom">
263 - <option value="pdfprnt-left" <?php if ( 'pdfprnt-left' == $pdfprnt_options_array['position_custom'] ) echo 'selected="selected"'; ?>><?php echo __( 'Align Left', 'pdf-print' ); ?></option>
264 - <option value="pdfprnt-right" <?php if ( 'pdfprnt-right' == $pdfprnt_options_array['position_custom'] ) echo 'selected="selected"'; ?>><?php echo __( 'Align Right', 'pdf-print' ); ?></option>
265 - </select>
266 - </td>
267 - </tr>
268 - <tr>
269 - <th scope="row"><?php _e( 'Show for custom posts:', 'pdf-print' ); ?></th>
270 - <td>
271 - <label><input type="checkbox" name="pdfprnt_show_btn_pdf_custom" <?php if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) echo 'checked="checked"'; ?> /> <span><?php echo __( 'PDF button', 'pdf-print' ); ?></span></label><br />
272 - <label><input type="checkbox" name="pdfprnt_show_btn_print_custom" <?php if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) echo 'checked="checked"'; ?> /> <span><?php echo __( 'Print button', 'pdf-print' ); ?></span></label>
273 - </td>
274 - </tr>
275 - <tr>
276 - <th scope="row">
277 - <?php _e( 'Default template setting for custom posts:', 'pdf-print' ); ?>
278 - </th>
279 - <td>
280 - <div>
281 - <label>
282 - <img src="<?php echo plugins_url( 'images/template_left.jpg', __FILE__ ); ?>" alt="template_left" />
283 - <input type="radio" name="pdfprnt_tmpl_custom" value="1" <?php if ( 1 == $pdfprnt_options_array['tmpl_custom'] ) echo 'checked="checked"'; ?> />
284 - </label>
285 - </div>
286 - <div>
287 - <label>
288 - <img src="<?php echo plugins_url( 'images/template_center.jpg', __FILE__ ); ?>" alt="template_center" />
289 - <input type="radio" name="pdfprnt_tmpl_custom" value="2" <?php if ( 2 == $pdfprnt_options_array['tmpl_custom'] ) echo 'checked="checked"'; ?> />
290 - </label>
291 - </div>
292 - <div>
293 - <label>
294 - <img src="<?php echo plugins_url( 'images/template_right.jpg', __FILE__ ); ?>" alt="template_right" />
295 - <input type="radio" name="pdfprnt_tmpl_custom" value="3" <?php if ( 3 == $pdfprnt_options_array['tmpl_custom'] ) echo 'checked="checked"'; ?> />
296 - </label>
297 - </div>
298 - </td>
299 - </tr>
300 - <tr>
301 - <th scope="row"></th>
302 - <td>
303 - <span class="pdfprnt_explanation"><?php echo __( 'In order to use PDF and Print buttons on the custom page you should use the', 'pdf-print' ) . '&#60;?php if ( function_exists( \'pdfprnt_show_buttons_for_custom_post_type\' ) ) echo pdfprnt_show_buttons_for_custom_post_type( $custom_query ); ?&#62;' . ' ' . __( 'where you have to specify query parameters for your custom post.<br/> For example:', 'pdf-print' ) . ' ' . '&#60;?php if ( function_exists( \'pdfprnt_show_buttons_for_custom_post_type\' ) ) echo pdfprnt_show_buttons_for_custom_post_type( \'post_type=gallery&orderby=post_date\' ); ?&#62;' . ' ' . __('or', 'pdf-print') . ' ' . '&#60;?php if ( function_exists( \'pdfprnt_show_buttons_for_custom_post_type\' ) ) echo pdfprnt_show_buttons_for_custom_post_type( array( \'post_type\' => \'gallery\', \'orderby\' => \'post_date\' ) ); ?&#62;.' . ' ' . __( 'For more information on the syntax for assigning parameters to function see <a target="_blank" href="http://codex.wordpress.org/Class_Reference/WP_Query#Parameters">here</a>.', 'pdf-print' ); ?></span>
304 - </td>
305 - </tr>
306 - <tr>
307 - <th scope="row">
308 - <?php _e( 'Position of buttons on search or archive page:', 'pdf-print' ); ?>
309 - </th>
310 - <td>
311 - <select name="pdfprnt_position_search_archive">
312 - <option value="pdfprnt-left" <?php if ( 'pdfprnt-left' == $pdfprnt_options_array['position_search_archive'] ) echo 'selected="selected"'; ?>><?php echo __( 'Align Left', 'pdf-print' ); ?></option>
313 - <option value="pdfprnt-right" <?php if ( 'pdfprnt-right' == $pdfprnt_options_array['position_search_archive'] ) echo 'selected="selected"'; ?>><?php echo __( 'Align Right', 'pdf-print' ); ?></option>
314 - </select>
315 - </td>
316 - </tr>
317 - <tr>
318 - <th scope="row"><?php _e( 'Show for search or archive page:', 'pdf-print' ); ?></th>
319 - <td>
320 - <label><input type="checkbox" name="pdfprnt_show_btn_pdf_search_archive" <?php if ( 1 == $pdfprnt_options_array['show_btn_pdf_search_archive'] ) echo 'checked="checked"'; ?> /> <span><?php echo __( 'PDF button', 'pdf-print' ); ?></span></label><br />
321 - <label><input type="checkbox" name="pdfprnt_show_btn_print_search_archive" <?php if ( 1 == $pdfprnt_options_array['show_btn_print_search_archive'] ) echo 'checked="checked"'; ?> /> <span><?php echo __( 'Print button', 'pdf-print' ); ?></span></label>
322 - </td>
323 - </tr>
324 - <tr>
325 - <th scope="row">
326 - <?php _e( 'Default template setting for search and archive:', 'pdf-print' ); ?>
327 - </th>
328 - <td>
329 - <div>
330 - <label>
331 - <img src="<?php echo plugins_url( 'images/template_left.jpg', __FILE__ ); ?>" alt="template_left" />
332 - <input type="radio" name="pdfprnt_tmpl_search" value="1" <?php if ( 1 == $pdfprnt_options_array['tmpl_search'] ) echo 'checked="checked"'; ?> />
333 - </label>
334 - </div>
335 - <div>
336 - <label>
337 - <img src="<?php echo plugins_url( 'images/template_center.jpg', __FILE__ ); ?>" alt="template_center" />
338 - <input type="radio" name="pdfprnt_tmpl_search" value="2" <?php if ( 2 == $pdfprnt_options_array['tmpl_search'] ) echo 'checked="checked"'; ?> />
339 - </label>
340 - </div>
341 - <div>
342 - <label>
343 - <img src="<?php echo plugins_url( 'images/template_right.jpg', __FILE__ ); ?>" alt="template_right" />
344 - <input type="radio" name="pdfprnt_tmpl_search" value="3" <?php if ( 3 == $pdfprnt_options_array['tmpl_search'] ) echo 'checked="checked"'; ?> />
345 - </label>
346 - </div>
347 - </td>
348 - </tr>
349 - <tr>
350 - <th scope="row"></th>
351 - <td>
352 - <span class="pdfprnt_explanation"><?php echo __( 'In order to use PDF and Print buttons on the search page or archive page you should put the strings below into the template source code in files search.php or archives.php ', 'pdf-print' ) . ' &#60;?php if ( function_exists( \'pdfprnt_show_buttons_search_archive\' ) ) echo pdfprnt_show_buttons_search_archive(); ?&#62;'; ?></span>
353 - </td>
354 - </tr>
355 - <tr>
356 - <th scope="row">
357 - <?php _e( 'Settings for shorcodes:', 'pdf-print' ); ?>
358 - </th>
359 - <td>
360 - <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>
361 - </td>
362 - </tr>
363 - <tr>
364 - <th scope="row"><?php _e( 'Show the print window', 'pdf-print' ); ?></th>
365 - <td>
366 - <input type="checkbox" name="pdfprnt_show_print_window" <?php if ( 1 == $pdfprnt_options_array['show_print_window'] ) echo 'checked="checked"'; ?> />
367 - </td>
368 - </tr>
369 - </table>
370 - <div class="bws_pro_version_bloc">
371 - <div class="bws_pro_version_table_bloc">
372 - <div class="bws_table_bg"></div>
373 - <table class="form-table bws_pro_version">
374 - <tr>
375 - <th scope="row"><?php _e( 'PDF files name', 'pdf-print' ); ?></th>
376 - <td>
377 - <label><input disabled type="radio" name="pdfprntpr_select_file_name" value="1" /> <?php _e( 'use post or page slug', 'pdf-print' ); ?></label><br />
378 - <input type="radio" disabled name="pdfprntpr_select_file_name" value="0" /><input disabled type="text" name='pdfprntpr_file_name' value="mpdf" /><br />
379 - <span class="pdfprnt_explanation">
380 - <?php _e( 'File name cannot contain more than 195 symbols. The file name can include Latin letters, numbers and symbols "-" , "_" only.', 'pdf-print' ) ?>
381 - </span>
382 - </td>
383 - </tr>
384 - <tr>
385 - <th scope="row"><?php _e( 'Do not index pdf and print pages', 'pdf-print' ); ?></th>
386 - <td>
387 - <input type="checkbox" name="pdfprntpr_noindex_page" />
388 - </td>
389 - </tr>
390 - <tr valign="top">
391 - <th scope="row" colspan="2">
392 - * <?php _e( 'If you upgrade to Pro version all your settings will be saved.', 'pdf-print' ); ?>
393 - </th>
394 - </tr>
395 - </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 + ?>
396 404 </div>
397 - <div class="bws_pro_version_tooltip">
398 - <div class="bws_info">
399 - <?php _e( 'Unlock premium options by upgrading to a PRO version.', 'pdf-print' ); ?>
400 - <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>
401 - </div>
402 - <div class="bws_pro_links">
403 - <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">
404 - <?php _e( 'Go', 'pdf-print' ); ?> <strong>PRO</strong>
405 - </a>
406 - </div>
407 - <div class="clear"></div>
408 - </div>
409 405 </div>
410 - <input type="hidden" name="pdfprnt_form_submit" value="1" />
411 - <p class="submit">
412 - <input type="submit" class="button-primary" value="<?php _e( 'Save Changes', 'pdf-print' ); ?>" />
413 - </p>
414 - <?php wp_nonce_field( $plugin_basename, 'pdfprnt_nonce_name' ); ?>
415 - </form>
416 - <?php bws_plugin_reviews_block( $pdfprnt_plugin_info['Name'], 'pdf-print' ); ?>
417 - <?php } elseif ( 'extra' == $_GET['action'] ) { ?>
418 - <div class="bws_pro_version_bloc">
419 - <div class="bws_pro_version_table_bloc">
420 - <div class="bws_table_bg"></div>
421 - <table class="form-table bws_pro_version">
422 - <tr valign="top">
423 - <td colspan="2">
424 - <?php _e( 'Please choose the necessary post types (or single pages) where PDF & Print buttons will be displayed:', 'pdf-print' ); ?>
425 - </td>
426 - </tr>
427 - <tr valign="top">
428 - <td colspan="2">
429 - <label>
430 - <input disabled="disabled" checked="checked" id="twttrpr_jstree_url" type="checkbox" name="twttrpr_jstree_url" value="1" />
431 - <?php _e( "Show URL for pages", 'pdf-print' );?>
432 - </label>
433 - </td>
434 - </tr>
435 - <tr valign="top">
436 - <td colspan="2">
437 - <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' ); ?>" />
438 - </td>
439 - </tr>
440 - <tr valign="top">
441 - <td colspan="2">
442 - <input disabled="disabled" type="submit" class="button-primary" value="<?php _e( 'Save Changes', 'pdf-print' ); ?>" />
443 - </td>
444 - </tr>
445 - <tr valign="top">
446 - <th scope="row" colspan="2">
447 - * <?php _e( 'If you upgrade to Pro version all your settings will be saved.', 'pdf-print' ); ?>
448 - </th>
449 - </tr>
450 - </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>
451 409 </div>
452 - <div class="bws_pro_version_tooltip">
453 - <div class="bws_info">
454 - <?php _e( 'Unlock premium options by upgrading to a PRO version.', 'pdf-print' ); ?>
455 - <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>
456 - </div>
457 - <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">
458 - <?php _e( 'Go', 'pdf-print' ); ?> <strong>PRO</strong>
459 - </a>
460 - <div class="clear"></div>
461 - </div>
462 410 </div>
463 - <?php bws_plugin_reviews_block( $pdfprnt_plugin_info['Name'], 'pdf-print' ); ?>
464 - <?php } elseif ( 'go_pro' == $_GET['action'] ) {
465 - 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'] ) );
466 - } ?>
411 + <?php } ?>
467 412 </div>
468 - <?php }
413 + <?php
414 + }
469 415 }
470 416
471 -/* Positioning buttons in the page */
472 -if( ! function_exists( 'pdfprnt_content' ) ) {
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 +
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 + */
473 680 function pdfprnt_content( $content ) {
474 - if ( is_admin() )
475 - return;
681 + global $pdfprnt_options, $post, $pdfprnt_is_old_php;
476 682
477 - global $pdfprnt_options_array, $post;
478 - if ( ! in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) ) // Check for existence the type of posts.
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 ) ) {
479 684 return $content;
480 - if ( 1 == $pdfprnt_options_array['show_btn_pdf'] || 1 == $pdfprnt_options_array['show_btn_print'] ) {
481 - $position = ( 'top-left' == $pdfprnt_options_array['position'] || 'top-right' == $pdfprnt_options_array['position'] ) ? true : false;
482 - $str = '<div class="pdfprnt-' . $pdfprnt_options_array['position'] . '">';
483 - if ( 1 == $pdfprnt_options_array['show_btn_pdf'] ) {
484 - if ( ! is_front_page () )
485 - $permalink = add_query_arg( 'print' , 'pdf' , get_permalink( $post->ID ) );
486 - else
487 - $permalink = add_query_arg( 'print' , 'pdf' , get_permalink() . '?page_id=' . $post->ID );
488 - $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'] ) ) ) : '';
489 697 }
490 - if ( 1 == $pdfprnt_options_array['show_btn_print'] ) {
491 - if ( ! is_front_page () )
492 - $permalink = add_query_arg( 'print' , 'print' , get_permalink( $post->ID ) );
493 - else
494 - $permalink = add_query_arg( 'print' , 'print' , get_permalink() . '?page_id=' . $post->ID );
495 - $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 + }
496 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 + }
497 715 $str .= '</div>';
498 - if ( $position )
716 +
717 + if ( 'top-left' === $pdfprnt_options['buttons_position'] || 'top-right' === $pdfprnt_options['buttons_position'] ) {
499 718 $content = $str . $content;
500 - else
719 + } elseif ( 'bottom-left' === $pdfprnt_options['buttons_position'] || 'bottom-right' === $pdfprnt_options['buttons_position'] ) {
501 720 $content = $content . $str;
502 - unset( $position );
503 - unset( $str );
721 + } else {
722 + $content = $str . $content . $str;
723 + }
504 724 }
505 725 return $content;
506 726 }
507 727 }
508 728
509 -/* Output buttons for search or archive pages */
510 -if( ! function_exists( 'pdfprnt_show_buttons_search_archive' ) ) {
511 - function pdfprnt_show_buttons_search_archive() {
512 - global $pdfprnt_options_array, $pdfprnt_output_count_buttons, $wp, $posts;
513 - if ( 0 < $pdfprnt_output_count_buttons )
514 - return;
515 - if ( 1 !== $pdfprnt_options_array['show_btn_pdf_search_archive'] && 1 !== $pdfprnt_options_array['show_btn_print_search_archive'] )
516 - return;
517 - if ( ( ! is_search() && ! is_archive() ) || ( is_category() || ! have_posts() ) )
518 - return;
519 - /* Check for existence the type of posts. */
520 - $is_return = true;
521 - foreach ( $posts as $post ) {
522 - if ( in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) ) {
523 - $is_return = false;
524 - break;
525 - }
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 );
526 743 }
527 - if ( $is_return )
528 - return;
529 - $pdfprnt_output_count_buttons++;
530 - if ( empty( $wp->request ) )
531 - $current_url = add_query_arg( $wp->query_string, '', home_url() );
532 - else
533 - $current_url = home_url( $wp->request );
534 - $str = '<div class="' . $pdfprnt_options_array['position_search_archive'] . '">';
535 - if ( 1 == $pdfprnt_options_array['show_btn_pdf_search_archive'] ) {
536 - $permalink = add_query_arg( 'print' , 'pdf-page' , $current_url );
537 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
744 + if ( ! empty( $title['print'] ) ) {
745 + $temp = explode( $title['print'], $content );
538 746 }
539 - if ( 1 == $pdfprnt_options_array['show_btn_print_search_archive'] ) {
540 - $permalink = add_query_arg( 'print' , 'print-page' , $current_url );
541 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
747 + if ( isset( $temp[1] ) ) {
748 + return $temp[1];
749 + } else {
750 + return $content;
542 751 }
543 - $str .= '</div>';
544 - unset( $current_url );
545 - unset( $permalink );
546 - echo $str;
547 752 }
548 753 }
549 -if ( ! function_exists( 'pdfprnt_auto_show_buttons_search_archive' ) ) {
550 - function pdfprnt_auto_show_buttons_search_archive() {
551 - if ( is_archive() || is_search() )
552 - add_action( 'loop_start', 'pdfprnt_show_buttons_search_archive' );
754 +
755 +if ( ! function_exists( 'pdfprnt_show_buttons_search_archive' ) ) {
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;
784 + }
785 +
786 + $loop_position = current_filter();
787 + if ( ! ( $show_button_pdf || $show_button_print ) ) {
788 + return;
789 + }
790 +
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 + }
794 +
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 + }
816 + }
553 817 }
554 - add_action( 'wp_head', 'pdfprnt_auto_show_buttons_search_archive' );
555 818 }
556 819
557 -/* Output buttons of page for BWS Portfolio plugin */
558 -if( ! function_exists( 'pdfprnt_show_buttons_for_bws_portfolio' ) ) {
559 - function pdfprnt_show_buttons_for_bws_portfolio() {
560 - global $pdfprnt_options_array, $pdfprnt_output_count_buttons, $wp;
561 - if ( 0 < $pdfprnt_output_count_buttons )
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() {
825 + global $wp_query;
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;
845 + }
846 +
847 + $loop_position = current_filter();
848 + if ( ! ( $show_button_pdf || $show_button_print ) ) {
562 849 return;
563 - if ( 1 !== $pdfprnt_options_array['show_btn_pdf_custom'] && 1 !== $pdfprnt_options_array['show_btn_print_custom'] )
850 + }
851 +
852 + if ( ( 'loop_start' === $loop_position && intval( $pdfprnt_show_archive_start ) === 1 ) || ( 'loop_end' === $loop_position && intval( $pdfprnt_show_archive_end ) === 1 ) ) {
564 853 return;
565 - if ( ! in_array( 'portfolio', $pdfprnt_options_array['use_types_posts'] ) )
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 + }
877 + }
878 +}
879 +
880 +if ( ! function_exists( 'pdfprnt_auto_show_buttons_search_archive' ) ) {
881 + /**
882 + * Add buttons before or after the loop
883 + */
884 + function pdfprnt_auto_show_buttons_search_archive() {
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 ) ) {
566 888 return;
567 - $pdfprnt_output_count_buttons++;
568 - if ( empty( $wp->request ) )
569 - $current_url = add_query_arg( $wp->query_string, '', home_url() );
570 - else
571 - $current_url = home_url( $wp->request );
572 - $str = '<div class="' . $pdfprnt_options_array['position_custom'] . '">';
573 - if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) {
574 - $permalink = add_query_arg( 'print' , 'pdf-portfolio-page' , $current_url );
575 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
576 889 }
577 - if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) {
578 - $permalink = add_query_arg( 'print' , 'print-portfolio-page' , $current_url );
579 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
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 + }
930 + } else {
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' );
943 + }
580 944 }
581 - $str .= '</div>';
582 - unset( $current_url );
583 - unset( $permalink );
584 - return $str;
585 945 }
586 946 }
587 947
588 -/* Output buttons of post for BWS Portfolio plugin */
589 -if ( ! function_exists( 'pdfprnt_show_buttons_for_bws_portfolio_post' ) ) {
590 - function pdfprnt_show_buttons_for_bws_portfolio_post() {
591 - global $pdfprnt_options_array, $post;
592 - if ( 1 !== $pdfprnt_options_array['show_btn_pdf_custom'] && 1 !== $pdfprnt_options_array['show_btn_print_custom'] )
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 ) {
593 959 return;
594 - if ( ! in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) )
595 - return;
596 - $current_url = get_permalink();
597 - $str = '<div class="' . $pdfprnt_options_array['position_custom'] . '">';
598 - if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) {
599 - $permalink = add_query_arg( 'print' , 'pdf-portfolio' , $current_url );
600 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
601 960 }
602 - if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) {
603 - $permalink = add_query_arg( 'print' , 'print-portfolio' , $current_url );
604 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
961 +
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 ) );
605 964 }
606 - $str .= '</div>';
607 - unset( $current_url );
608 - unset( $permalink );
609 - return $str;
610 965 }
611 966 }
612 967
613 -/* Output buttons of page for custom post type */
614 968 if ( ! function_exists( 'pdfprnt_show_buttons_for_custom_post_type' ) ) {
615 - function pdfprnt_show_buttons_for_custom_post_type( $custom_query ) {
616 - global $pdfprnt_options_array, $pdfprnt_output_count_buttons;
617 - if ( 0 < $pdfprnt_output_count_buttons )
969 + /**
970 + * Output buttons of page for custom post type
971 + *
972 + * @param string $user_query (Optional) User query.
973 + * @return string $str
974 + */
975 + function pdfprnt_show_buttons_for_custom_post_type( $user_query = '' ) {
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 */
988 + ( ! ( is_array( $user_query ) || is_string( $user_query ) ) )
989 + ) {
618 990 return;
619 - if ( 1 !== $pdfprnt_options_array['show_btn_pdf_custom'] && 1 !== $pdfprnt_options_array['show_btn_print_custom'] )
620 - return;
621 - if ( ! is_array( $custom_query ) && ! is_string( $custom_query ) )
622 - return;
623 - $custom_query = new WP_Query( $custom_query );
624 - /* Check for existence the type of posts. */
625 - $is_return = true;
626 - foreach ( $custom_query->posts as $post ) {
627 - if ( in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) ) {
628 - $is_return = false;
629 - break;
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 +
996 + if ( empty( $user_query ) ) { /* set necessary values of parameters for pdf/print buttons */
997 + $nothing_else = false;
998 + if ( is_search() || is_archive() || is_category() || is_tax() || is_tag() || is_author() || ! pdfprnt_is_user_role_enabled() ) { /* search, cattegories, archives */
999 + foreach ( $posts as $value ) {
1000 + if ( in_array( $value->post_type, $pdfprnt_options['button_post_types']['pdf'], true ) || in_array( 'page', $pdfprnt_options['button_post_types']['print'], true ) ) {
1001 + $is_return = false;
1002 + break;
1003 + }
1004 + }
1005 + if ( $is_return ) {
1006 + return;
1007 + }
1008 + $pdf_query_parameter = 'pdf-search';
1009 + $print_query_parameter = 'print-search';
1010 + } elseif ( is_page() ) { /* pages */
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;
1013 + } else {
1014 + return;
1015 + }
1016 + } elseif ( is_single() ) { /* posts */
1017 + $post_type = get_post_type( $post->ID );
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;
1020 + } else {
1021 + return;
1022 + }
1023 + } else {
1024 + $nothing_else = true;
630 1025 }
1026 + if ( $nothing_else ) {
1027 + $pdf_query_parameter = 'pdf';
1028 + $print_query_parameter = 'print';
1029 + }
1030 + } else {
1031 + $custom_query = new WP_Query( $user_query );
1032 + $current_url = add_query_arg( $custom_query->query, '', $current_url );
1033 + /* Check for existence the type of posts. */
1034 + if ( ! empty( $custom_query->posts ) ) {
1035 + foreach ( $custom_query->posts as $post ) {
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 ) ) {
1037 + $is_return = false;
1038 + break;
1039 + }
1040 + }
1041 + }
1042 + if ( $is_return ) {
1043 + return;
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';
631 1049 }
632 - if ( $is_return )
633 - return;
634 - $pdfprnt_output_count_buttons++;
635 - $current_url = add_query_arg( $custom_query->query, '', home_url() );
636 - $str = '<div class="' . $pdfprnt_options_array['position_custom'] . '">';
637 - if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) {
638 - $permalink = add_query_arg( 'print' , 'pdf-custom-page' , $current_url );
639 - $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
1050 +
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' );
640 1056 }
641 - if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) {
642 - $permalink = add_query_arg( 'print' , 'print-custom-page' , $current_url );
643 - $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 );
644 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 + }
645 1064 $str .= '</div>';
646 - unset( $current_url );
647 - unset( $permalink );
648 - unset( $is_return );
649 - unset( $custom_query );
650 1065 return $str;
651 1066 }
652 1067 }
653 1068
654 -/* Add links */
655 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 + */
656 1077 function pdfprnt_action_links( $links, $file ) {
657 - if ( ! is_network_admin() ) {
1078 + if ( ! is_network_admin() && is_plugin_inactive( 'pdf-print-pro/pdf-print-pro.php' ) ) {
658 1079 $base = plugin_basename( __FILE__ );
659 - if ( $file == $base ) {
660 - $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>';
661 1082 array_unshift( $links, $settings_link );
662 1083 }
663 1084 }
664 1085 return $links;
@@ -664,224 +1085,247 @@
664 1085 return $links;
665 1086 }
666 1087 }
667 1088
668 -/* Add links */
669 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 + */
670 1097 function pdfprnt_links( $links, $file ) {
671 1098 $base = plugin_basename( __FILE__ );
672 - if ( $file == $base ) {
673 - if ( ! is_network_admin() )
674 - $links[] = '<a href="admin.php?page=pdf-print.php">' . __( 'Settings', 'pdf-print' ) . '</a>';
675 - $links[] = '<a href="http://wordpress.org/plugins/pdf-print/faq/" target="_blank">' . __( 'FAQ', 'pdf-print' ) . '</a>';
676 - $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>';
677 1105 }
678 1106 return $links;
679 1107 }
680 1108 }
681 1109
682 -/* Add stylesheets */
683 -if ( ! function_exists ( 'pdfprnt_admin_head' ) ) {
1110 +if ( ! function_exists( 'pdfprnt_admin_head' ) ) {
1111 + /**
1112 + * Add stylesheets
1113 + */
684 1114 function pdfprnt_admin_head() {
685 - global $wp_version;
686 - if ( $wp_version < 3.8 )
687 - wp_enqueue_style( 'pdfprnt_stylesheet', plugins_url( 'css/style_wp_before_3.8.css', __FILE__ ) );
688 - else
689 - wp_enqueue_style( 'pdfprnt_stylesheet', plugins_url( 'css/style.css', __FILE__ ) );
1115 + global $pdfprnt_plugin_info, $pdfprnt_options, $post;
690 1116
691 - if ( isset( $_GET['page'] ) && "pdf-print.php" == $_GET['page'] )
692 - wp_enqueue_script( 'pdfprnt_script', plugins_url( 'js/script.js', __FILE__ ) );
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 + }
693 1145 }
694 1146 }
695 1147
696 -/* Generate templates for pdf file or print */
697 -if ( ! function_exists( 'pdfprnt_generate_template' ) ) {
698 - function pdfprnt_generate_template( $content, $template = false, $isprint = false ) {
699 - global $pdfprnt_options_array;
700 - $tmpl = isset( $_GET['tmpl'] ) ? $_GET['tmpl'] : "";
701 - ob_start(); /* Starting output buffering */ ?>
702 - <html>
703 - <head>
704 - <?php if ( 1 == $pdfprnt_options_array['use_theme_stylesheet'] ) : ?>
705 - <link type="text/css" rel="stylesheet" href="<?php echo get_bloginfo( 'stylesheet_url' ); ?>" media="all" />
706 - <?php else: ?>
707 - <link type="text/css" rel="stylesheet" href="<?php echo plugins_url( 'css/default.css', __FILE__ ); ?>" media="all" />
708 - <?php endif;
709 - if ( ! $template )
710 - $template = $pdfprnt_options_array['tmpl_post'];
711 - switch ( $template ) { /* Using template choosed on settings page */
712 - case 1: /* Allign left template */ ?>
713 - <style type="text/css">
714 - h1, h2, h3, h4, h5, h6 {
715 - text-align: left;
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 + )
1175 + );
1176 + }
1177 + }
1178 +}
1179 +
1180 +if ( ! function_exists( 'pdfprnt_preg_replace' ) ) {
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 );
716 1199 }
717 - img {
718 - float: right;
719 - }
720 - </style>
721 - <?php break;
722 - case 2: /* Allign center template */ ?>
723 - <style type="text/css">
724 - h1, h2, h3, h4, h5, h6 {
725 - text-align: center;
726 - }
727 - img {
728 - float: left;
729 - }
730 - </style>
731 - <?php break;
732 - case 3: /* Allign right template */ ?>
733 - <style type="text/css">
734 - h1, h2, h3, h4, h5, h6 {
735 - text-align: right;
736 - }
737 - img {
738 - float: left;
739 - }
740 - </style>
741 - <?php break;
1200 + }
1201 + }
742 1202 }
743 - switch ( $tmpl ) { /* If got something by GET (from admin bar) */
744 - case 1: /* Allign left template */ ?>
745 - <style type="text/css">
746 - h1, h2, h3, h4, h5, h6 {
747 - text-align: left;
748 - }
749 - img {
750 - float: right;
751 - }
752 - </style>
753 - <?php break;
754 - case 2: /* Allign center template */ ?>
755 - <style type="text/css">
756 - h1, h2, h3, h4, h5, h6 {
757 - text-align: center;
758 - }
759 - img {
760 - float: left;
761 - }
762 - </style>
763 - <?php break;
764 - case 3: /* Allign right template */ ?>
765 - <style type="text/css">
766 - h1, h2, h3, h4, h5, h6 {
767 - text-align: right;
768 - }
769 - img {
770 - float: left;
771 - }
772 - </style>
773 - <?php break;
774 - }
775 - if ( $isprint && 1 == $pdfprnt_options_array['show_print_window'] ) {
776 - echo '<script>window.onload = function(){ window.print(); };</script>';
777 - } ?>
778 - </head>
779 - <body>
780 - <?php echo $content; ?>
781 - </body>
782 - </html>
783 - <?php $html = ob_get_contents(); /* Getting output buffering */
784 - ob_end_clean(); /* Closing output buffering */
785 - return $html; /* Now we done with template */
1203 + }
1204 + }
1205 + return $content;
786 1206 }
787 1207 }
788 1208
789 -if ( ! function_exists( 'pdfprnt_generate_template_for_bws_portfolio' ) ) {
790 - function pdfprnt_generate_template_for_bws_portfolio() {
791 - global $post;
792 - ob_start(); /* Starting output buffering */
793 - $short_descr = $link = $date_compl = '';
794 - $meta_values = get_post_custom( $post->ID );
795 - $post_thumbnail_id = get_post_thumbnail_id( $post->ID );
796 - if ( empty ( $post_thumbnail_id ) ) {
797 - $args = array(
798 - 'post_parent' => $post->ID,
799 - 'post_type' => 'attachment',
800 - 'post_mime_type' => 'image',
801 - 'numberposts' => 1
1209 +if ( ! function_exists( 'pdfprnt_generate_template' ) ) {
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' )
802 1235 );
803 - $attachments = get_children( $args );
804 - $post_thumbnail_id = key( $attachments );
805 1236 }
806 - $image = wp_get_attachment_image_src( $post_thumbnail_id, 'portfolio-thumb' );
807 - $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true );
808 - $image_desc = get_post( $post_thumbnail_id );
809 - $image_desc = $image_desc->post_content;
810 - $post_meta = get_post_meta( $post->ID, 'prtfl_information', true );
811 - if ( ! empty( $post_meta ) ) {
812 - $date_compl = $post_meta['_prtfl_date_compl'];
813 - if ( ! empty( $date_compl ) && 'in progress' != $date_compl ) {
814 - $date_compl = explode( '/', $date_compl );
815 - $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" />';
816 1246 }
817 - $link = $post_meta['_prtfl_link'];
818 - $short_descr = $post_meta['_prtfl_short_descr'];
819 - } ?>
820 - <img src="<?php echo $image[0]; ?>" width="<?php echo $image[1]; ?>" alt="<?php echo $image_alt; ?>" />
821 - <div>
822 - <p>
823 - <strong><?php _e( 'Date of completion', 'pdf-print' ); ?>:</strong> <?php echo $date_compl; ?><br/>
824 - <strong><?php _e( 'Link', 'pdf-print' ); ?>:</strong> <a href="<?php echo $link; ?>"><?php echo $link; ?></a><br/>
825 - <strong><?php _e( 'Description', 'pdf-print' ); ?>:</strong> <?php echo $short_descr; ?><br/>
826 - </p>
827 - </div>
828 - <?php $terms = wp_get_object_terms( $post->ID, 'portfolio_technologies' );
829 - if ( is_array( $terms ) && count( $terms ) > 0 ) { ?>
830 - <div style="clear:both;">
831 - <strong><?php _e( 'Technologies', 'pdf-print' ); ?>: </strong>
832 - <?php $count = 0;
833 - foreach ( $terms as $term ) {
834 - if ( 0 < $count )
835 - echo ', ';
836 - echo '<a href="' . get_term_link( $term->slug, 'portfolio_technologies' ) . '" title="' . sprintf( __( "View all posts in %s" ), $term->name ) . '" ' . '>' . $term->name . '</a>';
837 - $count++;
838 - } ?>
839 - </div>
840 - <?php }
841 - $content = ob_get_contents(); /* Getting output buffering */
842 - ob_end_clean(); /* Closing output buffering */
843 - 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;
844 1276 }
845 1277 }
846 1278
847 -/* Generate query posts for Portfolio plugin */
848 -if ( ! function_exists( 'generate_query_posts_for_portfolio' ) ) {
849 - function generate_query_posts_for_portfolio() {
850 - global $wp_query;
851 - $paged = isset( $wp_query->query_vars['paged'] ) ? $wp_query->query_vars['paged'] : 1;
852 - $technologies = isset( $wp_query->query_vars["technologies"] ) ? $wp_query->query_vars["technologies"] : "";
853 - if ( "" != $technologies ) {
854 - $args = array(
855 - 'post_type' => 'portfolio',
856 - 'post_status' => 'publish',
857 - 'posts_per_page' => get_option('posts_per_page'),
858 - 'paged' => $paged,
859 - 'tax_query' => array(
860 - array(
861 - 'taxonomy' => 'portfolio_technologies',
862 - 'field' => 'slug',
863 - 'terms' => $technologies
864 - )
865 - )
866 - );
867 - } else {
868 - $args = array(
869 - 'post_type' => 'portfolio',
870 - 'post_status' => 'publish',
871 - 'posts_per_page' => get_option('posts_per_page'),
872 - 'paged' => $paged
873 - );
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 + }
874 1308 }
875 - query_posts( $args );
1309 + return $html;
876 1310 }
877 1311 }
878 1312
879 -/* Output print page or pdf document and include plugin script */
880 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 + */
881 1319 function pdfprnt_print( $query ) {
882 - global $pdfprnt_options_array, $posts, $post;
883 - 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 ) ) {
884 1328 remove_all_filters( 'the_content' );
885 1329 add_filter( 'the_content', 'capital_P_dangit', 11 );
886 1330 add_filter( 'the_content', 'wptexturize' );
887 1331 add_filter( 'the_content', 'convert_smilies' );
@@ -886,314 +1330,830 @@
886 1330 add_filter( 'the_content', 'wptexturize' );
887 1331 add_filter( 'the_content', 'convert_smilies' );
888 1332 add_filter( 'the_content', 'convert_chars' );
889 1333 add_filter( 'the_content', 'wpautop' );
890 - if ( 1 == $pdfprnt_options_array['tmpl_shorcode'] ) {
891 - add_filter( 'the_content', 'do_shortcode' ); /* executing shorcodes on the page */
892 - } else {
893 - $pattern = get_shortcode_regex();
894 - if ( preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches ) ) { /* getting all shortcodes we are using */
895 - foreach ( array_unique( $matches[0] ) as $value) {
896 - $post->post_content = str_replace( $value, "", $post->post_content ); /* replacing shorcodes 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 );
897 1363 }
898 - }
899 - }
900 - switch ( $print ) {
901 - case 'pdf': /* Content for PDF from post */
902 - include ( 'mpdf/mpdf.php' );
903 - $mpdf = new mPDF( get_bloginfo( 'charset' ) );
904 - $mpdf = new mPDF('+aCJK');
905 - $user_info = get_userdata( $post->post_author );
906 - $mpdf->SetAutoFont(AUTOFONT_ALL);
907 - $mpdf->SetAuthor( $user_info->display_name );
908 - $mpdf->SetTitle( $post->post_title );
909 - $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
910 - $html = '<div class="container">
911 - <div class="title"><h1><a href="' . get_permalink( $post->ID ) . '">' . $post->post_title . '</a></h1></div><br/>
912 - <div class="content">' . apply_filters( 'the_content', $post->post_content ) . '</div>
913 - </div>';
914 - $mpdf->WriteHTML( pdfprnt_generate_template( $html ) );
915 - $mpdf->Output();
916 - unset( $user_info );
917 - unset( $html );
918 - unset( $mpdf );
919 - die();
920 1364 break;
921 - case 'print': /* Content for printing from post */
922 - $html = '<div class="container">
923 - <div class="title"><h1>' . $post->post_title . '</h1></div><br/>
924 - <div class="content">' . apply_filters( 'the_content', $post->post_content ) . '</div>
925 - </div>';
926 - echo pdfprnt_generate_template( $html, false, true );
927 - unset( $html );
928 - die();
1365 + case 'search':
1366 + do_action( 'pdfprnt_rewrite_posts_woocommerce' );
929 1367 break;
930 - case 'pdf-page': /* Content for PDF from archive or searching page */
931 - $html = '';
932 - $titles = array();
933 - $authors = array();
934 - include ( 'mpdf/mpdf.php' );
935 - $mpdf = new mPDF( get_bloginfo( 'charset' ) );
936 - $mpdf = new mPDF('+aCJK');
937 - foreach ( $posts as $p ) {
938 - if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
939 - continue;
940 - $titles[] = $p->post_title;
941 - $user_info = get_userdata( $p->post_author );
942 - $authors[] = $user_info->display_name;
943 - $html .= '<div class="container">
944 - <div class="title"><h1><a href="' . get_permalink( $p->ID ) . '">' . $p->post_title . '</a></h1></div><br/>
945 - <div class="content">' . apply_filters( 'the_content', $p->post_content ) . '</div>
946 - </div><br/><hr/><br/>';
947 - unset( $user_info );
1368 + default:
1369 + break;
1370 + }
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();
948 1397 }
949 - $titles = array_unique( $titles );
950 - $authors = array_unique( $authors );
951 - $mpdf->SetAutoFont(AUTOFONT_ALL);
952 - $mpdf->SetTitle( implode( ',', $titles ) );
953 - $mpdf->SetAuthor( implode( ',', $authors ) );
954 - $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
955 - $mpdf->WriteHTML( pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_search'] ) );
1398 + @define( '_MPDF_SYSTEM_TTFONTS', $upload_dir['basedir'] . '/pdf-print-fonts/' );
1399 + }
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();
1418 + }
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 + }
1433 + }
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 );
1437 + }
1438 + if ( 1 === intval( $pdfprnt_options['disable_links'] ) ) {
1439 + $html .= '<style> a {text-decoration: none; color:#000000 !important; } </style>';
1440 + }
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 = ' | ';
1452 + }
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 ++;
1464 + }
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';
1488 + }
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 {
956 1534 $mpdf->Output();
957 - unset( $authors );
958 - unset( $titles );
959 - unset( $html );
960 - unset( $mpdf );
961 - die();
962 - break;
963 - case 'print-page': /* Content for printing from archive or searching page */
964 - $html = '';
965 - foreach ( $posts as $p ) {
966 - if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
967 - continue;
968 - $html .= '<div class="container">
969 - <div class="title"><h1>' . $p->post_title . '</h1></div><br/>
970 - <div class="content">' . apply_filters( 'the_content', $p->post_content ) . '</div>
971 - </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();
972 1552 }
973 - echo pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_search'], true );
974 - unset( $html );
975 - die();
976 - break;
977 - case 'pdf-portfolio': /* Content for PDF from portfolio post */
978 - include ( 'mpdf/mpdf.php' );
979 - $mpdf = new mPDF( get_bloginfo( 'charset' ) );
980 - $mpdf = new mPDF( '+aCJK' );
981 - $user_info = get_userdata( $post->post_author );
982 - $mpdf->SetAutoFont( AUTOFONT_ALL );
983 - $mpdf->SetAuthor( $user_info->display_name );
984 - $mpdf->SetTitle( $post->post_title );
985 - $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
986 - $html = '<div class="container">
987 - <div class="title"><h1><a href="' . get_permalink( $post->ID ) . '">' . $post->post_title . '</a></h1></div><br/>
988 - <div class="content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
989 - </div>';
990 - $mpdf->WriteHTML( pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'] ) );
991 - $mpdf->Output();
992 - unset( $html );
993 - unset( $user_info );
994 - unset( $mpdf );
995 - die();
996 - break;
997 - case 'print-portfolio': /* Content for printing from porfolio post */
998 - $html = '<div class="container">
999 - <div class="title"><h1>' . $post->post_title . '</h1></div><br/>
1000 - <div class="content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
1001 - </div>';
1002 - echo pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'], true );
1003 - unset( $html );
1004 - die();
1005 - break;
1006 - case 'pdf-portfolio-page': /* Content for PDF from portfolio page */
1007 - $html = '';
1008 - $titles = array();
1009 - $authors = array();
1010 - generate_query_posts_for_portfolio();
1011 - while ( have_posts() ) {
1012 - the_post();
1013 - global $post;
1014 - if ( ! in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) )
1015 - continue;
1016 - $titles[] = $post->post_title;
1017 - $user_info = get_userdata( $post->post_author );
1018 - $authors[] = $user_info->display_name;
1019 - $html .= '<div class="container">
1020 - <div class="title"><h1><a href="' . get_permalink( $post->ID ) . '">' . $post->post_title . '</a></h1></div><br/>
1021 - <div class="content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
1022 - </div><br/><hr/><br/>';
1023 - unset( $user_info );
1553 +
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 + }
1024 1564 }
1025 - include ( 'mpdf/mpdf.php' );
1026 - $mpdf = new mPDF( get_bloginfo( 'charset' ) );
1027 - $mpdf = new mPDF( '+aCJK' );
1028 - $titles = array_unique( $titles );
1029 - $authors = array_unique( $authors );
1030 - $mpdf->SetAutoFont( AUTOFONT_ALL );
1031 - $mpdf->SetTitle( implode( ',', $titles ) );
1032 - $mpdf->SetAuthor( implode( ',', $authors ) );
1033 - $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
1034 - $mpdf->WriteHTML( pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'] ) );
1035 - $mpdf->Output();
1036 - unset( $authors );
1037 - unset( $titles );
1038 - unset( $html );
1039 - unset( $mpdf );
1040 - die();
1041 - break;
1042 - case 'print-portfolio-page': /* Content for printing from portfolio page */
1043 - generate_query_posts_for_portfolio();
1044 - $html = '';
1045 - while ( have_posts() ) {
1046 - the_post();
1047 - global $post;
1048 - if ( ! in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) )
1049 - continue;
1050 - $html .= '<div class="container">
1051 - <div class="title"><h1>' . $post->post_title . '</h1></div><br/>
1052 - <div class="content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
1053 - </div><br/><hr/><br/>';
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 );
1054 1568 }
1055 - echo pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'], true );
1056 - unset( $html );
1057 - die();
1058 - break;
1059 - case 'pdf-custom-page': /* Content for PDF from custom post */
1060 - $html = '';
1061 - $titles = $authors = array();
1062 - foreach ( $posts as $p ) {
1063 - if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
1064 - continue;
1065 - $titles[] = $p->post_title;
1066 - $user_info = get_userdata( $p->post_author );
1067 - $authors[] = $user_info->display_name;
1068 - $html .= '<div class="container">';
1069 - $html .= '<div class="title"><h1><a href="' . get_permalink( $p->ID ) . '">' . $p->post_title . '</a></h1></div><br/>';
1070 - $html .= '<div class="content">';
1071 - if ( has_post_thumbnail( $p->ID ) )
1072 - $html .= get_the_post_thumbnail( $p->ID, 'thumbnail' );
1073 - $html .= apply_filters( 'the_content', $p->post_content ) . '</div></div><br/><hr/><br/>';
1074 - unset( $user_info );
1569 + if ( 1 === intval( $pdfprnt_options['disable_links'] ) ) {
1570 + $html .= '<style> a {text-decoration: none; color:#000000 !important; } </style>';
1075 1571 }
1076 - include ( 'mpdf/mpdf.php' );
1077 - $mpdf = new mPDF( get_bloginfo( 'charset' ) );
1078 - $mpdf = new mPDF( '+aCJK' );
1079 - $titles = array_unique( $titles );
1080 - $authors = array_unique( $authors );
1081 - $mpdf->SetAutoFont( AUTOFONT_ALL );
1082 - $mpdf->SetTitle( implode( ',', $titles ) );
1083 - $mpdf->SetAuthor( implode( ',', $authors ) );
1084 - $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
1085 - $mpdf->WriteHTML( pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'] ) );
1086 - $mpdf->Output();
1087 - unset( $authors );
1088 - unset( $titles );
1089 - unset( $html );
1090 - unset( $mpdf );
1091 - die();
1092 - break;
1093 - case 'print-custom-page': /* Content for printing from custom post */
1094 - $html = '';
1095 - foreach ( $posts as $p ) {
1096 - if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
1097 - continue;
1098 - $html .= '<div class="container">';
1099 - $html .= '<div class="title"><h1>' . $p->post_title . '</h1></div><br/>';
1100 - $html .= '<div class="content">';
1101 - if ( has_post_thumbnail( $p->ID ) )
1102 - $html .= get_the_post_thumbnail( $p->ID, 'thumbnail' );
1103 - $html .= apply_filters( 'the_content', $p->post_content ) . '</div>
1104 - </div><br/><hr/><br/>';
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 = ' | ';
1105 1581 }
1106 - echo pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'], true );
1107 - unset( $html );
1108 - die();
1109 - break;
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;
1615 + }
1616 + }
1617 +}
1618 +
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 ) {
1626 + $query_vars[] = 'print';
1627 + return $query_vars;
1628 + }
1629 +}
1630 +
1631 +if ( class_exists( 'ZipArchive' ) && ! class_exists( 'Pdfprnt_ZipArchive' ) ) {
1632 + /**
1633 + * Class Pdfprnt_ZipArchive for extracting
1634 + * necessary folder from zip-archive
1635 + */
1636 + class Pdfprnt_ZipArchive extends ZipArchive {
1637 + /**
1638 + * Constructor of class
1639 + *
1640 + * @param string $destination Directory for zip.
1641 + * @param string $subdir Subdirectory for zip.
1642 + */
1643 + public function extractSubdirTo( $destination, $subdir ) {
1644 + $errors = array();
1645 + $charset = get_bloginfo( 'charset' );
1646 + /* Prepare dirs */
1647 + $destination = str_replace( array( '/', '\\' ), DIRECTORY_SEPARATOR, $destination );
1648 + $subdir = str_replace( array( '/', '\\' ), '/', $subdir );
1649 +
1650 + if ( substr( $destination, mb_strlen( DIRECTORY_SEPARATOR, $charset ) * -1 ) !== DIRECTORY_SEPARATOR ) {
1651 + $destination .= DIRECTORY_SEPARATOR;
1110 1652 }
1653 +
1654 + if ( substr( $subdir, -1 ) !== '/' ) {
1655 + $subdir .= '/';
1656 + }
1657 + /* Extract files */
1658 + for ( $i = 0; $i < $this->numFiles; $i++ ) {
1659 + $filename = $this->getNameIndex( $i );
1660 +
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 );
1664 +
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 + }
1672 + } else {
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 );
1677 + }
1678 + }
1679 + /* New file */
1680 + if ( @file_put_contents( $destination . $relative_path, $this->getFromIndex( $i ) ) === false ) {
1681 + $errors[ $i ] = $filename;
1682 + }
1683 + }
1684 + }
1685 + }
1686 + }
1687 + return $errors;
1111 1688 }
1112 1689 }
1113 1690 }
1114 1691
1115 -/* Add query vars */
1116 -if ( ! function_exists( 'print_vars_callback' ) ) {
1117 - function print_vars_callback( $query_vars ) {
1118 - $query_vars[] = 'print';
1119 - $query_vars[] = 'tmpl';
1120 - return $query_vars;
1692 +if ( ! function_exists( 'pdfprnt_download_zip' ) ) {
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 */
1703 + if ( is_writable( $upload_dir ) ) {
1704 + /* Load ZIP-archive */
1705 + $result = array();
1706 + $fp = fopen( $zip_file, 'w+' );
1707 + /* File size is too big to use wp_remote_get function */
1708 + $curl = curl_init();
1709 + $curl_parametres = array(
1710 + CURLOPT_URL => $url,
1711 + CURLOPT_FILE => $fp,
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' ),
1713 + );
1714 + curl_setopt_array( $curl, $curl_parametres );
1715 + if ( curl_exec( $curl ) ) {
1716 + $result['done'] = 'ok';
1717 + } else {
1718 + $result['error'] = curl_error( $curl ) . '<br />' . esc_html__( 'Check your internet connection', 'pdf-print' );
1719 + }
1720 + curl_close( $curl );
1721 + fclose( $fp );
1722 + } else {
1723 + $result['error'] = esc_html__( 'Cannot load files in to "uploads" folder. Check your permissions', 'pdf-print' );
1724 + }
1725 + return $result;
1121 1726 }
1122 1727 }
1123 1728
1124 -/* Add custom admin bar menu */
1125 -if ( ! function_exists( 'pdfprnt_admin_bar_menu' ) ) {
1126 - function pdfprnt_admin_bar_menu() {
1127 - global $pdfprnt_options_array, $wp_admin_bar, $wp, $posts;
1128 - if ( ! is_super_admin() || ! is_admin_bar_showing() || is_admin() ) /* Checking user */
1129 - return;
1130 - if ( ( ! is_search() && ! is_archive() ) || ( is_category() || ! have_posts() ) )
1131 - return;
1132 - $is_return = true;
1133 - foreach ( $posts as $post ) {
1134 - if ( in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) ) {
1135 - $is_return = false;
1136 - break;
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 + */
1736 + function pdfprnt_copy_fonts( $zip_file, $upload_dir ) {
1737 + global $pdfprnt_options;
1738 + if ( empty( $pdfprnt_options ) ) {
1739 + $pdfprnt_options = get_option( 'pdfprnt_options' );
1740 + }
1741 + $destination = $upload_dir . '/pdf-print-fonts';
1742 + if ( ! file_exists( $destination ) ) {
1743 + mkdir( $destination, 0755, true );
1744 + }
1745 + $result = array();
1746 + /* check permissions */
1747 + if ( is_writable( $destination ) ) {
1748 + $zip = new Pdfprnt_ZipArchive();
1749 + /* open zip-archive */
1750 + if ( true === $zip->open( $zip_file ) ) {
1751 + /* extract folder with fonts */
1752 + $errors = $zip->extractSubdirTo( $destination, 'mpdf-master/ttfonts' );
1753 + $zip->close();
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' );
1762 + unlink( $zip_file );
1137 1763 }
1764 + } else {
1765 + $result['error'] = sprintf( esc_html__( 'Cannot create %s folder. Check your permissions.', 'pdf-print' ), '"uploads/pdf-print-fonts"' );
1138 1766 }
1139 - if ( $is_return )
1140 - return;
1141 - if ( empty( $wp->request ) )
1142 - $current_url = add_query_arg( $wp->query_string, '', home_url() );
1143 - else
1144 - $current_url = home_url( $wp->request );
1145 - $permalink = add_query_arg( 'print', 'pdf-page', $current_url );
1146 - $wp_admin_bar->add_menu( array(
1147 - 'id' => 'pdfprnt-bar-menu',
1148 - 'title' => '<span class="admin-bar-menu-bws-icon"></span>PDF',
1149 - 'href' => $permalink
1150 - ) );
1151 - $template_url = add_query_arg( 'tmpl', '1', $permalink ); /* Adding parametrs to link */
1152 - $wp_admin_bar->add_menu( array(
1153 - 'parent' => 'pdfprnt-bar-menu',
1154 - 'id' => 'pdfprnt-template-1',
1155 - 'title' => '<img src="' . plugins_url( 'images/template_left.jpg', __FILE__ ) . '" alt="template_left" />',
1156 - 'href' => $template_url
1157 - ) );
1158 - $template_url = add_query_arg( 'tmpl', '2', $permalink ); /* Adding parametrs to link */
1159 - $wp_admin_bar->add_menu( array(
1160 - 'parent' => 'pdfprnt-bar-menu',
1161 - 'id' => 'pdfprnt-template-2',
1162 - 'title' => '<img src="' . plugins_url( 'images/template_center.jpg', __FILE__ ) . '" alt="template_center" />',
1163 - 'href' => $template_url
1164 - ) );
1165 - $template_url = add_query_arg( 'tmpl', '3', $permalink ); /* Adding parametrs to link */
1166 - $wp_admin_bar->add_menu( array(
1167 - 'parent' => 'pdfprnt-bar-menu',
1168 - 'id' => 'pdfprnt-template-3',
1169 - 'title' => '<img src="' . plugins_url( 'images/template_right.jpg', __FILE__ ) . '" alt="template_right" />',
1170 - 'href' => $template_url
1171 - ) );
1172 - unset( $current_url );
1173 - unset( $permalink );
1174 - unset( $template_url );
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;
1175 1772 }
1176 1773 }
1177 1774
1178 -if ( ! function_exists ( 'pdfprnt_plugin_banner' ) ) {
1179 - function pdfprnt_plugin_banner() {
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();
1796 + if ( empty( $errors ) ) {
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 );
1801 + } else {
1802 + $result['error'] = esc_html__( 'Some errors occurred during loading files.', 'pdf-print' );
1803 + }
1804 + } else {
1805 + $result['error'] = esc_html__( 'Can not extract files from zip-archive.', 'pdf-print' );
1806 + unlink( $zip_file );
1807 + }
1808 + } else {
1809 + $result['error'] = sprintf( esc_html__( 'Cannot extract files into %s folder. Check your permissions.', 'pdf-print' ), $upload_dir );
1810 + }
1811 + if ( ! isset( $value ) ) {
1812 + $value = '6.1';
1813 + }
1814 +
1815 + $opt = 'mpdf_library_version';
1816 + pdfprnt_update_option( $opt, $value, true );
1817 + return $result;
1818 + }
1819 +}
1820 +
1821 +if ( ! function_exists( 'pdfprnt_load_and_copy' ) ) {
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'] ) ) {
1844 + $result = pdfprnt_copy_fonts( $zip_file, $upload_dir );
1845 + }
1846 + return $result;
1847 + }
1848 +}
1849 +
1850 +
1851 +if ( ! function_exists( 'pdfprnt_load_fonts' ) ) {
1852 + /**
1853 + * Function to load fonts for MPDF library
1854 + */
1855 + function pdfprnt_load_fonts() {
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';
1865 + if ( ( $ajax_request || $php_request ) && $verified ) {
1866 + $result = array();
1867 + $flag = false;
1868 + /* get path to directory for ZIP-archive uploading */
1869 + if ( is_multisite() ) {
1870 + switch_to_blog( 1 );
1871 + $upload_dir = wp_upload_dir();
1872 + restore_current_blog();
1873 + } else {
1874 + $upload_dir = wp_upload_dir();
1875 + }
1876 + $zip_file = $upload_dir['basedir'] . '/mpdf-master.zip';
1877 + $destination = $upload_dir['basedir'] . '/pdf-print-fonts';
1878 + if ( file_exists( $destination ) ) { /* if folder with fonts already exists */
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 );
1886 + } else { /* if something wrong */
1887 + $result = pdfprnt_load_and_copy( $zip_file, $upload_dir['basedir'], $url ); /* load fonts */
1888 + }
1889 + } else {
1890 + $result = pdfprnt_load_and_copy( $zip_file, $upload_dir['basedir'], $url ); /* load fonts */
1891 + }
1892 + } else {
1893 + mkdir( $destination, 0755, true );
1894 + $result = pdfprnt_load_and_copy( $zip_file, $upload_dir['basedir'], $url );
1895 + }
1896 + if ( $ajax_request ) {
1897 + echo wp_json_encode( $result );
1898 + } else {
1899 + return $result;
1900 + }
1901 + }
1902 + if ( $ajax_request ) {
1903 + die();
1904 + }
1905 + }
1906 +}
1907 +
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() {
1180 2084 global $hook_suffix, $pdfprnt_plugin_info;
1181 - if ( 'plugins.php' == $hook_suffix ) {
1182 - 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 + }
1183 2094 }
1184 2095 }
1185 2096 }
1186 2097
1187 -/* 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 +
1188 2114 if ( ! function_exists( 'pdfprnt_uninstall' ) ) {
2115 + /**
2116 + * Deleting plugin options on uninstalling
2117 + */
1189 2118 function pdfprnt_uninstall() {
1190 - 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__ ) );
1191 2148 }
1192 2149 }
1193 2150
1194 2151 /* Adding function to output PDF document or pirnt page */
1195 -add_action( 'wp', 'pdfprnt_print' );
2152 +register_activation_hook( __FILE__, 'pdfprnt_plugin_activate' );
2153 +add_action( 'wp', 'pdfprnt_print', 20, 1 );
2154 +add_action( 'wp_head', 'pdfprnt_auto_show_buttons_search_archive' );
2155 +add_action( 'plugins_loaded', 'pdfprnt_plugins_loaded' );
1196 2156 /* Initialization */
1197 2157 add_action( 'init', 'pdfprnt_init' );
1198 2158 add_action( 'admin_init', 'pdfprnt_admin_init' );
1199 2159 /* Adding stylesheets */
@@ -1199,18 +2159,36 @@
1199 2159 /* Adding stylesheets */
1200 2160 add_action( 'admin_enqueue_scripts', 'pdfprnt_admin_head' );
1201 2161 add_action( 'wp_enqueue_scripts', 'pdfprnt_admin_head' );
1202 2162 /* Adding 'BWS Plugins' admin menu */
1203 -add_action( 'admin_menu', 'pdfprnt_add_pages' );
1204 -/* Add menu to bar menu WordPress */
1205 -add_action( 'admin_bar_menu', 'pdfprnt_admin_bar_menu', 1000 );
2163 +add_action( 'admin_menu', 'pdfprnt_add_admin_menu' );
1206 2164 /* Add query vars */
1207 -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 +
1208 2175 /* Additional links on the plugin page */
1209 2176 add_filter( 'plugin_action_links', 'pdfprnt_action_links', 10, 2 );
1210 2177 add_filter( 'plugin_row_meta', 'pdfprnt_links', 10, 2 );
1211 2178 /* Adding buttons plugin to content */
1212 2179 add_filter( 'the_content', 'pdfprnt_content' );
2180 +/* Remove Print word from excerpt */
2181 +add_filter( 'get_the_excerpt', 'pdfprnt_excerpt' );
2182 +/* load additional fonts */
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' );
1213 2188 /* Adding banner */
1214 2189 add_action( 'admin_notices', 'pdfprnt_plugin_banner' );
1215 -/* Plugin uninstall function */
1216 -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 );