0.33
Hotfixes
- ApplicationModule
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
- ApplicationModule
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
- Changed
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 JsonSchema\Validator
.
- 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\Restart\RestartInterface
with Tomaj\Hermes\Shutdown\ShutdownInterface
to follow new Hermes naming.
- Replace any use of
Tomaj\Hermes\Restart\RestartException
to Tomaj\Hermes\Shutdown\ShutdownException
to follow new Hermes naming.
- Replace any use of
@hermesRestart
in your config (neon) files with @hermesShutdown
.
- The signature of
Crm\ApplicationModule\Hermes\HermesTasksQueue::addTask
changed. If you use it in your custom implementation, please verify your usage:
- Before:
addTask(string $task, float $executeAt)
.
- After:
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.
- Added
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
InvoiceGenerator::CAN_GENERATE_DAYS_LIMIT
to InvoicesRepository::PAYMENT_INVOICEABLE_PERIOD_DAYS
. remp/crm#1267
- BREAKING: Command
SendInvoiceCommand
fails if invoice wasn’t generated. There is no point of sending empty email from “send invoice” command. remp/crm#1267
- Moved
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
InvoicesRepository->isPaymentInvoiceable()
and InvoicesRepository->paymentInInvoiceablePeriod()
methods.
- Affected are
InvoicesPresenter->actionDownloadInvoice()
, InvoicesAdminPresenter->actionDownloadInvoice()
and InvoiceButton
component.
- 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
RecurrentPaymentsRepository->createFromPayment()
. If calculateChargeAt()
throws exception, recurrent payment is stopped (by system) instead of creating invalid recurrent. remp/crm#1662
- Expanded
user_agent
column (in payments
table) string type to 2000 characters. remp/crm#1950
- Added
OrderStatusCriteria
scenario builder criteria. remp/crm#1910
- Moved
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
- Added
OrderStatusOnScenarioEnterCriteria
trigger scenario criteria. remp/crm#1570
- Renamed
OrderStatusCriteria
scenario criteria to ActualOrderStatusCriteria
because of distinction from OrderStatusOnScenarioEnterCriteria
. remp/crm#1570
- Pass order status to scenario directly from orders repository instead of fetching it in
OrderStatusChangeHandler
. remp/helpdesk#723
- Added validation for field
stock
in ProductsForm
to be a non-negative integer. remp/crm#1983
- Added validation for fields
price
and catalog_price
in ProductsForm
to be a non-negative number. remp/crm#1982
- Changed
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 VARCHAR(2000)
. remp/crm#1959
- Fixed subscription update. If
start_time
or 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
UserSubscriptionInfoWidget
. remp/crm#1980
- BREAKING: Added signal method prefix
handle
into GenerateAccessCommand
(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
SsoRedirectValidator
to SignInRedirectValidator
. remp/crm#1941
- Changed
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
- Merged
Users:changePassword
, Users:requestPassword
and Users:settings
pages together to Users:settings
page. Users:settings
is now available for all users, content of the page depends on whether user is logged in or not. remp/crm#1818
- Changed
Users:changePassword
and Users:requestPassword
pages to deprecated and will be removed in the future. Requests are redirected to ``Users:settings`. remp/crm#1818
- Added
level
into 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 GenerateAccessCommand
(user:generate_access
). remp/crm#1661
- Added
type
into 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 GenerateAccessCommand
(user:generate_access
). remp/crm#1661
- 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
--cleanup
to GenerateAccessCommand
(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).
- Changed
users.note
column from VARCHAR(255)
to TEXT
. More space is sometimes needed (eg. notes about company accounts). remp/crm#1953
- Set
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
- Added
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).