diff --git a/Classes/Utility/ConfigurationUtility.php b/Classes/Utility/ConfigurationUtility.php index 27457f65..910cf7dd 100644 --- a/Classes/Utility/ConfigurationUtility.php +++ b/Classes/Utility/ConfigurationUtility.php @@ -20,7 +20,7 @@ class ConfigurationUtility public static function getScoringCalculation(): string { $extensionConfig = self::getExtensionConfiguration(); - $scoringCalculation = (string)$extensionConfig['scoringCalculation']; + $scoringCalculation = $extensionConfig['scoringCalculation'] ?? ''; if ($scoringCalculation === '') { $scoringCalculation = '(10 * numberOfSiteVisits) + (1 * numberOfPageVisits) + (20 * downloads) - (1 * lastVisitDaysAgo)'; @@ -36,7 +36,7 @@ public static function getScoringCalculation(): string public static function getCategoryScoringAddPageVisit(): int { $extensionConfig = self::getExtensionConfiguration(); - return (int)$extensionConfig['categoryScoringAddPageVisit']; + return (int)($extensionConfig['categoryScoringAddPageVisit'] ?? 10); } /** @@ -47,7 +47,7 @@ public static function getCategoryScoringAddPageVisit(): int public static function getCategoryScoringAddNewsVisit(): int { $extensionConfig = self::getExtensionConfiguration(); - return (int)$extensionConfig['categoryScoringAddNewsVisit']; + return (int)($extensionConfig['categoryScoringAddNewsVisit'] ?? 10); } /** @@ -58,7 +58,7 @@ public static function getCategoryScoringAddNewsVisit(): int public static function getCategoryScoringAddDownload(): int { $extensionConfig = self::getExtensionConfiguration(); - return (int)$extensionConfig['categoryScoringAddDownload']; + return (int)($extensionConfig['categoryScoringAddDownload'] ?? 20); } /** @@ -69,7 +69,7 @@ public static function getCategoryScoringAddDownload(): int public static function getCategoryScoringLinkListenerClick(): int { $extensionConfig = self::getExtensionConfiguration(); - return (int)$extensionConfig['categoryScoringLinkListenerClick']; + return (int)($extensionConfig['categoryScoringLinkListenerClick'] ?? 20); } /** @@ -80,7 +80,7 @@ public static function getCategoryScoringLinkListenerClick(): int public static function isPageOverviewDisabled(): bool { $extensionConfig = self::getExtensionConfiguration(); - return $extensionConfig['disablePageOverview'] === '1'; + return ($extensionConfig['disablePageOverview'] ?? '0') === '1'; } /** @@ -95,7 +95,7 @@ public static function getPageOverviewView(): string 'analysis', 'leads', ]; - if (in_array((string)$extensionConfig['pageOverviewView'], $allowed)) { + if (in_array(($extensionConfig['pageOverviewView'] ?? ''), $allowed)) { return $extensionConfig['pageOverviewView']; } return $allowed[0]; @@ -120,7 +120,7 @@ public static function isCkEditorConfigurationNeeded(): bool protected static function isCkEditorConfigurationDisabled(): bool { $extensionConfig = self::getExtensionConfiguration(); - return $extensionConfig['disableCkEditorConfiguration'] === '1'; + return ($extensionConfig['disableCkEditorConfiguration'] ?? '0') === '1'; } /** @@ -131,7 +131,7 @@ protected static function isCkEditorConfigurationDisabled(): bool public static function isIpLoggingDisabled(): bool { $extensionConfig = self::getExtensionConfiguration(); - return $extensionConfig['disableIpLogging'] === '1'; + return ($extensionConfig['disableIpLogging'] ?? '0') === '1'; } /** @@ -142,7 +142,7 @@ public static function isIpLoggingDisabled(): bool public static function isAnonymizeIpEnabled(): bool { $extensionConfig = self::getExtensionConfiguration(); - return $extensionConfig['anonymizeIp'] === '1'; + return ($extensionConfig['anonymizeIp'] ?? '1') === '1'; } /** @@ -167,7 +167,7 @@ public static function getLeadImageFromExternalSourcesConfiguration(): string public static function isShowRenderTimesEnabled(): bool { $extensionConfig = self::getExtensionConfiguration(); - return $extensionConfig['showRenderTimes'] === '1'; + return ($extensionConfig['showRenderTimes'] ?? '0') === '1'; } /** @@ -178,7 +178,7 @@ public static function isShowRenderTimesEnabled(): bool public static function isUseCacheLayerEnabled(): bool { $extensionConfig = self::getExtensionConfiguration(); - return $extensionConfig['useCacheLayer'] === '1'; + return ($extensionConfig['useCacheLayer'] ?? '1') === '1'; } /** @@ -189,7 +189,7 @@ public static function isUseCacheLayerEnabled(): bool public static function isLeadModuleDisabled(): bool { $extensionConfig = self::getExtensionConfiguration(); - return $extensionConfig['disableLeadModule'] === '1'; + return ($extensionConfig['disableLeadModule'] ?? '0') === '1'; } /** @@ -200,7 +200,7 @@ public static function isLeadModuleDisabled(): bool public static function isAnalysisModuleDisabled(): bool { $extensionConfig = self::getExtensionConfiguration(); - return $extensionConfig['disableAnalysisModule'] === '1'; + return ($extensionConfig['disableAnalysisModule'] ?? '0') === '1'; } /** @@ -211,7 +211,7 @@ public static function isAnalysisModuleDisabled(): bool public static function isExceptionLoggingActivated(): bool { $extensionConfig = self::getExtensionConfiguration(); - return $extensionConfig['enbaleExceptionLogging'] === '1'; + return ($extensionConfig['enableExceptionLogging'] ?? '0') === '1'; } /** @@ -222,7 +222,7 @@ public static function isExceptionLoggingActivated(): bool public static function isWorkflowModuleDisabled(): bool { $extensionConfig = self::getExtensionConfiguration(); - return $extensionConfig['disableWorkflowModule'] === '1'; + return ($extensionConfig['disableWorkflowModule'] ?? '0') === '1'; } /** diff --git a/Documentation/Technical/Changelog/Index.md b/Documentation/Technical/Changelog/Index.md index 5a8e1839..e557473c 100644 --- a/Documentation/Technical/Changelog/Index.md +++ b/Documentation/Technical/Changelog/Index.md @@ -3,34 +3,13 @@ # Changelog and breaking changes -## Breaking changes and useful information !!! - -Double check if you have cleared all caches after installing a new LUX version to be sure to have no side effects. - -| Version | Situation | Upgrade instructions | -|--------------------------------|---------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| From former versions to 35.0.0 | Multiclient usage on some records need some time to work | Nothing to do for you - just a note: Some records have to be extended with site information, but this can only be done with new records - not with existing (affected tables: Logs, Search, Fingerprint and some boxes on Lead Dashboard). To ensure that privacy is guaranteed, you need to remove all existing LUX data in a multiclient environment. | -| From former versions to 35.0.0 | Define storage pid for editors (linklistener, shortener, utmgenerator) | Records of different tables (tx_lux_domain_model_linklistener, tx_luxenterprise_domain_model_shortener, tx_luxenterprise_domain_model_utmgenerator_uri) can be stored on different pids depending on the backend user - see [Editors configuration](../Editors/Index.md) for details. | -| From former versions to 35.0.0 | Add sites data to existing records to allow multiclient usage | Run upgrade wizard `addSitesUpgradeWizard` to add site information on various tables. Recommendation: We strongly recommend you to run the wizard on CLI to prevent timeouts on larger databases. | -| From former versions to 35.0.0 | Modify relations between visitor and fingerprint table for a better performance | Run upgrade wizard `updateFingerprintRelationsUpgradeWizard` to improve relations. Recommendation: We strongly recommend you to run the wizard on CLI to prevent timeouts on larger databases. | -| From former versions to 32.0.0 | Old Flashmessages could be visible in backend views after update | Nothing to do or to worry about. In the past there were flashmessages like "lead deleted" stored to a backend editor, but there was no output. If you upgrade now to LUX 32 it could happen that all old flashmessages are visible for the editors. Once those messages are shown, they will be deleted - everything is fine again after a reload or switch to a different view. | -| From former versions to 28.0.0 | Email4link HTML template via AJAX - overwrite `Email4link.html` | If you have modified the `Email4Link.html`, this is now done in a similar way. 1. You have to set a template path to your sitepackage like `plugin.tx_lux_email4link.view.templateRootPaths.1 = EXT:mysitepackage/Resources/Private/Templates/Extensions/Lux/` 2. Copy the original file from `EXT:lux/Resources/Private/Templates/Frontend/Email4link.html` to your sitepackage in `EXT:mysitepackage/Resources/Private/Templates/Extensions/Lux/Frontend/Email4link.html` and modify it to your needs. **Please keep in mind that the filename has changed from Email4Link.html to Email4link.html (lowercase 'l' character)** | -| From former versions to 28.0.0 | Email4link HTML template via AJAX - set privacy PID | If you used TypoScript settings for setting a privacy PID instead of TypoScript constants, the place has changed. Privacy PID can be set in TypoScript setup via `luxEmail4LinkAjax.10.settings.pidPrivacyPage = 123` | -| From former versions to 28.0.0 | Email4link HTML template via AJAX - typenum in site configuration | You should extend your siteconfiguration under `routeEnhancers.PageTypeSuffix.map` with typenum `1680114177` and (e.g.) `email4link.json` | -| From former versions to 27.0.0 | JS loading changed a bit | While JS was loaded via `page.includeJSFooter.lux` in the past, now `page.includeJSFooterlibs.lux` is used. If you removed JS including, you have to update your TypoScript. | -| From former versions to 27.0.0 | CKeditor plugin js folder changed for TYPO3 11 | While TYPO3 12 is using CKeditor 5 (instead of 4) we need 2 different JS Folders for the email4link functionality. Adjust your CKeditor configuration from `resource: 'EXT:lux/Resources/Public/JavaScript/Static/CkEditorPlugins/luxEmail4Link/plugin.js'` to `resource: 'EXT:lux/Resources/Public/JavaScript/Static/CkEditorPlugins/luxEmail4LinkOld/plugin.js'` | -| From former versions to 26.2.0 | Name of localStorage settings changed | Nothing to code, but maybe you have to adjust your privacy note: Local storage settings `luxTrackingOptOut` + `luxTrackingOptIn` were removed. A new name is given `luxTracking` | -| From former versions to 23.0.0 | Signals are migrated to PSR-14 events | If you have extended LUX via slots (based in signals), you have to migrate your slots to eventlisteners - see [Events documentation](../Events/Index.md) for details | -| From former versions to 21.0.0 | Small change: Marker names in email4link template changed | If you have overwritten the Email4Link template file, take care to use the "EMAIL4LINK_" prefix now for the 3 variables/markers (###TITLE### => ###EMAIL4LINK_TITLE###) | -| From former versions to 17.1.0 | Small change: Disable IP-API.com via Typoscript now | If you turned off connection to IP-API.com via extension manager settings, you have to do this now via TypoScript - see [documentation](../../../Documentation/Privacy/IpAddresses.md) | -| From former versions to 8.x | Referrers are stored on a different place now | Call your TYPO3 upgrade wizard. There will be one more step that will copy values from _visitor.referrer to _pagevisit.referrer table. | -| From former versions to 7.x | Cookie-Table was replaced with a Fingerprint-Table | Call your TYPO3 upgrade wizard. There will be one more step that will copy values from _idcookie to _fingerprint table. Note that CommandControllers are replaced by Symfony Commands! | -| From former versions to 3.x | The visitor object can handle more cookies now | After updating use the update button in extension manager of if you have a lot of data stored, you can also use the LuxUpdateCommandController to prevent timeouts | +**Note:** See breaking changes table after changelog ## Changelog | Version | Date | State | TYPO3 | Description | |------------|------------|----------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 36.5.0 | 2024-10-01 | Bugfix | `11.5 + 12.4` | Prevent exceptions when configuration is missing, fix typo in configuration, add mail provider to disallowed mail provider list | | 36.4.0 | 2024-09-16 | Feature | `11.5 + 12.4` | Add a Modern.js file to add frontend JS with a basic bot detection (this file is not yet added per default in TypoScript and only for testing reasons available at the moment) | | 36.3.1 | 2024-08-20 | Task | `11.5 + 12.4` | Fix a crosslink from lead detail view in Analysis module back to companies view | | 36.3.0 | 2024-08-16 | Task | `11.5 + 12.4` | Add more KI user agents to blocklist, fix company scoring value in list view | @@ -314,3 +293,29 @@ Double check if you have cleared all caches after installing a new LUX version t | 1.1.0 | 2018-02-26 | Task | `8.7 + 9.5` | Show more relevant information in detail view. Small fixes. | | 1.0.1 | 2018-02-26 | Bugfix | `8.7 + 9.5` | Fix some smaller bugs that occurs with live data | | 1.0.0 | 2018-02-26 | Task | `8.7 + 9.5` | Initial Release with a stable tracking, identification and analyses | + + +## Breaking changes and useful information !!! + +Double check if you have cleared all caches after installing a new LUX version to be sure to have no side effects. + +| Version | Situation | Upgrade instructions | +|--------------------------------|---------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| From former versions to 36.5.0 | Typo in extension configuration | Changed option from `enbaleExceptionLogging` to `enableExceptionLogging` if you turned on exception logging, you have to update your configuration | +| From former versions to 35.0.0 | Multiclient usage on some records need some time to work | Nothing to do for you - just a note: Some records have to be extended with site information, but this can only be done with new records - not with existing (affected tables: Logs, Search, Fingerprint and some boxes on Lead Dashboard). To ensure that privacy is guaranteed, you need to remove all existing LUX data in a multiclient environment. | +| From former versions to 35.0.0 | Define storage pid for editors (linklistener, shortener, utmgenerator) | Records of different tables (tx_lux_domain_model_linklistener, tx_luxenterprise_domain_model_shortener, tx_luxenterprise_domain_model_utmgenerator_uri) can be stored on different pids depending on the backend user - see [Editors configuration](../Editors/Index.md) for details. | +| From former versions to 35.0.0 | Add sites data to existing records to allow multiclient usage | Run upgrade wizard `addSitesUpgradeWizard` to add site information on various tables. Recommendation: We strongly recommend you to run the wizard on CLI to prevent timeouts on larger databases. | +| From former versions to 35.0.0 | Modify relations between visitor and fingerprint table for a better performance | Run upgrade wizard `updateFingerprintRelationsUpgradeWizard` to improve relations. Recommendation: We strongly recommend you to run the wizard on CLI to prevent timeouts on larger databases. | +| From former versions to 32.0.0 | Old Flashmessages could be visible in backend views after update | Nothing to do or to worry about. In the past there were flashmessages like "lead deleted" stored to a backend editor, but there was no output. If you upgrade now to LUX 32 it could happen that all old flashmessages are visible for the editors. Once those messages are shown, they will be deleted - everything is fine again after a reload or switch to a different view. | +| From former versions to 28.0.0 | Email4link HTML template via AJAX - overwrite `Email4link.html` | If you have modified the `Email4Link.html`, this is now done in a similar way. 1. You have to set a template path to your sitepackage like `plugin.tx_lux_email4link.view.templateRootPaths.1 = EXT:mysitepackage/Resources/Private/Templates/Extensions/Lux/` 2. Copy the original file from `EXT:lux/Resources/Private/Templates/Frontend/Email4link.html` to your sitepackage in `EXT:mysitepackage/Resources/Private/Templates/Extensions/Lux/Frontend/Email4link.html` and modify it to your needs. **Please keep in mind that the filename has changed from Email4Link.html to Email4link.html (lowercase 'l' character)** | +| From former versions to 28.0.0 | Email4link HTML template via AJAX - set privacy PID | If you used TypoScript settings for setting a privacy PID instead of TypoScript constants, the place has changed. Privacy PID can be set in TypoScript setup via `luxEmail4LinkAjax.10.settings.pidPrivacyPage = 123` | +| From former versions to 28.0.0 | Email4link HTML template via AJAX - typenum in site configuration | You should extend your siteconfiguration under `routeEnhancers.PageTypeSuffix.map` with typenum `1680114177` and (e.g.) `email4link.json` | +| From former versions to 27.0.0 | JS loading changed a bit | While JS was loaded via `page.includeJSFooter.lux` in the past, now `page.includeJSFooterlibs.lux` is used. If you removed JS including, you have to update your TypoScript. | +| From former versions to 27.0.0 | CKeditor plugin js folder changed for TYPO3 11 | While TYPO3 12 is using CKeditor 5 (instead of 4) we need 2 different JS Folders for the email4link functionality. Adjust your CKeditor configuration from `resource: 'EXT:lux/Resources/Public/JavaScript/Static/CkEditorPlugins/luxEmail4Link/plugin.js'` to `resource: 'EXT:lux/Resources/Public/JavaScript/Static/CkEditorPlugins/luxEmail4LinkOld/plugin.js'` | +| From former versions to 26.2.0 | Name of localStorage settings changed | Nothing to code, but maybe you have to adjust your privacy note: Local storage settings `luxTrackingOptOut` + `luxTrackingOptIn` were removed. A new name is given `luxTracking` | +| From former versions to 23.0.0 | Signals are migrated to PSR-14 events | If you have extended LUX via slots (based in signals), you have to migrate your slots to eventlisteners - see [Events documentation](../Events/Index.md) for details | +| From former versions to 21.0.0 | Small change: Marker names in email4link template changed | If you have overwritten the Email4Link template file, take care to use the "EMAIL4LINK_" prefix now for the 3 variables/markers (###TITLE### => ###EMAIL4LINK_TITLE###) | +| From former versions to 17.1.0 | Small change: Disable IP-API.com via Typoscript now | If you turned off connection to IP-API.com via extension manager settings, you have to do this now via TypoScript - see [documentation](../../../Documentation/Privacy/IpAddresses.md) | +| From former versions to 8.x | Referrers are stored on a different place now | Call your TYPO3 upgrade wizard. There will be one more step that will copy values from _visitor.referrer to _pagevisit.referrer table. | +| From former versions to 7.x | Cookie-Table was replaced with a Fingerprint-Table | Call your TYPO3 upgrade wizard. There will be one more step that will copy values from _idcookie to _fingerprint table. Note that CommandControllers are replaced by Symfony Commands! | +| From former versions to 3.x | The visitor object can handle more cookies now | After updating use the update button in extension manager of if you have a lot of data stored, you can also use the LuxUpdateCommandController to prevent timeouts | diff --git a/Resources/Private/Static/DisallowedMailProviders.txt b/Resources/Private/Static/DisallowedMailProviders.txt index 6efaf1cc..5dbf12c1 100644 --- a/Resources/Private/Static/DisallowedMailProviders.txt +++ b/Resources/Private/Static/DisallowedMailProviders.txt @@ -33569,6 +33569,7 @@ mozillafirefox.ga mozillafirefox.gq mozillafirefox.ml mozillafirefox.tk +mozmail.com mozmail.info mozzinovo.club mozzzi12.com diff --git a/ext_conf_template.txt b/ext_conf_template.txt index 3f333138..6225881f 100644 --- a/ext_conf_template.txt +++ b/ext_conf_template.txt @@ -56,4 +56,4 @@ showRenderTimes = 0 useCacheLayer = 1 # cat=advanced/enable/280; type=boolean; label= Enable exception logging: If the user is not logged in into backend and an exception happens, those exceptions can be logged as warning in var/log/typo3_[hash].log -enbaleExceptionLogging = 0 +enableExceptionLogging = 0 diff --git a/ext_emconf.php b/ext_emconf.php index 49978a8b..7d84fb79 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -4,7 +4,7 @@ 'description' => 'Living User Experience - LUX - the Marketing Automation tool for TYPO3. Turn your visitors to leads. Identification and profiling of your visitors within your TYPO3 website.', 'category' => 'plugin', - 'version' => '36.4.0', + 'version' => '36.5.0', 'author' => 'Alex Kellner', 'author_email' => 'alexander.kellner@in2code.de', 'author_company' => 'in2code.de',