Skip to content

Bump version to 2.7.8#132

Open
RishadAlam wants to merge 21 commits intomainfrom
fix-vulnerability
Open

Bump version to 2.7.8#132
RishadAlam wants to merge 21 commits intomainfrom
fix-vulnerability

Conversation

@RishadAlam
Copy link
Member

No description provided.

- Enhanced Route validation and sanitization to prevent path traversal attacks
- Improved email notification system with better error handling
- Updated multiple action controllers with security enhancements
- Added email notification template for integration failures
- Renamed integration images for consistency
- Updated deployment workflow configuration
- Improved helper functions and smart tags processing
…roller

- Updated GoogleSheet components and common functions
- Modified ajax.php routes
- Removed OneClickCredentialController.php
- Added EXTERNAL-SERVICES.md documentation
- Updated readme.txt
- Fixed namespace mismatch in composer.json from BitCode\FI\ to BitApps\BTCBI_FI- Regenerated composer autoload files to resolve Plugin class not found error
- Added source code and build instructions section to readme.txt for WordPress.org compliance
- Fixed WordPress.DB.PreparedSQL.NotPrepared errors by adding phpcs:ignore comments for static queries with no user input
- Fixed WordPress.DB.PreparedSQL.InterpolatedNotPrepared errors in dynamic IN clauses using sprintf() pattern
- Fixed WordPress.Security.NonceVerification warnings with appropriate phpcs:ignore comments for routing and external parameters
- Fixed WordPress.I18n.MissingTranslatorsComment by adding translators comments to 443+ files
- Fixed unordered placeholders (changed %s,%d to %1$s,%2$d where needed)

Affected files:
- TriggerFallback.php: DB query and nonce verification fixes
- AcademyLmsController.php: Dynamic IN clause fix for quiz deletion
- BuddyBoss/RecordApiHelper.php: Dynamic IN clause fix for group status query
- TutorLmsController.php: Dynamic IN clause fix for lesson meta deletion
- ZohoCRM/RecordApiHelper.php: Nonce verification for external parameters
- Route.php: Nonce verification in routing logic
- GamiPress, LifterLms, Affiliate, PaidMembershipPro controllers: Static query fixes
- 443+ files: Added translators comments for i18n compliance

All changes maintain functionality while ensuring WordPress coding standards compliance.
Copilot AI review requested due to automatic review settings February 16, 2026 11:45
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the plugin to version 2.7.8 while refactoring a large set of integrations to a new root namespace and addressing WordPress Plugin Check/WPCS concerns.

Changes:

  • Migrated PHP namespaces/autoloading from BitCode\FI\ to BitApps\BTCBI_FI\ across integrations.
  • Added caching, PHPCS suppressions, translator comments, and removed debug logging in several helpers/controllers.
  • Reworked the GitHub workflow to run WordPress Plugin Check on PRs/pushes to main, plus refreshed frontend changelog and Google Sheets auth logic.

Reviewed changes

Copilot reviewed 295 out of 565 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
includes/Actions/PerfexCRM/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/PerfexCRM/PerfexCRMController.php Namespace/import migration; added translator comment.
includes/Actions/PaidMembershipPro/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/PaidMembershipPro/RecordApiHelper.php Added WP object cache around membership level lookup.
includes/Actions/PaidMembershipPro/PaidMembershipProController.php Cached PMPro levels query; added translator comment.
includes/Actions/Pabbly/PabblyController.php Namespace/import migration to new root.
includes/Actions/PCloud/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/PCloud/RecordApiHelper.php Namespace/import migration; reordered imports.
includes/Actions/PCloud/PCloudController.php Namespace/import migration; added translator comment.
includes/Actions/OneHashCRM/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/OneHashCRM/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/OneHashCRM/OneHashCRMController.php Namespace/import migration; added translator comment.
includes/Actions/OneDrive/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/OneDrive/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/OneDrive/OneDriveController.php Namespace/import migration; added translator comment.
includes/Actions/OmniSend/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/OmniSend/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/OmniSend/OmniSendController.php Namespace/import migration; added translator comment.
includes/Actions/NutshellCRM/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/NutshellCRM/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/NutshellCRM/NutshellCRMController.php Namespace/import migration; added translator comment.
includes/Actions/Notion/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Notion/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/Notion/NotionController.php Namespace/import migration; added translator comment.
includes/Actions/Nimble/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Nimble/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/Nimble/NimbleController.php Namespace/import migration; added translator comment.
includes/Actions/Newsletter/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Newsletter/RecordApiHelper.php Namespace/import migration; reordered imports.
includes/Actions/Newsletter/NewsletterController.php Namespace migration to new root.
includes/Actions/N8n/N8nController.php Namespace/import migration to new root.
includes/Actions/MoxieCRM/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/MoxieCRM/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/MoxieCRM/MoxieCRMController.php Namespace/import migration; added translator comment.
includes/Actions/Moosend/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Moosend/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/Moosend/MoosendHelper.php Namespace migration to new root.
includes/Actions/Moosend/MoosendController.php Namespace/import migration; added translator comment.
includes/Actions/Memberpress/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Memberpress/RecordApiHelper.php Namespace/import migration; added translator comment.
includes/Actions/Memberpress/MemberpressController.php Namespace/import migration; PHPCS ignore; translator comments.
includes/Actions/Mautic/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Mautic/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/Mautic/MauticController.php Namespace/import migration; added translator comment.
includes/Actions/MasterStudyLms/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/MasterStudyLms/RecordApiHelper.php Namespace/import migration; reordered imports.
includes/Actions/MasterStudyLms/MasterStudyLmsHelper.php Added PHPCS suppressions for direct DB reads.
includes/Actions/MasterStudyLms/MasterStudyLmsController.php Namespace migration; added translator comments.
includes/Actions/Mailup/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Mailup/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/Mailup/MailupController.php Namespace/import migration; added translator comment.
includes/Actions/Mailster/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Mailster/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/Mailster/MailsterController.php Namespace migration to new root.
includes/Actions/Mailjet/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Mailjet/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/Mailjet/MailjetController.php Namespace/import migration; added translator comment.
includes/Actions/Mailify/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Mailify/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/Mailify/MailifyController.php Namespace/import migration; added translator comment.
includes/Actions/Mailercloud/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Mailercloud/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/Mailercloud/MailercloudController.php Namespace/import migration; added translator comment.
includes/Actions/MailerPress/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/MailerPress/RecordApiHelper.php Namespace/import migration; default message translator note.
includes/Actions/MailerPress/MailerPressController.php Namespace migration; added translator comment; removed trailing whitespace.
includes/Actions/MailerLite/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/MailerLite/RecordApiHelper.php Namespace/import migration; added PHPCS ignores for $_SERVER.
includes/Actions/MailerLite/MailerLiteController.php Namespace/import migration; added translator comment.
includes/Actions/MailRelay/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/MailRelay/RecordApiHelper.php Namespace/import migration to new root.
includes/Actions/MailRelay/MailRelayController.php Namespace/import migration; added translator comment.
includes/Actions/MailPoet/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/MailPoet/RecordApiHelper.php Namespace migration; added translator comment (near response handling).
includes/Actions/MailPoet/MailPoetController.php Namespace migration; updated comment; added translator comment.
includes/Actions/MailMint/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/MailMint/RecordApiHelper.php Namespace migration; added translator comment.
includes/Actions/MailMint/MailMintController.php Namespace migration; cached DB query; added translator comments.
includes/Actions/MailChimp/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/MailChimp/RecordApiHelper.php Namespace migration; added translator comment.
includes/Actions/MailChimp/MailChimpController.php Namespace migration; import reorder; added translator comment.
includes/Actions/MailBluster/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/MailBluster/RecordApiHelper.php Namespace migration to new root.
includes/Actions/MailBluster/MailBlusterController.php Namespace migration; added translator comment.
includes/Actions/Mail/MailController.php Namespace migration; ABSPATH guard added; updated sprintf placeholders.
includes/Actions/Livestorm/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Livestorm/RecordApiHelper.php Namespace migration; added translator comments for required fields.
includes/Actions/Livestorm/LivestormController.php Namespace migration; added translator comment.
includes/Actions/LionDesk/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/LionDesk/RecordApiHelper.php Namespace migration to new root.
includes/Actions/LionDesk/LionDeskController.php Namespace migration; added translator comment.
includes/Actions/Line/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Line/RecordApiHelper.php Namespace migration; added translator comment.
includes/Actions/Line/LineController.php Namespace migration to new root.
includes/Actions/LifterLms/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/LifterLms/RecordApiHelper.php Namespace migration to new root.
includes/Actions/LifterLms/LifterLmsController.php Added caching to course/membership lookups; translator comment.
includes/Actions/Lemlist/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Lemlist/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Lemlist/LemlistController.php Namespace migration; added translator comment.
includes/Actions/LearnDash/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/LearnDash/RecordApiHelper.php Import reorder; added PHPCS ignores; fixed SQL quoting.
includes/Actions/LearnDash/LearnDashController.php Namespace migration; added translator comment.
includes/Actions/LMFWC/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/LMFWC/RecordApiHelper.php Namespace migration; added translator comments for pro-only fallback.
includes/Actions/LMFWC/LMFWCController.php Namespace migration; added translator comment.
includes/Actions/KonnectzIT/KonnectzITController.php Namespace migration to new root.
includes/Actions/Klaviyo/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Klaviyo/RecordApiHelper.php Namespace migration; added translator comment.
includes/Actions/Klaviyo/KlaviyoController.php Namespace migration; import reorder; added translator comment.
includes/Actions/KirimEmail/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/KirimEmail/RecordApiHelper.php Namespace migration to new root.
includes/Actions/KirimEmail/KirimEmailController.php Namespace migration; added translator comment.
includes/Actions/Keap/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Keap/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Keap/KeapController.php Namespace migration; import reorder; added translator comment.
includes/Actions/JetEngine/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/JetEngine/RecordApiHelper.php Namespace migration; added PHPCS ignore for direct update.
includes/Actions/JetEngine/JetEngineController.php Namespace migration; added translator comment for plugin missing.
includes/Actions/Integromat/IntegromatController.php Namespace migration to new root.
includes/Actions/Integrately/IntegratelyController.php Namespace migration to new root.
includes/Actions/Insightly/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Insightly/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Insightly/InsightlyController.php Namespace migration; added translator comment.
includes/Actions/Hubspot/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Hubspot/HubspotRecordApiHelper.php Namespace migration; added translator comment.
includes/Actions/Hubspot/HubspotController.php Namespace migration to new root.
includes/Actions/HighLevel/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/HighLevel/RecordApiHelper.php Namespace migration; added translator comment in default response.
includes/Actions/HighLevel/HighLevelController.php Namespace migration; added translator comments for errors.
includes/Actions/Groundhogg/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Groundhogg/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Groundhogg/GroundhoggController.php Namespace migration; added translator comment.
includes/Actions/Gravitec/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Gravitec/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Gravitec/GravitecController.php Namespace migration; added translator comment.
includes/Actions/GoogleSheet/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/GoogleSheet/RecordApiHelper.php Namespace migration to new root.
includes/Actions/GoogleSheet/GoogleSheetController.php Namespace migration; ABSPATH guard added; translator note.
includes/Actions/GoogleDrive/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/GoogleDrive/RecordApiHelper.php Namespace migration; removed debug logging.
includes/Actions/GoogleDrive/GoogleDriveController.php Namespace migration; added translator comment.
includes/Actions/GoogleContacts/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/GoogleContacts/RecordApiHelper.php Namespace migration; replaced file_get_contents with wp_remote_get.
includes/Actions/GoogleContacts/GoogleContactsController.php Namespace migration; added translator comment.
includes/Actions/GoogleCalendar/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/GoogleCalendar/RecordApiHelper.php Namespace migration; imports reordered.
includes/Actions/GoogleCalendar/GoogleCalendarController.php Namespace migration; added translator comment.
includes/Actions/GiveWp/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/GiveWp/RecordApiHelper.php Namespace migration; added translator comment.
includes/Actions/GiveWp/GiveWpController.php Namespace migration; added translator comment(s).
includes/Actions/Getgist/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Getgist/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Getgist/GetgistController.php Namespace migration; added translator comment.
includes/Actions/GetResponse/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/GetResponse/RecordApiHelper.php Namespace migration to new root.
includes/Actions/GetResponse/GetResponseController.php Namespace migration; added translator comment.
includes/Actions/GamiPress/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/GamiPress/RecordApiHelper.php Namespace migration; improved sprintf placeholders; translator notes.
includes/Actions/Freshdesk/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Freshdesk/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Freshdesk/FreshdeskController.php Namespace migration; added translator comment.
includes/Actions/Freshdesk/FilesApiHelper.php Namespace migration; updated HttpHelper import.
includes/Actions/Freshdesk/AllFilesApiHelper.php Namespace migration; updated HttpHelper import.
includes/Actions/FreshSales/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/FreshSales/RecordApiHelper.php Namespace migration; added translator comment.
includes/Actions/FreshSales/FreshSalesController.php Namespace migration; import reorder; added translator comment.
includes/Actions/FluentSupport/Routes.php Namespace/import migration; formatting tweak.
includes/Actions/FluentSupport/RecordApiHelper.php Namespace migration; added PHPCS ignore + translator note.
includes/Actions/FluentSupport/FluentSupportController.php Namespace migration; translator comment for missing plugin.
includes/Actions/FluentCrm/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/FluentCrm/RecordApiHelper.php Namespace migration; changed applied filter name.
includes/Actions/FluentCrm/FluentCrmController.php Namespace migration; imports reordered; translator note.
includes/Actions/FluentCart/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/FluentCart/RecordApiHelper.php Namespace migration; translator note in default response.
includes/Actions/FluentCart/FluentCartController.php Namespace migration to new root.
includes/Actions/Flowlu/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Flowlu/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Flowlu/FlowluController.php Namespace migration; added translator comment.
includes/Actions/FlowMattic/FlowMatticController.php Namespace migration to new root.
includes/Actions/Fabman/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Fabman/RecordApiHelper.php Namespace migration; improved i18n formatting.
includes/Actions/Fabman/FabmanController.php Namespace migration; removed debug logging.
includes/Actions/Encharge/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Encharge/RecordApiHelper.php Namespace migration; updated imports.
includes/Actions/Encharge/EnchargeController.php Namespace migration; added translator comment.
includes/Actions/EmailOctopus/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/EmailOctopus/RecordApiHelper.php Namespace migration to new root.
includes/Actions/EmailOctopus/EmailOctopusController.php Namespace migration; updated HttpHelper import.
includes/Actions/ElasticEmail/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/ElasticEmail/RecordApiHelper.php Namespace migration to new root.
includes/Actions/ElasticEmail/ElasticEmailController.php Namespace migration; added translator comment.
includes/Actions/Dropbox/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Dropbox/RecordApiHelper.php Namespace migration; import reorder.
includes/Actions/Dropbox/DropboxController.php Namespace migration; added translator comment.
includes/Actions/Drip/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Drip/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Drip/DripController.php Namespace migration; added translator comment.
includes/Actions/Dokan/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Dokan/RecordApiHelper.php Namespace migration; improved sprintf placeholders; translator notes.
includes/Actions/Dokan/DokanController.php Namespace migration; added translator comment.
includes/Actions/Discord/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Discord/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Discord/FilesApiHelper.php Namespace migration; import reorder.
includes/Actions/Discord/DiscordController.php Namespace migration; added translator comment.
includes/Actions/DirectIq/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/DirectIq/RecordApiHelper.php Namespace migration to new root.
includes/Actions/DirectIq/DirectIqController.php Namespace migration; added translator comment.
includes/Actions/Demio/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Demio/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Demio/DemioController.php Namespace migration; added translator comment.
includes/Actions/CustomApi/CustomApiController.php Namespace migration; updated imports.
includes/Actions/CustomAction/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/CustomAction/CustomActionController.php Reworked temp file handling to WP_Filesystem + uploads dir.
includes/Actions/CopperCRM/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/CopperCRM/RecordApiHelper.php Namespace migration; updated imports.
includes/Actions/CopperCRM/CopperCRMController.php Namespace migration; added translator comment.
includes/Actions/ConvertKit/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/ConvertKit/RecordApiHelper.php Namespace migration to new root.
includes/Actions/ConvertKit/ConvertKitController.php Namespace migration; added translator comment.
includes/Actions/ConstantContact/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/ConstantContact/RecordApiHelper.php Namespace migration to new root.
includes/Actions/ConstantContact/ConstantContactController.php Namespace migration; imports updated; translator comment.
includes/Actions/CompanyHub/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/CompanyHub/RecordApiHelper.php Namespace migration to new root.
includes/Actions/CompanyHub/CompanyHubController.php Namespace migration; added translator comment.
includes/Actions/ClinchPad/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/ClinchPad/RecordApiHelper.php Namespace migration to new root.
includes/Actions/ClinchPad/ClinchPadController.php Namespace migration; added translator comment.
includes/Actions/Clickup/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Clickup/RecordApiHelper.php Switched file upload to CURLFile; namespace migration.
includes/Actions/Clickup/ClickupController.php Namespace migration; added translator comment.
includes/Actions/CapsuleCRM/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/CapsuleCRM/RecordApiHelper.php Namespace migration to new root.
includes/Actions/CapsuleCRM/CapsuleCRMController.php Namespace migration; added translator comment.
includes/Actions/CampaignMonitor/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/CampaignMonitor/RecordApiHelper.php Namespace migration to new root.
includes/Actions/CampaignMonitor/CampaignMonitorController.php Namespace migration; added translator comment.
includes/Actions/BuddyBoss/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/BuddyBoss/Hooks.php Updated controller/Hooks imports to new namespace.
includes/Actions/BuddyBoss/BuddyBossController.php Added caching for group/user lists; namespace migration.
includes/Actions/BitForm/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/BitForm/RecordApiHelper.php Namespace migration to new root.
includes/Actions/BitForm/BitFormController.php Namespace migration; added translator comment.
includes/Actions/Bento/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Bento/RecordApiHelper.php Namespace migration; translator note.
includes/Actions/Bento/BentoHelper.php Namespace migration; updated import.
includes/Actions/Bento/BentoController.php Namespace migration; import reorder; translator comment.
includes/Actions/BenchMark/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/BenchMark/RecordApiHelper.php Namespace migration to new root.
includes/Actions/BenchMark/BenchMarkController.php Namespace migration; import reorder; translator comment.
includes/Actions/Autonami/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Autonami/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Autonami/AutonamiController.php Namespace migration; updated imports; translator note.
includes/Actions/AutomatorWP/AutomatorWPController.php Namespace migration to new root.
includes/Actions/Asana/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Asana/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Asana/AsanaController.php Namespace migration; added translator comment.
includes/Actions/AntApps/AntAppsController.php Namespace migration to new root.
includes/Actions/Albato/AlbatoController.php Namespace migration to new root.
includes/Actions/Airtable/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Airtable/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Airtable/AirtableController.php Namespace migration; updated import.
includes/Actions/AgiledCRM/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/AgiledCRM/RecordApiHelper.php Namespace migration to new root.
includes/Actions/AgiledCRM/AgiledCRMController.php Namespace migration; added translator comment.
includes/Actions/Affiliate/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Affiliate/RecordApiHelper.php Namespace migration; added translator comment.
includes/Actions/Affiliate/AffiliateController.php Namespace migration; added caching; translator comment.
includes/Actions/AdvancedFormIntegration/AdvancedFormIntegrationController.php Namespace migration to new root.
includes/Actions/Acumbamail/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/Acumbamail/RecordApiHelper.php Namespace migration to new root.
includes/Actions/Acumbamail/AcumbamailController.php Namespace migration; added translator comment.
includes/Actions/ActiveCampaign/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/ActiveCampaign/RecordApiHelper.php Namespace migration to new root.
includes/Actions/ActiveCampaign/ActiveCampaignController.php Namespace migration; added translator comment.
includes/Actions/ActionController.php Namespace migration; switched to wp_safe_redirect.
includes/Actions/AcademyLms/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/AcademyLms/AcademyLmsController.php Namespace migration; ABSPATH guard added; query hardening.
includes/Actions/ACPT/Routes.php Updated controller/Route imports to new namespace.
includes/Actions/ACPT/RecordApiHelper.php Replaced dynamic hooks with explicit filter names.
includes/Actions/ACPT/ACPTHelper.php Namespace migration; translator comments; response validation helper.
includes/Actions/ACPT/ACPTController.php Namespace migration; translator comment.
frontend-dev/src/pages/ChangelogToggle.jsx Updated release date + reorganized changelog sections.
frontend-dev/src/components/Flow/New/SelectAction.jsx Added explicit logo keys and fallback for GetLogo.
frontend-dev/src/components/AllIntegrations/GoogleSheet/GoogleSheetCommonFunc.js Removed one-click auth branching; simplified credential usage.
frontend-dev/src/components/AllIntegrations/GoogleSheet/GoogleSheetAuthorization.jsx Removed large blocks of commented one-click auth code.
frontend-dev/src/components/AllIntegrations/GoogleSheet/GoogleSheet.jsx Removed credential prefetch side-effect for one-click auth.
composer.json Updated PSR-4 autoload root namespace.
bitwpfi.php Version bump to 2.7.8 (header + constant).
.php-cs-fixer.php Excluded defined from native_function_invocation rule.
.github/workflows/deploy.yml Replaced deploy workflow with WordPress Plugin Check CI.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 5 to 11
if (! defined('ABSPATH')) {
exit;
}

use BitApps\BTCBI_FI\Core\Util\Common;
use BitApps\BTCBI_FI\Log\LogHandler;

Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use statements must appear before other executable statements in a namespace scope. Placing the ABSPATH guard between the namespace declaration and use imports will trigger a PHP parse error. Move the ABSPATH guard below the use statements, or convert the file to bracketed namespace syntax if you need global-scope code before imports.

Suggested change
if (! defined('ABSPATH')) {
exit;
}
use BitApps\BTCBI_FI\Core\Util\Common;
use BitApps\BTCBI_FI\Log\LogHandler;
use BitApps\BTCBI_FI\Core\Util\Common;
use BitApps\BTCBI_FI\Log\LogHandler;
if (! defined('ABSPATH')) {
exit;
}

Copilot uses AI. Check for mistakes.
Comment on lines 7 to 13
namespace BitApps\BTCBI_FI\Actions\GoogleSheet;

if (! defined('ABSPATH')) {
exit;
}
use BitApps\BTCBI_FI\Core\Util\HttpHelper;
use BitApps\BTCBI_FI\Flow\FlowController;
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has the same parse-error issue: executable code (if (! defined('ABSPATH')) ...) appears before use statements inside the namespace. Relocate the ABSPATH guard after the imports (or switch to bracketed namespaces).

Copilot uses AI. Check for mistakes.
Comment on lines 5 to 10
if (! defined('ABSPATH')) {
exit;
}

use BitApps\BTCBI_FI\Log\LogHandler;

Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same PHP syntax rule violation as above: use cannot follow other statements in the same namespace scope. Move the ABSPATH guard below the use line(s) or refactor to bracketed namespaces.

Suggested change
if (! defined('ABSPATH')) {
exit;
}
use BitApps\BTCBI_FI\Log\LogHandler;
use BitApps\BTCBI_FI\Log\LogHandler;
if (! defined('ABSPATH')) {
exit;
}

Copilot uses AI. Check for mistakes.
Comment on lines 11 to 12
env:
PLUGIN_SLUG: bit-smtp
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow sets PLUGIN_SLUG to bit-smtp, which looks inconsistent with this repository/plugin (Bit Integrations) and will point Plugin Check at a non-existent build directory. Also, pnpm install / pnpm production now run from the repo root, but earlier workflow logic installed from frontend-dev; if the package.json/lockfile live under frontend-dev, these commands will fail unless you cd frontend-dev (and run the build from there).

Copilot uses AI. Check for mistakes.
Comment on lines 62 to 70
- name: Install dependencies
run: |
if [[ "${{ github.event_name }}" == "release" ]]; then
echo "TEST_ACTION=false" >> $GITHUB_ENV
else
echo "TEST_ACTION=true" >> $GITHUB_ENV
fi
composer install --prefer-dist --no-progress --no-dev --optimize-autoloader
pnpm install --frozen-lockfile

- name: Build
id: build-plugin
- name: Build plugin
run: |
bash .github/build
if [ -d "${{ github.workspace }}/build/${{ env.PLUGIN_SLUG }}" ]; then
echo "free_exists=true" >> "${GITHUB_OUTPUT}"
else
echo "free_exists=false" >> "${GITHUB_OUTPUT}"
fi
pnpm production
bash .github/copy-assets
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow sets PLUGIN_SLUG to bit-smtp, which looks inconsistent with this repository/plugin (Bit Integrations) and will point Plugin Check at a non-existent build directory. Also, pnpm install / pnpm production now run from the repo root, but earlier workflow logic installed from frontend-dev; if the package.json/lockfile live under frontend-dev, these commands will fail unless you cd frontend-dev (and run the build from there).

Copilot uses AI. Check for mistakes.
$wp_filesystem->delete($filePath);
wp_send_json_success(__('Exec function not found in your server, So we can\'t validate your function. But you can run your custom action.', 'bit-integrations'));
}
$response = exec(escapeshellcmd("php -l {$filePath}"), $output, $return);
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This writes arbitrary user-supplied PHP into the uploads directory with a .php extension and then executes a shell command referencing it. For safer hardening: write to a non-web-accessible temp location (e.g., via wp_tempnam()/sys_get_temp_dir()), avoid .php extension if possible, and shell-escape the filename with escapeshellarg($filePath) (not escapeshellcmd on the whole command). Consider using PHP_BINARY (or a configurable path) instead of php to avoid PATH ambiguity.

Copilot uses AI. Check for mistakes.
Comment on lines 34 to 35
$msg = str_replace($filePath, 'your function', $response);
fclose($temp_file);
$wp_filesystem->delete($filePath);
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This writes arbitrary user-supplied PHP into the uploads directory with a .php extension and then executes a shell command referencing it. For safer hardening: write to a non-web-accessible temp location (e.g., via wp_tempnam()/sys_get_temp_dir()), avoid .php extension if possible, and shell-escape the filename with escapeshellarg($filePath) (not escapeshellcmd on the whole command). Consider using PHP_BINARY (or a configurable path) instead of php to avoid PATH ambiguity.

Copilot uses AI. Check for mistakes.
/* translators: %s: Plugin name */
$errorMessages = wp_sprintf(__('%s is not active or not installed', 'bit-integrations'), 'Bit Integrations Pro');
} elseif (!$response['success']) {
$errorMessages = $response('message');
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$response('message') attempts to call $response as a function. If $response is an array (as implied by $response['success']), this should likely be $response['message'] (or object access if $response is an object).

Suggested change
$errorMessages = $response('message');
$errorMessages = $response['message'];

Copilot uses AI. Check for mistakes.
public function execute($fieldValues, $fieldMap, $actions, $list_id, $tags, $actionName)
{
$fieldData = apply_filters('fluent_crm_assign_company', [], (array) $actions);
$fieldData = apply_filters('btcbi_fluent_crm_assign_company', [], (array) $actions);
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renaming the applied filter from fluent_crm_assign_company to btcbi_fluent_crm_assign_company is a breaking change for any third-party code hooking into the old filter. To preserve compatibility, consider applying both (e.g., apply the old filter first and then the new one), or keep the old name and introduce the new one as an alias with a deprecation path.

Suggested change
$fieldData = apply_filters('btcbi_fluent_crm_assign_company', [], (array) $actions);
$fieldData = apply_filters('fluent_crm_assign_company', [], (array) $actions);
$fieldData = apply_filters('btcbi_fluent_crm_assign_company', $fieldData, (array) $actions);

Copilot uses AI. Check for mistakes.
Comment on lines +32 to 34
// translators: %s: Plugin name
// translators: %s: Placeholder value
wp_send_json_error(wp_sprintf(__('%s must be activated!', 'bit-integrations'), 'Memberpress'));
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The translator comments are duplicated/redundant here (both describe the same single %s). Keeping just one accurate translator comment helps avoid clutter and keeps i18n guidance consistent.

Copilot uses AI. Check for mistakes.
@gemini-code-assist
Copy link

Summary of Changes

Hello @RishadAlam, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request primarily focuses on a version bump to 2.7.8, accompanied by a major refactoring of PHP namespaces for better code organization and future maintainability. Significant efforts were made to enhance compliance through detailed external services documentation and improve security and internationalization across the codebase. Performance was also boosted with the introduction of caching for several integrations, and various compatibility and file handling improvements were implemented.

Highlights

  • Version Update: The plugin version has been bumped to 2.7.8 across the main plugin file and the BTCBI_VERSION constant.
  • Namespace Refactoring: A significant refactoring has been implemented, changing the core PHP namespace from 'BitCode\FI' to 'BitApps\BTCBI_FI' across numerous action controllers, helpers, and routes for improved consistency and future scalability. The composer.json file has been updated to reflect this new namespace for PSR-4 autoloading.
  • External Services Documentation: A new comprehensive 'external-services.md' file has been added, detailing all third-party integrations, their data handling practices, terms of service, and privacy policies to enhance compliance and transparency.
  • Google Sheet Authorization Simplification: The one-click authorization logic and related credential fetching have been removed from Google Sheet integration components, streamlining the authorization process to rely solely on custom credentials.
  • Internationalization and Security Improvements: Numerous PHP files have been updated with '/* translators: %s: Placeholder value */' comments for better internationalization and 'esc_sql' for database queries, enhancing security and WordPress Coding Standards (WPCS) compliance. Additionally, 'wp_redirect' calls have been replaced with 'wp_safe_redirect' for safer URL redirection.
  • Performance Optimizations: Caching mechanisms have been implemented for data fetching in AffiliateWP, BuddyBoss, GamiPress, LifterLMS, MailMint, MemberPress, and PaidMembershipPro integrations to significantly improve performance.
  • File Handling and Compatibility: Temporary file handling in 'CustomActionController.php' now uses 'WP_Filesystem' for improved security and compatibility. File uploads in 'ClickupController.php' have been updated to use 'new CURLFile()' for PHP 8.1+ compatibility, and image fetching in 'GoogleContactsController.php' now uses 'wp_remote_get' for enhanced security.
Changelog
  • .php-cs-fixer.php
    • Updated native_function_invocation rule to exclude defined.
  • bitwpfi.php
    • Bumped plugin version to 2.7.8.
  • composer.json
    • Updated PSR-4 autoloading namespace from BitCode\FI\ to BitApps\BTCBI_FI\.
  • external-services.md
    • Added comprehensive documentation for all external services, including data sent, terms, and privacy policies.
  • frontend-dev/src/components/AllIntegrations/GoogleSheet/GoogleSheet.jsx
    • Removed useEffect hook for one-click authorization credentials.
  • frontend-dev/src/components/AllIntegrations/GoogleSheet/GoogleSheetAuthorization.jsx
    • Removed commented-out and unused one-click authorization logic.
  • frontend-dev/src/components/AllIntegrations/GoogleSheet/GoogleSheetCommonFunc.js
    • Removed isCustomAuth checks and oneClickAuthCredentials references, simplifying authorization logic.
  • frontend-dev/src/components/Flow/New/SelectAction.jsx
    • Added logo property to several integration types for improved UI.
  • frontend-dev/src/pages/ChangelogToggle.jsx
    • Updated release date and changelog entries to reflect recent improvements and fixes.
  • includes/Actions/ACPT/ACPTController.php
    • Updated namespace and added translator comments.
  • includes/Actions/ACPT/ACPTHelper.php
    • Updated namespace and added translator comments and esc_sql for database queries.
  • includes/Actions/ACPT/RecordApiHelper.php
    • Updated namespace and refined apply_filters calls for taxonomy and option page creation/update.
  • includes/Actions/ACPT/Routes.php
    • Updated namespace.
  • includes/Actions/AcademyLms/AcademyLmsController.php
    • Updated namespace, added ABSPATH check, and added translator comments and phpcs:ignore for hooks and database queries.
  • includes/Actions/AcademyLms/Routes.php
    • Updated namespace.
  • includes/Actions/ActionController.php
    • Updated namespace and replaced wp_redirect with wp_safe_redirect.
  • includes/Actions/ActiveCampaign/ActiveCampaignController.php
    • Updated namespace and added translator comments.
  • includes/Actions/ActiveCampaign/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/ActiveCampaign/Routes.php
    • Updated namespace.
  • includes/Actions/Acumbamail/AcumbamailController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Acumbamail/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Acumbamail/Routes.php
    • Updated namespace.
  • includes/Actions/AdvancedFormIntegration/AdvancedFormIntegrationController.php
    • Updated namespace.
  • includes/Actions/Affiliate/AffiliateController.php
    • Updated namespace, added translator comments, and implemented caching for getAllAffiliate.
  • includes/Actions/Affiliate/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/Affiliate/Routes.php
    • Updated namespace.
  • includes/Actions/AgiledCRM/AgiledCRMController.php
    • Updated namespace and added translator comments.
  • includes/Actions/AgiledCRM/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/AgiledCRM/Routes.php
    • Updated namespace.
  • includes/Actions/Airtable/AirtableController.php
    • Updated namespace.
  • includes/Actions/Airtable/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Airtable/Routes.php
    • Updated namespace.
  • includes/Actions/Albato/AlbatoController.php
    • Updated namespace.
  • includes/Actions/AntApps/AntAppsController.php
    • Updated namespace.
  • includes/Actions/Asana/AsanaController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Asana/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Asana/Routes.php
    • Updated namespace.
  • includes/Actions/AutomatorWP/AutomatorWPController.php
    • Updated namespace.
  • includes/Actions/Autonami/AutonamiController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Autonami/RecordApiHelper.php
    • Updated namespace and updated filter name for Fluent CRM.
  • includes/Actions/Autonami/Routes.php
    • Updated namespace.
  • includes/Actions/BenchMark/BenchMarkController.php
    • Updated namespace and added translator comments.
  • includes/Actions/BenchMark/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/BenchMark/Routes.php
    • Updated namespace.
  • includes/Actions/Bento/BentoController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Bento/BentoHelper.php
    • Updated namespace.
  • includes/Actions/Bento/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/Bento/Routes.php
    • Updated namespace.
  • includes/Actions/BitForm/BitFormController.php
    • Updated namespace and added translator comments.
  • includes/Actions/BitForm/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/BitForm/Routes.php
    • Updated namespace.
  • includes/Actions/BuddyBoss/BuddyBossController.php
    • Updated namespace, added translator comments, and implemented caching for getAllGroups and getAllUser.
  • includes/Actions/BuddyBoss/Hooks.php
    • Updated namespace.
  • includes/Actions/BuddyBoss/RecordApiHelper.php
    • Updated namespace, added translator comments, and implemented caching for group queries.
  • includes/Actions/BuddyBoss/Routes.php
    • Updated namespace.
  • includes/Actions/CampaignMonitor/CampaignMonitorController.php
    • Updated namespace and added translator comments.
  • includes/Actions/CampaignMonitor/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/CampaignMonitor/Routes.php
    • Updated namespace.
  • includes/Actions/CapsuleCRM/CapsuleCRMController.php
    • Updated namespace and added translator comments.
  • includes/Actions/CapsuleCRM/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/CapsuleCRM/Routes.php
    • Updated namespace.
  • includes/Actions/Clickup/ClickupController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Clickup/RecordApiHelper.php
    • Updated namespace and updated file upload method to use new CURLFile().
  • includes/Actions/Clickup/Routes.php
    • Updated namespace.
  • includes/Actions/ClinchPad/ClinchPadController.php
    • Updated namespace and added translator comments.
  • includes/Actions/ClinchPad/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/ClinchPad/Routes.php
    • Updated namespace.
  • includes/Actions/CompanyHub/CompanyHubController.php
    • Updated namespace and added translator comments.
  • includes/Actions/CompanyHub/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/CompanyHub/Routes.php
    • Updated namespace.
  • includes/Actions/ConstantContact/ConstantContactController.php
    • Updated namespace and added translator comments.
  • includes/Actions/ConstantContact/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/ConstantContact/Routes.php
    • Updated namespace.
  • includes/Actions/ConvertKit/ConvertKitController.php
    • Updated namespace and added translator comments.
  • includes/Actions/ConvertKit/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/ConvertKit/Routes.php
    • Updated namespace.
  • includes/Actions/CopperCRM/CopperCRMController.php
    • Updated namespace and added translator comments.
  • includes/Actions/CopperCRM/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/CopperCRM/Routes.php
    • Updated namespace.
  • includes/Actions/CustomAction/CustomActionController.php
    • Updated namespace and refactored temporary file handling to use WP_Filesystem.
  • includes/Actions/CustomAction/Routes.php
    • Updated namespace.
  • includes/Actions/CustomApi/CustomApiController.php
    • Updated namespace.
  • includes/Actions/Demio/DemioController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Demio/RecordApiHelper.php
    • Updated namespace and added translator comments for error messages.
  • includes/Actions/Demio/Routes.php
    • Updated namespace.
  • includes/Actions/DirectIq/DirectIqController.php
    • Updated namespace and added translator comments.
  • includes/Actions/DirectIq/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/DirectIq/Routes.php
    • Updated namespace.
  • includes/Actions/Discord/DiscordController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Discord/FilesApiHelper.php
    • Updated namespace.
  • includes/Actions/Discord/RecordApiHelper.php
    • Updated namespace and corrected variable assignment.
  • includes/Actions/Discord/Routes.php
    • Updated namespace.
  • includes/Actions/Dokan/DokanController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Dokan/RecordApiHelper.php
    • Updated namespace and updated translator comments for messages.
  • includes/Actions/Dokan/Routes.php
    • Updated namespace.
  • includes/Actions/Drip/DripController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Drip/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Drip/Routes.php
    • Updated namespace.
  • includes/Actions/Dropbox/DropboxController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Dropbox/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Dropbox/Routes.php
    • Updated namespace.
  • includes/Actions/ElasticEmail/ElasticEmailController.php
    • Updated namespace and added translator comments.
  • includes/Actions/ElasticEmail/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/ElasticEmail/Routes.php
    • Updated namespace.
  • includes/Actions/EmailOctopus/EmailOctopusController.php
    • Updated namespace.
  • includes/Actions/EmailOctopus/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/EmailOctopus/Routes.php
    • Updated namespace.
  • includes/Actions/Encharge/EnchargeController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Encharge/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Encharge/Routes.php
    • Updated namespace.
  • includes/Actions/Fabman/FabmanController.php
    • Updated namespace and removed a debug error_log.
  • includes/Actions/Fabman/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/Fabman/Routes.php
    • Updated namespace.
  • includes/Actions/FlowMattic/FlowMatticController.php
    • Updated namespace.
  • includes/Actions/Flowlu/FlowluController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Flowlu/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Flowlu/Routes.php
    • Updated namespace.
  • includes/Actions/FluentCart/FluentCartController.php
    • Updated namespace.
  • includes/Actions/FluentCart/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/FluentCart/Routes.php
    • Updated namespace.
  • includes/Actions/FluentCrm/FluentCrmController.php
    • Updated namespace and added translator comments.
  • includes/Actions/FluentCrm/RecordApiHelper.php
    • Updated namespace and updated filter name.
  • includes/Actions/FluentCrm/Routes.php
    • Updated namespace.
  • includes/Actions/FluentSupport/FluentSupportController.php
    • Updated namespace and added translator comments.
  • includes/Actions/FluentSupport/RecordApiHelper.php
    • Updated namespace and added translator comments and phpcs:ignore comments.
  • includes/Actions/FluentSupport/Routes.php
    • Updated namespace and added ABSPATH check.
  • includes/Actions/FreshSales/FreshSalesController.php
    • Updated namespace and added translator comments.
  • includes/Actions/FreshSales/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/FreshSales/Routes.php
    • Updated namespace.
  • includes/Actions/Freshdesk/AllFilesApiHelper.php
    • Updated namespace.
  • includes/Actions/Freshdesk/FilesApiHelper.php
    • Updated namespace.
  • includes/Actions/Freshdesk/FreshdeskController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Freshdesk/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Freshdesk/Routes.php
    • Updated namespace.
  • includes/Actions/GamiPress/GamiPressController.php
    • Updated namespace, added translator comments, and implemented caching for various GamiPress data fetches.
  • includes/Actions/GamiPress/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/GamiPress/Routes.php
    • Updated namespace.
  • includes/Actions/GetResponse/GetResponseController.php
    • Updated namespace and added translator comments.
  • includes/Actions/GetResponse/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/GetResponse/Routes.php
    • Updated namespace.
  • includes/Actions/Getgist/GetgistController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Getgist/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Getgist/Routes.php
    • Updated namespace.
  • includes/Actions/GiveWp/GiveWpController.php
    • Updated namespace and added translator comments.
  • includes/Actions/GiveWp/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/GiveWp/Routes.php
    • Updated namespace.
  • includes/Actions/GoogleCalendar/GoogleCalendarController.php
    • Updated namespace and added translator comments.
  • includes/Actions/GoogleCalendar/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/GoogleCalendar/Routes.php
    • Updated namespace.
  • includes/Actions/GoogleContacts/GoogleContactsController.php
    • Updated namespace and added translator comments.
  • includes/Actions/GoogleContacts/RecordApiHelper.php
    • Updated namespace and updated image fetching to use wp_remote_get.
  • includes/Actions/GoogleContacts/Routes.php
    • Updated namespace.
  • includes/Actions/GoogleDrive/GoogleDriveController.php
    • Updated namespace and added translator comments.
  • includes/Actions/GoogleDrive/RecordApiHelper.php
    • Updated namespace and removed a debug error_log.
  • includes/Actions/GoogleDrive/Routes.php
    • Updated namespace.
  • includes/Actions/GoogleSheet/GoogleSheetController.php
    • Updated namespace, added ABSPATH check, and added translator comments.
  • includes/Actions/GoogleSheet/RecordApiHelper.php
    • Updated namespace and formatted code.
  • includes/Actions/GoogleSheet/Routes.php
    • Updated namespace.
  • includes/Actions/Gravitec/GravitecController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Gravitec/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Gravitec/Routes.php
    • Updated namespace.
  • includes/Actions/Groundhogg/GroundhoggController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Groundhogg/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Groundhogg/Routes.php
    • Updated namespace.
  • includes/Actions/HighLevel/HighLevelController.php
    • Updated namespace and added translator comments.
  • includes/Actions/HighLevel/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/HighLevel/Routes.php
    • Updated namespace.
  • includes/Actions/Hubspot/HubspotController.php
    • Updated namespace.
  • includes/Actions/Hubspot/HubspotRecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/Hubspot/Routes.php
    • Updated namespace.
  • includes/Actions/Insightly/InsightlyController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Insightly/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Insightly/Routes.php
    • Updated namespace.
  • includes/Actions/Integrately/IntegratelyController.php
    • Updated namespace.
  • includes/Actions/Integromat/IntegromatController.php
    • Updated namespace.
  • includes/Actions/JetEngine/JetEngineController.php
    • Updated namespace and added translator comments.
  • includes/Actions/JetEngine/RecordApiHelper.php
    • Updated namespace and added phpcs:ignore for database queries.
  • includes/Actions/JetEngine/Routes.php
    • Updated namespace.
  • includes/Actions/Keap/KeapController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Keap/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Keap/Routes.php
    • Updated namespace.
  • includes/Actions/KirimEmail/KirimEmailController.php
    • Updated namespace and added translator comments.
  • includes/Actions/KirimEmail/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/KirimEmail/Routes.php
    • Updated namespace.
  • includes/Actions/Klaviyo/KlaviyoController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Klaviyo/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/Klaviyo/Routes.php
    • Updated namespace.
  • includes/Actions/KonnectzIT/KonnectzITController.php
    • Updated namespace.
  • includes/Actions/LMFWC/LMFWCController.php
    • Updated namespace and added translator comments.
  • includes/Actions/LMFWC/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/LMFWC/Routes.php
    • Updated namespace.
  • includes/Actions/LearnDash/LearnDashController.php
    • Updated namespace and added translator comments.
  • includes/Actions/LearnDash/RecordApiHelper.php
    • Updated namespace and added phpcs:ignore comments for hooks and database queries.
  • includes/Actions/LearnDash/Routes.php
    • Updated namespace.
  • includes/Actions/Lemlist/LemlistController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Lemlist/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Lemlist/Routes.php
    • Updated namespace.
  • includes/Actions/LifterLms/LifterLmsController.php
    • Updated namespace, added translator comments, and implemented caching for getAllLifterLmsCourse and getAllLifterLmsMembership.
  • includes/Actions/LifterLms/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/LifterLms/Routes.php
    • Updated namespace.
  • includes/Actions/Line/LineController.php
    • Updated namespace.
  • includes/Actions/Line/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/Line/Routes.php
    • Updated namespace.
  • includes/Actions/LionDesk/LionDeskController.php
    • Updated namespace and added translator comments.
  • includes/Actions/LionDesk/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/LionDesk/Routes.php
    • Updated namespace.
  • includes/Actions/Livestorm/LivestormController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Livestorm/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/Livestorm/Routes.php
    • Updated namespace.
  • includes/Actions/Mail/MailController.php
    • Updated namespace, added ABSPATH check, and added translator comments.
  • includes/Actions/MailBluster/MailBlusterController.php
    • Updated namespace and added translator comments.
  • includes/Actions/MailBluster/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/MailBluster/Routes.php
    • Updated namespace.
  • includes/Actions/MailChimp/MailChimpController.php
    • Updated namespace and added translator comments.
  • includes/Actions/MailChimp/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/MailChimp/Routes.php
    • Updated namespace.
  • includes/Actions/MailMint/MailMintController.php
    • Updated namespace, added translator comments, and implemented caching for allCustomFields.
  • includes/Actions/MailMint/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/MailMint/Routes.php
    • Updated namespace.
  • includes/Actions/MailPoet/MailPoetController.php
    • Updated namespace, added ABSPATH check, and added translator comments.
  • includes/Actions/MailPoet/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/MailPoet/Routes.php
    • Updated namespace.
  • includes/Actions/MailRelay/MailRelayController.php
    • Updated namespace and added translator comments.
  • includes/Actions/MailRelay/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/MailRelay/Routes.php
    • Updated namespace.
  • includes/Actions/MailerLite/MailerLiteController.php
    • Updated namespace and added translator comments.
  • includes/Actions/MailerLite/RecordApiHelper.php
    • Updated namespace and added phpcs:ignore comments for input sanitization.
  • includes/Actions/MailerLite/Routes.php
    • Updated namespace.
  • includes/Actions/MailerPress/MailerPressController.php
    • Updated namespace and added translator comments.
  • includes/Actions/MailerPress/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/MailerPress/Routes.php
    • Updated namespace.
  • includes/Actions/Mailercloud/MailercloudController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Mailercloud/RecordApiHelper.php
    • Updated namespace and formatted code.
  • includes/Actions/Mailercloud/Routes.php
    • Updated namespace.
  • includes/Actions/Mailify/MailifyController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Mailify/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Mailify/Routes.php
    • Updated namespace.
  • includes/Actions/Mailjet/MailjetController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Mailjet/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Mailjet/Routes.php
    • Updated namespace.
  • includes/Actions/Mailster/MailsterController.php
    • Updated namespace.
  • includes/Actions/Mailster/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Mailster/Routes.php
    • Updated namespace.
  • includes/Actions/Mailup/MailupController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Mailup/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Mailup/Routes.php
    • Updated namespace.
  • includes/Actions/MasterStudyLms/MasterStudyLmsController.php
    • Updated namespace and added translator comments.
  • includes/Actions/MasterStudyLms/MasterStudyLmsHelper.php
    • Updated namespace and added phpcs:ignore comments for database queries.
  • includes/Actions/MasterStudyLms/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/MasterStudyLms/Routes.php
    • Updated namespace.
  • includes/Actions/Mautic/MauticController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Mautic/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Mautic/Routes.php
    • Updated namespace.
  • includes/Actions/Memberpress/MemberpressController.php
    • Updated namespace, added translator comments, and added phpcs:ignore for meta queries.
  • includes/Actions/Memberpress/RecordApiHelper.php
    • Updated namespace and added translator comments.
  • includes/Actions/Memberpress/Routes.php
    • Updated namespace.
  • includes/Actions/Moosend/MoosendController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Moosend/MoosendHelper.php
    • Updated namespace.
  • includes/Actions/Moosend/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Moosend/Routes.php
    • Updated namespace.
  • includes/Actions/MoxieCRM/MoxieCRMController.php
    • Updated namespace and added translator comments.
  • includes/Actions/MoxieCRM/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/MoxieCRM/Routes.php
    • Updated namespace.
  • includes/Actions/N8n/N8nController.php
    • Updated namespace.
  • includes/Actions/Newsletter/NewsletterController.php
    • Updated namespace.
  • includes/Actions/Newsletter/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Newsletter/Routes.php
    • Updated namespace.
  • includes/Actions/Nimble/NimbleController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Nimble/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Nimble/Routes.php
    • Updated namespace.
  • includes/Actions/Notion/NotionController.php
    • Updated namespace and added translator comments.
  • includes/Actions/Notion/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/Notion/Routes.php
    • Updated namespace.
  • includes/Actions/NutshellCRM/NutshellCRMController.php
    • Updated namespace and added translator comments.
  • includes/Actions/NutshellCRM/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/NutshellCRM/Routes.php
    • Updated namespace.
  • includes/Actions/OmniSend/OmniSendController.php
    • Updated namespace and added translator comments.
  • includes/Actions/OmniSend/RecordApiHelper.php
    • Updated namespace and corrected filter name.
  • includes/Actions/OmniSend/Routes.php
    • Updated namespace.
  • includes/Actions/OneDrive/OneDriveController.php
    • Updated namespace and added translator comments.
  • includes/Actions/OneDrive/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/OneDrive/Routes.php
    • Updated namespace.
  • includes/Actions/OneHashCRM/OneHashCRMController.php
    • Updated namespace and added translator comments.
  • includes/Actions/OneHashCRM/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/OneHashCRM/Routes.php
    • Updated namespace.
  • includes/Actions/PCloud/PCloudController.php
    • Updated namespace and added translator comments.
  • includes/Actions/PCloud/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/PCloud/Routes.php
    • Updated namespace.
  • includes/Actions/Pabbly/PabblyController.php
    • Updated namespace.
  • includes/Actions/PaidMembershipPro/PaidMembershipProController.php
    • Updated namespace, added translator comments, and implemented caching for getAllPaidMembershipProLevel.
  • includes/Actions/PaidMembershipPro/RecordApiHelper.php
    • Updated namespace and implemented caching for membership level lookup.
  • includes/Actions/PaidMembershipPro/Routes.php
    • Updated namespace.
  • includes/Actions/PerfexCRM/PerfexCRMController.php
    • Updated namespace and added translator comments.
  • includes/Actions/PerfexCRM/RecordApiHelper.php
    • Updated namespace.
  • includes/Actions/PerfexCRM/Routes.php
    • Updated namespace.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/deploy.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant and beneficial refactoring by changing the PHP namespace from BitCode\FI to BitApps\BTCBI_FI, which improves code organization and consistency across the project. In addition to this major refactoring, the changes include performance enhancements through database query caching, security improvements by fixing SQL injection vulnerabilities and using wp_safe_redirect, and code quality upgrades by removing dead code and debug logs. I've identified a few minor issues, such as future dates in documentation files and a potential bug in the Discord helper where a variable is overwritten, which I've detailed in the comments. Overall, this is a high-quality pull request with substantial improvements.

I am having trouble creating individual review comments. Click here to see my feedback.

includes/Actions/AcademyLms/AcademyLmsController.php (193-198)

critical

The query to get QuizIds has a hardcoded user_id = '14'. This will cause the logic to fail for any other user. It should use the dynamic $user_id variable.

includes/Actions/Discord/RecordApiHelper.php (73-74)

high

The value of $recordApiResponse from the uploadFiles call on line 73 is immediately overwritten by the call to sendMessages on line 74. This means the result of the file upload is lost and never checked for success or failure. This could lead to silent failures where a file upload fails but the integration reports success based on the sendMessages call.

                $uploadApiResponse = $sendPhotoApiHelper->uploadFiles($this->_apiEndPoint, $data, $this->_accessToken, $integrationDetails->selectedChannel);
                // You should check $uploadApiResponse here for errors before proceeding.
                $recordApiResponse = $this->sendMessages($data, $integrationDetails->selectedChannel);

external-services.md (2260)

medium

The 'Last Updated' date is set to a future date. This appears to be a typo and should be corrected to reflect the actual date of the update.

frontend-dev/src/pages/ChangelogToggle.jsx (14)

medium

The releaseDate constant is set to a future date. This is likely a typo and should be updated to the correct release date.

Copilot AI review requested due to automatic review settings February 16, 2026 12:52
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 295 out of 565 changed files in this pull request and generated 10 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

$domain = $integrationDetails->domain;

if (empty($fieldMap) || empty($apiToken) || empty($actionName) || empty($domain)) {

Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Empty line before translator comment is unnecessary and inconsistent with other files in the same changeset where translator comments are added directly before the code they describe without an empty line.

Suggested change

Copilot uses AI. Check for mistakes.
Comment on lines +32 to +33
// translators: %s: Plugin name
// translators: %s: Placeholder value
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate translator comments on consecutive lines. Only one comment is needed here since the function call uses a single placeholder.

Copilot uses AI. Check for mistakes.
Comment on lines 24 to 25
// translators: %s: Plugin name
/* translators: %s: Placeholder value */
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent translator comment style (// vs /* */) on consecutive lines. Use the same style for consistency.

Copilot uses AI. Check for mistakes.
Comment on lines +24 to +25
// translators: %s: Plugin name
// translators: %s: Placeholder value
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate translator comments on consecutive lines. Only one comment is needed since the function call uses a single placeholder.

Copilot uses AI. Check for mistakes.
Comment on lines 198 to 199


Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excessive empty lines between translator comments. Remove extra empty lines for consistency.

Suggested change

Copilot uses AI. Check for mistakes.
Comment on lines 38 to 42
// translators: %s: Integration name
// translators: %s: Integration name


/* translators: %s: Placeholder value */
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate translator comments and excessive empty lines. Remove duplicate comment and extra empty lines.

Copilot uses AI. Check for mistakes.
Comment on lines 172 to +173
'message' => wp_sprintf(__('%s is not installed or activated.', 'bit-integrations'), 'The Dokan Pro'),
'success' => false,
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 'success' key should come before 'message' to maintain consistent ordering with the rest of the codebase where status fields typically precede message fields.

Suggested change
'message' => wp_sprintf(__('%s is not installed or activated.', 'bit-integrations'), 'The Dokan Pro'),
'success' => false,
'success' => false,
'message' => wp_sprintf(__('%s is not installed or activated.', 'bit-integrations'), 'The Dokan Pro'),

Copilot uses AI. Check for mistakes.

$QuizIds = $wpdb->get_col($wpdb->prepare("select quiz_id from {$wpdb->prefix}academy_quiz_attempts where user_id = '14' AND course_id = %d ", $course_id));
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Direct query needed for AcademyLMS reset lookup.
$QuizIds = $wpdb->get_col($wpdb->prepare("SELECT quiz_id FROM {$wpdb->prefix}academy_quiz_attempts WHERE user_id = %d AND course_id = %d", $user_id, $course_id));
Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Variable $QuizIds uses PascalCase naming which is inconsistent with PHP naming conventions. Should be $quiz_ids to follow camelCase convention.

Copilot uses AI. Check for mistakes.
Comment on lines 84 to 85


Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Empty line before translator comment is inconsistent with the pattern used elsewhere in this file and changeset.

Suggested change

Copilot uses AI. Check for mistakes.
Comment on lines 94 to 95


Copy link

Copilot AI Feb 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Empty line before translator comment is unnecessary and inconsistent with other translator comments in the same file.

Suggested change

Copilot uses AI. Check for mistakes.
Copilot AI review requested due to automatic review settings February 17, 2026 05:26
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 295 out of 565 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 153 to 159
private static function uploadTicketFiles($finalData, $attachments, $ticket, $customer, $flowId)
{
if (BtcbiHelper::proActionFeatExists('FluentSupport', 'uploadTicketAttachments')) {
do_action('btcbi_fluent_support_upload_ticket_attachments', $finalData, $attachments, $ticket, $customer, $flowId);
}
do_action('btcbi_fluent_support_upload_ticket_attachments', $finalData, $attachments, $ticket, $customer, $flowId);

// translators: %s: Placeholder value
LogHandler::save($flowId, ['type' => 'Ticket', 'type_name' => 'Upload-Ticket-Attachments'], 'error', wp_sprintf(__('%s plugin is not installed or activate', 'bit-integrations'), 'Bit Integrations Pro'));
}
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function now always logs an error even when attachments are successfully handled by hooked callbacks. The error log should only be written when the Pro handler isn't available / no callback ran, or when the upload action explicitly fails. Consider checking for the Pro capability (or whether any callback is attached via has_action()), or have the action return/record a success flag and conditionally log.

Copilot uses AI. Check for mistakes.
// translators: %s: Plugin name
$errorMessages = wp_sprintf(__('%s is not active or not installed', 'bit-integrations'), 'Bit Integrations Pro');
} elseif (!$response['success']) {
$errorMessages = $response('message');
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$response('message') is a function call and will fatally error if $response is an array/object (which it appears to be, given $response['success']). This should read the message field (e.g., $response['message'] or $response->message, depending on structure).

Suggested change
$errorMessages = $response('message');
$errorMessages = isset($response['message']) ? $response['message'] : '';

Copilot uses AI. Check for mistakes.
Comment on lines +48 to +49
wp_safe_redirect($state . '&' . http_build_query($params), 302);
exit;
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously the function only exited when wp_redirect() succeeded. With unconditional exit, if headers are already sent (or redirect is otherwise not performed), the request will terminate without output. Consider restoring conditional exit (check the return value) or handling the failure case (e.g., fallback response or wp_die with a link).

Suggested change
wp_safe_redirect($state . '&' . http_build_query($params), 302);
exit;
$redirect_url = $state . '&' . http_build_query($params);
if (wp_safe_redirect($redirect_url, 302)) {
exit;
}
wp_die(
sprintf(
'Redirection failed. Please click <a href="%s">here</a> to continue.',
esc_url($redirect_url)
)
);

Copilot uses AI. Check for mistakes.
Comment on lines +142 to +143
}
$imageData = wp_remote_retrieve_body($response);
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This now base64-encodes the response body without validating the HTTP status code or ensuring a non-empty/binary payload. If the URL returns an error page (e.g., 404 HTML), the API call will likely fail with a confusing error. Consider checking wp_remote_retrieve_response_code($response) === 200 (and that body is not empty) and returning a meaningful WP_Error when the fetch isn't successful.

Suggested change
}
$imageData = wp_remote_retrieve_body($response);
}
$status_code = wp_remote_retrieve_response_code($response);
if (200 !== $status_code) {
return new \WP_Error(
'image_fetch_failed',
sprintf('Failed to fetch image. HTTP status code: %d', $status_code),
['status_code' => $status_code, 'image_url' => $imageLocation]
);
}
$imageData = wp_remote_retrieve_body($response);
if (!is_string($imageData) || $imageData === '') {
return new \WP_Error(
'image_fetch_failed',
'Failed to fetch image content or image is empty.',
['image_url' => $imageLocation]
);
}

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant