0.33.1: Fixed issue CRM admin access due to translation library bug causing “en_us_POSIX out of allowed set” error. remp/crm#1998
0.33.2: Fixed Hermes handler for Heartbeat which could crash in case (optional)
replicaConfig was not configured. remp/crm#2004
- BREAKING: Added access check for presenter’s signals in administration (presenters extending
AdminPresenter). Please check & update admin group rights in administration (http://crm.press/users/admin-group-admin/). remp/crm#1661
- Added list of failed hermes tasks into admin - background jobs with ability to resend message back into queue. remp/crm#777
- Fixed issues with select picker initialization in modals and dynamic snippets. remp/crm#1938
flatpickr’s default hour to 0 (midnight). The most used default start of subscriptions (and other entities in CRM) is midnight not noon. remp/helpdesk#688
- Fixed possibility of input truncation in the
api_logs table by extending the column length. remp/crm#1949
- The migration might take some time (depending on the amount of data in
api_logs table), but doesn’t block the writes.
- Changed order of the information logged when JSON validation fails. If the request is too long, Sentry truncates logged message and we don’t see errors. remp/crm#1967
- Logging also
property which caused error; it’s not always part of error message coming from
- Moved error message raised by malformed JSON into errors section of response.
- Fixed type of
unified_receipt.latest_receipt_info.cancellation_reason from integer to string. remp/crm#1972
- Added error logging for failed JSON parse. In case of Apple’s ServerToServerNotification, failed JSON parse means payload changed and we need to fix it. remp/crm#1967
- BREAKING: Updated Hermes to v4 - see changelog.
- Replace any use of
Tomaj\Hermes\Shutdown\ShutdownInterface to follow new Hermes naming.
- Replace any use of
Tomaj\Hermes\Shutdown\ShutdownException to follow new Hermes naming.
- Replace any use of
@hermesRestart in your config (neon) files with
- The signature of
Crm\ApplicationModule\Hermes\HermesTasksQueue::addTask changed. If you use it in your custom implementation, please verify your usage:
addTask(string $task, float $executeAt).
addTask(int $priority, string $task, float $executeAt).
- If you have custom restart/shutdown implementation, please follow Hermes changelog.
- BREAKING: Changed how menu items are generated within
MenuContainer->getMenuItems(). If position of menu item is taken, menu item is attached to next unused position. remp/crm#1920
- If you relied on overwriting menu items by reusing the same position, please refer to
FrontendMenuDataProviderInterface section of the README and unlink the menu item explictly.
FrontendMenuDataProviderInterface to implement data providers to add or remove frontend menu items based on more complex logic. All data providers have to implement
FrontendMenuDataProviderInterface and attach to
frontend_menu data provider placeholder. remp/crm#1818
- Fixed storing of
hermes_tasks.execute_at date for failed jobs. Invalid date format could store zero dates instead of actual task execution date. remp/crm#1948
- Removed maximum version restriction of the
symfony/translation package (v4.4.13). Issue with incompatibility in
kdyby/translation was fixed. remp/crm#1496
- Fixed issue with invalid created/execute date stored for failed hermes messages. remp/crm#1956
- Added support to execute read-only queries against the configured database replicas. See “Database replicas” block of the README file. remp/crm#1929
- Fixed support for migrations to be placed in the
/migrations folder outside of all modules. remp/crm#1944
- Fixed occasional issue with missing original data in audit log records. remp/crm#1985
- Added error logging for failed JSON parse. In case of Google’s DeveloperNotification, failed JSON parse means payload changed and we need to fix it. remp/crm#1967
- BREAKING: Moved constant
- BREAKING: Command
SendInvoiceCommand fails if invoice wasn’t generated. There is no point of sending empty email from “send invoice” command. remp/crm#1267
Invoices:invoiceDetails page implementation to
InvoiceDetailsWidget. With this change we can reuse invoice details form in multiple places.
InvoiceDetailsWidget attaches to new
invoices.frontend.invoice_details widget placeholder created in
Invoices:invoiceDetails page, so page stays the same. remp/crm#1818
- Changed checking if invoice can be generated or is within invoiceable period from custom conditions to unified
- Affected are
- No breaking change in functionality. Unified condition checking if payment is in invoiceable period is more precise (see commit message for detailed explanation). remp/crm#1267
- Removed redundant check if invoicing was disabled in
InvoiceGenerator->renderInvoiceMailAttachment(). Conditions if payment is invoiceable are checked later in
generate(). Invoice is now attached to email also if it was generated but user disabled invoicing (after generation and) before email was sent. remp/crm#1267
- Added handling for exceptions from
InvoiceGenerator->renderInvoiceMailAttachment() where it was missing.
- BREAKING: Fixed
RecurrentPaymentsRepository->calculateChargeAt(). It will now throw exception if calculated next charge is invalid. remp/crm#1662
- BREAKING: Fixed
calculateChargeAt() throws exception, recurrent payment is stopped (by system) instead of creating invalid recurrent. remp/crm#1662
user_agent column (in
payments table) string type to 2000 characters. remp/crm#1950
OrderStatusCriteria scenario builder criteria. remp/crm#1910
Orders:my page implementation to
UserOrdersWidget. With this change we can reuse user orders list in multiple places.
UserOrdersWidget attaches to new
products.frontend.orders_my widget placeholder created in
Orders:my page, so page stays the same. remp/crm#1818
- Fixed saving products without
available_at date. This column is nullable and strict mode returns error when empty string is sent. Migration fixes these invalid dates. remp/crm#1960
OrderStatusOnScenarioEnterCriteria trigger scenario criteria. remp/crm#1570
OrderStatusCriteria scenario criteria to
ActualOrderStatusCriteria because of distinction from
- Pass order status to scenario directly from orders repository instead of fetching it in
- Added validation for field
ProductsForm to be a non-negative integer. remp/crm#1983
- Added validation for fields
ProductsForm to be a non-negative number. remp/crm#1982
PaymentStatusChangeHandler to allow updating order status to
paid only when it has
new status. remp/crm#1898
- Added link to the newsletter editions, based on the “Page URL” setting of newsletter in Mailer admin. remp/crm#1946
- Changed behavior of admin widgets displaying email settings - settings are no longer displayed for unclaimed or anonymous users. remp/crm#1961
- Fixed saving subscription types with incorrect
extending_length values. This column is nullable and strict mode returns error when string is sent.remp/crm#1963
- Changed size of
subscriptions_meta.value column to
- Fixed subscription update. If
end_time are changed, link to next subscription
next_subscription_id is set to proper value. remp/crm#1882
- Fixed incorrect subscription alignment during subscription shortening if there are future subscriptions during subscription splitting process. remp/crm#1974
- Added subscription type name to
- BREAKING: Added signal method prefix
user:generate_access) to generate ACL resources for presenter’s signals within administration (presenters extending
AdminPresenter). All signals are automatically allowed for all admin groups (to keep access for all admin users as before signals were introduced). This is one time seed. Please check & update admin group rights in administration (http://crm.press/users/admin-group-admin/). remp/crm#1661
- BREAKING: Renamed
SsoUserManager::getUser() method signature. remp/crm#1957
- Added optional parameter
registrationChannel to the end of parameter list. Change is backwards compatible.
- Added initial Apple Sign-In support using ID token and Authorization code flow. remp/crm#1924
Users:settings pages together to
Users:settings is now available for all users, content of the page depends on whether user is logged in or not. remp/crm#1818
Users:requestPassword pages to deprecated and will be removed in the future. Requests are redirected to ``Users:settings`. remp/crm#1818
admin_access table to indicate access level of resource (read / write). Annotation
@admin-access-level above resource method is used for setting level. They are loaded and stored into DB by UsersModule’s
admin_access table to indicate type of resource (render / action / handle). These types are loaded from method prefix and stored into DB by UsersModule’s
- Changed (improved) UI for setting resource access (granting permissions) to admin groups. Added access types and levels and global/per module toggles (eg. read only). remp/crm#1661
- Added the management of linked accounts into user’s settings page. remp/crm#1922
- Added option
user:generate_access) command. When command is launched with this option, orphaned ACL resources and actions are removed. Can be used to remove remains after CRM module is uninstalled or presenter/method is (re)moved. remp/crm#1777
- WARNING: This option doesn’t fix ACL after resource is moved. That should be handled by module when resource is moved / renamed (eg. by migration).
users.note column from
TEXT. More space is sometimes needed (eg. notes about company accounts). remp/crm#1953
note input field to nullable (stores NULL instead of empty string).
- Added option to set query parameter
n_source when using Apple or Google Sign In to store user registration source. remp/crm#1957
registration_channel column to
users table. remp/crm#1957
- This column refers to channel through which user was registered. Default value is
crm. It’s primarily designed to determine origin of the registration data and consent (e.g. Google sign in, Apple sign in).