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 | 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
|
234 |
} else {
|
235 |
-
$sanitize_function
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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="
|
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"> </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"> </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.
|
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.
|
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.
|
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
|
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 ) {
|