plugin updates

This commit is contained in:
Tony Volpe
2024-12-02 15:56:58 -05:00
parent 8cdfd97703
commit d3696168c9
102 changed files with 557 additions and 214 deletions

View File

@@ -1,3 +1,6 @@
= 11.1.75 (2024-11-29) =
* Add Salt/key config global to avoid disconnection in case secret changes
= 11.1.73 (2024-11-19) = = 11.1.73 (2024-11-19) =
* Remove unknow wp_json_decode function * Remove unknow wp_json_decode function
@@ -298,6 +301,3 @@
= 8.9.20 (2022-04-13) = = 8.9.20 (2022-04-13) =
* Fix security issue related to sanitizing inputs * Fix security issue related to sanitizing inputs
= 8.9.14 (2022-04-12) =
* Fix security issue related to form inputs

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -7,7 +7,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n" "Language: \n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"

View File

@@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-11-19T10:31:24+00:00\n" "POT-Creation-Date: 2024-11-29T15:54:53+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.11.0\n" "X-Generator: WP-CLI 2.11.0\n"
"X-Domain: leadin\n" "X-Domain: leadin\n"

View File

@@ -6,7 +6,7 @@ namespace Leadin;
* Plugin Name: HubSpot All-In-One Marketing - Forms, Popups, Live Chat * Plugin Name: HubSpot All-In-One Marketing - Forms, Popups, Live Chat
* Plugin URI: http://www.hubspot.com/integrations/wordpress * Plugin URI: http://www.hubspot.com/integrations/wordpress
* Description: HubSpots official WordPress plugin allows you to add forms, popups, and live chat to your website and integrate with the best WordPress CRM. * Description: HubSpots official WordPress plugin allows you to add forms, popups, and live chat to your website and integrate with the best WordPress CRM.
* Version: 11.1.73 * Version: 11.1.75
* Author: HubSpot * Author: HubSpot
* Author URI: http://hubspot.com/products/wordpress * Author URI: http://hubspot.com/products/wordpress
* License: GPL v3 * License: GPL v3
@@ -59,14 +59,21 @@ if ( ! defined( 'LEADIN_REQUIRED_PHP_VERSION' ) ) {
} }
if ( ! defined( 'LEADIN_PLUGIN_VERSION' ) ) { if ( ! defined( 'LEADIN_PLUGIN_VERSION' ) ) {
define( 'LEADIN_PLUGIN_VERSION', '11.1.73' ); define( 'LEADIN_PLUGIN_VERSION', '11.1.75' );
} }
if ( ! defined( 'LEADIN_PREFIX' ) ) { if ( ! defined( 'LEADIN_PREFIX' ) ) {
define( 'LEADIN_PREFIX', 'leadin' ); define( 'LEADIN_PREFIX', 'leadin' );
} }
if ( ! defined( 'LEADIN_KEY' ) && defined( 'LOGGED_IN_KEY' ) ) {
define( 'LEADIN_KEY', LOGGED_IN_KEY );
}
if ( ! defined( 'LEADIN_SALT' ) && defined( 'LOGGED_IN_SALT' ) ) {
define( 'LEADIN_SALT', LOGGED_IN_SALT );
}
// ============================================= // =============================================
// Set autoload // Set autoload
// ============================================= // =============================================

View File

@@ -12,8 +12,8 @@ class OAuthCrypto {
* Return the key to use in encrypting/decrypting OAuth credentials * Return the key to use in encrypting/decrypting OAuth credentials
*/ */
private static function get_key() { private static function get_key() {
if ( defined( 'LOGGED_IN_KEY' ) ) { if ( defined( 'LEADIN_KEY' ) ) {
return LOGGED_IN_KEY; return LEADIN_KEY;
} }
return ''; return '';
@@ -23,8 +23,8 @@ class OAuthCrypto {
* Return the salt to use in encrypting/decrypting OAuth credentials * Return the salt to use in encrypting/decrypting OAuth credentials
*/ */
private static function get_salt() { private static function get_salt() {
if ( defined( 'LOGGED_IN_SALT' ) ) { if ( defined( 'LEADIN_SALT' ) ) {
return LOGGED_IN_SALT; return LEADIN_SALT;
} }
return ''; return '';

View File

@@ -6,7 +6,7 @@ Tags: CRM, Marketing, Live Chat, Forms, Analytics, popups, newsletter, contact m
Requires at least: 5.8 Requires at least: 5.8
Tested up to: 6.7 Tested up to: 6.7
Requires PHP: 7.2 Requires PHP: 7.2
Stable tag: 11.1.73 Stable tag: 11.1.75
The CRM, Sales, and Marketing WordPress plugin to grow your business better. The CRM, Sales, and Marketing WordPress plugin to grow your business better.
@@ -418,12 +418,12 @@ Please visit the <a href="https://community.hubspot.com/?utm_source=wordpress-pl
== Changelog == == Changelog ==
<a href="http://plugins.svn.wordpress.org/leadin/trunk/changelog.txt" target="_blank">Full changelog here</a> <a href="http://plugins.svn.wordpress.org/leadin/trunk/changelog.txt" target="_blank">Full changelog here</a>
- Current version: 11.1.73 - Current version: 11.1.75
- Version release date: 2024-11-19 - Version release date: 2024-11-29
= 11.1.75 (2024-11-29) =
* Add Salt/key config global to avoid disconnection in case secret changes
= 11.1.73 (2024-11-19) = = 11.1.73 (2024-11-19) =
* Remove unknow wp_json_decode function * Remove unknow wp_json_decode function
= 11.1.66 (2024-10-23) =
* Register gutenberg blocks at PHP side

View File

@@ -1,9 +1,9 @@
<?php return array( <?php return array(
'root' => array( 'root' => array(
'name' => 'hubspot/leadin-wordpress-plugin', 'name' => 'hubspot/leadin-wordpress-plugin',
'pretty_version' => '11.1.73', 'pretty_version' => '11.1.75',
'version' => '11.1.73.0', 'version' => '11.1.75.0',
'reference' => '52fed1357aeea9e86434fa7c5c05f9ff7c3c1653', 'reference' => '6a4d158f57411bd11dafed02a284b7e7f893f010',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),
@@ -11,9 +11,9 @@
), ),
'versions' => array( 'versions' => array(
'hubspot/leadin-wordpress-plugin' => array( 'hubspot/leadin-wordpress-plugin' => array(
'pretty_version' => '11.1.73', 'pretty_version' => '11.1.75',
'version' => '11.1.73.0', 'version' => '11.1.75.0',
'reference' => '52fed1357aeea9e86434fa7c5c05f9ff7c3c1653', 'reference' => '6a4d158f57411bd11dafed02a284b7e7f893f010',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),

View File

@@ -1,3 +1,10 @@
= 4.22.2 =
* Security fix: Prevent CSV injection attack in log export.
* Security fix: Restrict access to doc count updates.
* Minor fix: Product variations check the parent product for access restrictions, to avoid situations where variations of a draft product appear in the results.
* Minor fix: Improved TablePress compatibility.
* Minor fix: Added error handling to the Ninja Table compatibility code.
= 4.22.1 = = 4.22.1 =
* Security fix: Relevanssi had a vulnerability where anyone could access the search logs and click logs. The log export is now protected. * Security fix: Relevanssi had a vulnerability where anyone could access the search logs and click logs. The log export is now protected.
* Minor fix: Relevanssi had problems with Polylang when a post or term didn't have language specified. Now Relevanssi handles those situations better. * Minor fix: Relevanssi had problems with Polylang when a post or term didn't have language specified. Now Relevanssi handles those situations better.

View File

@@ -284,7 +284,7 @@ function relevanssi_populate_array( $matches, $blog_id = -1 ) {
foreach ( $posts as $post ) { foreach ( $posts as $post ) {
$cache_id = $blog_id . '|' . $post->ID; $cache_id = $blog_id . '|' . $post->ID;
$relevanssi_post_array[ $cache_id ] = $post; $relevanssi_post_array[ $cache_id ] = new WP_Post( $post );
} }
} }
} while ( $ids ); } while ( $ids );

View File

@@ -73,14 +73,14 @@ function relevanssi_seoframework_form() {
?> ?>
<tr> <tr>
<th scope="row"> <th scope="row">
<label for='relevanssi_seo_noindex'><?php esc_html_e( 'Use SEO Framework noindex', 'relevanssi' ); ?></label> <label for='relevanssi_seo_noindex'><?php esc_html_e( 'Use SEO Framework local search exclude', 'relevanssi' ); ?></label>
</th> </th>
<td> <td>
<label for='relevanssi_seo_noindex'> <label for='relevanssi_seo_noindex'>
<input type='checkbox' name='relevanssi_seo_noindex' id='relevanssi_seo_noindex' <?php echo esc_attr( $seo_noindex ); ?> /> <input type='checkbox' name='relevanssi_seo_noindex' id='relevanssi_seo_noindex' <?php echo esc_attr( $seo_noindex ); ?> />
<?php esc_html_e( 'Use SEO Framework noindex.', 'relevanssi' ); ?> <?php esc_html_e( 'Use SEO Framework local search exclude.', 'relevanssi' ); ?>
</label> </label>
<p class="description"><?php esc_html_e( 'If checked, Relevanssi will not index posts marked as "No index" in SEO Framework settings.', 'relevanssi' ); ?></p> <p class="description"><?php esc_html_e( 'If checked, Relevanssi will not index posts marked as "Exclude this page from all search queries on this site" in SEO Framework settings.', 'relevanssi' ); ?></p>
</td> </td>
</tr> </tr>
<?php <?php

View File

@@ -616,6 +616,39 @@ function relevanssi_index_doc( $index_post, $remove_first = false, $custom_field
$post = $previous_post; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited $post = $previous_post; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
} }
/**
* Filters the number of queries returned.
*
* Added for potential TranslatePress support.
*
* @param string|int $n Number of insert queries run, or
* -1 if the indexing fails, or 'hide' in case the post is hidden or
* 'donotindex' if a filter blocks this.
* @param object|int $index_post The post to index, either post
* object or post ID.
* @param boolean $remove_first If true, remove the post from the
* index before indexing. Default false.
* @param array $custom_fields The custom fields that are indexed
* for the post. Default an empty string.
* @param boolean $bypass_global_post If true, do not use the global
* $post object. Default false.
* @param boolean $debug If true, echo out debugging
* information. Default false.
*
* @return string|int Number of insert queries run, or -1 if the indexing
* fails, or 'hide' in case the post is hidden or 'donotindex' if a filter
* blocks this.
*/
$n = apply_filters(
'relevanssi_after_index_doc_n',
$n,
$index_post,
$remove_first,
$custom_fields,
$bypass_global_post,
$debug
);
return $n; return $n;
} }
@@ -1049,7 +1082,13 @@ function relevanssi_get_comments( $post_id ) {
function relevanssi_truncate_index() { function relevanssi_truncate_index() {
global $wpdb, $relevanssi_variables; global $wpdb, $relevanssi_variables;
$relevanssi_table = $relevanssi_variables['relevanssi_table']; $relevanssi_table = $relevanssi_variables['relevanssi_table'];
return $wpdb->query( "TRUNCATE TABLE $relevanssi_table" ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
/**
* Filters the TRUNCATE TABLE query for truncating the index.
*
* @param string The MySQL query.
*/
return $wpdb->query( apply_filters( 'relevanssi_truncate_index', "TRUNCATE TABLE $relevanssi_table" ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
} }
/** /**
@@ -1477,6 +1516,8 @@ function relevanssi_index_content( &$insert_data, $post_object, $min_word_length
/** /**
* If this filter returns false, post content is not indexed at all. * If this filter returns false, post content is not indexed at all.
* *
* Also used in /premium/pinning.php.
*
* @param boolean Return false to prevent post content from being indexed. * @param boolean Return false to prevent post content from being indexed.
* Default true. * Default true.
* @param object $post_object The post object. * @param object $post_object The post object.

View File

@@ -321,8 +321,8 @@ function relevanssi_create_database_tables( $relevanssi_db_version ) {
customfield mediumint(9) NOT NULL DEFAULT '0', customfield mediumint(9) NOT NULL DEFAULT '0',
mysqlcolumn mediumint(9) NOT NULL DEFAULT '0', mysqlcolumn mediumint(9) NOT NULL DEFAULT '0',
taxonomy_detail longtext NOT NULL, taxonomy_detail longtext NOT NULL,
customfield_detail longtext NOT NULL DEFAULT '', customfield_detail longtext NOT NULL,
mysqlcolumn_detail longtext NOT NULL DEFAULT '', mysqlcolumn_detail longtext NOT NULL,
type varchar(210) NOT NULL DEFAULT 'post', type varchar(210) NOT NULL DEFAULT 'post',
item bigint(20) NOT NULL DEFAULT '0', item bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY doctermitem (doc, term, item)) $charset_collate"; PRIMARY KEY doctermitem (doc, term, item)) $charset_collate";
@@ -392,6 +392,7 @@ function relevanssi_create_database_tables( $relevanssi_db_version ) {
user_id bigint(20) NOT NULL DEFAULT '0', user_id bigint(20) NOT NULL DEFAULT '0',
ip varchar(40) NOT NULL DEFAULT '', ip varchar(40) NOT NULL DEFAULT '',
session_id varchar(32) NOT NULL DEFAULT '', session_id varchar(32) NOT NULL DEFAULT '',
source varchar(32) NOT NULL DEFAULT '',
PRIMARY KEY id (id)) $charset_collate;"; PRIMARY KEY id (id)) $charset_collate;";
dbDelta( $sql ); dbDelta( $sql );
@@ -524,10 +525,11 @@ function relevanssi_load_compatibility_code() {
defined( 'GROUPS_CORE_VERSION' ) && require_once 'compatibility/groups.php'; defined( 'GROUPS_CORE_VERSION' ) && require_once 'compatibility/groups.php';
defined( 'NINJA_TABLES_VERSION' ) && require_once 'compatibility/ninjatables.php'; defined( 'NINJA_TABLES_VERSION' ) && require_once 'compatibility/ninjatables.php';
defined( 'PRLI_PLUGIN_NAME' ) && require_once 'compatibility/pretty-links.php'; defined( 'PRLI_PLUGIN_NAME' ) && require_once 'compatibility/pretty-links.php';
defined( 'WPM_PRODUCT_GTIN_WC_VERSION' ) && require_once 'compatibility/product-gtin-ean-upc-isbn-for-woocommerce.php'; defined( 'SEOPRESS_VERSION' ) && require_once 'compatibility/seopress.php';
defined( 'SIMPLE_WP_MEMBERSHIP_VER' ) && require_once 'compatibility/simplemembership.php'; defined( 'SIMPLE_WP_MEMBERSHIP_VER' ) && require_once 'compatibility/simplemembership.php';
defined( 'THE_SEO_FRAMEWORK_VERSION' ) && require_once 'compatibility/seoframework.php'; defined( 'THE_SEO_FRAMEWORK_VERSION' ) && require_once 'compatibility/seoframework.php';
defined( 'WPFD_VERSION' ) && require_once 'compatibility/wp-file-download.php'; defined( 'WPFD_VERSION' ) && require_once 'compatibility/wp-file-download.php';
defined( 'WPM_PRODUCT_GTIN_WC_VERSION' ) && require_once 'compatibility/product-gtin-ean-upc-isbn-for-woocommerce.php';
defined( 'WPMEM_VERSION' ) && require_once 'compatibility/wp-members.php'; defined( 'WPMEM_VERSION' ) && require_once 'compatibility/wp-members.php';
defined( 'WPSEO_FILE' ) && require_once 'compatibility/yoast-seo.php'; defined( 'WPSEO_FILE' ) && require_once 'compatibility/yoast-seo.php';
function_exists( 'do_blocks' ) && require_once 'compatibility/gutenberg.php'; function_exists( 'do_blocks' ) && require_once 'compatibility/gutenberg.php';
@@ -535,7 +537,6 @@ function relevanssi_load_compatibility_code() {
function_exists( 'members_content_permissions_enabled' ) && require_once 'compatibility/members.php'; function_exists( 'members_content_permissions_enabled' ) && require_once 'compatibility/members.php';
function_exists( 'pmpro_has_membership_access' ) && require_once 'compatibility/paidmembershippro.php'; function_exists( 'pmpro_has_membership_access' ) && require_once 'compatibility/paidmembershippro.php';
function_exists( 'rcp_user_can_access' ) && require_once 'compatibility/restrictcontentpro.php'; function_exists( 'rcp_user_can_access' ) && require_once 'compatibility/restrictcontentpro.php';
function_exists( 'seopress_get_toggle_titles_option' ) && '1' === seopress_get_toggle_titles_option() && require_once 'compatibility/seopress.php';
function_exists( 'wp_jv_prg_user_can_see_a_post' ) && require_once 'compatibility/wpjvpostreadinggroups.php'; function_exists( 'wp_jv_prg_user_can_see_a_post' ) && require_once 'compatibility/wpjvpostreadinggroups.php';
// phpcs:disable WordPress.NamingConventions.ValidVariableName // phpcs:disable WordPress.NamingConventions.ValidVariableName

View File

@@ -16,12 +16,13 @@
* @global object $wpdb The WordPress database interface. * @global object $wpdb The WordPress database interface.
* @global array $relevanssi_variables The global Relevanssi variables, used for database table names. * @global array $relevanssi_variables The global Relevanssi variables, used for database table names.
* *
* @param string $query The search query. * @param string $query The search query.
* @param int $hits The number of hits found. * @param int $hits The number of hits found.
* @param string $source The search source identifier, default ''.
* *
* @return boolean True if logged, false if not logged. * @return boolean True if logged, false if not logged.
*/ */
function relevanssi_update_log( $query, $hits ) { function relevanssi_update_log( $query, $hits, $source = '' ) {
if ( empty( $query ) ) { if ( empty( $query ) ) {
return false; return false;
} }
@@ -58,6 +59,10 @@ function relevanssi_update_log( $query, $hits ) {
$ip = apply_filters( 'relevanssi_remote_addr', $_SERVER['REMOTE_ADDR'] ); $ip = apply_filters( 'relevanssi_remote_addr', $_SERVER['REMOTE_ADDR'] );
} }
if ( $source && function_exists( 'relevanssi_validate_source' ) ) {
$source = relevanssi_validate_source( $source );
}
/** /**
* Filters whether a query should be logged or not. * Filters whether a query should be logged or not.
* *
@@ -68,8 +73,9 @@ function relevanssi_update_log( $query, $hits ) {
* @param int $hits The number of hits found. * @param int $hits The number of hits found.
* @param string $user_agent The user agent that made the search. * @param string $user_agent The user agent that made the search.
* @param string $ip The IP address the search came from (or empty). * @param string $ip The IP address the search came from (or empty).
* @param string $source The search source identifier.
*/ */
$ok_to_log = apply_filters( 'relevanssi_ok_to_log', true, $query, $hits, $user_agent, $ip ); $ok_to_log = apply_filters( 'relevanssi_ok_to_log', true, $query, $hits, $user_agent, $ip, $source );
if ( $ok_to_log ) { if ( $ok_to_log ) {
global $wpdb, $relevanssi_variables; global $wpdb, $relevanssi_variables;
@@ -83,12 +89,13 @@ function relevanssi_update_log( $query, $hits ) {
$wpdb->query( $wpdb->query(
$wpdb->prepare( $wpdb->prepare(
'INSERT INTO ' . $relevanssi_variables['log_table'] . ' (query, hits, user_id, ip, time, session_id) VALUES (%s, %d, %d, %s, NOW(), %s)', // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared 'INSERT INTO ' . $relevanssi_variables['log_table'] . ' (query, hits, user_id, ip, time, session_id, source) VALUES (%s, %d, %d, %s, NOW(), %s, %s)', // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
$query, $query,
intval( $hits ), intval( $hits ),
$user->ID, $user->ID,
$ip, $ip,
$session_id $session_id,
$source
) )
); );
@@ -399,7 +406,7 @@ function relevanssi_delete_query_from_log( string $query ) {
$deleted = $wpdb->query( $deleted = $wpdb->query(
$wpdb->prepare( $wpdb->prepare(
"DELETE FROM {$relevanssi_variables['log_table']} WHERE query = %s", // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.PreparedSQL.NotPrepared "DELETE FROM {$relevanssi_variables['log_table']} WHERE query = %s", // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.PreparedSQL.NotPrepared
stripslashes( $query ) stripslashes( wp_encode_emoji( $query ) )
) )
); );

View File

@@ -661,7 +661,8 @@ function relevanssi_do_query( &$query ) {
$q, $q,
$query $query
); );
relevanssi_update_log( $query_string, $hits_count ); $source = $query->query_vars['rlv_source'] ?? '';
relevanssi_update_log( $query_string, $hits_count, $source );
} }
$make_excerpts = 'on' === get_option( 'relevanssi_excerpts' ) ? true : false; $make_excerpts = 'on' === get_option( 'relevanssi_excerpts' ) ? true : false;
@@ -1752,15 +1753,15 @@ function relevanssi_compile_common_args( $query ) {
$date_query = relevanssi_wp_date_query_from_query_vars( $query ); $date_query = relevanssi_wp_date_query_from_query_vars( $query );
$post_type = false; $post_type = false;
if ( isset( $query->query_vars['post_type'] ) && is_array( $query->query_vars['post_type'] ) ) {
$query->query_vars['post_type'] = implode( ',', $query->query_vars['post_type'] );
}
if ( isset( $query->query_vars['post_type'] ) && 'any' !== $query->query_vars['post_type'] ) { if ( isset( $query->query_vars['post_type'] ) && 'any' !== $query->query_vars['post_type'] ) {
$post_type = $query->query_vars['post_type']; $post_type = $query->query_vars['post_type'];
} }
if ( isset( $query->query_vars['post_types'] ) && 'any' !== $query->query_vars['post_types'] ) { if ( isset( $query->query_vars['post_types'] ) && 'any' !== $query->query_vars['post_types'] ) {
$post_type = $query->query_vars['post_types']; $post_type = $query->query_vars['post_types'];
} }
if ( is_array( $post_type ) ) {
$post_type = implode( ',', $post_type );
}
$post_status = false; $post_status = false;
if ( isset( $query->query_vars['post_status'] ) && 'any' !== $query->query_vars['post_status'] ) { if ( isset( $query->query_vars['post_status'] ) && 'any' !== $query->query_vars['post_status'] ) {

View File

@@ -242,7 +242,10 @@ function relevanssi_update_stopwords( $stopwords ) {
function relevanssi_delete_term_from_all_posts( $term ) { function relevanssi_delete_term_from_all_posts( $term ) {
global $wpdb, $relevanssi_variables; global $wpdb, $relevanssi_variables;
if ( function_exists( 'pll_languages_list' ) ) { if ( function_exists( 'pll_languages_list' )
&& function_exists( 'relevanssi_get_language_term_taxonomy_id' ) ) {
// The Relevanssi function does not exist when this function is run as
// part of the Relevanssi install process.
$term_id = relevanssi_get_language_term_taxonomy_id( $term_id = relevanssi_get_language_term_taxonomy_id(
relevanssi_get_current_language() relevanssi_get_current_language()
); );

View File

@@ -104,7 +104,7 @@ function relevanssi_indexing_tab() {
} }
$this_page = '?page=' . plugin_basename( $relevanssi_variables['file'] ); $this_page = '?page=' . plugin_basename( $relevanssi_variables['file'] );
$update_url = wp_nonce_url( $this_page . '&tab=indexing&update_counts=1', 'update_counts' ); $update_url = wp_nonce_url( $this_page . '&rlv_tab=indexing&update_counts=1', 'update_counts' );
?> ?>
<div id="indexing_tab"> <div id="indexing_tab">

View File

@@ -53,11 +53,19 @@ function relevanssi_search_stats() {
*/ */
function relevanssi_query_log() { function relevanssi_query_log() {
global $wpdb, $relevanssi_variables; global $wpdb, $relevanssi_variables;
$data = $wpdb->get_results(
'SELECT LEFT( `time`, 10 ) as `day`, count(*) as `count` ' . $source = '';
"FROM {$relevanssi_variables['log_table']} " . // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.PreparedSQL.NotPrepared if ( function_exists( 'relevanssi_validate_source' ) ) {
'GROUP BY LEFT( `time`, 10 )' $source = relevanssi_validate_source( $_REQUEST['source'] ?? '' );
); }
$data_query = 'SELECT LEFT( `time`, 10 ) as `day`, count(*) as `count` ' .
"FROM {$relevanssi_variables['log_table']} ";
if ( $source ) {
$data_query .= "WHERE source = '$source' ";
}
$data_query .= 'GROUP BY LEFT( `time`, 10 )';
$data = $wpdb->get_results( $data_query ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.PreparedSQL.NotPrepared
$labels = array(); $labels = array();
$values = array(); $values = array();
@@ -81,6 +89,10 @@ function relevanssi_query_log() {
} }
} }
$source_select = '';
if ( function_exists( 'relevanssi_generate_source_select' ) ) {
$source_select = relevanssi_generate_source_select( $source );
}
?> ?>
<form method="post" style="background: white; padding: 10px; margin-top: 20px;"> <form method="post" style="background: white; padding: 10px; margin-top: 20px;">
<?php <?php
@@ -91,6 +103,8 @@ function relevanssi_query_log() {
<?php echo esc_html__( 'From:', 'relevanssi' ); ?> <input type="date" name="from" value="<?php echo esc_attr( $from ); ?>" /> <?php echo esc_html__( 'From:', 'relevanssi' ); ?> <input type="date" name="from" value="<?php echo esc_attr( $from ); ?>" />
<?php echo esc_html__( 'To:', 'relevanssi' ); ?> <input type="date" name="to" value="<?php echo esc_attr( $to ); ?>" /> <?php echo esc_html__( 'To:', 'relevanssi' ); ?> <input type="date" name="to" value="<?php echo esc_attr( $to ); ?>" />
<input type="submit" value="<?php echo esc_attr( __( 'Filter', 'relevanssi' ) ); ?>" /></p> <input type="submit" value="<?php echo esc_attr( __( 'Filter', 'relevanssi' ) ); ?>" /></p>
<?php echo $source_select; ?>
</div> </div>
<div> <div>
<input type="submit" value="<?php echo esc_attr( __( 'Year so far', 'relevanssi' ) ); ?>" name="this_year" style="margin-bottom: 10px" /> <input type="submit" value="<?php echo esc_attr( __( 'Year so far', 'relevanssi' ) ); ?>" name="this_year" style="margin-bottom: 10px" />
@@ -113,7 +127,7 @@ function relevanssi_query_log() {
) )
); );
$total_queries = relevanssi_total_queries( $from, $to ); $total_queries = relevanssi_total_queries( $from, $to, $source );
?> ?>
<div style="background: white; padding: 10px; display: grid; grid-template-columns: 1fr 2fr 2fr; grid-gap: 20px; margin-top: 20px"> <div style="background: white; padding: 10px; display: grid; grid-template-columns: 1fr 2fr 2fr; grid-gap: 20px; margin-top: 20px">
<div> <div>
@@ -124,12 +138,12 @@ function relevanssi_query_log() {
</div> </div>
<div style="margin-bottom: 20px"><?php esc_html_e( 'Searches that found nothing', 'relevanssi' ); ?> <div style="margin-bottom: 20px"><?php esc_html_e( 'Searches that found nothing', 'relevanssi' ); ?>
<span style="display: block; font-size: 42px; font-weight: bolder; line-height: 50px"> <span style="display: block; font-size: 42px; font-weight: bolder; line-height: 50px">
<?php echo intval( relevanssi_nothing_found_queries( $from, $to ) ); ?> <?php echo intval( relevanssi_nothing_found_queries( $from, $to, $source ) ); ?>
</span> </span>
</div> </div>
<?php <?php
if ( function_exists( 'relevanssi_user_searches_clicks' ) ) { if ( function_exists( 'relevanssi_user_searches_clicks' ) ) {
relevanssi_user_searches_clicks( $from, $to, $total_queries ); relevanssi_user_searches_clicks( $from, $to, $total_queries, $source );
} }
?> ?>
</div> </div>
@@ -146,13 +160,13 @@ function relevanssi_query_log() {
<p><?php esc_html_e( 'In order to see the clicks, you need to enable click tracking. Click tracking is not currently enabled, and you\'re not collecting new clicks.', 'relevanssi' ); ?></p> <p><?php esc_html_e( 'In order to see the clicks, you need to enable click tracking. Click tracking is not currently enabled, and you\'re not collecting new clicks.', 'relevanssi' ); ?></p>
<?php <?php
} }
relevanssi_date_queries( $from, $to, 'good' ); relevanssi_date_queries( $from, $to, 'good', $source );
?> ?>
</div> </div>
<div> <div>
<h3><?php esc_html_e( 'Unsuccessful searches', 'relevanssi' ); ?></h3> <h3><?php esc_html_e( 'Unsuccessful searches', 'relevanssi' ); ?></h3>
<p><?php esc_html_e( 'These queries have found no results.', 'relevanssi' ); ?></p> <p><?php esc_html_e( 'These queries have found no results.', 'relevanssi' ); ?></p>
<?php relevanssi_date_queries( $from, $to, 'bad' ); ?> <?php relevanssi_date_queries( $from, $to, 'bad', $source ); ?>
</div> </div>
</div> </div>
<?php <?php
@@ -196,24 +210,37 @@ function relevanssi_query_log() {
* @global object $wpdb The WP database interface. * @global object $wpdb The WP database interface.
* @global array $relevanssi_variables The global Relevanssi variables array. * @global array $relevanssi_variables The global Relevanssi variables array.
* *
* @param string $from The start date. * @param string $from The start date.
* @param string $to The end date. * @param string $to The end date.
* @param string $source The search source.
* *
* @return int The number of searches. * @return int The number of searches.
*/ */
function relevanssi_total_queries( string $from, string $to ) { function relevanssi_total_queries( string $from, string $to, string $source ) {
global $wpdb, $relevanssi_variables; global $wpdb, $relevanssi_variables;
$log_table = $relevanssi_variables['log_table']; $log_table = $relevanssi_variables['log_table'];
$count = $wpdb->get_var( if ( ! $source ) {
$wpdb->prepare( $query = $wpdb->prepare(
"SELECT COUNT(id) FROM $log_table " // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared "SELECT COUNT(id) FROM $log_table " // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
. 'WHERE time >= %s . 'WHERE time >= %s
AND time <= %s', AND time <= %s',
$from . ' 00:00:00', $from . ' 00:00:00',
$to . ' 23:59:59' $to . ' 23:59:59'
) );
); } else {
$query = $wpdb->prepare(
"SELECT COUNT(id) FROM $log_table " // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
. 'WHERE time >= %s
AND time <= %s
AND source = %s',
$from . ' 00:00:00',
$to . ' 23:59:59',
$source
);
}
$count = $wpdb->get_var( $query );
return $count; return $count;
} }
@@ -224,23 +251,37 @@ function relevanssi_total_queries( string $from, string $to ) {
* @global object $wpdb The WP database interface. * @global object $wpdb The WP database interface.
* @global array $relevanssi_variables The global Relevanssi variables array. * @global array $relevanssi_variables The global Relevanssi variables array.
* *
* @param string $from The start date. * @param string $from The start date.
* @param string $to The end date. * @param string $to The end date.
* @param string $source The search source.
*/ */
function relevanssi_nothing_found_queries( string $from, string $to ) { function relevanssi_nothing_found_queries( string $from, string $to, string $source ) {
global $wpdb, $relevanssi_variables; global $wpdb, $relevanssi_variables;
$log_table = $relevanssi_variables['log_table']; $log_table = $relevanssi_variables['log_table'];
$count = $wpdb->get_var( if ( ! $source ) {
$wpdb->prepare( $query = $wpdb->prepare(
"SELECT COUNT(id) FROM $log_table " // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared "SELECT COUNT(id) FROM $log_table " // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
. 'WHERE time >= %s . 'WHERE time >= %s
AND time <= %s AND time <= %s
AND hits = 0', AND hits = 0',
$from . ' 00:00:00', $from . ' 00:00:00',
$to . ' 23:59:59' $to . ' 23:59:59'
) );
); } else {
$query = $wpdb->prepare(
"SELECT COUNT(id) FROM $log_table " // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
. 'WHERE time >= %s
AND time <= %s
AND hits = 0
AND source = %s',
$from . ' 00:00:00',
$to . ' 23:59:59',
$source
);
}
$count = $wpdb->get_var( $query );
return $count; return $count;
} }
@@ -255,8 +296,9 @@ function relevanssi_nothing_found_queries( string $from, string $to ) {
* @param string $to The ending date. * @param string $to The ending date.
* @param string $version If 'good', show the searches that found something; if * @param string $version If 'good', show the searches that found something; if
* 'bad', show the searches that didn't find anything. Default 'good'. * 'bad', show the searches that didn't find anything. Default 'good'.
* @param string $source The source identifier, default ''.
*/ */
function relevanssi_date_queries( string $from, string $to, string $version = 'good' ) { function relevanssi_date_queries( string $from, string $to, string $version = 'good', string $source = '' ) {
global $wpdb, $relevanssi_variables; global $wpdb, $relevanssi_variables;
$log_table = $relevanssi_variables['log_table']; $log_table = $relevanssi_variables['log_table'];
@@ -268,8 +310,8 @@ function relevanssi_date_queries( string $from, string $to, string $version = 'g
$limit = apply_filters( 'relevanssi_user_searches_limit', 100 ); $limit = apply_filters( 'relevanssi_user_searches_limit', 100 );
if ( 'good' === $version ) { if ( 'good' === $version ) {
$queries = $wpdb->get_results( if ( ! $source ) {
$wpdb->prepare( $query = $wpdb->prepare(
'SELECT COUNT(DISTINCT(id)) as cnt, query, AVG(hits) AS hits ' . 'SELECT COUNT(DISTINCT(id)) as cnt, query, AVG(hits) AS hits ' .
"FROM $log_table " . // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared "FROM $log_table " . // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
'WHERE time >= %s 'WHERE time >= %s
@@ -281,13 +323,30 @@ function relevanssi_date_queries( string $from, string $to, string $version = 'g
$from . ' 00:00:00', $from . ' 00:00:00',
$to . ' 23:59:59', $to . ' 23:59:59',
$limit $limit
) );
); } else {
$query = $wpdb->prepare(
'SELECT COUNT(DISTINCT(id)) as cnt, query, AVG(hits) AS hits ' .
"FROM $log_table " . // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
'WHERE time >= %s
AND time <= %s
AND hits > 0
AND source = %s
GROUP BY query
ORDER BY cnt DESC
LIMIT %d',
$from . ' 00:00:00',
$to . ' 23:59:59',
$source,
$limit
);
}
$queries = $wpdb->get_results( $query );
} }
if ( 'bad' === $version ) { if ( 'bad' === $version ) {
$queries = $wpdb->get_results( if ( ! $source ) {
$wpdb->prepare( $query = $wpdb->prepare(
'SELECT COUNT(DISTINCT(id)) as cnt, query, hits ' . 'SELECT COUNT(DISTINCT(id)) as cnt, query, hits ' .
"FROM $log_table " . // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared "FROM $log_table " . // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
'WHERE time >= %s 'WHERE time >= %s
@@ -299,8 +358,25 @@ function relevanssi_date_queries( string $from, string $to, string $version = 'g
$from . ' 00:00:00', $from . ' 00:00:00',
$to . ' 23:59:59', $to . ' 23:59:59',
$limit $limit
) );
); } else {
$query = $wpdb->prepare(
'SELECT COUNT(DISTINCT(id)) as cnt, query, hits ' .
"FROM $log_table " . // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared
'WHERE time >= %s
AND time <= %s
AND hits = 0
AND source = %s
GROUP BY query
ORDER BY cnt DESC
LIMIT %d',
$from . ' 00:00:00',
$to . ' 23:59:59',
$source,
$limit
);
}
$queries = $wpdb->get_results( $query );
} }
if ( count( $queries ) > 0 ) { if ( count( $queries ) > 0 ) {

View File

@@ -793,7 +793,14 @@ function relevanssi_is_multiple_words( string $str ): bool {
if ( empty( $str ) ) { if ( empty( $str ) ) {
return false; return false;
} }
$punctuation = get_option( 'relevanssi_punctuation' ); $punctuation = get_option(
'relevanssi_punctuation',
array(
'quotes' => 'replace',
'hyphens' => 'replace',
'ampersands' => 'replace',
)
);
if ( 'replace' === $punctuation['hyphens'] ) { if ( 'replace' === $punctuation['hyphens'] ) {
$str = str_replace( $str = str_replace(
array( array(

View File

@@ -3,9 +3,9 @@ Contributors: msaari
Donate link: https://www.relevanssi.com/buy-premium/ Donate link: https://www.relevanssi.com/buy-premium/
Tags: search, relevance, better search, product search, woocommerce search Tags: search, relevance, better search, product search, woocommerce search
Requires at least: 4.9 Requires at least: 4.9
Tested up to: 6.6 Tested up to: 6.7
Requires PHP: 7.0 Requires PHP: 7.0
Stable tag: 4.23.1 Stable tag: 4.24.1
License: GPLv2 or later License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -128,6 +128,17 @@ Each document database is full of useless words. All the little words that appea
* John Calahan for extensive 4.0 beta testing. * John Calahan for extensive 4.0 beta testing.
== Changelog == == Changelog ==
= 4.24.1 =
* Minor fix: Prevent database errors.
= 4.24.0 =
* Minor fix: SEO Framework local search exclude option description now tells what the option actually does.
* Minor fix: Relevanssi cache population now creates WP_Post objects instead of stdClass objects.
* Minor fix: SEOPress compatibility mode is enabled again.
* Minor fix: Avoid fatal errors in installation process with Polylang enabled.
* Minor fix: Update counts link had the wrong tab query parameter.
* Minor fix: Adjust post type parameter handling so that it doesn't change the `post_type` query var.
= 4.23.1 = = 4.23.1 =
* Security fix: Prevent an XSS attack by a malicious contributor. * Security fix: Prevent an XSS attack by a malicious contributor.
@@ -142,16 +153,9 @@ Each document database is full of useless words. All the little words that appea
* Minor fix: The settings tab query parameter was renamed to avoid collisions with other plugins. * Minor fix: The settings tab query parameter was renamed to avoid collisions with other plugins.
* Minor fix: User searches page now uses `wp_print_inline_script_tag()`. * Minor fix: User searches page now uses `wp_print_inline_script_tag()`.
= 4.22.2 =
* Security fix: Prevent CSV injection attack in log export.
* Security fix: Restrict access to doc count updates.
* Minor fix: Product variations check the parent product for access restrictions, to avoid situations where variations of a draft product appear in the results.
* Minor fix: Improved TablePress compatibility.
* Minor fix: Added error handling to the Ninja Table compatibility code.
== Upgrade notice == == Upgrade notice ==
= 4.23.1 = = 4.24.1 =
* Security hardening. * Small fix to avoid possible database errors.
= 4.23.0 = = 4.24.0 =
* New filter hooks, support for `post_mime_type` and bug fixes. * Small bug fixes and compatibility updates.

View File

@@ -13,7 +13,7 @@
* Plugin Name: Relevanssi * Plugin Name: Relevanssi
* Plugin URI: https://www.relevanssi.com/ * Plugin URI: https://www.relevanssi.com/
* Description: This plugin replaces WordPress search with a relevance-sorting search. * Description: This plugin replaces WordPress search with a relevance-sorting search.
* Version: 4.23.1 * Version: 4.24.1
* Author: Mikko Saari * Author: Mikko Saari
* Author URI: http://www.mikkosaari.fi/ * Author URI: http://www.mikkosaari.fi/
* Text Domain: relevanssi * Text Domain: relevanssi
@@ -63,11 +63,11 @@ $relevanssi_variables['comment_boost_default'] = 0.75;
$relevanssi_variables['post_type_weight_defaults']['post_tag'] = 0.75; $relevanssi_variables['post_type_weight_defaults']['post_tag'] = 0.75;
$relevanssi_variables['post_type_weight_defaults']['category'] = 0.75; $relevanssi_variables['post_type_weight_defaults']['category'] = 0.75;
$relevanssi_variables['post_type_index_defaults'] = array( 'post', 'page' ); $relevanssi_variables['post_type_index_defaults'] = array( 'post', 'page' );
$relevanssi_variables['database_version'] = 8; $relevanssi_variables['database_version'] = 9;
$relevanssi_variables['file'] = __FILE__; $relevanssi_variables['file'] = __FILE__;
$relevanssi_variables['plugin_dir'] = plugin_dir_path( __FILE__ ); $relevanssi_variables['plugin_dir'] = plugin_dir_path( __FILE__ );
$relevanssi_variables['plugin_basename'] = plugin_basename( __FILE__ ); $relevanssi_variables['plugin_basename'] = plugin_basename( __FILE__ );
$relevanssi_variables['plugin_version'] = '4.23.1'; $relevanssi_variables['plugin_version'] = '4.24.1';
require_once 'lib/admin-ajax.php'; require_once 'lib/admin-ajax.php';
require_once 'lib/common.php'; require_once 'lib/common.php';

View File

@@ -1424,6 +1424,11 @@ input:checked + .slider:before {
color: #7f8a98 !important; color: #7f8a98 !important;
} }
.color-404852 {
color: #404852 !important;
font-weight: 500 !important;
}
.wpmf_hide { .wpmf_hide {
display: none; display: none;
} }
@@ -1610,6 +1615,11 @@ input:checked + .slider:before {
width: 80%; width: 80%;
} }
.wpmf_width_33 {
width: 33%;
margin-right: calc(1% / 3);
}
.wpmf_width_30 { .wpmf_width_30 {
width: 30%; width: 30%;
} }
@@ -2763,6 +2773,9 @@ li.search-result.wpmf_width_100 {
width: 100%; width: 100%;
margin-right: 0; margin-right: 0;
} }
.ju-settings-option.wpmf_width_33 {
margin-bottom: 0;
}
} }
@media screen and (max-width: 1290px) { @media screen and (max-width: 1290px) {

View File

@@ -63,7 +63,7 @@ if (class_exists('WPBakeryShortCode')) {
'front_enqueue_css' => array( 'front_enqueue_css' => array(
WPMF_PLUGIN_URL . 'assets/js/slick/slick.css', WPMF_PLUGIN_URL . 'assets/js/slick/slick.css',
WPMF_PLUGIN_URL . 'assets/js/slick/slick-theme.css', WPMF_PLUGIN_URL . 'assets/js/slick/slick-theme.css',
WPMF_PLUGIN_URL . '/assets/css/display-gallery/style-display-gallery.css', WPMF_PLUGIN_URL . 'assets/css/display-gallery/style-display-gallery.css',
), ),
'params' => array( 'params' => array(
array( array(

View File

@@ -29,10 +29,11 @@ class WpmfWatermark
* *
* @param array $metadata An array of attachment meta data. * @param array $metadata An array of attachment meta data.
* @param integer $attachment_id Current attachment ID. * @param integer $attachment_id Current attachment ID.
* @param boolean $isWoo Check images of woocommerce product
* *
* @return mixed $metadata * @return mixed $metadata
*/ */
public function createWatermarkImage($metadata, $attachment_id) public function createWatermarkImage($metadata, $attachment_id, $isWoo = false)
{ {
$option_image_watermark = get_option('wpmf_option_image_watermark'); $option_image_watermark = get_option('wpmf_option_image_watermark');
if (empty($option_image_watermark)) { if (empty($option_image_watermark)) {
@@ -52,22 +53,52 @@ class WpmfWatermark
$watermark_exclude_photograph_gallery = wpmfGetOption('watermark_exclude_photograph_gallery'); $watermark_exclude_photograph_gallery = wpmfGetOption('watermark_exclude_photograph_gallery');
$check = false; $check = false;
if (!empty($watermark_exclude_public_gallery)) { if (!empty($watermark_exclude_public_gallery)) {
if (!empty($galleryid)) { if ($isWoo) {
$gallery_type = get_term_meta((int)$galleryid, 'gallery_type', true); $gallery_terms = get_the_terms($attachment_id, WPMF_GALLERY_ADDON_TAXO);
if (!empty($gallery_type) && $gallery_type === 'photographer') { if (!empty($gallery_terms)) {
$check = true; $check = true;
if (empty($watermark_exclude_photograph_gallery)) {
foreach ($gallery_terms as $gallery_term) {
$gallery_type = get_term_meta((int)$gallery_term->term_id, 'gallery_type', true);
if (!empty($gallery_type) && $gallery_type === 'photographer') {
$check = false;
}
}
}
}
} else {
if (!empty($galleryid)) {
$check = true;
if (empty($watermark_exclude_photograph_gallery)) {
$gallery_type = get_term_meta((int)$galleryid, 'gallery_type', true);
if (!empty($gallery_type) && $gallery_type === 'photographer') {
$check = false;
}
}
} }
} }
if (!$check) { if ($check) {
return $metadata; return $metadata;
} }
} }
if (!empty($watermark_exclude_photograph_gallery)) { if (!empty($watermark_exclude_photograph_gallery)) {
if (!empty($galleryid)) { if ($isWoo) {
$gallery_type = get_term_meta((int)$galleryid, 'gallery_type', true); $gallery_terms = get_the_terms($attachment_id, WPMF_GALLERY_ADDON_TAXO);
if (!empty($gallery_type) && $gallery_type === 'photographer') { if (!empty($gallery_terms)) {
$check = true; foreach ($gallery_terms as $gallery_term) {
$gallery_type = get_term_meta((int)$gallery_term->term_id, 'gallery_type', true);
if (!empty($gallery_type) && $gallery_type === 'photographer') {
$check = true;
}
}
}
} else {
if (!empty($galleryid)) {
$gallery_type = get_term_meta((int)$galleryid, 'gallery_type', true);
if (!empty($gallery_type) && $gallery_type === 'photographer') {
$check = true;
}
} }
} }
@@ -128,18 +159,24 @@ class WpmfWatermark
} }
// Using the wp_upload_dir replace the baseurl with the basedir // Using the wp_upload_dir replace the baseurl with the basedir
$path = str_replace($uploads['baseurl'], $uploads['basedir'], $image_url); $path = str_replace($uploads['baseurl'], $uploads['basedir'], $image_url);
if (!empty($path)) { if (!empty($path) && file_exists($path)) {
$pathinfo = pathinfo($path); $pathinfo = pathinfo($path);
$imageInfo = getimagesize($path); $imageInfo = getimagesize($path);
} }
try { try {
if (!empty($pathinfo)) { if (!empty($pathinfo)) {
$this->generatePicture($pathinfo['basename'], $imageInfo, $pathinfo['dirname'], $imageSize); $this->generatePicture($pathinfo['basename'], $imageInfo, $pathinfo['dirname'], $imageSize, '', $isWoo);
} else { } else {
if ($isWoo) {
return;
}
wp_send_json(array('status' => false)); wp_send_json(array('status' => false));
} }
} catch (Exception $e) { } catch (Exception $e) {
if ($isWoo) {
return;
}
wp_send_json(array('status' => false)); wp_send_json(array('status' => false));
} }
} }
@@ -169,11 +206,17 @@ class WpmfWatermark
try { try {
if (!empty($pathinfo)) { if (!empty($pathinfo)) {
$this->generatePicture($pathinfo['basename'], $imageInfo, $pathinfo['dirname'], $imageSize); $this->generatePicture($pathinfo['basename'], $imageInfo, $pathinfo['dirname'], $imageSize, '', $isWoo);
} else { } else {
if ($isWoo) {
return;
}
wp_send_json(array('status' => false)); wp_send_json(array('status' => false));
} }
} catch (Exception $e) { } catch (Exception $e) {
if ($isWoo) {
return;
}
wp_send_json(array('status' => false)); wp_send_json(array('status' => false));
} }
} }
@@ -249,6 +292,7 @@ class WpmfWatermark
$excludes = array(); $excludes = array();
$exclude_folders = wpmfGetOption('watermark_exclude_folders'); $exclude_folders = wpmfGetOption('watermark_exclude_folders');
$watermark_apply = get_option('wpmf_image_watermark_apply'); $watermark_apply = get_option('wpmf_image_watermark_apply');
$option_watermark_only_woo = get_option('wpmf_watermark_only_woo');
foreach (array_unique($exclude_folders) as $folder) { foreach (array_unique($exclude_folders) as $folder) {
if ($folder === 'root') { if ($folder === 'root') {
$excludes[] = 0; $excludes[] = 0;
@@ -287,6 +331,16 @@ class WpmfWatermark
} }
if (!empty($attachments)) { if (!empty($attachments)) {
foreach ($attachments as $attachment) { foreach ($attachments as $attachment) {
$isWoo = false;
if (!empty($option_watermark_only_woo) && (int) $option_watermark_only_woo === 1 && class_exists('WooCommerce')) {
$product_id = $this->getProductIdByImageId($attachment->ID);
if (!empty($product_id)) {
$isWoo = true;
} else {
$k ++;
continue;
}
}
// exclude watermark on gallery // exclude watermark on gallery
if (is_plugin_active('wp-media-folder-gallery-addon/wp-media-folder-gallery-addon.php')) { if (is_plugin_active('wp-media-folder-gallery-addon/wp-media-folder-gallery-addon.php')) {
$watermark_exclude_public_gallery = wpmfGetOption('watermark_exclude_public_gallery'); $watermark_exclude_public_gallery = wpmfGetOption('watermark_exclude_public_gallery');
@@ -295,14 +349,17 @@ class WpmfWatermark
if (!empty($watermark_exclude_public_gallery)) { if (!empty($watermark_exclude_public_gallery)) {
$gallery_terms = get_the_terms($attachment->ID, WPMF_GALLERY_ADDON_TAXO); $gallery_terms = get_the_terms($attachment->ID, WPMF_GALLERY_ADDON_TAXO);
if (!empty($gallery_terms)) { if (!empty($gallery_terms)) {
foreach ($gallery_terms as $gallery_term) { $check = true;
$gallery_type = get_term_meta((int)$gallery_term->term_id, 'gallery_type', true); if (empty($watermark_exclude_photograph_gallery)) {
if (!empty($gallery_type) && $gallery_type === 'photographer') { foreach ($gallery_terms as $gallery_term) {
$check = true; $gallery_type = get_term_meta((int)$gallery_term->term_id, 'gallery_type', true);
if (!empty($gallery_type) && $gallery_type === 'photographer') {
$check = false;
}
} }
} }
} }
if (!$check) { if ($check) {
$k ++; $k ++;
continue; continue;
} }
@@ -363,7 +420,7 @@ class WpmfWatermark
$pathinfo = pathinfo($path); $pathinfo = pathinfo($path);
$imageInfo = getimagesize($path); $imageInfo = getimagesize($path);
try { try {
$this->generatePicture($pathinfo['basename'], $imageInfo, $pathinfo['dirname'], $imageSize); $this->generatePicture($pathinfo['basename'], $imageInfo, $pathinfo['dirname'], $imageSize, '', $isWoo);
} catch (Exception $e) { } catch (Exception $e) {
wp_send_json(array('status' => 'limit', 'percent' => $present)); wp_send_json(array('status' => 'limit', 'percent' => $present));
} }
@@ -396,7 +453,7 @@ class WpmfWatermark
$imageInfo = getimagesize($path); $imageInfo = getimagesize($path);
if ((int) $value === 1) { if ((int) $value === 1) {
try { try {
$this->generatePicture($pathinfo['basename'], $imageInfo, $pathinfo['dirname'], $imageSize); $this->generatePicture($pathinfo['basename'], $imageInfo, $pathinfo['dirname'], $imageSize, '', $isWoo);
} catch (Exception $e) { } catch (Exception $e) {
wp_send_json(array('status' => 'limit', 'percent' => $present)); wp_send_json(array('status' => 'limit', 'percent' => $present));
} }
@@ -414,8 +471,8 @@ class WpmfWatermark
} }
} }
} }
$k ++;
} }
$k ++;
} }
if ($k >= $limit) { if ($k >= $limit) {
wp_send_json(array('status' => 'limit', 'percent' => $present)); wp_send_json(array('status' => 'limit', 'percent' => $present));
@@ -428,15 +485,16 @@ class WpmfWatermark
/** /**
* Generate Picture * Generate Picture
* *
* @param string $newname New name of image * @param string $newname New name of image
* @param array $imageInfo Image infomartion * @param array $imageInfo Image infomartion
* @param string $full_dir Path of image * @param string $full_dir Path of image
* @param string $wtm_apply_on Image size * @param string $wtm_apply_on Image size
* @param string $type Type * @param string $type Type
* @param boolean $isWoo Check images of woocommerce product
* *
* @return void * @return void
*/ */
public function generatePicture($newname, $imageInfo, $full_dir, $wtm_apply_on, $type = '') public function generatePicture($newname, $imageInfo, $full_dir, $wtm_apply_on, $type = '', $isWoo = false)
{ {
$wtm_images = get_option('wpmf_option_image_watermark'); $wtm_images = get_option('wpmf_option_image_watermark');
//$wtm_apply_on = get_option('wpmf_image_watermark_apply'); //$wtm_apply_on = get_option('wpmf_image_watermark_apply');
@@ -455,49 +513,40 @@ class WpmfWatermark
$check_image_logo_exit = false; $check_image_logo_exit = false;
} }
} }
$this->copyFileWithNewName($full_dir, $newname, 'initimage', $isWoo);
$this->copyFileWithNewName($full_dir, $newname, 'initimage'); if (in_array($imageInfo['mime'], ['image/jpeg', 'image/png', 'image/gif']) && !empty($wtm_images) && $check_image_logo_exit) {
if ($imageInfo['mime'] === 'image/jpeg') { $this->checkCopyFileWithNewName($full_dir, $newname, $wtm_apply_on, $type, $isWoo);
if (!empty($wtm_images) && $check_image_logo_exit) {
$this->checkCopyFileWithNewName($full_dir, $newname, $wtm_apply_on, $type);
}
} elseif ($imageInfo['mime'] === 'image/png') {
if (!empty($wtm_images) && $check_image_logo_exit) {
$this->checkCopyFileWithNewName($full_dir, $newname, $wtm_apply_on, $type);
}
} elseif ($imageInfo['mime'] === 'image/gif') {
if (!empty($wtm_images) && $check_image_logo_exit) {
$this->checkCopyFileWithNewName($full_dir, $newname, $wtm_apply_on, $type);
}
} }
} }
/** /**
* Generate Picture * Generate Picture
* *
* @param string $full_dir Path of image * @param string $full_dir Path of image
* @param string $newname New name of image * @param string $newname New name of image
* @param string $wtm_apply_on The sizes to apply watermark * @param string $wtm_apply_on The sizes to apply watermark
* @param string $type Type * @param string $type Type
* @param boolean $isWoo Check images of woocommerce product
* *
* @return void * @return void
*/ */
public function checkCopyFileWithNewName($full_dir, $newname, $wtm_apply_on, $type = '') public function checkCopyFileWithNewName($full_dir, $newname, $wtm_apply_on, $type = '', $isWoo = false)
{ {
$this->copyFileWithNewName($full_dir, $newname, $wtm_apply_on, $type); $this->copyFileWithNewName($full_dir, $newname, $wtm_apply_on, $type, $isWoo);
} }
/** /**
* Generate Picture * Generate Picture
* *
* @param string $pathdir Path to file * @param string $pathdir Path to file
* @param string $fname New file name * @param string $fname New file name
* @param string $wtmApplyOn The size to apply watermark * @param string $wtmApplyOn The size to apply watermark
* @param string $type Type * @param string $type Type
* @param boolean $isWoo Check images of woocommerce product
* *
* @return void * @return void
*/ */
public function copyFileWithNewName($pathdir, $fname, $wtmApplyOn, $type = '') public function copyFileWithNewName($pathdir, $fname, $wtmApplyOn, $type = '', $isWoo = false)
{ {
$option_image_watermark = get_option('wpmf_option_image_watermark'); $option_image_watermark = get_option('wpmf_option_image_watermark');
if ((int) $option_image_watermark === 0) { if ((int) $option_image_watermark === 0) {
@@ -551,6 +600,11 @@ class WpmfWatermark
} }
} }
$option_watermark_only_woo = get_option('wpmf_watermark_only_woo');
if (!empty($option_watermark_only_woo) && (int) $option_watermark_only_woo === 1 && !$isWoo && class_exists('WooCommerce')) {
return;
}
if ($add_water) { if ($add_water) {
if ((int) $wtm_apply_on['all_size'] === 1) { if ((int) $wtm_apply_on['all_size'] === 1) {
if (file_exists($newfile)) { if (file_exists($newfile)) {
@@ -610,7 +664,7 @@ class WpmfWatermark
$watermark_opacity, $watermark_opacity,
$watermark_margin_unit $watermark_margin_unit
); );
}// }
} }
} }
} }
@@ -637,6 +691,14 @@ class WpmfWatermark
return imagecreatefrompng($image); return imagecreatefrompng($image);
case 'image/gif': case 'image/gif':
return imagecreatefromgif($image); return imagecreatefromgif($image);
case 'image/webp':
if (function_exists('imagecreatefromwebp')) {
return imagecreatefromwebp($image);
} else {
return imagecreatefromstring(readfile($image));
}
default:
return imagecreatefromstring(readfile($image));
} }
} }
@@ -720,35 +782,35 @@ class WpmfWatermark
// set image scaling // set image scaling
$r = $logo_x / $logo_y; $r = $logo_x / $logo_y;
$new_width = $image_x * (int) $percent / 100; $new_width = round($image_x * (int) $percent / 100);
if ($new_width > $logo_x) { if ($new_width > $logo_x) {
$new_width = $logo_x; $new_width = $logo_x;
} }
$new_height = $new_width / $r; $new_height = round($new_width / $r);
if ($new_height > $logo_y) { if ($new_height > $logo_y) {
$new_height = $logo_y; $new_height = $logo_y;
} }
if ($position === 'center' || (int) $position === 0) { if ($position === 'center' || (int) $position === 0) {
$watermark_pos_x = ($image_x - $new_width) / 2; //watermark left $watermark_pos_x = round(($image_x - $new_width) / 2); //watermark left
$watermark_pos_y = ($image_y - $new_height) / 2; //watermark bottom $watermark_pos_y = round(($image_y - $new_height) / 2); //watermark bottom
} }
if ($position === 'top_left') { if ($position === 'top_left') {
$watermark_pos_x = (int) $watermark_margin['left']; $watermark_pos_x = (int) $watermark_margin['left'];
$watermark_pos_y = (int) $watermark_margin['top']; $watermark_pos_y = (int) $watermark_margin['top'];
} }
if ($position === 'top_right') { if ($position === 'top_right') {
$watermark_pos_x = $image_x - $new_width - (int) $watermark_margin['right']; $watermark_pos_x = round($image_x - $new_width - (int) $watermark_margin['right']);
$watermark_pos_y = (int) $watermark_margin['top']; $watermark_pos_y = (int) $watermark_margin['top'];
} }
if ($position === 'bottom_right') { if ($position === 'bottom_right') {
$watermark_pos_x = $image_x - $new_width - (int) $watermark_margin['right']; $watermark_pos_x = round($image_x - $new_width - (int) $watermark_margin['right']);
$watermark_pos_y = $image_y - $new_height - (int) $watermark_margin['bottom']; $watermark_pos_y = round($image_y - $new_height - (int) $watermark_margin['bottom']);
} }
if ($position === 'bottom_left') { if ($position === 'bottom_left') {
$watermark_pos_x = (int) $watermark_margin['left']; $watermark_pos_x = (int) $watermark_margin['left'];
$watermark_pos_y = $image_y - $new_height - (int) $watermark_margin['bottom']; $watermark_pos_y = round($image_y - $new_height - (int) $watermark_margin['bottom']);
} }
imagecopyresampled( imagecopyresampled(
@@ -805,4 +867,45 @@ class WpmfWatermark
return; return;
} }
} }
/**
* Optimized function to get WooCommerce product ID by image attachment ID.
*
* @param integer $attachment_id The ID of the image attachment.
*
* @return integer|boolean Product ID if found, otherwise false.
*/
public function getProductIdByImageId($attachment_id)
{
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => 1,
'meta_query' => array(
'relation' => 'OR',
array(
'key' => '_thumbnail_id',
'value' => $attachment_id,
'compare' => '='
),
array(
'key' => '_product_image_gallery',
'value' => $attachment_id,
'compare' => 'LIKE'
),
),
);
$query = new WP_Query($args);
if ($query->have_posts()) {
$query->the_post();
$product_id = get_the_ID();
wp_reset_postdata();
return $product_id;
}
wp_reset_postdata();
return false;
}
} }

View File

@@ -1629,6 +1629,10 @@ class WpmfMediaFolderOption
add_option('wpmf_watermark_image_id', 0, '', 'yes'); add_option('wpmf_watermark_image_id', 0, '', 'yes');
} }
if (!get_option('wpmf_watermark_only_woo', false)) {
add_option('wpmf_watermark_only_woo', 0, '', 'yes');
}
$gallery_settings = array( $gallery_settings = array(
'theme' => array( 'theme' => array(
'default_theme' => array( 'default_theme' => array(
@@ -2754,7 +2758,8 @@ class WpmfMediaFolderOption
'wpmf_image_watermark_apply', 'wpmf_image_watermark_apply',
'wpmf_options_format_title', 'wpmf_options_format_title',
'wpmf_watermark_image', 'wpmf_watermark_image',
'wpmf_watermark_image_id' 'wpmf_watermark_image_id',
'wpmf_watermark_only_woo'
); );
foreach ($options_name as $option) { foreach ($options_name as $option) {
@@ -2862,6 +2867,7 @@ class WpmfMediaFolderOption
$options_format_title = wpmfGetOption('wpmf_options_format_title'); $options_format_title = wpmfGetOption('wpmf_options_format_title');
$watermark_image = get_option('wpmf_watermark_image'); $watermark_image = get_option('wpmf_watermark_image');
$watermark_image_id = get_option('wpmf_watermark_image_id'); $watermark_image_id = get_option('wpmf_watermark_image_id');
$watermark_only_woo = get_option('wpmf_watermark_only_woo');
$padding_masonry = get_option('wpmf_padding_masonry'); $padding_masonry = get_option('wpmf_padding_masonry');
$padding_portfolio = get_option('wpmf_padding_portfolio'); $padding_portfolio = get_option('wpmf_padding_portfolio');

View File

@@ -1,6 +1,12 @@
<?php <?php
/* Prohibit direct script loading */ /* Prohibit direct script loading */
defined('ABSPATH') || die('No direct script access allowed!'); defined('ABSPATH') || die('No direct script access allowed!');
if (is_plugin_active('wp-media-folder-gallery-addon/wp-media-folder-gallery-addon.php')) {
$col_class = 'wpmf_width_50 m-r-0';
} else {
$col_class = '';
}
?> ?>
<div id="rename_on_upload" class="tab-content"> <div id="rename_on_upload" class="tab-content">
<div class="content-box content-wpmf-files-folders"> <div class="content-box content-wpmf-files-folders">
@@ -274,9 +280,8 @@ defined('ABSPATH') || die('No direct script access allowed!');
<div class="ju-settings-option wpmf_width_40 wpmf-no-shadow wpmf-no-padding wpmf-no-margin"> <div class="ju-settings-option wpmf_width_40 wpmf-no-shadow wpmf-no-padding wpmf-no-margin">
<div class="wpmf_row_full"> <div class="wpmf_row_full">
<input type="hidden" name="wpmf_option_image_watermark" value="0"> <input type="hidden" name="wpmf_option_image_watermark" value="0">
<b data-wpmftippy="<?php esc_html_e('Watermark will be applied only after saving the <label data-wpmftippy="<?php esc_html_e('Watermark will be applied only after saving the settings and regenerate the thumnails (hit the regenerate thumnails button)', 'wpmf'); ?>"
settings and regenerate the thumnails (hit the regenerate thumnails button)', 'wpmf'); ?>" class="ju-setting-label text wpmf-no-padding"><?php esc_html_e('Images watermark', 'wpmf') ?></label>
class="ju-setting-label text wpmf-no-padding"><?php esc_html_e('Images watermark', 'wpmf') ?></b>
<div class="ju-switch-button"> <div class="ju-switch-button">
<label class="switch"> <label class="switch">
<input type="checkbox" id="cb_option_image_watermark" <input type="checkbox" id="cb_option_image_watermark"
@@ -292,7 +297,6 @@ defined('ABSPATH') || die('No direct script access allowed!');
</div> </div>
</div> </div>
</div> </div>
<div class="ju-settings-option wpmf_width_100 wpmf-no-shadow"> <div class="ju-settings-option wpmf_width_100 wpmf-no-shadow">
<div class="wpmf_row_full"> <div class="wpmf_row_full">
<label data-wpmftippy="<?php esc_html_e('Select a picture that will be applied over your images', 'wpmf') ?>" <label data-wpmftippy="<?php esc_html_e('Select a picture that will be applied over your images', 'wpmf') ?>"
@@ -449,10 +453,10 @@ defined('ABSPATH') || die('No direct script access allowed!');
</div> </div>
<div class="ju-settings-option wpmf_width_100 p-lr-20"> <div class="ju-settings-option wpmf_width_100 p-lr-20">
<div class="ju-settings-option wpmf-no-shadow"> <div class="ju-settings-option wpmf-no-shadow <?php echo esc_attr($col_class); ?>">
<div class="wpmf_row_full"> <div class="wpmf_row_full">
<h4 data-wpmftippy="<?php esc_html_e('Select the size where you want to apply the watermark', 'wpmf'); ?>" <h4 data-wpmftippy="<?php esc_html_e('Select the size where you want to apply the watermark', 'wpmf'); ?>"
class="text title_h4 font-size-16 color-7f8a98"><?php esc_html_e('Apply watermark on', 'wpmf') ?></h4> class="text title_h4 font-size-16 color-404852"><?php esc_html_e('Apply watermark on', 'wpmf') ?></h4>
<div class="ju-settings-option wpmf-no-shadow wpmf_width_100"> <div class="ju-settings-option wpmf-no-shadow wpmf_width_100">
<div class="pure-checkbox ju-setting-label line-height-30"> <div class="pure-checkbox ju-setting-label line-height-30">
<input type="hidden" name="wpmf_image_watermark_apply[all_size]" value="0"> <input type="hidden" name="wpmf_image_watermark_apply[all_size]" value="0">
@@ -494,10 +498,10 @@ defined('ABSPATH') || die('No direct script access allowed!');
</div> </div>
<?php if (is_plugin_active('wp-media-folder-gallery-addon/wp-media-folder-gallery-addon.php')) : ?> <?php if (is_plugin_active('wp-media-folder-gallery-addon/wp-media-folder-gallery-addon.php')) : ?>
<div class="ju-settings-option wpmf-no-shadow wpmf_right m-r-0"> <div class="ju-settings-option wpmf-no-shadow <?php echo esc_attr($col_class); ?>">
<div class="wpmf_row_full"> <div class="wpmf_row_full">
<h4 data-wpmftippy="<?php esc_html_e('Select the size where you want to apply the watermark', 'wpmf'); ?>" <h4 data-wpmftippy="<?php esc_html_e('Select the size where you want to apply the watermark', 'wpmf'); ?>"
class="text title_h4 font-size-16 color-7f8a98"><?php esc_html_e('Watermark on photograph image', 'wpmf') ?></h4> class="text title_h4 font-size-16 color-404852"><?php esc_html_e('Watermark on photograph image', 'wpmf') ?></h4>
<?php <?php
$sizes = array( $sizes = array(
'all_size' => array( 'all_size' => array(
@@ -542,11 +546,12 @@ defined('ABSPATH') || die('No direct script access allowed!');
</div> </div>
</div> </div>
<?php endif; ?> <?php endif; ?>
</div>
<div class="ju-settings-option wpmf_width_100 p-lr-20">
<div class="ju-settings-option wpmf-no-shadow"> <div class="ju-settings-option wpmf-no-shadow">
<div class="wpmf_row_full"> <div class="wpmf_row_full">
<h4 data-wpmftippy="<?php esc_html_e('Exclude Folders', 'wpmf'); ?>" <h4 data-wpmftippy="<?php esc_html_e('Exclude Folders', 'wpmf'); ?>"
class="text title_h4 font-size-16 color-7f8a98"><?php esc_html_e('Exclude Folders', 'wpmf') ?></h4> class="text title_h4 font-size-16 color-404852"><?php esc_html_e('Exclude Folders', 'wpmf') ?></h4>
<input type="hidden" name="wpmf_watermark_exclude_folders"> <input type="hidden" name="wpmf_watermark_exclude_folders">
<div class="wrap_apply"> <div class="wrap_apply">
<div class="watermark_exclude_folders tree_option_folders"> <div class="watermark_exclude_folders tree_option_folders">
@@ -555,11 +560,35 @@ defined('ABSPATH') || die('No direct script access allowed!');
</div> </div>
</div> </div>
</div> </div>
<?php if (class_exists('WooCommerce')) : ?>
<div class="ju-settings-option wpmf-transparent">
<div class="wpmf_row_full">
<input type="hidden" name="wpmf_watermark_only_woo" value="0">
<label data-wpmftippy="<?php esc_attr_e('Possibility to add watermark to only images of WooCommerce Products', 'wpmf') ?>" class="ju-setting-label text wpmf-no-padding">
<?php esc_html_e('Apply watermark only on WooC. products', 'wpmf') ?>
</label>
<div class="ju-switch-button">
<label class="switch">
<input type="checkbox" name="wpmf_watermark_only_woo" value="1"
<?php
if (isset($watermark_only_woo) && (int)$watermark_only_woo === 1) {
echo 'checked';
}
?>
>
<span class="slider round"></span>
</label>
</div>
</div>
</div>
<?php endif; ?>
<?php if (is_plugin_active('wp-media-folder-gallery-addon/wp-media-folder-gallery-addon.php')) : ?> <?php if (is_plugin_active('wp-media-folder-gallery-addon/wp-media-folder-gallery-addon.php')) : ?>
<div class="ju-settings-option wpmf-transparent"> <div class="ju-settings-option wpmf-transparent">
<div class="wpmf_row_full"> <div class="wpmf_row_full">
<input type="hidden" name="watermark_exclude_public_gallery" value="0"> <input type="hidden" name="watermark_exclude_public_gallery" value="0">
<label class="ju-setting-label text"><?php esc_html_e('Exclude public galleries', 'wpmf') ?> <label class="ju-setting-label text wpmf-no-padding"><?php esc_html_e('Exclude public galleries', 'wpmf') ?>
</label> </label>
<div class="ju-switch-button"> <div class="ju-switch-button">
<label class="switch"> <label class="switch">
@@ -579,7 +608,7 @@ defined('ABSPATH') || die('No direct script access allowed!');
<div class="ju-settings-option wpmf-transparent"> <div class="ju-settings-option wpmf-transparent">
<div class="wpmf_row_full"> <div class="wpmf_row_full">
<input type="hidden" name="watermark_exclude_photograph_gallery" value="0"> <input type="hidden" name="watermark_exclude_photograph_gallery" value="0">
<label class="ju-setting-label text"><?php esc_html_e('Exclude photographer galleries', 'wpmf') ?> <label class="ju-setting-label text wpmf-no-padding"><?php esc_html_e('Exclude photographer galleries', 'wpmf') ?>
</label> </label>
<div class="ju-switch-button"> <div class="ju-switch-button">
<label class="switch"> <label class="switch">

View File

@@ -184,10 +184,12 @@ class JUQueueActions
if ($dirname) { if ($dirname) {
$dirname = trailingslashit($dirname); $dirname = trailingslashit($dirname);
} }
if ($dirname === '') { if (isset($destination)) {
$data['file'] = $destination . '/' . $data['file']; if ($dirname === '') {
} else { $data['file'] = $destination . '/' . $data['file'];
$data['file'] = str_replace($dirname, $destination . '/', $data['file']); } else {
$data['file'] = str_replace($dirname, $destination . '/', $data['file']);
}
} }
} }

Some files were not shown because too many files have changed in this diff Show More