Releases: remp2020/crm-application-module
Releases · remp2020/crm-application-module
3.6.0
- BREAKING: Updated
twig/twig
to v3. remp/crm#3343- This version removes features deprecated in v2 and adds some new deprecations, which will be removed in v4.
- We recommend that you go through the
v2
deprecations and v3 deprecations and verify, that you don't use the listed features (primarily in sales funnels).
- BREAKING: Removed not used columns from
calendar
table. remp/crm#3337- Columns are removed without a replacement. If you use them, replace them with your own logic / native PHP formatter.
- IMPORTANT: Added new extended implementation of Hermes\Emitter
Crm\ApplicationModule\Hermes\TransactionEmitter
which supports delaying event emitting until transaction commit or throwing events emitted during the transaction away if the transaction was rolled back. remp/crm#2218 - IMPORTANT: Added new
DatabaseTransaction
wrapper which allows to nest transactions even with start/commit/rollback function calls. remp/crm#3330- Added callbacks
onCommit
andonRollback
. (example usage: to be able to delay event dispatching during transaction) DatabaseTransaction
is now implemented withinReplicaManager
which forces all queries to be executed on the primary database during transaction.- It is recommended to update transactions to use new
DatabaseTransaction
API (directly via DI or viaRepository->getTransaction()
) to ensure correct transaction handling within nested transactions. remp/crm#3330
- Added callbacks
- Updated Font Awesome to v6 in the default frontend layouts. remp/crm#2936
- Fixed duplication of query calls if primary database enforce flag was set. remp/crm#3342
- Removed useless property assign in
AuditLogRepository
. remp/crm#3330 - Fixed
ApplicationConfig
to read config entry from the database when it's not present in cache yet. remp/crm#3347
3.5.2
- BREAKING: Removed not used columns from
calendar
table. remp/crm#3337- Columns are removed without a replacement. If you use them, replace them with your own logic / native PHP formatter.
- Fixed statically seeded calendar, which ended at the end of this year and caused charts not to extend into 2025 and beyond.
2.11.1
- BREAKING: Removed not used columns from
calendar
table. remp/crm#3337- Columns are removed without a replacement. If you use them, replace them with your own logic / native PHP formatter.
- Fixed statically seeded calendar, which ended at the end of this year and caused charts not to extend into 2025 and beyond.
3.5.0
- Changed
|activeLabel
and|helpIcon
Latte filters to indicate their HTML content type. There's no further need to use|noescape
filter with them. remp/crm#3319 - Changed initialization of CRM's DB Selection to comply with framework changes making
Selection::$explorer
readonly.
3.4.0
- BREAKING: Removed method
provide
fromDataProviderInterface
. remp/crm#3284- After the change, there is no specific requirement on data provider implementation registered in
DataProviderManager
. - If you directly implemented
DataProviderInterface
, replace the interface withDefaultDataProviderInterface
, containing formerprovide
method. - If you extended
DataProviderInterface
with custom interface, make sure you either implementprovide
method or extendDefaultDataProviderInterface
.
- After the change, there is no specific requirement on data provider implementation registered in
- Added Puerto Rico into the country database. remp/crm#3256
- Added Gibraltar into the country database. remp/crm#3257
- Added French Polynesia into the country database. remp/crm#3258
- Added
localized_countries
config to enable localized countries based on the user's locale. remp/crm#2978- The config is disabled by default to maintain backwards compatibility. This might change in the future.
- Added
CountriesSelectItemsBuilder
to translate country names based on the application configuration. remp/crm#2978
3.3.0
- Added helper method
createMultiple
toActiveRowFactory
. remp/crm#2925 - DEPRECATED: Deprecated
autoload
flag withinconfigs
table. This flag is not used anymore and will be removed in the next major release. remp/crm#2605- Deprecated
loadAllAutoload
method withinConfigsRepository
.
- Deprecated
- Refactored ApplicationConfig + added ability to force refresh config cache. remp/crm#2605
- Fixed measurements keys to contain JavaScript Date class. remp/crm#1241
- Added extension
ContributteTranslationExtension
to support translations within Twig. remp/crm#3214
3.2.0
- BREAKING: Changed minimal version of
nette/application
to version 3.2.- Due to newly introduced framework types, there is
$user
Latte variable (of type\Nette\Security\User
) in every Latte template. - If you use
$user
Latte variable of different type, you have to rename it to avoid type mismatch.
- Due to newly introduced framework types, there is
- BREAKING: Added
registerScenariosTriggers
method toApplicationModuleInterface
.- We recommend to extend
CrmModule
in your module classes, or in case of implementing this interface directly, we recommend to implement empty method.
- We recommend to extend
- Added button to GoogleBarGraph and GoogleLineGraph, to export/download data in CSV format. remp/crm#3117
- Fixed registration of
Contributte\FormMultiplier\DI\MultiplierExtension
. remp/crm#3138- The extension was supposed to be registered by
ApplicationModule
, but it silently failed.
- The extension was supposed to be registered by
- Fixed possible XSS vulnerability and enabled proactively-before-disabled escaping of values. remp/crm#1794
- Added
escapehtml
function both to PHP and Latte to escape HTML entities. remp/crm#1794 - Deprecated
SnippetsRepository->loadAllByIdentifier
, useSnippetsRepository->loadByIdentifier
instead. remp/crm#3029 - Fixed 'Too Many Connections' bug within PHPUnit tests by reconnecting to the database after each test.
- Added
EventGeneratorOutputProviderInterface
for use withEventGeneratorInterface
. remp/crm#1409- We encourage to implement this interface/method in your custom event generators to provide output params to scenario validator.
- In the next major release the interface
EventGeneratorOutputProviderInterface
will be merged toEventGeneratorInterface
interface.
3.1.1
3.1.0
- Added option to register custom callbacks when Hermes's default
Crm\ApplicationModule\Hermes\RedisDriver
waits for next tasks. remp/crm#3111- You can register the callbacks in your
config.neon
by callingsetupWaitCallback
withinsetup
directive ofhermesDriver
service.
- You can register the callbacks in your
- Added
OriginalDataAwareInterface
interface used for object/database row which have to remember its original values. remp/respekt#148- You can now read
getOriginalData()
from theActiveRow
instances (if they implement this interface) after the object was updated.
- You can now read
- Fixed
locale
parameter for snippets with set parameters (locale
was removed if any parameters were set). remp/crm#3113
3.0.0
- BREAKING: Fixed class namespaces to follow PSR4 specification. remp/crm#2228
- Use package
remp/crm-rector:^3.0
to automatically fix these renames.
- Use package
- BREAKING: Changed how
LazyEventEmitter->removeListener()
works. Event listeners are now removed from withinLazyEventEmitter->getSortedListeners()
and not immediately whenremoveListener()
is called in*Module
class. remp/crm#3039- Before this change, order of modules could affect if event listener was removed or not. If module with
removeListener()
was initialized before module which added listener withaddListener()
, lister would stay active. - After the change, all listeners marked for removal are queued first. They are removed when
getSortedListeners()
is called (which should be after all modules are initialized). - Note: Calling
LazyEventEmitter->removeAllListeners($event)
unsets also listeners (for$event
) queued for removal.
- Before this change, order of modules could affect if event listener was removed or not. If module with
- BREAKING: Changed registration of mounted filesystems in configuration. remp/crm#2835
- If you registered your filesystems in configs to
applicationMountManager
viasetup
directive, please replace theapplicationMountManager
withmountManagerConfig
.
- If you registered your filesystems in configs to
- BREAKING: Updated
League\Flysystem
to v3. If you used any of theLeague\Flysystem\MountManager
methods, please review their use. remp/crm#2835- It's not possible to request
ApplicationMountManager::getAdapter
,MountManager
will not expose real path to the file anymore.
- It's not possible to request
- BREAKING: Removed
Crm\ApplicationModule\Models\ApplicationMountManager::getMimeType()
method in favor of (existing)mimeType()
method. remp/crm#2835 - BREAKING: Application now requires use of
psr/log: ^3
. remp/crm#3050- If you implement any of the
Psr\Log
interfaces, you might be required to add return types to the implemented methods.
- If you implement any of the
- BREAKING: Updated
robmorgan/phinx
library to the latest version. remp/crm#3050- If you write your own migrations, you might want to test them against an empty DB. Types are now strict and older migrations could be broken if you used incorrect type in the past.
- BREAKING: Changed
WidgetInterface
; it now extendsNette\ComponentModel\IComponent
. remp/crm#2988BaseLazyWidget
/BaseWidget
andLazyWidgetManager
/WidgetManager
require widgets to extendIComponent
. To prevent registrations with incorrect widgets,WidgetInterface
now has clear "dependency".- In most cases is best to extend
Nette\Application\UI\Control
which implementsNette\ComponentModel\IComponent
.
- BREAKING: Added return types to
Crm\ApplicationModule\Event\EventManagerInterface
. remp/crm#2988 - BREAKING: Application now uses
kdyby/autowired: ^3
. remp/crm#3064- If you actively utilize autowiring features of the library, please review the breaking changes available at https://github.com/Kdyby/Autowired/releases/tag/v3.0.0.
- BREAKING: Removed
nette/finder
in favor ofnette/utils
. remp/crm#3065 - IMPORTANT: Application now uses
nette/robot-loader: ^4
andnette/utils: ^4
. remp/crm#3065 - Changed implementation of
Crm\ApplicationModule\ComposerScripts::postAutoloadDump
method. remp/crm#3050- Due to compatibility issues we can't initialize Console application directly in Composer script anymore. We now execute the console command in a separate process.
- Fixed errors reported by PHPStan (level 3). remp/crm#2988
- Added transaction to database tests (
DatabaseTestCase
). remp/crm#3055- Transaction rollback is faster than truncation of all tables.
- Updated
contributte/forms-multiplier
to the latest version. remp/crm#3067 - Updated
sentry/sentry
to the latest version. remp/crm#3069 - Fixed
GoogleLineGraphGroupControlFactoryInterface
to returnGoogleLineGraphGroup
. remp/crm#3070 - Added missing dependency
symfony/console
. remp/crm#3072- This si required by commands. It is installed by other packages, but we should keep it as direct dependency with version constraint.
- Added
maskEmail
Latte helper (moved fromfamily-module
extension). remp/respekt#141 - Added use statements for classes where we used FQN. remp/crm#2228