PluginProbe
PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin / 1.5
PDF & Print by BestWebSoft – WordPress Posts and Pages PDF Generator Plugin v1.5
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 +914 -2042 trunk1.5 View file →
@@ -1,1331 +1,752 @@
1 1 <?php
2 -/**
3 -Plugin Name: PDF & Print by BestWebSoft
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.
2 +/*
3 +Plugin Name: PDF & Print
4 +Plugin URI: http://bestwebsoft.com/plugin/
5 +Description: Plugin adds PDF creation and Print button on your site.
6 6 Author: BestWebSoft
7 -Text Domain: pdf-print
8 -Domain Path: /languages
9 -Version: 2.4.7
10 -Author URI: https://bestwebsoft.com/
7 +Version: 1.5
8 +Author URI: http://bestwebsoft.com/
11 9 License: GPLv2 or later
12 - */
10 +*/
13 11
14 -/**
15 -© Copyright 2021 BestWebSoft ( https://support.bestwebsoft.com )
12 +/* © Copyright 2013 BestWebSoft ( http://support.bestwebsoft.com )
16 13
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.
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.
20 17
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.
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.
25 22
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 - */
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 +*/
30 27
31 -if ( ! defined( 'ABSPATH' ) ) {
32 - exit;
33 -}
28 +require_once( dirname( __FILE__ ) . '/bws_menu/bws_menu.php' );
34 29
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 - }
30 +/* Add our own menu */
31 +if ( ! function_exists( 'pdfprnt_add_pages' ) ) {
32 + function pdfprnt_add_pages() {
33 + add_menu_page( 'BWS Plugins', 'BWS Plugins', 'manage_options', 'bws_plugins', 'bws_add_menu_render', WP_CONTENT_URL . "/plugins/google-plus-one/images/px.png", 1001 );
34 + add_submenu_page( 'bws_plugins', __( 'PDF & Print Settings', 'pdf-print' ), __( 'PDF & Print', 'pdf-print' ), 'manage_options', "pdf-print.php", 'pdfprnt_settings_page' );
58 35 }
59 36 }
60 37
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',
38 +/* Register settings for plugin */
39 +if ( ! function_exists( 'pdfprnt_settings' ) ) {
40 + function pdfprnt_settings() {
41 + global $pdfprnt_options_array, $pdfprnt_output_count_buttons, $wpmu;
42 + $pdfprnt_output_count_buttons = 0; /* Variable to verify performance number of once function. */
43 + $pdfprnt_default_post_types = array();
44 + foreach ( get_post_types( array( 'public' => 1, 'show_ui' => 1, '_builtin' => true ), 'names' ) as $value )
45 + $pdfprnt_default_post_types[] = $value; /* Default post types of WordPress. */
46 + $pdfprnt_options_array_defaults = array(
47 + 'position' => 'top-right',
48 + 'position_search_archive' => 'left',
49 + 'position_custom' => 'left',
50 + 'show_btn_print' => 1,
51 + 'show_btn_pdf' => 1,
52 + 'show_btn_print_search_archive' => 1,
53 + 'show_btn_pdf_search_archive' => 1,
54 + 'show_btn_print_custom' => 1,
55 + 'show_btn_pdf_custom' => 1,
56 + 'use_theme_stylesheet' => 0,
57 + 'tmpl_post' => 1,
58 + 'tmpl_search' => 1,
59 + 'tmpl_custom' => 1,
60 + 'tmpl_shorcode' => 1,
61 + 'use_types_posts' => $pdfprnt_default_post_types
71 62 );
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 - */
90 - function pdfprnt_init() {
91 - global $pdfprnt_plugin_info, $pdfprnt_is_old_php;
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 -
98 - if ( empty( $pdfprnt_plugin_info ) ) {
99 - if ( ! function_exists( 'get_plugin_data' ) ) {
100 - require_once ABSPATH . 'wp-admin/includes/plugin.php';
63 + if ( 1 == $wpmu ) {
64 + if ( ! get_site_option( 'pdfprnt_options_array' ) ) {
65 + add_site_option( 'pdfprnt_options_array', $cptch_option_defaults, '', 'yes' );
101 66 }
102 - $pdfprnt_plugin_info = get_plugin_data( __FILE__ );
103 - }
104 -
105 - /* check WordPress version */
106 - bws_wp_min_version_check( $plugin_basename, $pdfprnt_plugin_info, '4.5' );
107 -
108 - /* check PHP version */
109 - $pdfprnt_is_old_php = version_compare( PHP_VERSION, '5.4.0', '<' );
110 -
111 - /* Get/Register and check settings for plugin */
112 - if ( ! is_admin() || ( isset( $_GET['page'] ) && 'pdf-print.php' === $_GET['page'] ) ) {
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 - }
128 - }
129 -}
130 -
131 -if ( ! function_exists( 'pdfprnt_admin_init' ) ) {
132 - /**
133 - * Admin init
134 - */
135 - function pdfprnt_admin_init() {
136 - global $bws_plugin_info, $pdfprnt_plugin_info, $bws_shortcode_list, $pagenow, $pdfprnt_options;
137 -
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 - }
156 - }
157 -}
158 -
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 67 } else {
170 - register_uninstall_hook( __FILE__, 'pdfprnt_uninstall' );
68 + if ( ! get_option( 'pdfprnt_options_array' ) )
69 + add_option( 'pdfprnt_options_array', $pdfprnt_options_array_defaults, '', 'yes' );
171 70 }
71 + if ( 1 == $wpmu )
72 + $pdfprnt_options_array = get_site_option( 'pdfprnt_options_array' );
73 + else
74 + $pdfprnt_options_array = get_option( 'pdfprnt_options_array' );
75 + $pdfprnt_options_array = array_merge( $pdfprnt_options_array_defaults, $pdfprnt_options_array );
172 76 }
173 77 }
174 78
175 -if ( ! function_exists( 'pdfprnt_settings' ) ) {
176 - /**
177 - * Register settings for plugin
178 - */
179 - function pdfprnt_settings() {
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 - }
185 -
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'] );
79 +/* Function check if plugin is compatible with current WP version */
80 +if ( ! function_exists ( 'pdfprnt_version_check' ) ) {
81 + function pdfprnt_version_check() {
82 + global $wp_version;
83 + $plugin_data = get_plugin_data( __FILE__, false );
84 + $require_wp = "3.0"; /* Wordpress at least requires version */
85 + $plugin = plugin_basename( __FILE__ );
86 + if ( version_compare( $wp_version, $require_wp, "<" ) ) {
87 + if ( is_plugin_active( $plugin ) ) {
88 + deactivate_plugins( $plugin );
89 + wp_die( "<strong>" . $plugin_data['Name'] . " </strong> " . __( 'requires', 'pdf-print' ) . " <strong>WordPress" . $require_wp . " </strong> " . __( 'or higher, that is why it has been deactivated! Please upgrade WordPress and try again.', 'pdf-print') . "<br /><br />" . __( 'Back to the WordPress', 'pdf-print') . " <a href='" . get_admin_url( null, 'plugins.php' ) . "'>" . __( 'Plugins page', 'pdf-print') . "</a>." );
190 90 }
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();
225 91 }
226 92 }
227 93 }
228 94
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 -
236 - /* Variable to verify performance number of once function. */
237 - $default_post_types = array();
238 - /* Default post types of WordPress. */
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';
252 -
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,
95 +/* Add admin page */
96 +if ( ! function_exists ( 'pdfprnt_settings_page' ) ) {
97 + function pdfprnt_settings_page () {
98 + global $pdfprnt_options_array;
99 + $pdfprnt_positions_values = array(
100 + 'top-left' => __( 'Top Left', 'pdf-print' ),
101 + 'top-right' => __( 'Top Right', 'pdf-print' ),
102 + 'bottom-left' => __( 'Bottom Left', 'pdf-print' ),
103 + 'bottom-right' => __( 'Bottom Right', 'pdf-print' )
313 104 );
314 -
315 - $options_default = apply_filters( 'pdfprnt_get_additional_options_default', $options_default );
316 -
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';
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();
105 + if ( isset( $_REQUEST['pdfprnt_position'] ) &&
106 + isset( $_REQUEST['pdfprnt_position_search_archive'] ) &&
107 + isset( $_REQUEST['pdfprnt_position_custom'] ) &&
108 + isset( $_REQUEST['pdfprnt_use_theme_stylesheet'] ) &&
109 + isset( $_REQUEST['pdfprnt_tmpl_post'] ) &&
110 + isset( $_REQUEST['pdfprnt_tmpl_custom'] ) &&
111 + isset( $_REQUEST['pdfprnt_tmpl_search'] ) &&
112 + check_admin_referer( plugin_basename( __FILE__ ), 'pdfprnt_nonce_name' ) ) {
113 + $pdfprnt_options_array['position'] = $_REQUEST['pdfprnt_position'];
114 + $pdfprnt_options_array['position_search_archive'] = $_REQUEST['pdfprnt_position_search_archive'];
115 + $pdfprnt_options_array['position_custom'] = $_REQUEST['pdfprnt_position_custom'];
116 + $pdfprnt_options_array['tmpl_post'] = $_REQUEST['pdfprnt_tmpl_post'];
117 + $pdfprnt_options_array['tmpl_search'] = $_REQUEST['pdfprnt_tmpl_search'];
118 + $pdfprnt_options_array['tmpl_custom'] = $_REQUEST['pdfprnt_tmpl_custom'];
119 + $pdfprnt_options_array['use_theme_stylesheet'] = $_REQUEST['pdfprnt_use_theme_stylesheet'];
120 + $pdfprnt_options_array['show_btn_pdf'] = isset( $_REQUEST['pdfprnt_show_btn_pdf'] ) ? 1 : 0;
121 + $pdfprnt_options_array['show_btn_print'] = isset( $_REQUEST['pdfprnt_show_btn_print'] ) ? 1 : 0;
122 + $pdfprnt_options_array['show_btn_pdf_search_archive'] = isset( $_REQUEST['pdfprnt_show_btn_pdf_search_archive'] ) ? 1 : 0;
123 + $pdfprnt_options_array['show_btn_print_search_archive'] = isset( $_REQUEST['pdfprnt_show_btn_print_search_archive'] ) ? 1 : 0;
124 + $pdfprnt_options_array['show_btn_pdf_custom'] = isset( $_REQUEST['pdfprnt_show_btn_pdf_custom'] ) ? 1 : 0;
125 + $pdfprnt_options_array['show_btn_print_custom'] = isset( $_REQUEST['pdfprnt_show_btn_print_custom'] ) ? 1 : 0;
126 + $pdfprnt_options_array['tmpl_shorcode'] = isset( $_REQUEST['pdfprnt_tmpl_shorcode'] ) ? 1 : 0;
127 + $pdfprnt_options_array['use_types_posts'] = isset( $_REQUEST['pdfprnt_use_types_posts'] ) ? $_REQUEST['pdfprnt_use_types_posts'] : array();
128 + update_option ( 'pdfprnt_options_array', $pdfprnt_options_array );
129 + $message = __( 'Settings saved.', 'pdf-print' );
335 130 } ?>
336 131 <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(); ?>
132 + <div class="icon32 icon32-bws" id="icon-options-general"></div>
133 + <h2><?php echo __( 'PDF & Print Settings', 'pdf-print' ); ?></h2>
134 + <div class="updated fade" <?php if( empty( $message ) ) echo "style=\"display:none\""; ?>><p><strong><?php echo $message; ?></strong></p></div>
135 + <div>
136 + <form method="post" action="admin.php?page=pdf-print.php">
137 + <table class="form-table pdfprnt_settings_table">
138 + <tr>
139 + <th scope="row"><?php echo __( 'Use of theme stylesheet or plugin default style:', 'pdf-print' ); ?></th>
140 + <td>
141 + <select name="pdfprnt_use_theme_stylesheet">
142 + <option value="0" <?php if ( 0 == $pdfprnt_options_array['use_theme_stylesheet'] ) echo 'selected="selected"'; ?>><?php echo __( 'Default stylesheet', 'pdf-print' ); ?></option>
143 + <option value="1" <?php if ( 1 == $pdfprnt_options_array['use_theme_stylesheet'] ) echo 'selected="selected"'; ?>><?php echo __( 'Current theme stylesheet', 'pdf-print' ); ?></option>
144 + </select>
145 + </td>
146 + </tr>
147 + <tr>
148 + <th scope="row"><?php echo __( 'The types of posts that the plugin will use:', 'pdf-print' ); ?></th>
149 + <td>
150 + <select name="pdfprnt_use_types_posts[]" multiple="multiple">
151 + <?php foreach ( get_post_types( array( 'public' => 1, 'show_ui' => 1 ), 'objects' ) as $key => $value ) : ?>
152 + <option value="<?php echo $key; ?>" <?php if ( in_array( $key, $pdfprnt_options_array['use_types_posts'] ) ) echo 'selected="selected"'; ?>><?php echo $value->label; ?></option>
153 + <?php endforeach; ?>
154 + </select>
155 + </td>
156 + </tr>
157 + <?php
158 + $active_plugins = get_option( 'active_plugins' );
159 + if( 0 < count( preg_grep( '/portfolio\/portfolio.php/', $active_plugins ) ) ) : ?>
160 + <tr>
161 + <th scope="row"></th>
162 + <td>
163 + <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>
164 + </td>
165 + </tr>
166 + <?php endif; ?>
167 + <tr>
168 + <th scope="row">
169 + <?php echo __( 'Position of buttons in content:', 'pdf-print' ); ?>
170 + </th>
171 + <td>
172 + <select name="pdfprnt_position">
173 + <?php foreach ( $pdfprnt_positions_values as $key => $value ) : ?>
174 + <option value="<?php echo $key; ?>" <?php if ( $pdfprnt_options_array['position'] == $key ) echo 'selected="selected"'; ?>><?php echo $value; ?></option>
175 + <?php endforeach; ?>
176 + </select>
177 + </td>
178 + </tr>
179 + <tr>
180 + <th scope="row"><?php echo __( 'Show:', 'pdf-print' ); ?></th>
181 + <td>
182 + <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 />
183 + <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>
184 + </td>
185 + </tr>
186 + <tr>
187 + <th scope="row">
188 + <?php echo __( 'Default template setting for post:', 'pdf-print' ); ?>
189 + </th>
190 + <td>
191 + <div>
192 + <label>
193 + <img src="<?php echo plugins_url( 'images/template_left.jpg', __FILE__ ); ?>" alt="template_left" />
194 + <input type="radio" name="pdfprnt_tmpl_post" value="1" <?php if ( 1 == $pdfprnt_options_array['tmpl_post'] ) echo 'checked="checked"'; ?> />
195 + </label>
196 + </div>
197 + <div>
198 + <label>
199 + <img src="<?php echo plugins_url( 'images/template_center.jpg', __FILE__ ); ?>" alt="template_center" />
200 + <input type="radio" name="pdfprnt_tmpl_post" value="2" <?php if ( 2 == $pdfprnt_options_array['tmpl_post'] ) echo 'checked="checked"'; ?> />
201 + </label>
202 + </div>
203 + <div>
204 + <label>
205 + <img src="<?php echo plugins_url( 'images/template_right.jpg', __FILE__ ); ?>" alt="template_right" />
206 + <input type="radio" name="pdfprnt_tmpl_post" value="3" <?php if ( 3 == $pdfprnt_options_array['tmpl_post'] ) echo 'checked="checked"'; ?> />
207 + </label>
208 + </div>
209 + </td>
210 + </tr>
211 + <tr>
212 + <th scope="row">
213 + <?php echo __( 'Position of buttons in content for custom post:', 'pdf-print' ); ?>
214 + </th>
215 + <td>
216 + <select name="pdfprnt_position_custom">
217 + <option value="pdfprnt-left" <?php if ( 'left' == $pdfprnt_options_array['position_custom'] ) echo 'selected="selected"'; ?>><?php echo __( 'Align Left', 'pdf-print' ); ?></option>
218 + <option value="pdfprnt-right" <?php if ( 'right' == $pdfprnt_options_array['position_custom'] ) echo 'selected="selected"'; ?>><?php echo __( 'Align Right', 'pdf-print' ); ?></option>
219 + </select>
220 + </td>
221 + </tr>
222 + <tr>
223 + <th scope="row"><?php echo __( 'Show for custom posts:', 'pdf-print' ); ?></th>
224 + <td>
225 + <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 />
226 + <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>
227 + </td>
228 + </tr>
229 + <tr>
230 + <th scope="row">
231 + <?php echo __( 'Default template setting for custom posts:', 'pdf-print' ); ?>
232 + </th>
233 + <td>
234 + <div>
235 + <label>
236 + <img src="<?php echo plugins_url( 'images/template_left.jpg', __FILE__ ); ?>" alt="template_left" />
237 + <input type="radio" name="pdfprnt_tmpl_custom" value="1" <?php if ( 1 == $pdfprnt_options_array['tmpl_custom'] ) echo 'checked="checked"'; ?> />
238 + </label>
239 + </div>
240 + <div>
241 + <label>
242 + <img src="<?php echo plugins_url( 'images/template_center.jpg', __FILE__ ); ?>" alt="template_center" />
243 + <input type="radio" name="pdfprnt_tmpl_custom" value="2" <?php if ( 2 == $pdfprnt_options_array['tmpl_custom'] ) echo 'checked="checked"'; ?> />
244 + </label>
245 + </div>
246 + <div>
247 + <label>
248 + <img src="<?php echo plugins_url( 'images/template_right.jpg', __FILE__ ); ?>" alt="template_right" />
249 + <input type="radio" name="pdfprnt_tmpl_custom" value="3" <?php if ( 3 == $pdfprnt_options_array['tmpl_custom'] ) echo 'checked="checked"'; ?> />
250 + </label>
251 + </div>
252 + </td>
253 + </tr>
254 + <tr>
255 + <th scope="row"></th>
256 + <td>
257 + <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>
258 + </td>
259 + </tr>
260 + <tr>
261 + <th scope="row">
262 + <?php echo __( 'Position of buttons on search or archive page:', 'pdf-print' ); ?>
263 + </th>
264 + <td>
265 + <select name="pdfprnt_position_search_archive">
266 + <option value="pdfprnt-left" <?php if ( 'left' == $pdfprnt_options_array['position_search_archive'] ) echo 'selected="selected"'; ?>><?php echo __( 'Align Left', 'pdf-print' ); ?></option>
267 + <option value="pdfprnt-right" <?php if ( 'right' == $pdfprnt_options_array['position_search_archive'] ) echo 'selected="selected"'; ?>><?php echo __( 'Align Right', 'pdf-print' ); ?></option>
268 + </select>
269 + </td>
270 + </tr>
271 + <tr>
272 + <th scope="row"><?php echo __( 'Show for search or archive page:', 'pdf-print' ); ?></th>
273 + <td>
274 + <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 />
275 + <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>
276 + </td>
277 + </tr>
278 + <tr>
279 + <th scope="row">
280 + <?php echo __( 'Default template setting for search and archive:', 'pdf-print' ); ?>
281 + </th>
282 + <td>
283 + <div>
284 + <label>
285 + <img src="<?php echo plugins_url( 'images/template_left.jpg', __FILE__ ); ?>" alt="template_left" />
286 + <input type="radio" name="pdfprnt_tmpl_search" value="1" <?php if ( 1 == $pdfprnt_options_array['tmpl_search'] ) echo 'checked="checked"'; ?> />
287 + </label>
288 + </div>
289 + <div>
290 + <label>
291 + <img src="<?php echo plugins_url( 'images/template_center.jpg', __FILE__ ); ?>" alt="template_center" />
292 + <input type="radio" name="pdfprnt_tmpl_search" value="2" <?php if ( 2 == $pdfprnt_options_array['tmpl_search'] ) echo 'checked="checked"'; ?> />
293 + </label>
294 + </div>
295 + <div>
296 + <label>
297 + <img src="<?php echo plugins_url( 'images/template_right.jpg', __FILE__ ); ?>" alt="template_right" />
298 + <input type="radio" name="pdfprnt_tmpl_search" value="3" <?php if ( 3 == $pdfprnt_options_array['tmpl_search'] ) echo 'checked="checked"'; ?> />
299 + </label>
300 + </div>
301 + </td>
302 + </tr>
303 + <tr>
304 + <th scope="row"></th>
305 + <td>
306 + <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>
307 + </td>
308 + </tr>
309 + <tr>
310 + <th scope="row">
311 + <?php echo __( 'Settings for shorcodes:', 'pdf-print' ); ?>
312 + </th>
313 + <td>
314 + <label><input type="checkbox" name="pdfprnt_tmpl_shorcode" <?php if ( 1 == $pdfprnt_options_array['tmpl_shorcode'] ) echo 'checked="checked"'; ?> /> <span><?php echo __( 'Do!', 'pdf-print' ); ?></span></label>
315 + </td>
316 + </tr>
317 + <tr>
318 + <td colspan="2">
319 + <input type="submit" class="button-primary" value="<?php _e( 'Save Changes', 'pdf-print' ); ?>" />
320 + </td>
321 + </tr>
322 + </table>
323 + <?php wp_nonce_field( plugin_basename( __FILE__ ), 'pdfprnt_nonce_name' ); ?>
324 + </form>
325 + </div>
343 326 </div>
344 - <?php
345 - }
327 + <?php }
346 328 }
347 329
348 -
349 -if ( ! function_exists( 'pdfprnt_templates' ) ) {
350 - /**
351 - * Headers & Footers page
352 - */
353 - function pdfprnt_templates() {
354 - global $wp_version, $pdfprnt_plugin_info, $pdfprnt_options, $pdfprnt_links;
355 - require_once dirname( __FILE__ ) . '/includes/pro_banners.php';
356 -
357 - pdfprnt_settings();
358 - $bws_hide_premium = bws_hide_premium_options_check( $pdfprnt_options );
359 -
360 - $tab_action = ( isset( $_GET['pdfprnt_tab_action'] ) && 'new' === $_GET['pdfprnt_tab_action'] );
361 - if ( $tab_action ) {
362 - $page_title = esc_html__( 'Add New', 'pdf-print' );
363 - $page_name = esc_html__( 'Header & Footer Template', 'pdf-print' );
364 - } else {
365 - $page_title = '';
366 - $page_name = esc_html__( 'Headers & Footers', 'pdf-print' );
367 - }
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 - ?>
377 - <div class="wrap">
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 - ?>
404 - </div>
405 - </div>
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>
409 - </div>
410 - </div>
411 - <?php } ?>
412 - </div>
413 - <?php
414 - }
415 -}
416 -
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 - */
330 +/* Positioning buttons in the page */
331 +if( ! function_exists( 'pdfprnt_content' ) ) {
680 332 function pdfprnt_content( $content ) {
681 - global $pdfprnt_options, $post, $pdfprnt_is_old_php;
682 -
683 - if ( $pdfprnt_is_old_php || is_admin() || is_feed() || is_search() || is_category() || is_tax() || is_tag() || is_author() || ! pdfprnt_is_user_role_enabled() || post_password_required( $post->ID ) ) {
333 + global $pdfprnt_options_array, $post;
334 + if ( ! in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) ) // Check for existence the type of posts.
684 335 return $content;
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'] ) ) ) : '';
336 + if ( 1 == $pdfprnt_options_array['show_btn_pdf'] || 1 == $pdfprnt_options_array['show_btn_print'] ) {
337 + $position = ( 'top-left' == $pdfprnt_options_array['position'] || 'top-right' == $pdfprnt_options_array['position'] ) ? true : false;
338 + $str = '<div class="pdfprnt-' . $pdfprnt_options_array['position'] . '">';
339 + if ( 1 == $pdfprnt_options_array['show_btn_pdf'] ) {
340 + $permalink = add_query_arg( 'print' , 'pdf' , get_permalink( $post->ID ) );
341 + $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="View PDF" /></a>';
697 342 }
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 - }
343 + if ( 1 == $pdfprnt_options_array['show_btn_print'] ) {
344 + $permalink = add_query_arg( 'print' , 'print' , get_permalink( $post->ID ) );
345 + $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
704 346 }
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 - }
715 347 $str .= '</div>';
716 -
717 - if ( 'top-left' === $pdfprnt_options['buttons_position'] || 'top-right' === $pdfprnt_options['buttons_position'] ) {
348 + if ( $position )
718 349 $content = $str . $content;
719 - } elseif ( 'bottom-left' === $pdfprnt_options['buttons_position'] || 'bottom-right' === $pdfprnt_options['buttons_position'] ) {
350 + else
720 351 $content = $content . $str;
721 - } else {
722 - $content = $str . $content . $str;
723 - }
352 + unset( $position );
353 + unset( $str );
724 354 }
725 355 return $content;
726 356 }
727 357 }
728 358
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 );
359 +/* Output buttons for search or archive pages */
360 +if( ! function_exists( 'pdfprnt_show_buttons_search_archive' ) ) {
361 + function pdfprnt_show_buttons_search_archive() {
362 + global $pdfprnt_options_array, $pdfprnt_output_count_buttons, $wp, $posts;
363 + if ( 0 < $pdfprnt_output_count_buttons )
364 + return;
365 + if ( 1 !== $pdfprnt_options_array['show_btn_pdf_search_archive'] && 1 !== $pdfprnt_options_array['show_btn_print_search_archive'] )
366 + return;
367 + if ( ( ! is_search() && ! is_archive() ) || ( is_category() || ! have_posts() ) )
368 + return;
369 + /* Check for existence the type of posts. */
370 + $is_return = true;
371 + foreach ( $posts as $post ) {
372 + if ( in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) ) {
373 + $is_return = false;
374 + break;
375 + }
743 376 }
744 - if ( ! empty( $title['print'] ) ) {
745 - $temp = explode( $title['print'], $content );
377 + if ( $is_return )
378 + return;
379 + $pdfprnt_output_count_buttons++;
380 + if ( empty( $wp->request ) )
381 + $current_url = add_query_arg( $wp->query_string, '', home_url() );
382 + else
383 + $current_url = home_url( $wp->request );
384 + $str = '<div class="' . $pdfprnt_options_array['position_search_archive'] . '">';
385 + if ( 1 == $pdfprnt_options_array['show_btn_pdf_search_archive'] ) {
386 + $permalink = add_query_arg( 'print' , 'pdf-page' , $current_url );
387 + $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
746 388 }
747 - if ( isset( $temp[1] ) ) {
748 - return $temp[1];
749 - } else {
750 - return $content;
389 + if ( 1 == $pdfprnt_options_array['show_btn_print_search_archive'] ) {
390 + $permalink = add_query_arg( 'print' , 'print-page' , $current_url );
391 + $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
751 392 }
393 + $str .= '</div>';
394 + unset( $current_url );
395 + unset( $permalink );
396 + return $str;
752 397 }
753 398 }
754 399
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 - }
817 - }
818 -}
819 -
820 -if ( ! function_exists( 'pdfprnt_return_buttons_search_archive' ) ) {
821 - /**
822 - * Return buttons for search or archive pages
823 - */
824 - function pdfprnt_return_buttons_search_archive() {
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 ) ) {
400 +/* Output buttons of page for BWS Portfolio plugin */
401 +if( ! function_exists( 'pdfprnt_show_buttons_for_bws_portfolio' ) ) {
402 + function pdfprnt_show_buttons_for_bws_portfolio() {
403 + global $pdfprnt_options_array, $pdfprnt_output_count_buttons, $wp;
404 + if ( 0 < $pdfprnt_output_count_buttons )
849 405 return;
850 - }
851 -
852 - if ( ( 'loop_start' === $loop_position && intval( $pdfprnt_show_archive_start ) === 1 ) || ( 'loop_end' === $loop_position && intval( $pdfprnt_show_archive_end ) === 1 ) ) {
406 + if ( 1 !== $pdfprnt_options_array['show_btn_pdf_custom'] && 1 !== $pdfprnt_options_array['show_btn_print_custom'] )
853 407 return;
408 + if ( ! in_array( 'portfolio', $pdfprnt_options_array['use_types_posts'] ) )
409 + return;
410 + $pdfprnt_output_count_buttons++;
411 + if ( empty( $wp->request ) )
412 + $current_url = add_query_arg( $wp->query_string, '', home_url() );
413 + else
414 + $current_url = home_url( $wp->request );
415 + $str = '<div class="' . $pdfprnt_options_array['position_custom'] . '">';
416 + if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) {
417 + $permalink = add_query_arg( 'print' , 'pdf-portfolio-page' , $current_url );
418 + $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
854 419 }
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;
420 + if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) {
421 + $permalink = add_query_arg( 'print' , 'print-portfolio-page' , $current_url );
422 + $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
876 423 }
424 + $str .= '</div>';
425 + unset( $current_url );
426 + unset( $permalink );
427 + return $str;
877 428 }
878 429 }
879 430
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 ) ) {
431 +/* Output buttons of post for BWS Portfolio plugin */
432 +if( ! function_exists( 'pdfprnt_show_buttons_for_bws_portfolio_post' ) ) {
433 + function pdfprnt_show_buttons_for_bws_portfolio_post() {
434 + global $pdfprnt_options_array, $post;
435 + if ( 1 !== $pdfprnt_options_array['show_btn_pdf_custom'] && 1 !== $pdfprnt_options_array['show_btn_print_custom'] )
888 436 return;
437 + if ( ! in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) )
438 + return;
439 + $current_url = get_permalink();
440 + $str = '<div class="' . $pdfprnt_options_array['position_custom'] . '">';
441 + if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) {
442 + $permalink = add_query_arg( 'print' , 'pdf-portfolio' , $current_url );
443 + $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
889 444 }
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 - }
445 + if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) {
446 + $permalink = add_query_arg( 'print' , 'print-portfolio' , $current_url );
447 + $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
944 448 }
449 + $str .= '</div>';
450 + unset( $current_url );
451 + unset( $permalink );
452 + return $str;
945 453 }
946 454 }
947 455
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 ) {
456 +/* Output buttons of page for custom post type */
457 +if( ! function_exists( 'pdfprnt_show_buttons_for_custom_post_type' ) ) {
458 + function pdfprnt_show_buttons_for_custom_post_type( $custom_query ) {
459 + global $pdfprnt_options_array, $pdfprnt_output_count_buttons;
460 + if ( 0 < $pdfprnt_output_count_buttons )
959 461 return;
960 - }
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 ) );
964 - }
965 - }
966 -}
967 -
968 -if ( ! function_exists( 'pdfprnt_show_buttons_for_custom_post_type' ) ) {
969 - /**
970 - * Output buttons of page for custom post type
971 - *
972 - * @param string $user_query (Optional) User query.
973 - * @return string $str
974 - */
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 - ) {
462 + if ( 1 !== $pdfprnt_options_array['show_btn_pdf_custom'] && 1 !== $pdfprnt_options_array['show_btn_print_custom'] )
990 463 return;
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;
464 + if ( ! is_array( $custom_query ) && ! is_string( $custom_query ) )
465 + return;
466 + $custom_query = new WP_Query( $custom_query );
467 + /* Check for existence the type of posts. */
468 + $is_return = true;
469 + foreach ( $custom_query->posts as $post ) {
470 + if ( in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) ) {
471 + $is_return = false;
472 + break;
1025 473 }
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';
1049 474 }
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' );
475 + if ( $is_return )
476 + return;
477 + $pdfprnt_output_count_buttons++;
478 + $current_url = add_query_arg( $custom_query->query, '', home_url() );
479 + $str = '<div class="' . $pdfprnt_options_array['position_custom'] . '">';
480 + if ( 1 == $pdfprnt_options_array['show_btn_pdf_custom'] ) {
481 + $permalink = add_query_arg( 'print' , 'pdf-custom-page' , $current_url );
482 + $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/pdf.png', __FILE__ ) . '" alt="image_pdf" title="Print PDF" /></a>';
1056 483 }
1057 - if ( $show_button_print ) {
1058 - $str .= pdfprnt_get_button( 'print', $current_url, $print_query_parameter );
484 + if ( 1 == $pdfprnt_options_array['show_btn_print_custom'] ) {
485 + $permalink = add_query_arg( 'print' , 'print-custom-page' , $current_url );
486 + $str .= '<a href="' . $permalink . '" target="_blank"><img src="' . plugins_url( 'images/print.gif', __FILE__ ) . '" alt="image_print" title="Print Content" /></a>';
1059 487 }
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 - }
1064 488 $str .= '</div>';
489 + unset( $current_url );
490 + unset( $permalink );
491 + unset( $is_return );
492 + unset( $custom_query );
1065 493 return $str;
1066 494 }
1067 495 }
1068 496
497 +/* Add links */
1069 498 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 - */
1077 499 function pdfprnt_action_links( $links, $file ) {
1078 - if ( ! is_network_admin() && is_plugin_inactive( 'pdf-print-pro/pdf-print-pro.php' ) ) {
1079 - $base = plugin_basename( __FILE__ );
1080 - if ( $file === $base ) {
1081 - $settings_link = '<a href="admin.php?page=pdf-print.php">' . esc_html__( 'Settings', 'pdf-print' ) . '</a>';
1082 - array_unshift( $links, $settings_link );
1083 - }
500 + $base = plugin_basename( __FILE__ );
501 + if ( $file == $base ) {
502 + $settings_link = '<a href="admin.php?page=pdf-print.php">' . __( 'Settings', 'pdf-print' ) . '</a>';
503 + array_unshift( $links, $settings_link );
1084 504 }
1085 505 return $links;
1086 506 }
1087 507 }
1088 508
509 +/* Add links */
1089 510 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 - */
1097 511 function pdfprnt_links( $links, $file ) {
1098 512 $base = plugin_basename( __FILE__ );
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>';
513 + if ( $file == $base ) {
514 + $links[] = '<a href="admin.php?page=pdf-print.php">' . __( 'Settings', 'pdf-print' ) . '</a>';
515 + $links[] = '<a href="http://wordpress.org/plugins/pdf-print/faq/" target="_blank">' . __( 'FAQ', 'pdf-print' ) . '</a>';
516 + $links[] = '<a href="http://support.bestwebsoft.com">' . __( 'Support', 'pdf-print' ) . '</a>';
1105 517 }
1106 518 return $links;
1107 519 }
1108 520 }
1109 521
1110 -if ( ! function_exists( 'pdfprnt_admin_head' ) ) {
1111 - /**
1112 - * Add stylesheets
1113 - */
1114 - function pdfprnt_admin_head() {
1115 - global $pdfprnt_plugin_info, $pdfprnt_options, $post;
1116 -
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 - }
522 +/* Init plugin */
523 +if ( ! function_exists ( 'pdfprnt_plugin_init' ) ) {
524 + function pdfprnt_plugin_init() {
525 + load_plugin_textdomain( 'pdf-print', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
526 + load_plugin_textdomain( 'bestwebsoft', false, dirname( plugin_basename( __FILE__ ) ) . '/bws_menu/languages/' );
1145 527 }
1146 528 }
1147 529
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 - }
530 +/* Add stylesheets */
531 +if ( ! function_exists ( 'pdfprnt_admin_head' ) ) {
532 + function pdfprnt_admin_head() {
533 + wp_enqueue_style( 'pdfprnt-stylesheet', plugins_url( 'css/style.css', __FILE__ ) );
534 +
535 + if ( isset( $_GET['page'] ) && $_GET['page'] == "bws_plugins" )
536 + wp_enqueue_script( 'bws_menu_script', plugins_url( 'js/bws_menu.js', __FILE__ ) );
1177 537 }
1178 538 }
1179 539
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 );
1199 - }
540 +/* Generate templates for pdf file or print */
541 +if ( ! function_exists( 'pdfprnt_generate_template' ) ) {
542 + function pdfprnt_generate_template( $content, $template = false, $isprint = false ) {
543 + global $pdfprnt_options_array;
544 + $tmpl = isset( $_GET['tmpl'] ) ? $_GET['tmpl'] : "";
545 + ob_start(); /* Starting output buffering */
546 + ?>
547 + <html>
548 + <head>
549 + <?php if ( 1 == $pdfprnt_options_array['use_theme_stylesheet'] ) : ?>
550 + <link type="text/css" rel="stylesheet" href="<?php echo get_bloginfo( 'stylesheet_url' ); ?>" media="all" />
551 + <?php else: ?>
552 + <link type="text/css" rel="stylesheet" href="<?php echo plugins_url( 'css/default.css', __FILE__ ); ?>" media="all" />
553 + <?php endif;
554 + if ( ! $template )
555 + $template = $pdfprnt_options_array['tmpl_post'];
556 + switch ( $template ) { /* Using template choosed on settings page */
557 + case 1: /* Allign left template */
558 + ?>
559 + <style type="text/css">
560 + h1, h2, h3, h4, h5, h6 {
561 + text-align: left;
562 + }
563 + img {
564 + float: right;
565 + }
566 + </style>
567 + <?php
568 + break;
569 + case 2: /* Allign center template */
570 + ?>
571 + <style type="text/css">
572 + h1, h2, h3, h4, h5, h6 {
573 + text-align: center;
574 + }
575 + img {
576 + float: left;
577 + }
578 + </style>
579 + <?php
580 + break;
581 + case 3: /* Allign right template */
582 + ?>
583 + <style type="text/css">
584 + h1, h2, h3, h4, h5, h6 {
585 + text-align: right;
586 + }
587 + img {
588 + float: left;
589 + }
590 + </style>
591 + <?php
592 + break;
1200 593 }
1201 - }
1202 - }
1203 - }
1204 - }
1205 - return $content;
594 + switch ( $tmpl ) { /* If got something by GET (from admin bar) */
595 + case 1: /* Allign left template */
596 + ?>
597 + <style type="text/css">
598 + h1, h2, h3, h4, h5, h6 {
599 + text-align: left;
600 + }
601 + img {
602 + float: right;
603 + }
604 + </style>
605 + <?php
606 + break;
607 + case 2: /* Allign center template */
608 + ?>
609 + <style type="text/css">
610 + h1, h2, h3, h4, h5, h6 {
611 + text-align: center;
612 + }
613 + img {
614 + float: left;
615 + }
616 + </style>
617 + <?php
618 + break;
619 + case 3: /* Allign right template */
620 + ?>
621 + <style type="text/css">
622 + h1, h2, h3, h4, h5, h6 {
623 + text-align: right;
624 + }
625 + img {
626 + float: left;
627 + }
628 + </style>
629 + <?php break;
630 + }
631 + if ( $isprint ) : ?>
632 + <script type="text/javascript" src="<?php echo plugins_url( 'js/pdfprnt.print.js', __FILE__ ); ?>"></script>
633 + <?php endif; ?>
634 + </head>
635 + <body>
636 + <?php echo $content; ?>
637 + </body>
638 + </html>
639 + <?php
640 + $html = ob_get_contents(); /* Getting output buffering */
641 + ob_end_clean(); /* Closing output buffering */
642 + return $html; /* Now we done with template */
1206 643 }
1207 644 }
1208 645
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' )
646 +if ( ! function_exists( 'pdfprnt_generate_template_for_bws_portfolio' ) ) {
647 + function pdfprnt_generate_template_for_bws_portfolio() {
648 + global $post;
649 + ob_start(); /* Starting output buffering */
650 + $portfolio_options = get_option( 'prtfl_options' );
651 + $meta_values = get_post_custom( $post->ID );
652 + $post_thumbnail_id = get_post_thumbnail_id( $post->ID );
653 + if( empty ( $post_thumbnail_id ) ) {
654 + $args = array(
655 + 'post_parent' => $post->ID,
656 + 'post_type' => 'attachment',
657 + 'post_mime_type' => 'image',
658 + 'numberposts' => 1
1235 659 );
660 + $attachments = get_children( $args );
661 + $post_thumbnail_id = key( $attachments );
1236 662 }
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" />';
663 + $image = wp_get_attachment_image_src( $post_thumbnail_id, 'portfolio-thumb' );
664 + $image_alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true );
665 + $image_desc = get_post( $post_thumbnail_id );
666 + $image_desc = $image_desc->post_content;
667 + if( get_option( 'prtfl_postmeta_update' ) == '1' ) {
668 + $post_meta = get_post_meta( $post->ID, 'prtfl_information', true );
669 + $date_compl = $post_meta['_prtfl_date_compl'];
670 + if( ! empty( $date_compl ) && 'in progress' != $date_compl ) {
671 + $date_compl = explode( '/', $date_compl );
672 + $date_compl = date( get_option( 'date_format' ), strtotime( $date_compl[1] . '-' . $date_compl[0] . '-' . $date_compl[2] ) );
1246 673 }
674 + $link = $post_meta['_prtfl_link'];
675 + $short_descr = $post_meta['_prtfl_short_descr'];
1247 676 } 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;
677 + $date_compl = get_post_meta( $post->ID, '_prtfl_date_compl', true );
678 + if( ! empty( $date_compl ) && 'in progress' != $date_compl ) {
679 + $date_compl = explode( '/', $date_compl );
680 + $date_compl = date( get_option( 'date_format' ), strtotime( $date_compl[1] . '-' . $date_compl[0] . '-' . $date_compl[2] ) );
681 + }
682 + $link = get_post_meta( $post->ID, '_prtfl_link', true);
683 + $short_descr = $post_meta['_prtfl_short_descr'];
684 + } ?>
685 + <img src="<?php echo $image[0]; ?>" width="<?php echo $image[1]; ?>" alt="<?php echo $image_alt; ?>" />
686 + <div>
687 + <p>
688 + <strong><?php _e( 'Date of completion', 'pdf-print' ); ?>:</strong> <?php echo $date_compl; ?><br/>
689 + <strong><?php _e( 'Link', 'pdf-print' ); ?>:</strong> <a href="<?php echo $link; ?>"><?php echo $link; ?></a><br/>
690 + <strong><?php _e( 'Description', 'pdf-print' ); ?>:</strong> <?php echo $short_descr; ?><br/>
691 + </p>
692 + </div>
693 + <?php $terms = wp_get_object_terms( $post->ID, 'portfolio_technologies' );
694 + if ( is_array( $terms ) && count( $terms ) > 0 ) { ?>
695 + <div style="clear:both;">
696 + <strong><?php _e( 'Technologies', 'pdf-print' ); ?>: </strong>
697 + <?php $count = 0;
698 + foreach ( $terms as $term ) {
699 + if( 0 < $count )
700 + echo ', ';
701 + echo '<a href="' . get_term_link( $term->slug, 'portfolio_technologies' ) . '" title="' . sprintf( __( "View all posts in %s" ), $term->name ) . '" ' . '>' . $term->name . '</a>';
702 + $count++;
703 + } ?>
704 + </div>
705 + <?php }
706 + $content = ob_get_contents(); /* Getting output buffering */
707 + ob_end_clean(); /* Closing output buffering */
708 + return $content; /* Now we done with template */
1276 709 }
1277 710 }
1278 711
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 - }
712 +/* Generate query posts for Portfolio plugin */
713 +if ( ! function_exists( 'generate_query_posts_for_portfolio' ) ) {
714 + function generate_query_posts_for_portfolio() {
715 + global $wp_query;
716 + $paged = isset( $wp_query->query_vars['paged'] ) ? $wp_query->query_vars['paged'] : 1;
717 + $technologies = isset( $wp_query->query_vars["technologies"] ) ? $wp_query->query_vars["technologies"] : "";
718 + if( $technologies != "" ) {
719 + $args = array(
720 + 'post_type' => 'portfolio',
721 + 'post_status' => 'publish',
722 + 'posts_per_page' => get_option('posts_per_page'),
723 + 'paged' => $paged,
724 + 'tax_query' => array(
725 + array(
726 + 'taxonomy' => 'portfolio_technologies',
727 + 'field' => 'slug',
728 + 'terms' => $technologies
729 + )
730 + )
731 + );
732 + } else {
733 + $args = array(
734 + 'post_type' => 'portfolio',
735 + 'post_status' => 'publish',
736 + 'posts_per_page' => get_option('posts_per_page'),
737 + 'paged' => $paged
738 + );
1308 739 }
1309 - return $html;
740 + query_posts( $args );
1310 741 }
1311 742 }
1312 743
744 +/* Output print page or pdf document and include plugin script */
1313 745 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 - */
1319 746 function pdfprnt_print( $query ) {
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 ) ) {
747 + global $pdfprnt_options_array, $posts, $post;
748 + if ( $print = get_query_var( 'print' ) ) {
1328 749 remove_all_filters( 'the_content' );
1329 750 add_filter( 'the_content', 'capital_P_dangit', 11 );
1330 751 add_filter( 'the_content', 'wptexturize' );
1331 752 add_filter( 'the_content', 'convert_smilies' );
@@ -1330,865 +751,316 @@
1330 751 add_filter( 'the_content', 'wptexturize' );
1331 752 add_filter( 'the_content', 'convert_smilies' );
1332 753 add_filter( 'the_content', 'convert_chars' );
1333 754 add_filter( 'the_content', 'wpautop' );
1334 -
1335 - if ( ! class_exists( 'WP_Embed' ) ) {
1336 - require_once ABSPATH . WPINC . '/class-wp-embed.php';
755 + if ( 1 == $pdfprnt_options_array['tmpl_shorcode'] ) {
756 + add_filter( 'the_content', 'do_shortcode' ); /* executing shorcodes on the page */
757 + } else {
758 + $pattern = get_shortcode_regex();
759 + if ( preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches ) ) { /* getting all shortcodes we are using */
760 + foreach ( array_unique( $matches[0] ) as $value) {
761 + $post->post_content = str_replace( $value, "", $post->post_content ); /* replacing shorcodes to an empty string */
762 + }
763 + }
1337 764 }
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 );
765 + switch ( $print ) {
766 + case 'pdf': /* Content for PDF from post */
767 + include ( 'mpdf/mpdf.php' );
768 + $mpdf = new mPDF( get_bloginfo( 'charset' ) );
769 + $user_info = get_userdata( $post->post_author );
770 + $mpdf->SetAuthor( $user_info->display_name );
771 + $mpdf->SetTitle( $post->post_title );
772 + $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
773 + $html = '<div class="container">
774 + <div class="title"><h1><a href="' . get_permalink( $post->ID ) . '">' . $post->post_title . '</a></h1></div><br/>
775 + <div class="content">' . apply_filters( 'the_content', $post->post_content ) . '</div>
776 + </div>';
777 + $mpdf->WriteHTML( pdfprnt_generate_template( $html ) );
778 + $mpdf->Output();
779 + unset( $user_info );
780 + unset( $html );
781 + unset( $mpdf );
782 + die();
783 + break;
784 + case 'print': /* Content for printing from post */
785 + $html = '<div class="container">
786 + <div class="title"><h1>' . $post->post_title . '</h1></div><br/>
787 + <div class="content">' . apply_filters( 'the_content', $post->post_content ) . '</div>
788 + </div>';
789 + echo pdfprnt_generate_template( $html, false, true );
790 + unset( $html );
791 + die();
792 + break;
793 + case 'pdf-page': /* Content for PDF from archive or searching page */
794 + $html = '';
795 + $titles = array();
796 + $authors = array();
797 + include ( 'mpdf/mpdf.php' );
798 + $mpdf = new mPDF( get_bloginfo( 'charset' ) );
799 + foreach ( $posts as $p ) {
800 + if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
801 + continue;
802 + $titles[] = $p->post_title;
803 + $user_info = get_userdata( $p->post_author );
804 + $authors[] = $user_info->display_name;
805 + $html .= '<div class="container">
806 + <div class="title"><h1><a href="' . get_permalink( $p->ID ) . '">' . $p->post_title . '</a></h1></div><br/>
807 + <div class="content">' . apply_filters( 'the_content', $p->post_content ) . '</div>
808 + </div><br/><hr/><br/>';
809 + unset( $user_info );
1363 810 }
811 + $titles = array_unique( $titles );
812 + $authors = array_unique( $authors );
813 + $mpdf->SetTitle( implode( ',', $titles ) );
814 + $mpdf->SetAuthor( implode( ',', $authors ) );
815 + $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
816 + $mpdf->WriteHTML( pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_search'] ) );
817 + $mpdf->Output();
818 + unset( $authors );
819 + unset( $titles );
820 + unset( $html );
821 + unset( $mpdf );
822 + die();
1364 823 break;
1365 - case 'search':
1366 - do_action( 'pdfprnt_rewrite_posts_woocommerce' );
824 + case 'print-page': /* Content for printing from archive or searching page */
825 + $html = '';
826 + foreach ( $posts as $p ) {
827 + if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
828 + continue;
829 + $html .= '<div class="container">
830 + <div class="title"><h1>' . $p->post_title . '</h1></div><br/>
831 + <div class="content">' . apply_filters( 'the_content', $p->post_content ) . '</div>
832 + </div><br/><hr/><br/>';
833 + }
834 + echo pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_search'], true );
835 + unset( $html );
836 + die();
1367 837 break;
1368 - default:
838 + case 'pdf-portfolio': /* Content for PDF from portfolio post */
839 + include ( 'mpdf/mpdf.php' );
840 + $mpdf = new mPDF( get_bloginfo( 'charset' ) );
841 + $user_info = get_userdata( $post->post_author );
842 + $mpdf->SetAuthor( $user_info->display_name );
843 + $mpdf->SetTitle( $post->post_title );
844 + $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
845 + $html = '<div class="container">
846 + <div class="title"><h1><a href="' . get_permalink( $post->ID ) . '">' . $post->post_title . '</a></h1></div><br/>
847 + <div class="content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
848 + </div>';
849 + $mpdf->WriteHTML( pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'] ) );
850 + $mpdf->Output();
851 + unset( $html );
852 + unset( $user_info );
853 + unset( $mpdf );
854 + die();
1369 855 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();
856 + case 'print-portfolio': /* Content for printing from porfolio post */
857 + $html = '<div class="container">
858 + <div class="title"><h1>' . $post->post_title . '</h1></div><br/>
859 + <div class="content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
860 + </div>';
861 + echo pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'], true );
862 + unset( $html );
863 + die();
864 + break;
865 + case 'pdf-portfolio-page': /* Content for PDF from portfolio page */
866 + $html = '';
867 + $titles = array();
868 + $authors = array();
869 + generate_query_posts_for_portfolio();
870 + while ( have_posts() ) {
871 + the_post();
872 + global $post;
873 + if ( ! in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) )
874 + continue;
875 + $titles[] = $post->post_title;
876 + $user_info = get_userdata( $post->post_author );
877 + $authors[] = $user_info->display_name;
878 + $html .= '<div class="container">
879 + <div class="title"><h1><a href="' . get_permalink( $post->ID ) . '">' . $post->post_title . '</a></h1></div><br/>
880 + <div class="content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
881 + </div><br/><hr/><br/>';
882 + unset( $user_info );
1397 883 }
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();
884 + include ( 'mpdf/mpdf.php' );
885 + $mpdf = new mPDF( get_bloginfo( 'charset' ) );
886 + $titles = array_unique( $titles );
887 + $authors = array_unique( $authors );
888 + $mpdf->SetTitle( implode( ',', $titles ) );
889 + $mpdf->SetAuthor( implode( ',', $authors ) );
890 + $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
891 + $mpdf->WriteHTML( pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'] ) );
892 + $mpdf->Output();
893 + unset( $authors );
894 + unset( $titles );
895 + unset( $html );
896 + unset( $mpdf );
897 + die();
898 + break;
899 + case 'print-portfolio-page': /* Content for printing from portfolio page */
900 + generate_query_posts_for_portfolio();
901 + $html = '';
902 + while ( have_posts() ) {
903 + the_post();
904 + global $post;
905 + if ( ! in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) )
906 + continue;
907 + $html .= '<div class="container">
908 + <div class="title"><h1>' . $post->post_title . '</h1></div><br/>
909 + <div class="content">' . pdfprnt_generate_template_for_bws_portfolio() . '</div>
910 + </div><br/><hr/><br/>';
1418 911 }
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 - }
912 + echo pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'], true );
913 + unset( $html );
914 + die();
915 + break;
916 + case 'pdf-custom-page': /* Content for PDF from custom post */
917 + $html = '';
918 + $titles = $authors = array();
919 + foreach ( $posts as $p ) {
920 + if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
921 + continue;
922 + $titles[] = $p->post_title;
923 + $user_info = get_userdata( $p->post_author );
924 + $authors[] = $user_info->display_name;
925 + $html .= '<div class="container">';
926 + $html .= '<div class="title"><h1><a href="' . get_permalink( $p->ID ) . '">' . $p->post_title . '</a></h1></div><br/>';
927 + $html .= '<div class="content">';
928 + if ( has_post_thumbnail( $p->ID ) )
929 + $html .= get_the_post_thumbnail( $p->ID, 'thumbnail' );
930 + $html .= apply_filters( 'the_content', $p->post_content ) . '</div></div><br/><hr/><br/>';
931 + unset( $user_info );
1433 932 }
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 {
933 + include ( 'mpdf/mpdf.php' );
934 + $mpdf = new mPDF( get_bloginfo( 'charset' ) );
935 + $titles = array_unique( $titles );
936 + $authors = array_unique( $authors );
937 + $mpdf->SetTitle( implode( ',', $titles ) );
938 + $mpdf->SetAuthor( implode( ',', $authors ) );
939 + $mpdf->SetSubject( get_bloginfo( 'blogdescription' ) );
940 + $mpdf->WriteHTML( pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'] ) );
1534 941 $mpdf->Output();
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();
942 + unset( $authors );
943 + unset( $titles );
944 + unset( $html );
945 + unset( $mpdf );
946 + die();
947 + break;
948 + case 'print-custom-page': /* Content for printing from custom post */
949 + $html = '';
950 + foreach ( $posts as $p ) {
951 + if ( ! in_array( get_post_type( $p ), $pdfprnt_options_array['use_types_posts'] ) )
952 + continue;
953 + $html .= '<div class="container">';
954 + $html .= '<div class="title"><h1>' . $p->post_title . '</h1></div><br/>';
955 + $html .= '<div class="content">';
956 + if ( has_post_thumbnail( $p->ID ) )
957 + $html .= get_the_post_thumbnail( $p->ID, 'thumbnail' );
958 + $html .= apply_filters( 'the_content', $p->post_content ) . '</div>
959 + </div><br/><hr/><br/>';
1552 960 }
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 - }
1564 - }
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 );
1568 - }
1569 - if ( 1 === intval( $pdfprnt_options['disable_links'] ) ) {
1570 - $html .= '<style> a {text-decoration: none; color:#000000 !important; } </style>';
1571 - }
1572 -
1573 - $post_content = apply_filters( 'bwsplgns_get_pdf_print_content', $p->post_content, $p );
1574 - $shortcodes = implode( '|', apply_filters( 'bwsplgns_pdf_print_remove_shortcodes', array( 'vc_', 'az_', 'multilanguage_switcher' ) ) );
1575 - $post_content = preg_replace( "/\[\/?({$shortcodes})[^\]]*?\]/", '', $post_content );
1576 - $post_content = apply_filters( 'the_content', $post_content );
1577 - $separator = '';
1578 -
1579 - if ( ! empty( $author ) && ! empty( $date ) ) {
1580 - $separator = ' | ';
1581 - }
1582 -
1583 - ob_start();
1584 - ?>
1585 - <div class="post">
1586 - <?php
1587 - echo wp_kses_post( $title ) .
1588 - wp_kses_post( $category ) .
1589 - '<div class="postmetadata">' . wp_kses_post( $author . $separator . $date ) . '</div>' .
1590 - wp_kses_post( $image );
1591 - ?>
1592 - <div class="entry-content"><?php echo $post_content; ?></div>
1593 - </div>
1594 - <?php
1595 - $html .= ob_get_clean();
1596 - if ( $i !== $last ) {
1597 - $html .= '<br/><hr/><br/>';
1598 - $i ++;
1599 - }
1600 - }
1601 - if ( function_exists( 'et_theme_builder_get_template_layouts' ) && function_exists( 'et_theme_builder_frontend_render_footer' ) ) {
1602 - ob_start();
1603 - et_theme_builder_frontend_render_footer(
1604 - $layouts[ ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE ]['id'],
1605 - $layouts[ ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE ]['enabled'],
1606 - $layouts[ ET_THEME_BUILDER_TEMPLATE_POST_TYPE ]
1607 - );
1608 - $html .= ob_get_clean();
1609 - }
1610 - $html .= '</div>';
1611 - echo pdfprnt_generate_template( $html, true );
1612 - die();
1613 - default:
1614 - break;
961 + echo pdfprnt_generate_template( $html, $pdfprnt_options_array['tmpl_custom'], true );
962 + unset( $html );
963 + die();
964 + break;
965 + }
1615 966 }
1616 967 }
1617 968 }
1618 969
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';
970 +/* Add query vars */
971 +if ( ! function_exists( 'print_vars_callback' ) ) {
972 + function print_vars_callback( $query_vars ) {
973 + $query_vars[] = 'print';
974 + $query_vars[] = 'tmpl';
1627 975 return $query_vars;
1628 976 }
1629 977 }
1630 978
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;
979 +/* Add custom admin bar menu */
980 +if ( ! function_exists( 'pdfprnt_admin_bar_menu' ) ) {
981 + function pdfprnt_admin_bar_menu() {
982 + global $pdfprnt_options_array, $wp_admin_bar, $wp, $posts;
983 + if ( ! is_super_admin() || ! is_admin_bar_showing() ) /* Checking user */
984 + return;
985 + if ( ( ! is_search() && ! is_archive() ) || ( is_category() || ! have_posts() ) )
986 + return;
987 + $is_return = true;
988 + foreach ( $posts as $post ) {
989 + if ( in_array( get_post_type( $post ), $pdfprnt_options_array['use_types_posts'] ) ) {
990 + $is_return = false;
991 + break;
1652 992 }
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;
1688 993 }
994 + if ( $is_return )
995 + return;
996 + if ( empty( $wp->request ) )
997 + $current_url = add_query_arg( $wp->query_string, '', home_url() );
998 + else
999 + $current_url = home_url( $wp->request );
1000 + $permalink = add_query_arg( 'print', 'pdf-page', $current_url );
1001 + $wp_admin_bar->add_menu( array(
1002 + 'id' => 'pdfprnt-bar-menu',
1003 + 'title' => '<span class="admin-bar-menu-bws-icon"></span>PDF',
1004 + 'href' => $permalink
1005 + ) );
1006 + $template_url = add_query_arg( 'tmpl', '1', $permalink ); /* Adding parametrs to link */
1007 + $wp_admin_bar->add_menu( array(
1008 + 'parent' => 'pdfprnt-bar-menu',
1009 + 'id' => 'pdfprnt-template-1',
1010 + 'title' => '<img src="' . plugins_url( 'images/template_left.jpg', __FILE__ ) . '" alt="template_left" />',
1011 + 'href' => $template_url
1012 + ) );
1013 + $template_url = add_query_arg( 'tmpl', '2', $permalink ); /* Adding parametrs to link */
1014 + $wp_admin_bar->add_menu( array(
1015 + 'parent' => 'pdfprnt-bar-menu',
1016 + 'id' => 'pdfprnt-template-2',
1017 + 'title' => '<img src="' . plugins_url( 'images/template_center.jpg', __FILE__ ) . '" alt="template_center" />',
1018 + 'href' => $template_url
1019 + ) );
1020 + $template_url = add_query_arg( 'tmpl', '3', $permalink ); /* Adding parametrs to link */
1021 + $wp_admin_bar->add_menu( array(
1022 + 'parent' => 'pdfprnt-bar-menu',
1023 + 'id' => 'pdfprnt-template-3',
1024 + 'title' => '<img src="' . plugins_url( 'images/template_right.jpg', __FILE__ ) . '" alt="template_right" />',
1025 + 'href' => $template_url
1026 + ) );
1027 + unset( $current_url );
1028 + unset( $permalink );
1029 + unset( $template_url );
1689 1030 }
1690 1031 }
1691 1032
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;
1726 - }
1727 -}
1728 -
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 );
1763 - }
1764 - } else {
1765 - $result['error'] = sprintf( esc_html__( 'Cannot create %s folder. Check your permissions.', 'pdf-print' ), '"uploads/pdf-print-fonts"' );
1766 - }
1767 - $files = scandir( $destination );
1768 - $value = isset( $result['error'] ) ? -1 : count( $files );
1769 - $opt = 'additional_fonts';
1770 - pdfprnt_update_option( $opt, $value, true );
1771 - return $result;
1772 - }
1773 -}
1774 -
1775 -
1776 -if ( ! function_exists( 'pdfprnt_extract_mpdf_library' ) ) {
1777 - /**
1778 - * Extract mPDF library ( verson 7.1.5 ) from zip-archive
1779 - *
1780 - * @param string $zip_file Path to zip-archive.
1781 - * @param string $upload_dir Path to "Upload" folder.
1782 - * @return string $result Result message.
1783 - */
1784 - function pdfprnt_extract_mpdf_library( $zip_file, $upload_dir ) {
1785 - global $wpdb;
1786 -
1787 - $result = array();
1788 - /* check permissions */
1789 - if ( is_writable( $upload_dir ) ) {
1790 - $zip = new Pdfprnt_ZipArchive();
1791 - /* open zip-archive */
1792 - if ( true === $zip->open( $zip_file ) ) {
1793 - /* extract folder with fonts */
1794 - $errors = $zip->extractSubdirTo( $upload_dir, 'mpdf' );
1795 - $zip->close();
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() {
2084 - global $hook_suffix, $pdfprnt_plugin_info;
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 - }
2094 - }
2095 - }
2096 -}
2097 -
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 -
2114 -if ( ! function_exists( 'pdfprnt_uninstall' ) ) {
2115 - /**
2116 - * Deleting plugin options on uninstalling
2117 - */
1033 +/* Deleting plugin options on uninstalling */
1034 +if( ! function_exists( 'pdfprnt_uninstall' ) ) {
2118 1035 function pdfprnt_uninstall() {
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__ ) );
1036 + delete_option( 'pdfprnt_options_array' );
1037 + delete_site_option( 'pdfprnt_options_array' );
2148 1038 }
2149 1039 }
2150 1040
2151 1041 /* Adding function to output PDF document or pirnt page */
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' );
2156 -/* Initialization */
2157 -add_action( 'init', 'pdfprnt_init' );
2158 -add_action( 'admin_init', 'pdfprnt_admin_init' );
1042 +add_action( 'wp', 'pdfprnt_print' );
1043 +/* Initialization default plugin settings */
1044 +add_action( 'init', 'pdfprnt_settings' );
1045 +/* Checks version of Wordpress required for plugin */
1046 +add_action( 'admin_init', 'pdfprnt_version_check' );
1047 +/* Load internationalization */
1048 +add_action( 'init', 'pdfprnt_plugin_init' );
2159 1049 /* Adding stylesheets */
2160 -add_action( 'admin_enqueue_scripts', 'pdfprnt_admin_head' );
2161 -add_action( 'wp_enqueue_scripts', 'pdfprnt_admin_head' );
1050 +add_action( 'init', 'pdfprnt_admin_head' );
2162 1051 /* Adding 'BWS Plugins' admin menu */
2163 -add_action( 'admin_menu', 'pdfprnt_add_admin_menu' );
1052 +add_action( 'admin_menu', 'pdfprnt_add_pages' );
1053 +/* Add menu to bar menu WordPress */
1054 +add_action( 'admin_bar_menu', 'pdfprnt_admin_bar_menu', 1000 );
1055 +
2164 1056 /* Add query vars */
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 -
1057 +add_filter( 'query_vars', 'print_vars_callback' );
1058 +/* Adds "Settings" link to the plugin action page */
1059 +add_filter( 'plugin_action_links', 'pdfprnt_action_links', 10, 2 );
2175 1060 /* Additional links on the plugin page */
2176 -add_filter( 'plugin_action_links', 'pdfprnt_action_links', 10, 2 );
2177 1061 add_filter( 'plugin_row_meta', 'pdfprnt_links', 10, 2 );
2178 1062 /* Adding buttons plugin to content */
2179 1063 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' );
2188 -/* Adding banner */
2189 -add_action( 'admin_notices', 'pdfprnt_plugin_banner' );
2190 1064
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 );
1065 +register_uninstall_hook( __FILE__, 'pdfprnt_uninstall' );
1066 +?>