Skip to content

Conversation

@kuzmany
Copy link
Owner

@kuzmany kuzmany commented Jun 30, 2025

Summary

This PR backports changes from version 5.2.7 to the 6.0 branch.

⚠️ Note: This PR contains merge conflicts that need to be resolved:

  1. app/bundles/CoreBundle/Test/MauticMysqlTestCase.php
  2. app/bundles/DynamicContentBundle/EventListener/DynamicContentSubscriber.php
  3. app/bundles/DynamicContentBundle/Helper/DynamicContentHelper.php
  4. app/bundles/DynamicContentBundle/Tests/Unit/EventListener/DynamicContentSubscriberTest.php
  5. app/bundles/EmailBundle/Controller/EmailController.php
  6. app/bundles/EmailBundle/Controller/PublicController.php
  7. app/bundles/EmailBundle/Tests/Helper/MailHelperTest.php
  8. app/bundles/EmailBundle/Tests/Model/EmailModelFunctionalTest.php
  9. app/bundles/LeadBundle/Controller/LeadController.php

Changes included:

  • API controller improvements for better error handling
  • Asset bundle enhancements and upload subscriber fixes
  • Dynamic content helper improvements
  • Email bundle controller and model updates
  • Lead bundle field controller enhancements and fake contact helper
  • Point bundle model updates
  • Report bundle scheduler and export improvements
  • GrapesJS builder package updates

RCheesley and others added 30 commits June 18, 2024 12:57
* Improve grammar for unhide

* Fix test
Co-authored-by: Ruth Cheesley <ruth@ruthcheesley.co.uk>
* [UI] Replaces table action button `arrow-down` with `more-2` icon (mautic#13841)

* [UI] Replaces table action button `arrow-down` with `more-2` icon

This replaces the icon for the action toggle button in tables (e.g. contact list table or segment list table) with a 3 dot icon.

The previous arrow down icon indicates that an collapsed element would get unfolded/shown. This is not the case in these tables. The button shows more actions. In any UI that I know a 3 dot icon is used for that.

The arrow down icon would be more suitable if it would show more details on click. Hence, this PR.

* TASK: Reverts change for `page_actions.html.twig`

Co-authored-by: Anderson, from Dropsolid <116097999+andersonjeccel@users.noreply.github.com>

---------

Co-authored-by: Anderson, from Dropsolid <116097999+andersonjeccel@users.noreply.github.com>

* add js code to hide profile pic if missing (mautic#13838)

* Segment membership as a new filter for dynamic email content (mautic#13528)

* Merge pull request mautic#1088 from mautic-inc/MAUT-4688

Maut 4688 - Use segment membership as a filter for dynamic content in email

* Changes needed after rebase to M5

* Merge pull request mautic#1407 from acquia/MAUT-5729

MAUT-5729 Dynamic Content Error - Segment Membership filter not showing correct content

* Fixing STAN

* CS fixes

* Test fix

* test fix part 2

* Adding back JS methods removed in a bad conflict resolution

---------

Co-authored-by: Lukáš Drahý <lukas@drahy.net>
Co-authored-by: Rohit Pavaskar <66303837+rohitp19@users.noreply.github.com>
Co-authored-by: Ruth Cheesley <ruth@ruthcheesley.co.uk>

* [UI] Increased icon size (mautic#13825)

* increased icon size

* decrease by 1px

* Make the search regular expression match both "&" and "&amp;" for link replacement within an email body (mautic#13858)

* Guide users to build optimized segments (mautic#13860)

* Merge pull request mautic#2172 from acquia/MAUT-11343

MAUT-11343 : Guide users to build optimized segments

* fix twig file issue

* Apply suggestions from code review

Co-authored-by: John Linhart <admin@escope.cz>

* push suggested changes

---------

Co-authored-by: John Linhart <admin@escope.cz>

* fix CSS flexbox broken in campaign insert clone view

* Revert "[UI] Replaces table action button `arrow-down` with `more-2` icon (mautic#13841)"

This reverts commit fadcf26.

* Revert "Segment membership as a new filter for dynamic email content (mautic#13528)"

This reverts commit 71031b7.

* Revert "[UI] Increased icon size (mautic#13825)"

This reverts commit c00df3c.

* Revert "Make the search regular expression match both "&" and "&amp;" for link replacement within an email body (mautic#13858)"

This reverts commit d3e6ceb.

* Revert "Guide users to build optimized segments (mautic#13860)"

This reverts commit bdabc26.

* Revert "add js code to hide profile pic if missing (mautic#13838)"

This reverts commit 76dd7d6.

---------

Co-authored-by: putzwasser <26040044+putzwasser@users.noreply.github.com>
Co-authored-by: John Linhart <admin@escope.cz>
Co-authored-by: Lukáš Drahý <lukas@drahy.net>
Co-authored-by: Rohit Pavaskar <66303837+rohitp19@users.noreply.github.com>
Co-authored-by: Ruth Cheesley <ruth@ruthcheesley.co.uk>
Co-authored-by: Miroslav Fedeleš <miroslav.fedeles@gmail.com>
Co-authored-by: Saurabh Gupta <48244990+dadarya0@users.noreply.github.com>
mautic#10306)

* fix: [DPMMA-1020] fix getLookupChoiceListAction for search with special characters

* fix: [DPMMA-1020] phpstan
* fix: [DPMMA-2661] Correct form mapper Mautic 5

* feat: [DPMMA-2661] Correct CSFixer
…tracking script (mautic#13859)

This fixes mautic#13355

This removes the HTML escaping logic in the onConfigSave method of `ConfigSubscriber`. This change prevents the UI from displaying escaped HTML in the custom tracking JS field after saving the form.

Previously, the form erroneously escaped HTML entities. By removing this code, users will now see the original HTML as expected when they revisit the form.

The main issue, however, was that re-saving  meant saving escaped HTML which would break inserting the tracking HTML code.

**Before**
1. Add custom HTML in `Configuration > Landing Page Settings > Analytics script (i.e. Google Analytics) `
2. Save
3. Open this view again → see escaped HTML
4. Save again
5. Open a landing page and see escaped HTML tracking code injected.

**After**
1. Add custom HTML in `Configuration > Landing Page Settings > Analytics script (i.e. Google Analytics) `
2. Save
3. Open this view again → see unescaped HTML
4. Save again
5. Open a landing page and see correct HTML tracking code injected.
…eturn functionality in the PointModel. Let me break down what the tests verify:

1. `testTriggerActionReturnsEarlyWhenNoAvailablePoints`:
   - Checks that when no points are available for a given type
   - The method returns early
   - The IP lookup helper is never called

2. `testTriggerActionContinuesWhenPointsAreAvailable`:
   - Checks that when points are available for a given type
   - The method continues execution
   - The IP lookup helper is called

The test uses mocking to isolate the behavior and verify the specific interactions.

Recommendations:
- The tests look comprehensive for the specific change
- No additional files are needed at this point

Would you like me to elaborate on any part of the test or discuss any specific aspects of the implementation?
Appends the object ID in brackets after the name to ensure clarity.
Applied changes across multiple areas: Segments, Campaigns and others.
Add new acceptance Test for Multiselect Field Fix.
kuzmany and others added 30 commits June 19, 2025 10:56
…oad-Assets-with-Non-Default-File-Extensions

Fix: Unable to upload assets with non-default file extensions
…et-token

Check permission for viewown not viewother in getTokens.
- Added testPointActionEarlyReturnWhenNoPointsAvailable() method
- Tests that PointModel::triggerAction() returns early when no published point actions exist
- Verifies points remain unchanged (0) when no point actions are configured
- Covers the optimization added in the PR fix
…tors-5

Fix dynamic content blocks showing multiple editors [mautic 5]
Clear Swift_Message metadata after sending to prevent memory
accumulation when sending multiple emails in batch operations.
This test ensures that the clearMetadata() call in the send() method
properly clears message metadata to prevent memory leaks during
batch email operations.
…metadata

Fix email sending memory leak by clearing message metadata
fix app callback when push_id is empty
Report saved with proper options.
…th-lead-data

Fix send email preview with lead data
…points-log-exists

check if points available
# Conflicts:
#	app/bundles/CoreBundle/Test/MauticMysqlTestCase.php
#	app/bundles/DynamicContentBundle/EventListener/DynamicContentSubscriber.php
#	app/bundles/DynamicContentBundle/Helper/DynamicContentHelper.php
#	app/bundles/DynamicContentBundle/Tests/Unit/EventListener/DynamicContentSubscriberTest.php
#	app/bundles/EmailBundle/Controller/EmailController.php
#	app/bundles/EmailBundle/Controller/PublicController.php
#	app/bundles/EmailBundle/Tests/Helper/MailHelperTest.php
#	app/bundles/EmailBundle/Tests/Model/EmailModelFunctionalTest.php
#	app/bundles/LeadBundle/Controller/LeadController.php
#	app/release_metadata.json
- Add Response return type to EmailController::sendExampleAction
- Remove redundant PHPDoc in FieldController::cloneAction
- Add JsonResponse|Response return type to LeadController::emailAction
- Fix PreviewFunctionalTest::testPreviewEmailForContactWithPrimaryCompany by getting User entity from repository instead of passing string to loginUser
- Fix MailHelperTest::testClearMetadataAfterSend by adding missing mockFactory property and updating MailHelper constructor call with all required parameters
The test was failing because it was checking for messages after they were consumed and removed by messenger:consume. The fix checks for the queued message before consumption, which properly validates that the delayed transport functionality is working.

- Remove flawed logic that checked for messages after messenger:consume
- Add proper validation by checking for queued messages before consumption
- This correctly tests the delayed transport feature from PR mautic#15052
- Files existence is validated at the appropriate time in the test flow
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.