WooCommerce PDF Invoices & Packing Slips - Version 2.4.4

Version Description

  • Fix: German Market thumbnail settings conflict
  • Fix: Correctly sanitize wizard text input
  • Fix: Link to documentation for increasing memory
  • Fix: Fallback for subscription renewal tax rates
Download this release

Release Info

Developer pomegranate
Plugin Icon 128x128 WooCommerce PDF Invoices & Packing Slips
Version 2.4.4
Comparing to
See all releases

Code changes from version 2.4.3 to 2.4.4

includes/class-wcpdf-setup-wizard.php CHANGED
@@ -230,9 +230,9 @@ class Setup_Wizard {
230
  // sanitize posted settings
231
  foreach ($settings as $key => $value) {
232
  if ( $key == 'shop_address' && function_exists('sanitize_textarea_field') ) {
233
- $sanitize_function == 'sanitize_textarea_field';
234
  } else {
235
- $sanitize_function == 'sanitize_text_field';
236
  }
237
 
238
  if (is_array($value)) {
230
  // sanitize posted settings
231
  foreach ($settings as $key => $value) {
232
  if ( $key == 'shop_address' && function_exists('sanitize_textarea_field') ) {
233
+ $sanitize_function = 'sanitize_textarea_field';
234
  } else {
235
+ $sanitize_function = 'sanitize_text_field';
236
  }
237
 
238
  if (is_array($value)) {
includes/compatibility/class-wcpdf-compatibility-third-party-plugins.php CHANGED
@@ -233,7 +233,7 @@ class Third_Party_Plugins {
233
  * Restore above
234
  */
235
  function restore_wgm_thumbnails( $document_type, $document ) {
236
- if ( is_callable( array( 'WGM_Product', 'add_thumbnail_to_order' ) ) ) {
237
  add_filter( 'woocommerce_order_item_name', array( 'WGM_Product', 'add_thumbnail_to_order' ), 100, 3 );
238
  }
239
  }
233
  * Restore above
234
  */
235
  function restore_wgm_thumbnails( $document_type, $document ) {
236
+ if ( is_callable( array( 'WGM_Product', 'add_thumbnail_to_order' ) ) && get_option( 'german_market_product_images_in_order', 'off' ) == 'on' ) {
237
  add_filter( 'woocommerce_order_item_name', array( 'WGM_Product', 'add_thumbnail_to_order' ), 100, 3 );
238
  }
239
  }
includes/documents/abstract-wcpdf-order-document-methods.php CHANGED
@@ -713,7 +713,20 @@ abstract class Order_Document_Methods extends Order_Document {
713
  }
714
 
715
  foreach( $tax_items as $tax_item_key => $tax_item ) {
716
- $tax_rates[ $tax_item->get_rate_id() ] = $tax_item->get_rate_percent();
 
 
 
 
 
 
 
 
 
 
 
 
 
717
  }
718
  return $tax_rates;
719
  } else {
713
  }
714
 
715
  foreach( $tax_items as $tax_item_key => $tax_item ) {
716
+ if ( $order->get_created_via() == 'subscription' ) {
717
+ // subscription renewals didn't properly record the rate_percent property between WC3.7 and WCS3.0.1
718
+ // so we use a fallback if the rate_percent = 0 and the amount != 0
719
+ $rate_percent = $tax_item->get_rate_percent();
720
+ $tax_amount = $tax_item->get_tax_total() + $tax_item->get_shipping_tax_total();
721
+ if ( $tax_amount > 0 && $rate_percent > 0 ) {
722
+ $tax_rates[ $tax_item->get_rate_id() ] = $rate_percent;
723
+ } else {
724
+ continue; // not setting the rate will let the plugin fall back to the rate from the settings
725
+ }
726
+ } else {
727
+ $tax_rates[ $tax_item->get_rate_id() ] = $tax_item->get_rate_percent();
728
+ }
729
+
730
  }
731
  return $tax_rates;
732
  } else {
includes/views/dompdf-status.php CHANGED
@@ -1,203 +1,203 @@
1
- <?php
2
- if ( ! defined( 'ABSPATH' ) ) {
3
- exit; // Exit if accessed directly
4
- }
5
-
6
- $memory_limit = function_exists('wc_let_to_num')?wc_let_to_num( WP_MEMORY_LIMIT ):woocommerce_let_to_num( WP_MEMORY_LIMIT );
7
- $php_mem_limit = function_exists( 'memory_get_usage' ) ? @ini_get( 'memory_limit' ) : '-';
8
-
9
- $server_configs = array(
10
- "DOMDocument extension" => array(
11
- "required" => true,
12
- "value" => phpversion("DOM"),
13
- "result" => class_exists("DOMDocument"),
14
- ),
15
- "MBString extension" => array(
16
- "required" => true,
17
- "value" => phpversion("mbstring"),
18
- "result" => function_exists("mb_send_mail"),
19
- "fallback" => "Recommended, will use fallback functions",
20
- ),
21
- "GD" => array(
22
- "required" => true,
23
- "value" => phpversion("gd"),
24
- "result" => function_exists("imagecreate"),
25
- "fallback" => "Required if you have images in your documents",
26
- ),
27
- // "PCRE" => array(
28
- // "required" => true,
29
- // "value" => phpversion("pcre"),
30
- // "result" => function_exists("preg_match") && @preg_match("/./u", "a"),
31
- // "failure" => "PCRE is required with Unicode support (the \"u\" modifier)",
32
- // ),
33
- "Zlib" => array(
34
- "required" => "To compress PDF documents",
35
- "value" => phpversion("zlib"),
36
- "result" => function_exists("gzcompress"),
37
- "fallback" => "Recommended to compress PDF documents",
38
- ),
39
- "opcache" => array(
40
- "required" => "For better performances",
41
- "value" => null,
42
- "result" => false,
43
- "fallback" => "Recommended for better performances",
44
- ),
45
- "GMagick or IMagick" => array(
46
- "required" => "Better with transparent PNG images",
47
- "value" => null,
48
- "result" => extension_loaded("gmagick") || extension_loaded("imagick"),
49
- "fallback" => "Recommended for better performances",
50
- ),
51
- "glob()" => array(
52
- "required" => "Required to detect custom templates and to clear the temp folder periodically",
53
- "value" => null,
54
- "result" => function_exists("glob"),
55
- "fallback" => "Check php disable_functions",
56
- ),
57
- "WP Memory Limit" => array(
58
- "required" => 'Recommended: 128MB (more for plugin-heavy setups)<br/>See: <a href="http://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP">Increasing memory allocated to PHP</a>',
59
- "value" => sprintf("WordPress: %s, PHP: %s", WP_MEMORY_LIMIT, $php_mem_limit ),
60
- "result" => $memory_limit > 67108864,
61
- ),
62
- 'allow_url_fopen' => array (
63
- 'required' => 'Allow remote stylesheets and images',
64
- 'value' => null,
65
- 'result' => ini_get("allow_url_fopen"),
66
- "fallback" => "allow_url_fopen disabled",
67
- ),
68
- );
69
-
70
- if (($xc = extension_loaded("xcache")) || ($apc = extension_loaded("apc")) || ($zop = extension_loaded("Zend OPcache")) || ($op = extension_loaded("opcache"))) {
71
- $server_configs["opcache"]["result"] = true;
72
- $server_configs["opcache"]["value"] = (
73
- $xc ? "XCache ".phpversion("xcache") : (
74
- $apc ? "APC ".phpversion("apc") : (
75
- $zop ? "Zend OPCache ".phpversion("Zend OPcache") : "PHP OPCache ".phpversion("opcache")
76
- )
77
- )
78
- );
79
- }
80
- if (($gm = extension_loaded("gmagick")) || ($im = extension_loaded("imagick"))) {
81
- $server_configs["GMagick or IMagick"]["value"] = ($im ? "IMagick ".phpversion("imagick") : "GMagick ".phpversion("gmagick"));
82
- }
83
-
84
- ?>
85
-
86
- <h3 id="system">System Configuration</h3>
87
-
88
- <table cellspacing="1px" cellpadding="4px" style="background-color: white; padding: 5px; border: 1px solid #ccc;">
89
- <tr>
90
- <th align="left">&nbsp;</th>
91
- <th align="left">Required</th>
92
- <th align="left">Present</th>
93
- </tr>
94
-
95
- <?php foreach($server_configs as $label => $server_config) {
96
- if ($server_config["result"]) {
97
- $background = "#9e4";
98
- $color = "black";
99
- } elseif (isset($server_config["fallback"])) {
100
- $background = "#FCC612";
101
- $color = "black";
102
- } else {
103
- $background = "#f43";
104
- $color = "white";
105
- }
106
- ?>
107
- <tr>
108
- <td class="title"><?php echo $label; ?></td>
109
- <td><?php echo ($server_config["required"] === true ? "Yes" : $server_config["required"]); ?></td>
110
- <td style="background-color:<?php echo $background; ?>; color:<?php echo $color; ?>">
111
- <?php
112
- echo $server_config["value"];
113
- if ($server_config["result"] && !$server_config["value"]) echo "Yes";
114
- if (!$server_config["result"]) {
115
- if (isset($server_config["fallback"])) {
116
- echo "<div>No. ".$server_config["fallback"]."</div>";
117
- }
118
- if (isset($server_config["failure"])) {
119
- echo "<div>".$server_config["failure"]."</div>";
120
- }
121
- }
122
- ?>
123
- </td>
124
- </tr>
125
- <?php } ?>
126
-
127
- </table>
128
-
129
- <?php
130
- $permissions = array(
131
- 'WCPDF_TEMP_DIR' => array (
132
- 'description' => 'Central temporary plugin folder',
133
- 'value' => WPO_WCPDF()->main->get_tmp_path(),
134
- 'status' => (is_writable( WPO_WCPDF()->main->get_tmp_path() ) ? "ok" : "failed"),
135
- 'status_message' => (is_writable( WPO_WCPDF()->main->get_tmp_path() ) ? "Writable" : "Not writable"),
136
- ),
137
- 'WCPDF_ATTACHMENT_DIR' => array (
138
- 'description' => 'Temporary attachments folder',
139
- 'value' => trailingslashit( WPO_WCPDF()->main->get_tmp_path( 'attachments' ) ),
140
- 'status' => (is_writable( WPO_WCPDF()->main->get_tmp_path( 'attachments' ) ) ? "ok" : "failed"),
141
- 'status_message' => (is_writable( WPO_WCPDF()->main->get_tmp_path( 'attachments' ) ) ? "Writable" : "Not writable"),
142
- ),
143
- 'DOMPDF_TEMP_DIR' => array (
144
- 'description' => 'Temporary DOMPDF folder',
145
- 'value' => trailingslashit(WPO_WCPDF()->main->get_tmp_path( 'dompdf' )),
146
- 'status' => (is_writable(WPO_WCPDF()->main->get_tmp_path( 'dompdf' )) ? "ok" : "failed"),
147
- 'status_message' => (is_writable(WPO_WCPDF()->main->get_tmp_path( 'dompdf' )) ? "Writable" : "Not writable"),
148
- ),
149
- 'DOMPDF_FONT_DIR' => array (
150
- 'description' => 'DOMPDF fonts folder (needs to be writable for custom/remote fonts)',
151
- 'value' => trailingslashit(WPO_WCPDF()->main->get_tmp_path( 'fonts' )),
152
- 'status' => (is_writable(WPO_WCPDF()->main->get_tmp_path( 'fonts' )) ? "ok" : "failed"),
153
- 'status_message' => (is_writable(WPO_WCPDF()->main->get_tmp_path( 'fonts' )) ? "Writable" : "Not writable"),
154
- ),
155
- );
156
-
157
- $upload_dir = wp_upload_dir();
158
- $upload_base = trailingslashit( $upload_dir['basedir'] );
159
-
160
- ?>
161
- <br />
162
- <h3 id="system">Write Permissions</h3>
163
- <table cellspacing="1px" cellpadding="4px" style="background-color: white; padding: 5px; border: 1px solid #ccc;">
164
- <tr>
165
- <th align="left">Description</th>
166
- <th align="left">Value</th>
167
- <th align="left">Status</th>
168
- </tr>
169
- <?php
170
- foreach ($permissions as $permission) {
171
- if ($permission['status'] == 'ok') {
172
- $background = "#9e4";
173
- $color = "black";
174
- } else {
175
- $background = "#f43";
176
- $color = "white";
177
- }
178
- ?>
179
- <tr>
180
- <td><?php echo $permission['description']; ?></td>
181
- <td><?php echo str_replace( array('/','\\' ), array('/<wbr>','\\<wbr>' ), $permission['value'] ); ?></td>
182
- <td style="background-color:<?php echo $background; ?>; color:<?php echo $color; ?>"><?php echo $permission['status_message']; ?></td>
183
- </tr>
184
-
185
- <?php } ?>
186
-
187
- </table>
188
-
189
- <p>
190
- The central temp folder is <code><?php echo WPO_WCPDF()->main->get_tmp_path(); ?></code>.
191
- By default, this folder is created in the WordPress uploads folder (<code><?php echo $upload_base; ?></code>),
192
- which can be defined by setting <code>UPLOADS</code> in wp-config.php.
193
- Alternatively, you can control the specific folder for PDF invoices by using the
194
- <code>wpo_wcpdf_tmp_path</code> filter. Make sure this folder is writable and that the
195
- subfolders <code>attachments</code>, <code>dompdf</code> and <code>fonts</code>
196
- are present (these will be created by the plugin if the central temp folder is writable).<br>
197
- <br>
198
- If the temporary folders were not automatically created by the plugin, verify that all the font
199
- files (from <code><?php echo WPO_WCPDF()->plugin_path() . "/vendor/dompdf/dompdf/lib/fonts/"; ?></code>)
200
- are copied to the fonts folder.
201
- Normally, this is fully automated, but if your server has strict security settings, this automated
202
- copying may have been prohibited. In that case, you also need to make sure these folders get
203
  synchronized on plugin updates!
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit; // Exit if accessed directly
4
+ }
5
+
6
+ $memory_limit = function_exists('wc_let_to_num')?wc_let_to_num( WP_MEMORY_LIMIT ):woocommerce_let_to_num( WP_MEMORY_LIMIT );
7
+ $php_mem_limit = function_exists( 'memory_get_usage' ) ? @ini_get( 'memory_limit' ) : '-';
8
+
9
+ $server_configs = array(
10
+ "DOMDocument extension" => array(
11
+ "required" => true,
12
+ "value" => phpversion("DOM"),
13
+ "result" => class_exists("DOMDocument"),
14
+ ),
15
+ "MBString extension" => array(
16
+ "required" => true,
17
+ "value" => phpversion("mbstring"),
18
+ "result" => function_exists("mb_send_mail"),
19
+ "fallback" => "Recommended, will use fallback functions",
20
+ ),
21
+ "GD" => array(
22
+ "required" => true,
23
+ "value" => phpversion("gd"),
24
+ "result" => function_exists("imagecreate"),
25
+ "fallback" => "Required if you have images in your documents",
26
+ ),
27
+ // "PCRE" => array(
28
+ // "required" => true,
29
+ // "value" => phpversion("pcre"),
30
+ // "result" => function_exists("preg_match") && @preg_match("/./u", "a"),
31
+ // "failure" => "PCRE is required with Unicode support (the \"u\" modifier)",
32
+ // ),
33
+ "Zlib" => array(
34
+ "required" => "To compress PDF documents",
35
+ "value" => phpversion("zlib"),
36
+ "result" => function_exists("gzcompress"),
37
+ "fallback" => "Recommended to compress PDF documents",
38
+ ),
39
+ "opcache" => array(
40
+ "required" => "For better performances",
41
+ "value" => null,
42
+ "result" => false,
43
+ "fallback" => "Recommended for better performances",
44
+ ),
45
+ "GMagick or IMagick" => array(
46
+ "required" => "Better with transparent PNG images",
47
+ "value" => null,
48
+ "result" => extension_loaded("gmagick") || extension_loaded("imagick"),
49
+ "fallback" => "Recommended for better performances",
50
+ ),
51
+ "glob()" => array(
52
+ "required" => "Required to detect custom templates and to clear the temp folder periodically",
53
+ "value" => null,
54
+ "result" => function_exists("glob"),
55
+ "fallback" => "Check php disable_functions",
56
+ ),
57
+ "WP Memory Limit" => array(
58
+ "required" => 'Recommended: 128MB (more for plugin-heavy setups)<br/>See: <a href="https://docs.woocommerce.com/document/increasing-the-wordpress-memory-limit/">Increasing the WordPress Memory Limit</a>',
59
+ "value" => sprintf("WordPress: %s, PHP: %s", WP_MEMORY_LIMIT, $php_mem_limit ),
60
+ "result" => $memory_limit > 67108864,
61
+ ),
62
+ 'allow_url_fopen' => array (
63
+ 'required' => 'Allow remote stylesheets and images',
64
+ 'value' => null,
65
+ 'result' => ini_get("allow_url_fopen"),
66
+ "fallback" => "allow_url_fopen disabled",
67
+ ),
68
+ );
69
+
70
+ if (($xc = extension_loaded("xcache")) || ($apc = extension_loaded("apc")) || ($zop = extension_loaded("Zend OPcache")) || ($op = extension_loaded("opcache"))) {
71
+ $server_configs["opcache"]["result"] = true;
72
+ $server_configs["opcache"]["value"] = (
73
+ $xc ? "XCache ".phpversion("xcache") : (
74
+ $apc ? "APC ".phpversion("apc") : (
75
+ $zop ? "Zend OPCache ".phpversion("Zend OPcache") : "PHP OPCache ".phpversion("opcache")
76
+ )
77
+ )
78
+ );
79
+ }
80
+ if (($gm = extension_loaded("gmagick")) || ($im = extension_loaded("imagick"))) {
81
+ $server_configs["GMagick or IMagick"]["value"] = ($im ? "IMagick ".phpversion("imagick") : "GMagick ".phpversion("gmagick"));
82
+ }
83
+
84
+ ?>
85
+
86
+ <h3 id="system">System Configuration</h3>
87
+
88
+ <table cellspacing="1px" cellpadding="4px" style="background-color: white; padding: 5px; border: 1px solid #ccc;">
89
+ <tr>
90
+ <th align="left">&nbsp;</th>
91
+ <th align="left">Required</th>
92
+ <th align="left">Present</th>
93
+ </tr>
94
+
95
+ <?php foreach($server_configs as $label => $server_config) {
96
+ if ($server_config["result"]) {
97
+ $background = "#9e4";
98
+ $color = "black";
99
+ } elseif (isset($server_config["fallback"])) {
100
+ $background = "#FCC612";
101
+ $color = "black";
102
+ } else {
103
+ $background = "#f43";
104
+ $color = "white";
105
+ }
106
+ ?>
107
+ <tr>
108
+ <td class="title"><?php echo $label; ?></td>
109
+ <td><?php echo ($server_config["required"] === true ? "Yes" : $server_config["required"]); ?></td>
110
+ <td style="background-color:<?php echo $background; ?>; color:<?php echo $color; ?>">
111
+ <?php
112
+ echo $server_config["value"];
113
+ if ($server_config["result"] && !$server_config["value"]) echo "Yes";
114
+ if (!$server_config["result"]) {
115
+ if (isset($server_config["fallback"])) {
116
+ echo "<div>No. ".$server_config["fallback"]."</div>";
117
+ }
118
+ if (isset($server_config["failure"])) {
119
+ echo "<div>".$server_config["failure"]."</div>";
120
+ }
121
+ }
122
+ ?>
123
+ </td>
124
+ </tr>
125
+ <?php } ?>
126
+
127
+ </table>
128
+
129
+ <?php
130
+ $permissions = array(
131
+ 'WCPDF_TEMP_DIR' => array (
132
+ 'description' => 'Central temporary plugin folder',
133
+ 'value' => WPO_WCPDF()->main->get_tmp_path(),
134
+ 'status' => (is_writable( WPO_WCPDF()->main->get_tmp_path() ) ? "ok" : "failed"),
135
+ 'status_message' => (is_writable( WPO_WCPDF()->main->get_tmp_path() ) ? "Writable" : "Not writable"),
136
+ ),
137
+ 'WCPDF_ATTACHMENT_DIR' => array (
138
+ 'description' => 'Temporary attachments folder',
139
+ 'value' => trailingslashit( WPO_WCPDF()->main->get_tmp_path( 'attachments' ) ),
140
+ 'status' => (is_writable( WPO_WCPDF()->main->get_tmp_path( 'attachments' ) ) ? "ok" : "failed"),
141
+ 'status_message' => (is_writable( WPO_WCPDF()->main->get_tmp_path( 'attachments' ) ) ? "Writable" : "Not writable"),
142
+ ),
143
+ 'DOMPDF_TEMP_DIR' => array (
144
+ 'description' => 'Temporary DOMPDF folder',
145
+ 'value' => trailingslashit(WPO_WCPDF()->main->get_tmp_path( 'dompdf' )),
146
+ 'status' => (is_writable(WPO_WCPDF()->main->get_tmp_path( 'dompdf' )) ? "ok" : "failed"),
147
+ 'status_message' => (is_writable(WPO_WCPDF()->main->get_tmp_path( 'dompdf' )) ? "Writable" : "Not writable"),
148
+ ),
149
+ 'DOMPDF_FONT_DIR' => array (
150
+ 'description' => 'DOMPDF fonts folder (needs to be writable for custom/remote fonts)',
151
+ 'value' => trailingslashit(WPO_WCPDF()->main->get_tmp_path( 'fonts' )),
152
+ 'status' => (is_writable(WPO_WCPDF()->main->get_tmp_path( 'fonts' )) ? "ok" : "failed"),
153
+ 'status_message' => (is_writable(WPO_WCPDF()->main->get_tmp_path( 'fonts' )) ? "Writable" : "Not writable"),
154
+ ),
155
+ );
156
+
157
+ $upload_dir = wp_upload_dir();
158
+ $upload_base = trailingslashit( $upload_dir['basedir'] );
159
+
160
+ ?>
161
+ <br />
162
+ <h3 id="system">Write Permissions</h3>
163
+ <table cellspacing="1px" cellpadding="4px" style="background-color: white; padding: 5px; border: 1px solid #ccc;">
164
+ <tr>
165
+ <th align="left">Description</th>
166
+ <th align="left">Value</th>
167
+ <th align="left">Status</th>
168
+ </tr>
169
+ <?php
170
+ foreach ($permissions as $permission) {
171
+ if ($permission['status'] == 'ok') {
172
+ $background = "#9e4";
173
+ $color = "black";
174
+ } else {
175
+ $background = "#f43";
176
+ $color = "white";
177
+ }
178
+ ?>
179
+ <tr>
180
+ <td><?php echo $permission['description']; ?></td>
181
+ <td><?php echo str_replace( array('/','\\' ), array('/<wbr>','\\<wbr>' ), $permission['value'] ); ?></td>
182
+ <td style="background-color:<?php echo $background; ?>; color:<?php echo $color; ?>"><?php echo $permission['status_message']; ?></td>
183
+ </tr>
184
+
185
+ <?php } ?>
186
+
187
+ </table>
188
+
189
+ <p>
190
+ The central temp folder is <code><?php echo WPO_WCPDF()->main->get_tmp_path(); ?></code>.
191
+ By default, this folder is created in the WordPress uploads folder (<code><?php echo $upload_base; ?></code>),
192
+ which can be defined by setting <code>UPLOADS</code> in wp-config.php.
193
+ Alternatively, you can control the specific folder for PDF invoices by using the
194
+ <code>wpo_wcpdf_tmp_path</code> filter. Make sure this folder is writable and that the
195
+ subfolders <code>attachments</code>, <code>dompdf</code> and <code>fonts</code>
196
+ are present (these will be created by the plugin if the central temp folder is writable).<br>
197
+ <br>
198
+ If the temporary folders were not automatically created by the plugin, verify that all the font
199
+ files (from <code><?php echo WPO_WCPDF()->plugin_path() . "/vendor/dompdf/dompdf/lib/fonts/"; ?></code>)
200
+ are copied to the fonts folder.
201
+ Normally, this is fully automated, but if your server has strict security settings, this automated
202
+ copying may have been prohibited. In that case, you also need to make sure these folders get
203
  synchronized on plugin updates!
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: woocommerce, pdf, invoices, packing slips, print, delivery notes, invoice,
5
  Requires at least: 3.5
6
  Tested up to: 5.3
7
  Requires PHP: 5.3
8
- Stable tag: 2.4.3
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -102,6 +102,12 @@ There's a setting on the Status tab of the settings page that allows you to togg
102
 
103
  == Changelog ==
104
 
 
 
 
 
 
 
105
  = 2.4.3 =
106
  * Fix: Prevent errors unsetting a non-existing setting
107
  * Fix: Potential crash on improperly initiated documents
5
  Requires at least: 3.5
6
  Tested up to: 5.3
7
  Requires PHP: 5.3
8
+ Stable tag: 2.4.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
102
 
103
  == Changelog ==
104
 
105
+ = 2.4.4 =
106
+ * Fix: German Market thumbnail settings conflict
107
+ * Fix: Correctly sanitize wizard text input
108
+ * Fix: Link to documentation for increasing memory
109
+ * Fix: Fallback for subscription renewal tax rates
110
+
111
  = 2.4.3 =
112
  * Fix: Prevent errors unsetting a non-existing setting
113
  * Fix: Potential crash on improperly initiated documents
woocommerce-pdf-invoices-packingslips.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: WooCommerce PDF Invoices & Packing Slips
4
  * Plugin URI: http://www.wpovernight.com
5
  * Description: Create, print & email PDF invoices & packing slips for WooCommerce orders.
6
- * Version: 2.4.3
7
  * Author: Ewout Fernhout
8
  * Author URI: http://www.wpovernight.com
9
  * License: GPLv2 or later
@@ -21,7 +21,7 @@ if ( !class_exists( 'WPO_WCPDF' ) ) :
21
 
22
  class WPO_WCPDF {
23
 
24
- public $version = '2.4.3';
25
  public $plugin_basename;
26
  public $legacy_mode;
27
 
@@ -86,7 +86,7 @@ class WPO_WCPDF {
86
  *
87
  * - WP_LANG_DIR/woocommerce-pdf-invoices-packing-slips/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
88
  * - WP_LANG_DIR/plugins/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
89
- * - woocommerce-pdf-invoices-packing-slips-pro/languages/woocommerce-pdf-invoices-packing-slips-LOCALE.mo (which if not found falls back to:)
90
  * - WP_LANG_DIR/plugins/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
91
  */
92
  foreach ( $textdomains as $textdomain ) {
3
  * Plugin Name: WooCommerce PDF Invoices & Packing Slips
4
  * Plugin URI: http://www.wpovernight.com
5
  * Description: Create, print & email PDF invoices & packing slips for WooCommerce orders.
6
+ * Version: 2.4.4
7
  * Author: Ewout Fernhout
8
  * Author URI: http://www.wpovernight.com
9
  * License: GPLv2 or later
21
 
22
  class WPO_WCPDF {
23
 
24
+ public $version = '2.4.4';
25
  public $plugin_basename;
26
  public $legacy_mode;
27
 
86
  *
87
  * - WP_LANG_DIR/woocommerce-pdf-invoices-packing-slips/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
88
  * - WP_LANG_DIR/plugins/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
89
+ * - woocommerce-pdf-invoices-packing-slips/languages/woocommerce-pdf-invoices-packing-slips-LOCALE.mo (which if not found falls back to:)
90
  * - WP_LANG_DIR/plugins/woocommerce-pdf-invoices-packing-slips-LOCALE.mo
91
  */
92
  foreach ( $textdomains as $textdomain ) {