Skip to content

Commit fe1cd89

Browse files
authored
Merge pull request #141 from bit-apps-pro/fix/plugin-review-team-issues
Bump version v2.8.0
2 parents 7b5d878 + 1fc3019 commit fe1cd89

12 files changed

Lines changed: 588 additions & 1018 deletions

File tree

.github/workflows/plugin-check.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ jobs:
3737
- name: Install pnpm
3838
uses: pnpm/action-setup@v4
3939
with:
40+
version: 9
4041
run_install: false
4142

4243
- name: Get pnpm store directory
@@ -66,7 +67,7 @@ jobs:
6667
6768
- name: Build plugin
6869
run: |
69-
pnpm production
70+
pnpm build
7071
bash .github/copy-assets
7172
7273
- name: WordPress Plugin Check

backend/Actions/ActiveCampaign/RecordApiHelper.php

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -132,20 +132,41 @@ private function handleRelatedActions($contactId, $listId, $tags, $integrationDe
132132
];
133133
$result['lists'] = $this->storeOrModifyRecord('contactLists', wp_json_encode($data));
134134
}
135+
135136
if (!empty($tags)) {
137+
// Remove existing tags if tag update is enabled
136138
if ($integrationDetails->actions->tagUpdate) {
137-
$result['tags_removed'] = HttpHelper::delete("{$this->_apiEndpoint}/contactTags/{$contactId}", null, $this->_defaultHeader);
139+
$contactTagsResponse = HttpHelper::get("{$this->_apiEndpoint}/contacts/{$contactId}/contactTags", null, $this->_defaultHeader);
140+
$contactTags = $contactTagsResponse->contactTags ?? [];
141+
142+
if (!empty($contactTags)) {
143+
foreach ($contactTags as $contactTag) {
144+
HttpHelper::delete("{$this->_apiEndpoint}/contactTags/{$contactTag->id}", null, $this->_defaultHeader);
145+
$result['tags_removed'][] = HttpHelper::$responseCode === 200
146+
? __('Tag removed successfully', 'bit-integrations')
147+
: __('Failed to remove tag', 'bit-integrations');
148+
}
149+
} else {
150+
$result['tags_removed'] = __('No tags to remove', 'bit-integrations');
151+
}
138152
}
139153

140-
$result['tags_added'] = [];
141-
foreach ($tags as $tag) {
142-
$data['contactTag'] = (object) [
143-
'contact' => $contactId,
144-
'tag' => $tag
145-
];
146-
$result['tags_added'][] = $this->storeOrModifyRecord('contactTags', wp_json_encode($data));
147-
}
154+
// Add new tags
155+
$result['tags_added'] = array_map(
156+
function ($tag) use ($contactId) {
157+
$data = [
158+
'contactTag' => (object) [
159+
'contact' => $contactId,
160+
'tag' => $tag
161+
]
162+
];
163+
164+
return $this->storeOrModifyRecord('contactTags', wp_json_encode($data));
165+
},
166+
$tags
167+
);
148168
}
169+
149170
if (!empty($integrationDetails->selectedAccount)) {
150171
$data['accountContact'] = [
151172
'account' => $integrationDetails->selectedAccount,

backend/Config.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Config
2222

2323
public const VAR_PREFIX = 'bit_integrations_';
2424

25-
public const VERSION = '2.7.12';
25+
public const VERSION = '2.8.0';
2626

2727
public const DB_VERSION = '1.1';
2828

backend/Triggers/WC/WCHelper.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,13 @@ public static function accessOrderData($order)
251251
}
252252

253253
foreach ($order->get_items() as $item) {
254+
if (empty($item)) {
255+
continue;
256+
}
257+
254258
$productId = $item->get_product_id();
255259
$product = $item->get_product();
260+
256261
$itemData = [
257262
'product_id' => $productId,
258263
'variation_id' => $item->get_variation_id() ?? '',
@@ -263,8 +268,8 @@ public static function accessOrderData($order)
263268
'subtotal_tax' => $item->get_subtotal_tax() ?? '',
264269
'tax_class' => $item->get_tax_class() ?? '',
265270
'tax_status' => $item->get_tax_status() ?? '',
266-
'product_sku' => $product->get_sku() ?? '',
267-
'product_unit_price' => $product->get_price() ?? '',
271+
'product_sku' => $product && $product->get_sku() ? $product->get_sku() : '',
272+
'product_unit_price' => $product && $product->get_price() ? $product->get_price() : '',
268273
];
269274

270275
$acfFieldGroups = Helper::acfGetFieldGroups(['product']);

bitwpfi.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Plugin Name: Bit Integrations
55
* Plugin URI: https://bitapps.pro/bit-integrations
66
* Description: Bit Integrations is a platform that integrates with over 300+ different platforms to help with various tasks on your WordPress site, like WooCommerce, Form builder, Page builder, LMS, Sales funnels, Bookings, CRM, Webhooks, Email marketing, Social media and Spreadsheets, etc
7-
* Version: 2.7.12
7+
* Version: 2.8.0
88
* Author: Automation & Integration Plugin - Bit Apps
99
* Author URI: https://bitapps.pro
1010
* Text Domain: bit-integrations
@@ -33,7 +33,7 @@
3333
*
3434
* @deprecated 2.7.8 Use Config::VERSION instead.
3535
*/
36-
define('BTCBI_VERSION', '2.7.12');
36+
define('BTCBI_VERSION', '2.8.0');
3737
/**
3838
* deprecated since version 2.7.8.
3939
*

frontend/src/components/AllIntegrations/IntegrationHelpers/WebHook/Body.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import PayLoadFieldMap from './PayLoadFieldMap'
1212
function Body({ webHooks, setWebHooks, isInfo, setTab }) {
1313
const formFields = useRecoilValue($formFields)
1414
const formattedFormFields = useMemo(
15-
() => formFields.map(field => ({ key: field.name, value: `\${${field.name}}` })),
15+
() => formFields?.map(field => ({ key: field.name, value: `\${${field.name}}` })),
1616
[formFields]
1717
)
1818

frontend/src/components/Triggers/TriggerHelpers/FluentBookingHelper/FluentBookingCommonFunction.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import { __ } from '../../../../Utils/i18nwrap'
55
export const getFluentFluentBookingFields = (setFlowData, value, edit, setFormFields) => {
66
const loadFields = bitsFetch({ id: value }, 'fluentbooking/get/fields', null, 'POST').then(result => {
77
if (result && result.success) {
8-
if (edit) {
9-
setFormFields(result.data)
10-
} else {
8+
setFormFields(result.data)
9+
10+
if (!edit) {
1111
setFlowData(result.data, 'fields')
12-
}
12+
}
1313

1414
return __('Fetched fields successfully', 'bit-integrations')
1515
}

frontend/src/pages/ChangelogToggle.jsx

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -30,77 +30,81 @@ const changeLog = [
3030
label: __('New Actions', 'bit-integrations'),
3131
headClass: 'new-integration',
3232
itemClass: 'integration-list',
33-
items: []
33+
items: [
34+
{
35+
label: 'User Registration & Membership',
36+
desc: '1 new events added',
37+
isPro: true
38+
}, {
39+
label: 'NotificationX',
40+
desc: '7 new events added',
41+
isPro: true
42+
}
43+
]
3444
},
3545
{
3646
label: __('New Triggers', 'bit-integrations'),
3747
headClass: 'new-trigger',
3848
itemClass: 'integration-list',
39-
items: []
49+
items: [
50+
{
51+
label: 'User Registration & Membership',
52+
desc: '2 new events added',
53+
isPro: true
54+
}, {
55+
label: 'NotificationX',
56+
desc: '2 new events added',
57+
isPro: true
58+
}
59+
]
4060
},
4161
{
4262
label: __('New Features', 'bit-integrations'),
4363
headClass: 'new-feature',
4464
itemClass: 'feature-list',
4565
items: [
4666
{
47-
label: 'ActiveCampaign',
48-
desc: 'Tags update feature added.',
49-
isPro: false
67+
label: 'Forminator Quiz & Poll',
68+
desc: 'Included lead data in quiz trigger payloads.',
69+
isPro: true
5070
}
5171
]
5272
},
5373
{
5474
label: __('Improvements', 'bit-integrations'),
5575
headClass: 'new-improvement',
5676
itemClass: 'feature-list',
57-
items: [
58-
{
59-
label: 'ActiveCampaign',
60-
desc: 'Refactored update contact handling.',
61-
isPro: false
62-
},
63-
{
64-
label: 'Custom Function',
65-
desc: 'Improved validator logic.',
66-
isPro: false
67-
},
68-
{
69-
label: 'get-access-token',
70-
desc: 'Removed unnecessary sanitation on get-access-token routes for smoother OAuth flow.',
71-
isPro: false
72-
}
73-
]
77+
items: []
7478
},
7579
{
7680
label: __('Bug Fixes', 'bit-integrations'),
7781
headClass: 'fixes',
7882
itemClass: 'fixes-list',
7983
items: [
8084
{
81-
label: 'SendFox',
82-
desc: 'Fixed blank page issue and fieldmap disappearance issue.',
85+
label: 'GoHighLevel',
86+
desc: 'Fixed opportunity creation by sending the selected pipeline ID correctly.',
8387
isPro: false
8488
},
8589
{
86-
label: 'WooCommerce',
87-
desc: 'Fixed billing and shipping address overwrite issue.',
90+
label: 'ActiveCampaign',
91+
desc: 'Fixed tag update handling so existing tags are removed correctly before new tags are applied.',
8892
isPro: false
8993
},
9094
{
91-
label: 'Salesforce',
92-
desc: 'Fixed lead response type issue.',
95+
label: 'FluentBooking',
96+
desc: 'Fixed fetched fields not being set consistently during trigger configuration.',
9397
isPro: false
9498
},
9599
{
96-
label: 'Google Products',
97-
desc: 'Fixed authentication issue.',
100+
label: 'Webhook',
101+
desc: 'Fixed payload field mapping when form fields are unavailable during setup.',
98102
isPro: false
99103
},
100104
{
101-
label: 'Brekadance',
102-
desc: 'Fixed trigger listening data issue.',
103-
isPro: true
105+
label: 'WooCommerce',
106+
desc: 'Fixed product data access issues for order items without product objects.',
107+
isPro: false
104108
}
105109
]
106110
},
-4.12 KB
Loading

languages/bit-integrations.pot

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
# This file is distributed under the GPLv2 or later.
33
msgid ""
44
msgstr ""
5-
"Project-Id-Version: Bit Integrations 2.7.11\n"
5+
"Project-Id-Version: Bit Integrations 2.7.12\n"
66
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/bit-integrations\n"
77
"Last-Translator: developer@bitcode.pro\n"
88
"Language-Team: support@bitcode.pro\n"
99
"MIME-Version: 1.0\n"
1010
"Content-Type: text/plain; charset=UTF-8\n"
1111
"Content-Transfer-Encoding: 8bit\n"
12-
"POT-Creation-Date: 2026-03-07T09:14:31+00:00\n"
12+
"POT-Creation-Date: 2026-03-13T05:59:46+00:00\n"
1313
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1414
"X-Generator: WP-CLI 2.11.0\n"
1515
"X-Domain: bit-integrations\n"
@@ -705,6 +705,18 @@ msgstr ""
705705
msgid "Email already exist"
706706
msgstr ""
707707

708+
#: backend/Actions/ActiveCampaign/RecordApiHelper.php:146
709+
msgid "Tag removed successfully"
710+
msgstr ""
711+
712+
#: backend/Actions/ActiveCampaign/RecordApiHelper.php:147
713+
msgid "Failed to remove tag"
714+
msgstr ""
715+
716+
#: backend/Actions/ActiveCampaign/RecordApiHelper.php:150
717+
msgid "No tags to remove"
718+
msgstr ""
719+
708720
#: backend/Actions/Affiliate/RecordApiHelper.php:154
709721
msgid "User are not affiliate"
710722
msgstr ""

0 commit comments

Comments
 (0)