CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2024-02-14T10:01:04Zhttps://lab.civicrm.org/dev/core/-/issues/4991Standalone SSO - third-party authentication for single sign on, such as Hybri...2024-02-14T10:01:04ZufundoStandalone SSO - third-party authentication for single sign on, such as HybridAuth or LDAP or SAMLWould be great to build out the standalone users functionality.
Either in Standaloneusers extension or a separate one?Would be great to build out the standalone users functionality.
Either in Standaloneusers extension or a separate one?ufundoufundohttps://lab.civicrm.org/dev/core/-/issues/4986Montreal Sprint Topics2024-02-28T23:28:14ZcolemanwMontreal Sprint TopicsBrainstorming ideas for the Montreal Sprint
- Afform testing. Build on [Dave D's extension](https://lab.civicrm.org/extensions/afformminktests)
- Accessibility improvements: priorities may include
- accordion overhaul (#3294 / [dev/...Brainstorming ideas for the Montreal Sprint
- Afform testing. Build on [Dave D's extension](https://lab.civicrm.org/extensions/afformminktests)
- Accessibility improvements: priorities may include
- accordion overhaul (#3294 / [dev/user-interface#67](https://lab.civicrm.org/dev/user-interface/-/issues/67))
- accordions: review [#29533](https://github.com/civicrm/civicrm-core/pull/29533)
- accordions: JS fixes for [#29448](https://github.com/civicrm/civicrm-core/pull/29448)
- select2 upgrade/replacement (#3292)
- ensure all fields have labels (see [testing by mthompson](https://chat.civicrm.org/civicrm/pl/un7ajre7mbyc3fis4qebnczpse) on MM)
- ensure tabs are accessible
- ensure pop-ups (dialogs, notifications) are accessible
- ensure date fields are accessible
- ensure [validation errors](https://chat.civicrm.org/civicrm/pl/seqg55bm4fn58eaybqaz5e7kcr) use best practices
- Improve loading of SK/FormBuilder content client-side (bundle requests to minimize Civi bootstrap cycles)
- Placing fields in a form that are not saved to Civi (but are recorded in `civicrm_afform_submission`)
- UX improvements to FormBuilder
- Keyboard navigation of edit-in-place SK displays (and other afforms?) -- and accessibility more broadly?
- Making FormBuilder field placement more flexible (independent of container)
- Use the Queue system for SearchKit exports
- [Open AdminUI PRs](https://github.com/civicrm/civicrm-core/pulls?q=adminui+OR+admin_ui+OR+%22admin+ui%22+is%3Apr+is%3Aopen)
- [Open Afform/SK/FB PRs](https://github.com/civicrm/civicrm-core/pulls?q=afform+OR+searchkit+OR%22search+kit%22+OR+formbuilder+OR+%22form+builder%22+is%3Apr+is%3Aopen+)https://lab.civicrm.org/dev/core/-/issues/4985Custom radio/checkbox fields - maximum options per line - alignment lost2024-03-29T00:28:52ZsamuelsovCustom radio/checkbox fields - maximum options per line - alignment lostRegression following on #1821.
This is what we used to have (html table so everything is aligned):
![screen1](/uploads/afc5f71950f200da120187746e43f222/screen1.png)
This is what we have now:
![screen2](/uploads/c202f5aa0fccf732d96090...Regression following on #1821.
This is what we used to have (html table so everything is aligned):
![screen1](/uploads/afc5f71950f200da120187746e43f222/screen1.png)
This is what we have now:
![screen2](/uploads/c202f5aa0fccf732d96090fd2d385138/screen2.png)
Currently, it's almost impossible to fix it using css.https://lab.civicrm.org/dev/core/-/issues/4984Display issue on membership view for relationships2024-02-14T09:55:26ZyashodhaDisplay issue on membership view for relationships## Steps to replicate :
* Create a membership type configured with a relationship in both directions.
![Screenshot 2024-02-08 204424.png](/uploads/d4e47bd30b2673291f1e8c5bfe4346aa/Screenshot_2024-02-08_204424.png)
* Create a relations...## Steps to replicate :
* Create a membership type configured with a relationship in both directions.
![Screenshot 2024-02-08 204424.png](/uploads/d4e47bd30b2673291f1e8c5bfe4346aa/Screenshot_2024-02-08_204424.png)
* Create a relationship between contacts that have this relationship "Shares home"
* Create a primary membership on one of them.
* On membership view screen, we can't see the related contact
![Screenshot 2024-02-08 205130.png](/uploads/63407ba8348abd8a2259ad59702c608b/Screenshot_2024-02-08_205130.png)
This should show like (fixed)
![Screenshot 2024-02-08 205008.png](/uploads/fde582a5808cf50f49f8d3fa80cf865c/Screenshot_2024-02-08_205008.png)
I can confirm this is not working on dmaster as well.yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/4983FormBuilder - allow injection of js files to afform forms2024-02-14T09:54:42ZseamusleeFormBuilder - allow injection of js files to afform formsAs part of JMA's geotargeted petition extension we have some javascript that we inject on the front end https://lab.jmaconsulting.biz/extensions/geotargetedpetitions/-/blob/main/geotargetedpetitions.php?ref_type=heads#L58. The purpose of...As part of JMA's geotargeted petition extension we have some javascript that we inject on the front end https://lab.jmaconsulting.biz/extensions/geotargetedpetitions/-/blob/main/geotargetedpetitions.php?ref_type=heads#L58. The purpose of the Javascript is to do a dynamic lookup based on address information entered and then add checkboxes onto the form of "your local representatives that we will be contacting"
Is there a way to be able to do this within the GUI of form builder or similar to make it easier to always ensure that the js is loaded rather than just based on a specific block being on the form
@JoeMurray @Edselopez @colemanwhttps://lab.civicrm.org/dev/core/-/issues/4982Form builder - Extension provided entity settings2024-02-14T09:53:44ZseamusleeForm builder - Extension provided entity settingsJMA is in the progress of working on a geographically targeted petition extension
At the moment we have some additional settings that we get a user to set when creating the petition page in Form Builder. These get injected by the alter ...JMA is in the progress of working on a geographically targeted petition extension
At the moment we have some additional settings that we get a user to set when creating the petition page in Form Builder. These get injected by the alter angular hook https://lab.jmaconsulting.biz/extensions/geotargetedpetitions/-/blob/main/geotargetedpetitions.php?ref_type=heads#L76 however this means that even on non petition related form builder forms they will show up.
This is about seeing if there is a better way to achieve this and or see if we can get them put onto the specific settings page for say GeotargetedPetition Entity.
@JoeMurray @Edselopez @colemanwhttps://lab.civicrm.org/dev/core/-/issues/4979Should `die()` be called when a DB Query fails?2024-02-14T09:49:16ZhaystackShould `die()` be called when a DB Query fails?Overview
----------------------------------------
As the title says, when a DB Query fails, `CRM_Utils_File::runSqlQuery()` [calls](https://github.com/civicrm/civicrm-core/blob/fd4913060d8e944a99abe30c22ba670ed0e51a9a/CRM/Utils/File.php#...Overview
----------------------------------------
As the title says, when a DB Query fails, `CRM_Utils_File::runSqlQuery()` [calls](https://github.com/civicrm/civicrm-core/blob/fd4913060d8e944a99abe30c22ba670ed0e51a9a/CRM/Utils/File.php#L327) `die()` and all script execution stop *ahem* dead. Is this intentional?
Reproduction steps
----------------------------------------
1. Install the "Deduper" Extension (v1.7) via the API (sorry @eileen :dove:)
1. See the unrecoverable error "**Cannot execute INSERT INTO civicrm_contact_name_pair_family (id, name_a, name_b, is_most_common_form, is_active) VALUES (65, 'Takahashi', '髙𣘺', 0, 1)**".
Current behaviour
----------------------------------------
There's no way to trap this and continue with a script that installs Extensions via the API.
Edit: apparently there [is a way](https://stackoverflow.com/a/16925225) but this seems a less than sensible way to go about trapping the error.
Expected behaviour
----------------------------------------
A script that installs Extensions via the API should be able to trap the error as an `Exception` with `try/catch` and act accordingly.https://lab.civicrm.org/dev/core/-/issues/4978Creating a user was not succesful2024-02-14T09:48:02ZBetty DolfingCreating a user was not succesfulI wanted to add a user to civistandalone, but had to try 5 times, before I was succesful.
I tried in FF first and after 5 times I switched to Chrome. Then a user was created.
I have the impression that not so much the browser caused th...I wanted to add a user to civistandalone, but had to try 5 times, before I was succesful.
I tried in FF first and after 5 times I switched to Chrome. Then a user was created.
I have the impression that not so much the browser caused the problem, but some kind of error.
However, I only saw for a split second an error message in the right hand corner, so am not aware of the _type_ of error.
For now I am ok and when I add users, I will just keep on trying till I am succesful.
But when Civi stand alone is beyond the beta version, this needs to be fixed.https://lab.civicrm.org/dev/core/-/issues/4976Standalone: Timezone improvements2024-02-07T18:41:29ZDaveDStandalone: Timezone improvementsIt doesn't look like standalone has a setting for a site-wide default timezone. It means anywhere where anonymous sees timestamp fields (as opposed to datetime fields) they'll see whatever the server default is, but without a way for the...It doesn't look like standalone has a setting for a site-wide default timezone. It means anywhere where anonymous sees timestamp fields (as opposed to datetime fields) they'll see whatever the server default is, but without a way for the average site admin to "fix" it. At the moment I'm drawing a blank as to which screens this would be. Something like a creation date, or an activity date if you have doctorwhen installed.
I also don't see where php's timezone gets set, which is somewhat equivalent to a site-wide default. There might be some places where that will come up, but am also drawing a blank on where at the moment. Drupal sets it in drupal somewhere, and see e.g. what wordpress does for civi: https://github.com/civicrm/civicrm-core/blob/888e65374f208e6d79ff8adc68d0adfa05575277/CRM/Utils/System/WordPress.php#L732https://lab.civicrm.org/dev/core/-/issues/4975FormBuilder: Case Status field shows disabled statuses2024-02-23T15:32:47ZnoahFormBuilder: Case Status field shows disabled statusesThe Case Type admin screen (e.g. civicrm/a/#/caseType/1) allows you to disable some case statuses for a given case type.
When you create a Case submission form in FormBuilder, and add the Case Status field to the form, all case statuses...The Case Type admin screen (e.g. civicrm/a/#/caseType/1) allows you to disable some case statuses for a given case type.
When you create a Case submission form in FormBuilder, and add the Case Status field to the form, all case statuses are available in the resulting widget, regardless of whether they're enabled for the case type.
You can manually remove some of the status options, but they won't stay in sync with the Case Type admin screen.https://lab.civicrm.org/dev/core/-/issues/4964Attaching multiple contacts to an activity in afform dies if one in the middl...2024-02-07T10:27:26ZufundoAttaching multiple contacts to an activity in afform dies if one in the middle is missingHit an issue today with trying to assign multiple contacts to an activity with an afform.
Example afform:
````
<af-form ctrl="afform">
<af-entity data="{source_contact_id: 'user_contact_id', activity_type_id: '1', **target_contact_id...Hit an issue today with trying to assign multiple contacts to an activity with an afform.
Example afform:
````
<af-form ctrl="afform">
<af-entity data="{source_contact_id: 'user_contact_id', activity_type_id: '1', **target_contact_id: ['Individual1', 'Individual2', 'Organization1']**}" type="Activity" name="Activity1" label="Activity 1" actions="{create: true, update: true}" security="RBAC" />
<af-entity data="{contact_type: 'Individual', source: 'Meeting Log'}" type="Contact" name="Individual1" label="Chair" actions="{create: true, update: true}" security="RBAC" />
<af-entity data="{contact_type: 'Individual', source: 'Meeting Log'}" type="Contact" name="Individual2" label="Minute Taker" actions="{create: true, update: true}" security="RBAC" />
<af-entity data="{contact_type: 'Organization', source: 'Meeting Log'}" type="Contact" name="Organization1" label="Host Organisation" actions="{create: true, update: true}" security="RBAC" />
<button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()" ng-if="afform.showSubmitButton">Submit</button>
<fieldset af-fieldset="Activity1" class="af-container" af-title="Meeting">
<af-field name="subject" />
</fieldset>
<fieldset af-fieldset="Individual1" class="af-container" af-title="Chair">
<div class="af-container">
<div class="af-container af-layout-inline">
<af-field name="first_name" />
<af-field name="last_name" />
</div>
</div>
</fieldset>
<fieldset af-fieldset="Individual2" class="af-container" af-title="Minute Taker">
<div class="af-container">
<div class="af-container af-layout-inline">
<af-field name="first_name" />
<af-field name="last_name" />
</div>
</div>
</fieldset>
<fieldset af-fieldset="Organization1" class="af-container" af-title="Host Organisation">
<af-field name="organization_name" />
</fieldset>
</af-form>
```
Fill in all the contacts and you get an activity with 3 contacts.
If you skip Individual2 (Minute Taker), however... what happens? The Activity, Individual1 and the Organisation are created, but only Individual1 is linked to the Activity...
Think the issue is with the splicing here https://github.com/civicrm/civicrm-core/blob/1880f9bdfe20be6e1d0a47a74c2b480b6f27e055/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php#L355 - patch incoming :slight_smile:https://lab.civicrm.org/dev/core/-/issues/4955Upgrade to Smarty52024-02-01T10:45:19ZeileenUpgrade to Smarty5Now that we have upgraded many sites to Smarty3 Smarty5 is on the cusp of being release....
See related issue https://lab.civicrm.org/dev/core/-/issues/4954 on getting to Smarty4
The upgrade from Smarty 3 or 4 to Smarty 5 has some mino...Now that we have upgraded many sites to Smarty3 Smarty5 is on the cusp of being release....
See related issue https://lab.civicrm.org/dev/core/-/issues/4954 on getting to Smarty4
The upgrade from Smarty 3 or 4 to Smarty 5 has some minor challenges.
https://smarty-php.github.io/smarty/5.x/upgrading/
1) assign_by_ref needs to be replaced with assign wherever it appears (yay I've been wanting to get rid of those)
2) some php-language modifiers will stop working without intervention (not sure how affected we are but if some are common it is easy to 'make them work')
3) before we can see / address the above there is a problem with our Smarty compatibility class. Our Smarty class has functions like `getTemplateVars()` to allow sites still on Smarty2 to call the v3 functions. That particular function has a different signature in Smarty5 so overriding it causes fatals
Proposal
1) Check Smarty5 into packages like Smarty4 - see https://github.com/civicrm/civicrm-packages/pull/380
2) the path fix in Smarty4 will allow easy switch to Smarty5 for developers
3) Move `getTemplateVars()` & any other functions in the same boat from being on our Smarty compatibility class to being 'hacked onto' the Smarty 2 code in our packages folder.
4) replace assign-by-ref with assign
- That should be enough to get us to the point where we can get dev sites to load and from there we can figure out if we have to scale a mountain or a molehill to move to Smarty5 instead of 3 or 4 when we do our force changehttps://lab.civicrm.org/dev/core/-/issues/4952PHP 8.3 Support2024-01-31T22:32:21ZJoeMurrayPHP 8.3 SupportThis is an epic for PHP 8.3 support.
PHP 8.3 was released 2023-11, has active support till 2024-12-8, and security support till 2025-12-08.
Some extra motivation to support 8.3 sooner rather that later is the significant performance im...This is an epic for PHP 8.3 support.
PHP 8.3 was released 2023-11, has active support till 2024-12-8, and security support till 2025-12-08.
Some extra motivation to support 8.3 sooner rather that later is the significant performance improvements it has, up to 55% for D10 over 8.1: https://kinsta.com/blog/php-benchmarks/
Reference: [https://www.php.net/manual/en/migration83.incompatible.php](https://www.php.net/manual/en/migration83.incompatible.php)
See also [thttps://php.watch/versions/8.3](https://php.watch/versions/8.3) and [https://www.php.net/releases/8.3/en.php](https://www.php.net/releases/8.3/en.php).
Here are the breaking changes listed here for reference. Almost all seem like they would be difficult to search for and identify in the codebase. Whack-a-mole from running on edge test servers might be a helpful approach.
- [ ] Uses of traits with static properties: Uses of traits with static properties will now redeclare static properties inherited from the parent class. This will create a separate static property storage for the current class. This is analogous to adding the static property to the class directly without traits.
- [ ] Assigning a negative index to an empty array: Assigning a negative index $n to an empty array will now make sure that the next index is $n+1 instead of 0.
- [ ] Class constant visibility variance check: Class constant visibility variance is now correctly checked when inherited from interfaces.
- [ ] WeakMap entries whose key maps to itself: WeakMap entries whose key maps to itself (possibly transitively) may now be removed during cycle collection if the key is not reachable except by iterating over the WeakMap (reachability via iteration is considered weak). Previously, such entries would never be automatically removed.
- [ ] Date: The DateTime extension has introduced Date extension specific exceptions and errors under the DateError and DateException hierarchies, instead of warnings and generic exceptions. This improves error handling, at the expense of having to check for errors and exceptions.
- [ ] DOM: Calling DOMChildNode::after(), DOMChildNode::before(), DOMChildNode::replaceWith() on a node that has no parent is now a no-op instead of a hierarchy exception, which is the behaviour demanded by the DOM specification.
Using the DOMParentNode and DOMChildNode methods without a document now works instead of throwing a DOM_HIERARCHY_REQUEST_ERR DOMException. This is in line with the behaviour demanded by the DOM specification.
Calling DOMDocument::createAttributeNS() without specifying a prefix would incorrectly create a default namespace, placing the element inside the namespace instead of the attribute. This bug is now fixed.
DOMDocument::createAttributeNS() would previously incorrectly throw a DOM_NAMESPACE_ERRNAMESPACE_ERR DOMException when the prefix was already used for a different URI. It now correctly chooses a different prefix when there's a prefix name conflict.
New methods and properties were added to some DOM classes. If a userland class inherits from these classes and declare a method or property with the same name, the declarations must be compatible. Otherwise, a typical compile error about incompatible declarations will be thrown. See the list of new features and new functions for a list of the newly implemented methods and properties.
- [x] FFI: C functions that have a return type of void now return null instead of returning the following object object(FFI\CData:void) { }
- [ ] Opcache: The opcache.consistency_checks INI directive was removed. This feature was broken with the tracing JIT, as well as with inheritance cache, and has been disabled without a way to enable it since PHP 8.1.18 and PHP 8.2.5. Both the tracing JIT and inheritance cache may modify shm after the script has been persisted by invalidating its checksum. The attempted fix skipped over the modifiable pointers but was rejected due to complexity. For this reason, it was decided to remove the feature instead.
- [ ] Phar: The type of Phar class constants are now declared.
- [ ] Standard: The range() function has had various changes:
A TypeError is now thrown when passing objects, resources, or arrays as the boundary inputs.
A more descriptive ValueError is thrown when passing 0 for $step.
A ValueError is now thrown when using a negative $step for increasing ranges.
If $step is a float that can be interpreted as an int, it is now done so.
A ValueError is now thrown if any argument is infinity or NAN.
An E_WARNING is now emitted if $start or $end is the empty string. The value continues to be cast to the value 0.
An E_WARNING is now emitted if $start or $end has more than one byte, only if it is a non-numeric string.
An E_WARNING is now emitted if $start or $end is cast to an integer because the other boundary input is a number. (e.g. range(5, 'z');).
An E_WARNING is now emitted if $step is a float when trying to generate a range of characters, except if both boundary inputs are numeric strings (e.g. range('5', '9', 0.5); does not produce a warning).
range() now produce a list of characters if one of the boundary inputs is a string digit instead of casting the other input to int (e.g. range('9', 'A');).
```
<?php
range('9', 'A'); // ["9", ":", ";", "<", "=", ">", "?", "@", "A"], as of PHP 8.3.0
range('9', 'A'); // [9, 8, 7, 6, 5, 4, 3, 2, 1, 0], prior to PHP 8.3.0
?>
```
The file() flags error check now catches all invalid flags. Notably FILE_APPEND was previously silently accepted.
- [ ] SNMP: The type of SNMP class constants are now declared.https://lab.civicrm.org/dev/core/-/issues/4950Acivity tab timing out after 5.70 upgrade on large DB2024-02-08T19:14:09ZElliott EgglestonAcivity tab timing out after 5.70 upgrade on large DBThe admin_ui version of the activity tab is generating queries for some CIDs that don't return in a reasonable amount of time. EXPLAIN shows that filesort is being used for the first subquery.
One example query, generated for a contact ...The admin_ui version of the activity tab is generating queries for some CIDs that don't return in a reasonable amount of time. EXPLAIN shows that filesort is being used for the first subquery.
One example query, generated for a contact with only 18 activities: https://phabricator.wikimedia.org/P55961
Wikimedia's tracking task, with the SQL query explain: https://phabricator.wikimedia.org/T356269
Oddly, I WAS able to load the activities tab for my own user which has 700+ activities, so it's not just related to the number of activities on a contact.
If I just roll back 04078d359e298a5a02ea274404dcdb8af83225dd it restores the previous activity tab and I can load the CID's activity tab fine with no runaway query generated.5.70.0colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/4947Proposal: Store Contribution Page ID in the `civicrm_contribution_recur` table2024-02-01T10:23:33ZjaapjansmaProposal: Store Contribution Page ID in the `civicrm_contribution_recur` tableOverview
----------------------------------------
When a recurring contribution is created with a contribution page. Also store the contribution page ID in the `civicrm_contribution_recur` table.
This works already for 'normal' contrib...Overview
----------------------------------------
When a recurring contribution is created with a contribution page. Also store the contribution page ID in the `civicrm_contribution_recur` table.
This works already for 'normal' contribution.
Example use-case
----------------------------------------
1. CiviRules can be used when a new Contribution Recur is added and a condition can then be used which Contribution Page this came from.
Current behaviour
----------------------------------------
Currently for the 'normal' contributions the contribution page ID is stored in the `civicrm_contribution` table.
Proposed behaviour
----------------------------------------
1. Add a column to the `civicrm_contribution_recur` table called `contribution_page_id`
2. When a contribution recur is added through a Contribution Page then store the contribution page id into this column
3. Optional we can show the data from this field in the user interface when a user views a contribution recur
Workaround
----------------------------------------
There is a workaround with an extension: https://lab.civicrm.org/extensions/storecontributionpageidoncontribrecurjaapjansmajaapjansmahttps://lab.civicrm.org/dev/core/-/issues/4946DB error on gender searches2024-02-01T16:06:14ZyashodhaDB error on gender searchesWe should NOT allow non numeric values for gender option values.
gender_id in the database expects numeric values instead, we should form rule for such entities.We should NOT allow non numeric values for gender option values.
gender_id in the database expects numeric values instead, we should form rule for such entities.yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/4944Mass SMS continue button creates a new mass SMS2024-02-02T13:10:39ZDaveDMass SMS continue button creates a new mass SMSCame up during PR review.
The screens appear as though it's editing the existing one but there's a warning about missing ssid, so I assume it's not getting passed on so it then creates a new one.
1. Mailings - New SMS.
1. Fill out the ...Came up during PR review.
The screens appear as though it's editing the existing one but there's a warning about missing ssid, so I assume it's not getting passed on so it then creates a new one.
1. Mailings - New SMS.
1. Fill out the fields. Click Next.
1. Click Continue Later.
1. This takes you to the Find Mass SMS screen and you'll see your draft.
1. Click the Continue link at the far right.
1. It looks as though you're editing the draft, but click Next and then Next again, and then click the Continue Later button.
1. Note in the Find Mass SMS screen there's now two draft mailings.https://lab.civicrm.org/dev/core/-/issues/4940Proposal to Change the Invoice date in the default Invoice message template t...2024-02-08T10:45:03ZeileenProposal to Change the Invoice date in the default Invoice message template to contribution.receive_dateThis spins off one discussion topic from https://lab.civicrm.org/dev/core/-/issues/1403 -
As part of our general effort to make the WorkflowMessage templates operate independently of the quickform layer (ie be available as actions from ...This spins off one discussion topic from https://lab.civicrm.org/dev/core/-/issues/1403 -
As part of our general effort to make the WorkflowMessage templates operate independently of the quickform layer (ie be available as actions from SearchKit etc) we should clarify which value is used for the invoice_date in the default message template that we ship from \`{$invoice_date}\`
```html
{domain.now|crmDate:"Full"}
or
{contribution.receive_date|crmDate:"Full"}
```
If we change the default it will affect new installs and un-customised templates. I'm not proposing any push upgrade on the customised templates at this stage so for most invoice-using sites this will be no change at this point. However, I am going to try to 'complete' the variable to token changes in this template so that anyone who is updating their customised template or installing a new site is using the tokens (& hence will be able to benefit from message previewability via MessageAdmin now & sending & rendering from outside QF if they install a relevant extension /when we add to core).
Potentially if we want to make it clear to people that they can change it we can use one of
```html
{domain.now|crmDate:"Full"}{* Code comment: - You can replace the domain.now token with this to show the contribution date instead {contribution.receive_date|crmDate:"Full"} *}
OR
{contribution.receive_date|crmDate:"Full"}{* Code comment: - You can replace the domain.now token with this to show the current date instead with {domain.now|crmDate:"Full"} *}
```
Note that the assumption in this gitlab is that any change would be opt in for existing sites (since basically everyone who uses invoices puts a logo in there). There is a proposal at https://github.com/civicrm/civicrm-core/pull/28630 that would force a change on everyone. I'm not convinced we should do a force update because it is pretty clear from the code & code history that the use of now was a deliberate attempt to meet a use case. However I have added an option to the emjoi poll below to allow people to vote for a forced update - basically a string_replace on upgrade.
EMOJI POLL Options
1) :boom: Change to {domain.now|crmDate:"Full"}
2) :man_dancing_tone2: Change to {contribution.receive_date|crmDate:"Full"}
3) :avocado: Change to 1 with additional in-code comments per above
4) :bellhop: Change to 2 with additional in code comments per above
5) :pick: Do 2 with a forced upgrade to replace {$invoice_date} with the above with {contribution.receive_date|crmDate:"Full"}https://lab.civicrm.org/dev/core/-/issues/4934Standalone: messages from Civi don't appear as expected2024-03-11T18:54:28ZAndy ClarkStandalone: messages from Civi don't appear as expectedMessages from Civi don't appear as expected e.g. when testing outbound email, check the mail() button and click 'Send and Save email' and no message will appear. This is 100% reproducible. Sometimes messages will appear a couple of scre...Messages from Civi don't appear as expected e.g. when testing outbound email, check the mail() button and click 'Send and Save email' and no message will appear. This is 100% reproducible. Sometimes messages will appear a couple of screens after they have been created, but not always. Using the 5.69.2 version of Standalone.RichRichhttps://lab.civicrm.org/dev/core/-/issues/4933Standalone: Cannot update default organisation to update it after Standalone ...2024-01-27T16:03:23ZAndy ClarkStandalone: Cannot update default organisation to update it after Standalone installAfter Standalone installation, it's require to update the default organisation to give it a name etc. However this crashes with the attached error. This is using the released 5.69.2 version of Standalone![screenshot_20240124_170636](/u...After Standalone installation, it's require to update the default organisation to give it a name etc. However this crashes with the attached error. This is using the released 5.69.2 version of Standalone![screenshot_20240124_170636](/uploads/c59bc5d9505b56cdb8764ffb36f0ad53/screenshot_20240124_170636.png)