Merge pull request #23809 from eileenmcnaughton/invoice_recur
[civicrm-core.git] / release-notes / 5.43.0.md
1 # CiviCRM 5.43.0
2
3 Released November 3, 2021
4
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
11
12 ## <a name="synopsis"></a>Synopsis
13
14 | *Does this version...?* | |
15 |:--------------------------------------------------------------- |:-------:|
16 | Fix security vulnerabilities? | no |
17 | **Change the database schema?** | **yes** |
18 | **Alter the API?** | **yes** |
19 | **Require attention to configuration options?** | **yes** |
20 | **Fix problems installing or upgrading to a previous version?** | **yes** |
21 | **Introduce features?** | **yes** |
22 | **Fix bugs?** | **yes** |
23
24 ## <a name="features"></a>Features
25
26 ### Core CiviCRM
27
28 - **Use money formatting for currency in templates
29 ([21783](https://github.com/civicrm/civicrm-core/pull/21783))**
30
31 Receipt templates now use the more modern Brick/Money library to format
32 currency amounts. This will provide better formats in most cases, but it will
33 be a change.
34
35 - **Add sort functionality to event summary report
36 ([21501](https://github.com/civicrm/civicrm-core/pull/21501))**
37
38 Improves Event Summary Report by making it possible to sort columns.
39
40 - **Add REGEXP/NOT REGEXP operators to API4
41 ([dev/core#2793](https://lab.civicrm.org/dev/core/-/issues/2793):
42 [21288](https://github.com/civicrm/civicrm-core/pull/21288))**
43
44 Makes it so users can use regular expressions operators in APIv4.
45
46 - **APIv4 - Add Contact.age_years extra field to make age calculations easy
47 ([21718](https://github.com/civicrm/civicrm-core/pull/21718))**
48
49 Adds a calculated field to APIv4 which makes it simple to return or filter on
50 a contact's age.
51
52 - **APIv4 - Add support for sql equations
53 ([21551](https://github.com/civicrm/civicrm-core/pull/21551))**
54
55 Allows equations e.g. (1 + 1) as sql expressions in APIv4 queries.
56
57 - **Apiv4 entity parity (Work Towards
58 [dev/core#2486](https://lab.civicrm.org/dev/core/-/issues/2486):
59 [21355](https://github.com/civicrm/civicrm-core/pull/21355) and
60 [21500](https://github.com/civicrm/civicrm-core/pull/21500))**
61
62 Adds APIv4 entity support for the PrintLabel and Survey entities.
63
64 - **APIv4 - Use event instead of hardcoded list to resolve entityName to
65 className ([21771](https://github.com/civicrm/civicrm-core/pull/21771),
66 [21803](https://github.com/civicrm/civicrm-core/pull/21803),
67 [21819](https://github.com/civicrm/civicrm-core/pull/21819),
68 [21824](https://github.com/civicrm/civicrm-core/pull/21824),
69 [21828](https://github.com/civicrm/civicrm-core/pull/21828),
70 [21839](https://github.com/civicrm/civicrm-core/pull/21839), and
71 [21851](https://github.com/civicrm/civicrm-core/pull/21851))**
72
73 This allows core and extension-introduced entities to have arbitrary class and
74 entity names instead of requiring the two to agree.
75
76 - **activity import: prepend custom group title to custom fields
77 ([21318](https://github.com/civicrm/civicrm-core/pull/21318))**
78
79 Makes it possible to distinguish between core and custom fields on the
80 Activity Import screen.
81
82 - **No way to distinguish the core and custom fields on Find and Merge Duplicate
83 Contacts page
84 ([dev/core#2766](https://lab.civicrm.org/dev/core/-/issues/2766):
85 [21728](https://github.com/civicrm/civicrm-core/pull/21728))**
86
87 Makes it possible to distinguish between core and custom fields on the Find
88 and Merge Duplicate Contacts page.
89
90 - **Support participant & membership tokens in send-email tasks
91 ([21745](https://github.com/civicrm/civicrm-core/pull/21745) and
92 [dev/core#2895](https://lab.civicrm.org/dev/core/-/issues/2895):
93 [21801](https://github.com/civicrm/civicrm-core/pull/21801))**
94
95 Makes it so users can use participant & membership tokens in send-email tasks.
96
97 - **Add participant tokens to pdf task
98 ([21695](https://github.com/civicrm/civicrm-core/pull/21695))**
99
100 Makes it so users can use participant tokens in PDF tasks.
101
102 - **Meta - token usage 5.43 standardisation effort
103 ([dev/core#2864](https://lab.civicrm.org/dev/core/-/issues/2864):
104 [21428](https://github.com/civicrm/civicrm-core/pull/21428),
105 [21605](https://github.com/civicrm/civicrm-core/pull/21605),
106 [21713](https://github.com/civicrm/civicrm-core/pull/21713),
107 [21584](https://github.com/civicrm/civicrm-core/pull/21584),
108 [21523](https://github.com/civicrm/civicrm-core/pull/21523),
109 [21706](https://github.com/civicrm/civicrm-core/pull/21706),
110 [21806](https://github.com/civicrm/civicrm-core/pull/21806),
111 [21821](https://github.com/civicrm/civicrm-core/pull/21821),
112 [21530](https://github.com/civicrm/civicrm-core/pull/21530),
113 [21537](https://github.com/civicrm/civicrm-core/pull/21537), and
114 [21913](https://github.com/civicrm/civicrm-core/pull/21913))**
115
116 Standardizes Token usage.
117
118 - **Add {domain.now}, supporting |crmDate
119 ([21531](https://github.com/civicrm/civicrm-core/pull/21531))**
120
121 Adds new token {domain.now} that provides the current date.
122
123 - **Afform - Use search display name as field prefix for url-based field
124 defaults ([21645](https://github.com/civicrm/civicrm-core/pull/21645))**
125
126 Makes field prefix optional for Afform url-based defaults, and uses search
127 display name as prefix for search forms.
128
129 - **Afform - Accept default field values from the url
130 ([21606](https://github.com/civicrm/civicrm-core/pull/21606))**
131
132 Allows default Afform field values to be set from the url.
133
134 - **Afform Admin add link icon & template cleanup
135 ([21764](https://github.com/civicrm/civicrm-core/pull/21764))**
136
137 Minor cleanup to improve template efficiency, style afform page link, and add
138 a page title.
139
140 - **Search kit - default filter - primary
141 ([dev/core#2852](https://lab.civicrm.org/dev/core/-/issues/2852):
142 [21574](https://github.com/civicrm/civicrm-core/pull/21574))**
143
144 Adds is_primary as a default SearchKit filter.
145
146 - **SearchKit - Add UI for arithmetic equations
147 ([21600](https://github.com/civicrm/civicrm-core/pull/21600))**
148
149 Allows adding, subtracting, dividing and multiplying any number of values in
150 SearchKit.
151
152 - **SearchKit - Support multiple arguments to field transformations aka SQL
153 functions ([21528](https://github.com/civicrm/civicrm-core/pull/21528) and
154 [21535](https://github.com/civicrm/civicrm-core/pull/21535))**
155
156 Enhances the SearchKit UI to allow multiple fields to be acted upon at once in
157 a function.
158
159 - **SearchKit - Add pseudo-fields for row number and current user
160 ([21435](https://github.com/civicrm/civicrm-core/pull/21435))**
161
162 Makes a couple calculated fields available for use as columns or tokens in
163 SearchKit.
164
165 - **SearchKit - Support custom fields in bridge join entities
166 ([21424](https://github.com/civicrm/civicrm-core/pull/21424))**
167
168 Makes it possible to use relationship custom data throughout Search Kit.
169
170 - **SearchKit & Afform - Use Bootstrap table styles on admin screens
171 ([21405](https://github.com/civicrm/civicrm-core/pull/21405) and
172 [21397](https://github.com/civicrm/civicrm-core/pull/21397))**
173
174 applies Bootstrap table styles to admin tables in SearchKit and Afform.
175
176 - **SearchKit - Filter search listing by creator
177 ([21388](https://github.com/civicrm/civicrm-core/pull/21388))**
178
179 Makes it so users can filter the search listing by creator.
180
181 - **SearchKit - enable tags for Saved Searches
182 ([21376](https://github.com/civicrm/civicrm-core/pull/21376))**
183
184 Enables tags for saved searches in searchkit.
185
186 - **SearchKit - Add 'array' option to download API and add test
187 ([21363](https://github.com/civicrm/civicrm-core/pull/21363))**
188
189 Adds a new option to the SearchKit "Download" api to return a normal array
190 result, which makes testing easier.
191
192 - **SearchKit - Sortable column fixes/improvements
193 ([21720](https://github.com/civicrm/civicrm-core/pull/21720) and
194 [21894](https://github.com/civicrm/civicrm-core/pull/21894))**
195
196 Fixes sortable column headers on SearchKit admin tables and makes
197 click-sortable column headers configurable.
198
199 - **Add message admin to dist
200 ([21670](https://github.com/civicrm/civicrm-core/pull/21670))**
201
202 Adds Message admin extension.
203
204 - **message_admin - Add titles/hints to hyperlinks
205 ([21698](https://github.com/civicrm/civicrm-core/pull/21698))**
206
207 Adds help text to links on Message Admin Screen.
208
209 - **Replace expensive query with cheaper one
210 ([21426](https://github.com/civicrm/civicrm-core/pull/21426))**
211
212 Improves performance.
213
214 - **Add support for CiviCRM date formats in crmDate
215 ([21508](https://github.com/civicrm/civicrm-core/pull/21508))**
216
217 Adds support for CiviCRM date formats in crmDate.
218
219 - **Mailing Unsubscribe Form: Show if email is already unsubscribed
220 ([21174](https://github.com/civicrm/civicrm-core/pull/21174))**
221
222 Improves languaging on the Mailing Unsubscribe form regarding if the email is
223 already unsubscribed.
224
225 - **Change Do Not SMS privacy icon
226 ([dev/core#2754](https://lab.civicrm.org/dev/core/-/issues/2754):
227 [21354](https://github.com/civicrm/civicrm-core/pull/21354))**
228
229 Improves usability by improving the Do Not SMS icon.
230
231 ### CiviContribute
232
233 - **Add workflow template for 'recurring edit' workflow
234 ([21356](https://github.com/civicrm/civicrm-core/pull/21356) and
235 [21826](https://github.com/civicrm/civicrm-core/pull/21826))**
236
237 Adds workflow template for 'recurring edit' workflow
238
239 - **Can we re-order the 'recur links'
240 ([dev/core#2843](https://lab.civicrm.org/dev/core/-/issues/2843):
241 [21529](https://github.com/civicrm/civicrm-core/pull/21529))**
242
243 Improves user experience by reordering the contribution recur links.
244
245 - **View Contribution page, move the Done button to the last button, currently
246 shown in the middle
247 ([21547](https://github.com/civicrm/civicrm-core/pull/21547))**
248
249 Reorders buttons on the Contribution page to improve user experience.
250
251 - **Replace "Print Invoice" and "Print Invoice and Credit Note" buttons with
252 label "Download Invoice" and "Download Invoice and Credit Note"
253 ([21546](https://github.com/civicrm/civicrm-core/pull/21546))**
254
255 Improves labels for Invoice buttons.
256
257 ### CiviEvent
258
259 - **Custom Participant tokens not working in scheduled reminders
260 ([dev/core#348](https://lab.civicrm.org/dev/core/-/issues/348):
261 [21666](https://github.com/civicrm/civicrm-core/pull/21666))**
262
263 Adds support for participant tokens in scheduled reminders.
264
265 ### CiviMail
266
267 - **CRM-19236 - Fix Flexmailer extension to support unicode urls
268 ([21597](https://github.com/civicrm/civicrm-core/pull/21597))**
269
270 Updates flexmailer click tracking to support unicode urls.
271
272 - **Install flexmailer by default on new installs
273 ([dev/core#2836](https://lab.civicrm.org/dev/core/-/issues/2836):
274 [21522](https://github.com/civicrm/civicrm-core/pull/21522) and
275 [21830](https://github.com/civicrm/civicrm-core/pull/21830))**
276
277 Installs flexmailer on new installs by default.
278
279 ### CiviMember
280
281 - **Fix code to use Order api to create Memberships in core forms (Work Towards
282 [dev/core#2717](https://lab.civicrm.org/dev/core/-/issues/2717):
283 [21152](https://github.com/civicrm/civicrm-core/pull/21152))**
284
285 Use order api for new membership create in batch.
286
287 ### WordPress integration
288
289 - **Add deduping to Quick Add Dashboard Widget
290 ([256](https://github.com/civicrm/civicrm-wordpress/pull/256))**
291
292 Adds a simple deduplication check when submitting details via the "Quick Add
293 Contact to CiviCRM" Dashboard Widget.
294
295 ## <a name="bugs"></a>Bugs resolved
296
297 ### Core CiviCRM
298
299 - **Full Month Names: avoid relying on the operating system's locale for
300 translation
301 ([dev/translation#71](https://lab.civicrm.org/dev/translation/-/issues/71):
302 [21157](https://github.com/civicrm/civicrm-core/pull/21157))**
303
304 - **CRM_Utils_Date - Month and day names should match active locale
305 ([21569](https://github.com/civicrm/civicrm-core/pull/21569))**
306
307 - **System Workflow Messages - Improve localization experience (Work Towards
308 [dev/mail#83](https://lab.civicrm.org/dev/mail/-/issues/83):
309 [21773](https://github.com/civicrm/civicrm-core/pull/21773),
310 [21747](https://github.com/civicrm/civicrm-core/pull/21747),
311 [21774](https://github.com/civicrm/civicrm-core/pull/21774),
312 [21772](https://github.com/civicrm/civicrm-core/pull/21772),
313 [21590](https://github.com/civicrm/civicrm-core/pull/21590),
314 [21338](https://github.com/civicrm/civicrm-core/pull/21338),
315 [21480](https://github.com/civicrm/civicrm-core/pull/21480) and
316 [21486](https://github.com/civicrm/civicrm-core/pull/21486))**
317
318 - **When extensions do upgrades and add fields to tables, trigger-based logging
319 tables require the extension to do the right thing
320 ([dev/core#1618](https://lab.civicrm.org/dev/core/-/issues/1618):
321 [21135](https://github.com/civicrm/civicrm-core/pull/21135))**
322
323 - **Special characters become "?" On PDF report
324 ([dev/core#2126](https://lab.civicrm.org/dev/core/-/issues/2126):
325 [21423](https://github.com/civicrm/civicrm-core/pull/21423))**
326
327 - **Send an Email / Cancel button does not work
328 ([dev/core#2318](https://lab.civicrm.org/dev/core/-/issues/2318):
329 [21474](https://github.com/civicrm/civicrm-core/pull/21474))**
330
331 - **hook_civicrm_tokenValues inconsistent data
332 ([dev/core#2554](https://lab.civicrm.org/dev/core/-/issues/2554):
333 [21490](https://github.com/civicrm/civicrm-core/pull/21490))**
334
335 Remove code to assign contact to the template in sendEmail.
336
337 - **Use consistent token syntax for pseudoconstants
338 ([dev/core#2650](https://lab.civicrm.org/dev/core/-/issues/2650):
339 [21477](https://github.com/civicrm/civicrm-core/pull/21477),
340 [21464](https://github.com/civicrm/civicrm-core/pull/21464),
341 [21570](https://github.com/civicrm/civicrm-core/pull/21570) and
342 [21705](https://github.com/civicrm/civicrm-core/pull/21705))**
343
344 - **Remove unused token assigns (Work Towards
345 [dev/core#2748](https://lab.civicrm.org/dev/core/-/issues/2748):
346 [21059](https://github.com/civicrm/civicrm-core/pull/21059))**
347
348 Removes some no-longer-used token assigns & adds an upgrade message in case
349 people have templates still referring to them.
350
351 - **Something something tokens something tokens
352 ([dev/core#2856](https://lab.civicrm.org/dev/core/-/issues/2856):
353 [21580](https://github.com/civicrm/civicrm-core/pull/21580))**
354
355 Token "filter" can be null so filter[0] doesn't exist.
356
357 - **Fix contact tokens class to load using apiv4
358 ([21780](https://github.com/civicrm/civicrm-core/pull/21780))**
359
360 - **Remove case token listing from contact email task
361 ([21787](https://github.com/civicrm/civicrm-core/pull/21787))**
362
363 - **Fix another instance of double token rendering
364 ([21788](https://github.com/civicrm/civicrm-core/pull/21788))**
365
366 - **Fix token regression - re-add support for empty tokens
367 ([21756](https://github.com/civicrm/civicrm-core/pull/21756))**
368
369 - **Fix event custom field tokens in scheduled reminders
370 ([21374](https://github.com/civicrm/civicrm-core/pull/21374))**
371
372 - **Reference token metadata internally fix custom tokens label bug
373 ([21767](https://github.com/civicrm/civicrm-core/pull/21767))**
374
375 - **Participant tokens - remove / replace unsupportable from badges (conversion
376 preparation) ([21520](https://github.com/civicrm/civicrm-core/pull/21520))**
377
378 - **Fix activity tokens
379 ([21489](https://github.com/civicrm/civicrm-core/pull/21489))**
380
381 - **Ensure TokenSmary::render returns an array
382 ([21461](https://github.com/civicrm/civicrm-core/pull/21461))**
383
384 - **Replace event type token in action schedule changes event.event_type_id to
385 participant.event_type_id:label
386 ([dev/core#2892](https://lab.civicrm.org/dev/core/-/issues/2892):
387 [21738](https://github.com/civicrm/civicrm-core/pull/21738))**
388
389 - **Custom field multiselect of type int crashes when saving
390 ([dev/core#2772](https://lab.civicrm.org/dev/core/-/issues/2772):
391 [21186](https://github.com/civicrm/civicrm-core/pull/21186))**
392
393 - **Deduping produces bad results after a rule change
394 ([dev/core#2820](https://lab.civicrm.org/dev/core/-/issues/2820):
395 [21509](https://github.com/civicrm/civicrm-core/pull/21509))**
396
397 - **[REF] Extend 'managed' api to provide information about 'status' (Clean up
398 towards [dev/core#2823](https://lab.civicrm.org/dev/core/-/issues/2823):
399 [21399](https://github.com/civicrm/civicrm-core/pull/21399),
400 [21440](https://github.com/civicrm/civicrm-core/pull/21440),
401 [21400](https://github.com/civicrm/civicrm-core/pull/21400),
402 [21401](https://github.com/civicrm/civicrm-core/pull/21401),
403 [21412](https://github.com/civicrm/civicrm-core/pull/21412) and
404 [21395](https://github.com/civicrm/civicrm-core/pull/21395))**
405
406 - **Dashboard error `Trying to access array offset on value of type null`
407 ([dev/core#2829](https://lab.civicrm.org/dev/core/-/issues/2829):
408 [21441](https://github.com/civicrm/civicrm-core/pull/21441) and
409 [21437](https://github.com/civicrm/civicrm-core/pull/21437))**
410
411 - **Upgrade error - upgrading to 5.43
412 ([dev/core#2870](https://lab.civicrm.org/dev/core/-/issues/2870):
413 [21640](https://github.com/civicrm/civicrm-core/pull/21640))**
414
415 Fix upgrade error with rpow installed.
416
417 - **Search Builder: Fails validation when state_province location type is
418 "primary" and operator is "IN"
419 ([dev/core#2874](https://lab.civicrm.org/dev/core/-/issues/2874):
420 [21646](https://github.com/civicrm/civicrm-core/pull/21646))**
421
422 - **APIv3 "replace" action is broken when there is > 25 records to replace.
423 ([dev/core#2881](https://lab.civicrm.org/dev/core/-/issues/2881):
424 [21681](https://github.com/civicrm/civicrm-core/pull/21681))**
425
426 - **Add contacts to Group action missing custom fields
427 ([dev/core#2885](https://lab.civicrm.org/dev/core/-/issues/2885):
428 [21716](https://github.com/civicrm/civicrm-core/pull/21716))**
429
430 - **Find Activities + Send Email task always says the contact is on hold or
431 deceased etc ([dev/core#2901](https://lab.civicrm.org/dev/core/-/issues/2901):
432 [21781](https://github.com/civicrm/civicrm-core/pull/21781))**
433
434 - **Afform - Fix chainSelect to work with anonymous users
435 ([21759](https://github.com/civicrm/civicrm-core/pull/21759))**
436
437 - **Afform - Fix chain-select of country and address to work on SearchKit forms
438 ([21749](https://github.com/civicrm/civicrm-core/pull/21749))**
439
440 - **Afform - gracefully handle missing html files
441 ([21436](https://github.com/civicrm/civicrm-core/pull/21436))**
442
443 - **Afform - fix loading embedded blocks
444 ([21609](https://github.com/civicrm/civicrm-core/pull/21609))**
445
446 - **Afform - ensure default value data type matches input type
447 ([21643](https://github.com/civicrm/civicrm-core/pull/21643))**
448
449 - **api4 explorer - entity displays as `\undefined` in the generated code sample
450 ([dev/core#2867](https://lab.civicrm.org/dev/core/-/issues/2867):
451 [21634](https://github.com/civicrm/civicrm-core/pull/21634))**
452
453 - **APIv4 - Default select clause to exclude "Extra" fields
454 ([21438](https://github.com/civicrm/civicrm-core/pull/21438))**
455
456 - **APIv4 - Give every SQL expression a title
457 ([21691](https://github.com/civicrm/civicrm-core/pull/21691))**
458
459 - **APIv4 - Automatically coalesce potentially null field values in equations
460 ([21647](https://github.com/civicrm/civicrm-core/pull/21647))**
461
462 - **UX: Deleting a saved Search Kit search should warn/delete associated afforms
463 ([dev/core#2824](https://lab.civicrm.org/dev/core/-/issues/2824):
464 [21457](https://github.com/civicrm/civicrm-core/pull/21457))**
465
466 - **search kit: deleting a search has weird confirmation dialog box
467 ([dev/core#2826](https://lab.civicrm.org/dev/core/-/issues/2826):
468 [21404](https://github.com/civicrm/civicrm-core/pull/21404))**
469
470 - **New download spreadsheet search kit feature broken
471 ([dev/core#2888](https://lab.civicrm.org/dev/core/-/issues/2888):
472 [21724](https://github.com/civicrm/civicrm-core/pull/21724))**
473
474 - **SearchKit - Style buttons for compatability with Shoreditch theme
475 ([21627](https://github.com/civicrm/civicrm-core/pull/21627))**
476
477 - **SearchKit - tweak button styles for shorditch
478 ([21726](https://github.com/civicrm/civicrm-core/pull/21726))**
479
480 Tweaks the "Tags" and "Add" buttons in SearchKit to look better in Shoreditch,
481 and tidies up some ts() calls.
482
483 - **SearchKit - A random stable genius
484 ([21586](https://github.com/civicrm/civicrm-core/pull/21586))**
485
486 Allows the pager, edit-in-place, and bulk updates to work properly with random
487 sorting.
488
489 - **SearchKit - Exclude custom fields from ON clause selector
490 ([21495](https://github.com/civicrm/civicrm-core/pull/21495))**
491
492 Custom fields cannot as-yet be added to an ON clause in APIv4 because they do
493 not belong to the tables being joined. This removes the tripping hazard from
494 the UI, by making custom fields unavailable to select in an ON clause.
495
496 - **SearchKit - Fix links to non-aggregage join fields
497 ([21482](https://github.com/civicrm/civicrm-core/pull/21482))**
498
499 - **SearchKit - Fix display of links in aggregated columns
500 ([21420](https://github.com/civicrm/civicrm-core/pull/21420))**
501
502 - **SearchKit - Fix alignment in table headers
503 ([21431](https://github.com/civicrm/civicrm-core/pull/21431))**
504
505 - **SearchKit - Correctly process filters passed through Afform from js
506 ([21485](https://github.com/civicrm/civicrm-core/pull/21485))**
507
508 - **SearchKit - Prevent race conditions in search display loading
509 ([21394](https://github.com/civicrm/civicrm-core/pull/21394))**
510
511 - **[search kit] Semicolon vs comma
512 ([21406](https://github.com/civicrm/civicrm-core/pull/21406))**
513
514 - **message_admin Style fixes
515 ([21712](https://github.com/civicrm/civicrm-core/pull/21712))**
516
517 - **message_admin - Fix quirk when using "Create Draft"
518 ([21700](https://github.com/civicrm/civicrm-core/pull/21700))**
519
520 - **MessageTemplate API - Fix saving of templates with workflow_name sans
521 workflow_id ([21694](https://github.com/civicrm/civicrm-core/pull/21694))**
522
523 - **Find Activities Search, default search option for Activity Text is set to
524 "both" in the code, but should actually be set to 6 which is the value for
525 "both" ([21598](https://github.com/civicrm/civicrm-core/pull/21598))**
526
527 - **UFMatch - E_NOTICE when nonexistent uf_id
528 ([21576](https://github.com/civicrm/civicrm-core/pull/21576))**
529
530 - **flushCaches should respect permitCacheFlushMode. Also flush caches which
531 have a NULL cache_date
532 ([21430](https://github.com/civicrm/civicrm-core/pull/21430))**
533
534 - **Setting::getItem - use deprecatedWarning instead of just logging
535 ([21625](https://github.com/civicrm/civicrm-core/pull/21625))**
536
537 - **Fix display of subscription frequency on 'Update Subscription' form
538 ([21469](https://github.com/civicrm/civicrm-core/pull/21469))**
539
540 - **Fix bug where log hook is ignored on custom field create
541 ([21557](https://github.com/civicrm/civicrm-core/pull/21557))**
542
543 - **Set default for civicrm_message_template.is_reserved
544 ([21651](https://github.com/civicrm/civicrm-core/pull/21651))**
545
546 - **CiviReport - avoid error in test environments when using built-in php web
547 server ([21560](https://github.com/civicrm/civicrm-core/pull/21560))**
548
549 - **Update SelfSvcUpdate.php
550 ([21679](https://github.com/civicrm/civicrm-core/pull/21679))**
551
552 Changes "cancel" text to read "cancel registration".
553
554 - **Import csv-Fix not importing extension in phones
555 ([20995](https://github.com/civicrm/civicrm-core/pull/20995))**
556
557 - **Missed message template updates from 5.39/5.40
558 ([21550](https://github.com/civicrm/civicrm-core/pull/21550))**
559
560 - **Don't clear the GroupContactCache until we're ready to insert the new
561 version ([21384](https://github.com/civicrm/civicrm-core/pull/21384))**
562
563 - **Fix syntax error on a ts() function call
564 ([21518](https://github.com/civicrm/civicrm-core/pull/21518))**
565
566 - **flushCaches should respect permitCacheFlushMode
567 ([21468](https://github.com/civicrm/civicrm-core/pull/21468))**
568
569 - **Smarty warning about missing contact subtype on New Individual
570 ([21410](https://github.com/civicrm/civicrm-core/pull/21410))**
571
572 - **Fix Upgrade step to ensure all fields are converted correctly as well
573 ([21396](https://github.com/civicrm/civicrm-core/pull/21396))**
574
575 - **Don't specify character set for civicrm_relationship_cache table
576 ([21382](https://github.com/civicrm/civicrm-core/pull/21382))**
577
578 - **Error about count() on New Email
579 ([21714](https://github.com/civicrm/civicrm-core/pull/21714))**
580
581 - **Fix generating civicrm.settings.php by ensuring that CMSdbSSL and dbSSL
582 variables are properly removed from the DSNs
583 ([63](https://github.com/civicrm/civicrm-joomla/pull/63))**
584
585 - **Smarty notices on Find Activities results page
586 ([21422](https://github.com/civicrm/civicrm-core/pull/21422))**
587
588 - **Smarty notice on Find Activities / Find Cases
589 ([21421](https://github.com/civicrm/civicrm-core/pull/21421))**
590
591 - **Tpl notice fixes
592 ([21503](https://github.com/civicrm/civicrm-core/pull/21503))**
593
594 - **Fix extra apostrophe added in 21636
595 ([21650](https://github.com/civicrm/civicrm-core/pull/21650))**
596
597 - **avoid back trace when importing preferred communication method
598 ([21433](https://github.com/civicrm/civicrm-core/pull/21433))**
599
600 - **Fixed issue with sending from do-not-reply@domain address
601 ([21455](https://github.com/civicrm/civicrm-core/pull/21455))**
602
603 - **Find Activities Search, the default search option of "With" criteria
604 excludes Activities by default. Confuses End Users when 0 results are returned
605 when criteria appears to be correct.
606 ([21595](https://github.com/civicrm/civicrm-core/pull/21595))**
607
608 - **Do not send email notification to the user if `notify` is not set in the
609 params ([21562](https://github.com/civicrm/civicrm-core/pull/21562))**
610
611 - **ensure blank note date in UI defaults to current date.
612 ([21717](https://github.com/civicrm/civicrm-core/pull/21717))**
613
614 - **System status checks only shows 25 messages
615 ([21748](https://github.com/civicrm/civicrm-core/pull/21748))**
616
617 - **Enotice fixes
618 ([21723](https://github.com/civicrm/civicrm-core/pull/21723))**
619
620 - **Enotice tpl fix
621 ([21689](https://github.com/civicrm/civicrm-core/pull/21689))**
622
623 - **Enotice fix
624 ([21782](https://github.com/civicrm/civicrm-core/pull/21782))**
625
626 - **Enotice fix
627 ([21732](https://github.com/civicrm/civicrm-core/pull/21732))**
628
629 - **enotice fix
630 ([21702](https://github.com/civicrm/civicrm-core/pull/21702))**
631
632 - **typo fixes
633 ([21655](https://github.com/civicrm/civicrm-core/pull/21655))**
634
635 - **Enotice fix
636 ([21636](https://github.com/civicrm/civicrm-core/pull/21636))**
637
638 - **enotice fix
639 ([21631](https://github.com/civicrm/civicrm-core/pull/21631))**
640
641 - **Enotice fix
642 ([21579](https://github.com/civicrm/civicrm-core/pull/21579))**
643
644 - **Fix header e-notices
645 ([21633](https://github.com/civicrm/civicrm-core/pull/21633))**
646
647 - **Enotice fix
648 ([21658](https://github.com/civicrm/civicrm-core/pull/21658))**
649
650 - **Enotice fixes
651 ([21659](https://github.com/civicrm/civicrm-core/pull/21659))**
652
653 - **Enotice fixes
654 ([21632](https://github.com/civicrm/civicrm-core/pull/21632))**
655
656 - **enotice fixes in fatal error template
657 ([21639](https://github.com/civicrm/civicrm-core/pull/21639))**
658
659 - **Tpl notice fix
660 ([21543](https://github.com/civicrm/civicrm-core/pull/21543))**
661
662 - **tpl enotice fixes on extensions page
663 ([21545](https://github.com/civicrm/civicrm-core/pull/21545))**
664
665 - **Tpl notice fixes
666 ([21544](https://github.com/civicrm/civicrm-core/pull/21544))**
667
668 - **Tpl enotice fixes
669 ([21542](https://github.com/civicrm/civicrm-core/pull/21542))**
670
671 - **Enotice fixes in tpls
672 ([21541](https://github.com/civicrm/civicrm-core/pull/21541))**
673
674 - **Add missing ts
675 ([21711](https://github.com/civicrm/civicrm-core/pull/21711))**
676
677 - **Another enotice fix
678 ([21682](https://github.com/civicrm/civicrm-core/pull/21682))**
679
680 - **And another one
681 ([21683](https://github.com/civicrm/civicrm-core/pull/21683))**
682
683 - **Another one bites the dust
684 ([21684](https://github.com/civicrm/civicrm-core/pull/21684))**
685
686 - **Fix possibly undefined $form variables in smarty templates
687 ([21735](https://github.com/civicrm/civicrm-core/pull/21735))**
688
689 - **Fix regression from enotice fixes
690 ([21743](https://github.com/civicrm/civicrm-core/pull/21743))**
691
692 - **Count of sent messages can be wrong in status popup for email form
693 ([dev/core#2914](https://lab.civicrm.org/dev/core/-/issues/2914):
694 [21827](https://github.com/civicrm/civicrm-core/pull/21827))
695
696 - **[REF] Fix pseduoconstant token rendering for contributions via legacy way on
697 php8 and include campaign_id pseudoconsntants as well
698 ([21958](https://github.com/civicrm/civicrm-core/pull/21958))**
699
700 ### CiviCase
701
702 - **For latest iteration of case email form, don't fail when there's no To
703 contact ([21737](https://github.com/civicrm/civicrm-core/pull/21737))**
704
705 ### CiviContribute
706
707 - **Fix PHP notices in contributionrecur tpl
708 ([21526](https://github.com/civicrm/civicrm-core/pull/21526))**
709
710 - **Follow up on removing contributeMode from templates
711 ([21417](https://github.com/civicrm/civicrm-core/pull/21417))**
712
713 - **Getting system status message about contributeMode after upgrade to 5.43
714 when it seems like it shouldn't
715 ([dev/core#2828](https://lab.civicrm.org/dev/core/-/issues/2828):
716 [21434](https://github.com/civicrm/civicrm-core/pull/21434))**
717
718 - **Participant Status: pending refund can have two conflicting meanings (Work
719 Towards [dev/core#2629](https://lab.civicrm.org/dev/core/-/issues/2629):
720 [21624](https://github.com/civicrm/civicrm-core/pull/21624))**
721
722 Only show contribution statuses on contribution form.
723
724 - **Money - create new Civi:: facade - now format helper (Work Towards:
725 [dev/core#2638](https://lab.civicrm.org/dev/core/-/issues/2638):
726 [21599](https://github.com/civicrm/civicrm-core/pull/21599))**
727
728 Adds a helper function for formatting.
729
730 - **CiviCRM 5.35.1, truncation of money values where $1,000 donation is recorded
731 as $1 which appears to be truncating at the thousand separator when using the
732 Australian (AU) and US Locale (Work Towards
733 [dev/core#2493](https://lab.civicrm.org/dev/core/-/issues/2493):
734 [21555](https://github.com/civicrm/civicrm-core/pull/21555))**
735
736 Ensures that any money fields retrieved by getSubmittedValue are in a machine
737 usable format.
738
739 - **[regression-ish] When a recurring contribution template has no line items,
740 the contact contribution tab crashes
741 ([dev/financial#187](https://lab.civicrm.org/dev/financial/-/issues/187):
742 [21729](https://github.com/civicrm/civicrm-core/pull/21729))**
743
744 - **ContributionRecur modified_date should update to current_timestamp on update
745 ([21472](https://github.com/civicrm/civicrm-core/pull/21472))**
746
747 - **ensure recur options are present on backend cc contribution form.
748 ([21577](https://github.com/civicrm/civicrm-core/pull/21577))**
749
750 ### CiviEvent
751
752 - **Flush metadata cache on event edit
753 ([21740](https://github.com/civicrm/civicrm-core/pull/21740))**
754
755 - **Fix Badge to use token processor
756 ([dev/core#2834](https://lab.civicrm.org/dev/core/-/issues/2834):
757 [21458](https://github.com/civicrm/civicrm-core/pull/21458) and
758 [21587](https://github.com/civicrm/civicrm-core/pull/21587))**
759
760 - **Event confirmation emails should go to the email submitted, not primary
761 email ([dev/event#64](https://lab.civicrm.org/dev/event/-/issues/64):
762 [21669](https://github.com/civicrm/civicrm-core/pull/21669))**
763
764 - **Fix label for participant role
765 ([21656](https://github.com/civicrm/civicrm-core/pull/21656))**
766
767 ### CiviMail
768
769 - **flexmailer - Update `[CiviMail Draft]` prefix to match BAO behavior
770 ([21715](https://github.com/civicrm/civicrm-core/pull/21715))**
771
772 - **update_email_resetdate job does not consider opt out on hold
773 ([dev/core#2850](https://lab.civicrm.org/dev/core/-/issues/2850):
774 [21564](https://github.com/civicrm/civicrm-core/pull/21564))**
775
776 - **Start phasing out 'preferred_mail_format' (Work Towards
777 [dev/core#2866](https://lab.civicrm.org/dev/core/-/issues/2866):
778 [21676](https://github.com/civicrm/civicrm-core/pull/21676))**
779
780 ### Drupal Integration
781
782 - **Contact Image uploaded from Drupal Webform doesn't render on Drupal View as
783 a thumbnail. ([dev/drupal#13](https://lab.civicrm.org/dev/drupal/issues/13):
784 [524](https://github.com/civicrm/civicrm-drupal/pull/524))**
785
786 - **Session erroneously getting set to NULL on Drupal user login
787 ([dev/drupal#163](https://lab.civicrm.org/dev/drupal/-/issues/163):
788 [21403](https://github.com/civicrm/civicrm-core/pull/21403))**
789
790 ### WordPress integration
791
792 - **Wordpress Profile User Creation Sign On (v2)
793 ([20807](https://github.com/civicrm/civicrm-core/pull/20807))**
794
795 Ensures user is logged in on profile submission.
796
797 ## <a name="misc"></a>Miscellany
798
799 - **MessageTemplate - Deprecate `valueName`. Emphasize `workflow`. Consolidate
800 converters. ([21657](https://github.com/civicrm/civicrm-core/pull/21657))**
801
802 - **Bump minimum upgradable version to 4.5.9
803 ([21408](https://github.com/civicrm/civicrm-core/pull/21408))**
804
805 - **Use Case form for case email action
806 ([21688](https://github.com/civicrm/civicrm-core/pull/21688))**
807
808 - **Consolidate building of contact token list
809 ([21429](https://github.com/civicrm/civicrm-core/pull/21429),
810 [21761](https://github.com/civicrm/civicrm-core/pull/21761), and
811 [dev/core#2907](https://lab.civicrm.org/dev/core/-/issues/2907):
812 [21812](https://github.com/civicrm/civicrm-core/pull/21812))**
813
814 - **Remove call to legacy getTokenDetails
815 ([21786](https://github.com/civicrm/civicrm-core/pull/21786))**
816
817 - **Remove extraneous call to legacy token processing in sms task
818 ([21785](https://github.com/civicrm/civicrm-core/pull/21785))**
819
820 - **Remove stray token code
821 ([21763](https://github.com/civicrm/civicrm-core/pull/21763))**
822
823 - **Stop using `replaceContributionTokens` in core
824 ([dev/core#2851](https://lab.civicrm.org/dev/core/-/issues/2851):
825 [21525](https://github.com/civicrm/civicrm-core/pull/21525) and
826 [21565](https://github.com/civicrm/civicrm-core/pull/21565))**
827
828 - **Add SqlFunction support in addWhere
829 ([21301](https://github.com/civicrm/civicrm-core/pull/21301))**
830
831 - **Deprecate `replaceEntityTokens`, stop using in core
832 ([dev/core#2832](https://lab.civicrm.org/dev/core/-/issues/2832):
833 [21506](https://github.com/civicrm/civicrm-core/pull/21506),
834 [21521](https://github.com/civicrm/civicrm-core/pull/21521),
835 [21452](https://github.com/civicrm/civicrm-core/pull/21452) and
836 [21453](https://github.com/civicrm/civicrm-core/pull/21453))**
837
838 - **Deprecate `replaceCaseTokens` in core
839 ([dev/core#2817](https://lab.civicrm.org/dev/core/-/issues/2817):
840 [21380](https://github.com/civicrm/civicrm-core/pull/21380),
841 [21445](https://github.com/civicrm/civicrm-core/pull/21445),
842 [21383](https://github.com/civicrm/civicrm-core/pull/21383),
843 [21381](https://github.com/civicrm/civicrm-core/pull/21381),
844 [21447](https://github.com/civicrm/civicrm-core/pull/21447) and
845 [21475](https://github.com/civicrm/civicrm-core/pull/21475))**
846
847 - **Stop using replaceContactTokens in core (Work Towards
848 [dev/core#2814](https://lab.civicrm.org/dev/core/-/issues/2814):
849 [21365](https://github.com/civicrm/civicrm-core/pull/21365),
850 [21414](https://github.com/civicrm/civicrm-core/pull/21414),
851 [21364](https://github.com/civicrm/civicrm-core/pull/21364),
852 [21379](https://github.com/civicrm/civicrm-core/pull/21379),
853 [21377](https://github.com/civicrm/civicrm-core/pull/21377),
854 [21378](https://github.com/civicrm/civicrm-core/pull/21378),
855 [21568](https://github.com/civicrm/civicrm-core/pull/21568),
856 [21494](https://github.com/civicrm/civicrm-core/pull/21494),
857 [21367](https://github.com/civicrm/civicrm-core/pull/21367) and
858 [21449](https://github.com/civicrm/civicrm-core/pull/21449))**
859
860 - **[REF] Cleanup pdf classes to use a trait like we do for email classes
861 ([dev/core#2790](https://lab.civicrm.org/dev/core/-/issues/2790):
862 [21478](https://github.com/civicrm/civicrm-core/pull/21478),
863 [21479](https://github.com/civicrm/civicrm-core/pull/21479),
864 [21366](https://github.com/civicrm/civicrm-core/pull/21366),
865 [21359](https://github.com/civicrm/civicrm-core/pull/21359) and
866 [21335](https://github.com/civicrm/civicrm-core/pull/21335))**
867
868 - **Afform - Add getters/setters to the AfformSubmitEvent class
869 ([21572](https://github.com/civicrm/civicrm-core/pull/21572))**
870
871 - **Api v4 contact delete bug (Cleanup Towards
872 [dev/core#2757](https://lab.civicrm.org/dev/core/-/issues/2757):
873 [21210](https://github.com/civicrm/civicrm-core/pull/21210),
874 [21198](https://github.com/civicrm/civicrm-core/pull/21198),
875 [21211](https://github.com/civicrm/civicrm-core/pull/21211) and
876 [21199](https://github.com/civicrm/civicrm-core/pull/21199))**
877
878 - **[REF] Separate repeattransaction from completeorder function - only call the
879 latter from payment.create
880 (Cleanup Towards [dev/core#2716](https://lab.civicrm.org/dev/core/-/issues/2716):
881 [20856](https://github.com/civicrm/civicrm-core/pull/20856))**
882
883 - **Financial record processing - extract to new class to faciliate cleanup
884 (Work Towards [dev/core#2715](https://lab.civicrm.org/dev/core/-/issues/2715):
885 [20985](https://github.com/civicrm/civicrm-core/pull/20985) and
886 [21370](https://github.com/civicrm/civicrm-core/pull/21370))**
887
888 - **Add unique class to price field template
889 ([21484](https://github.com/civicrm/civicrm-core/pull/21484))**
890
891 - **Clean up UpdateBilling/UpdateSubscription/ContributionRecur to use getters
892 ([21538](https://github.com/civicrm/civicrm-core/pull/21538))**
893
894 - **[REF] Fix form to call this->setTitle()
895 ([21362](https://github.com/civicrm/civicrm-core/pull/21362))**
896
897 - **Update use of CRM_Utils_System::setTitle() for legacycustomsearches
898 ([21375](https://github.com/civicrm/civicrm-core/pull/21375))**
899
900 - **Switch to CRM_Core_Form::setTitle() instead of CRM_Utils_System::setTitle()
901 part 2 ([21202](https://github.com/civicrm/civicrm-core/pull/21202))**
902
903 - **Switch to CRM_Core_Form::setTitle() instead of CRM_Utils_System::setTitle()
904 part 3 ([21352](https://github.com/civicrm/civicrm-core/pull/21352))**
905
906 - **Switch to CRM_Core_Form::setTitle() instead of CRM_Utils_System::setTitle()
907 part 4 ([21368](https://github.com/civicrm/civicrm-core/pull/21368))**
908
909 - **Simplify getRecurFromAddress
910 ([21613](https://github.com/civicrm/civicrm-core/pull/21613))**
911
912 - **Return another function to the email trait
913 ([21677](https://github.com/civicrm/civicrm-core/pull/21677))**
914
915 - **Rename test clas to reflect tested class name
916 ([21686](https://github.com/civicrm/civicrm-core/pull/21686))**
917
918 - **Remove unused function - convertDateFieldsToMySQL
919 ([21617](https://github.com/civicrm/civicrm-core/pull/21617))**
920
921 - **Remove all references to safe_mode, DEPRECATED as of PHP 5.3.0 and REMOVED
922 as of PHP 5.4.0
923 ([21594](https://github.com/civicrm/civicrm-core/pull/21594))**
924
925 - **Remove duplicate global declaration in civicrm.settings.php template
926 ([21409](https://github.com/civicrm/civicrm-core/pull/21409))**
927
928 - **Remove broken code
929 ([21602](https://github.com/civicrm/civicrm-core/pull/21602))**
930
931 - **Remove call to the dreaded replaceMultipleContributionTokens
932 ([21652](https://github.com/civicrm/civicrm-core/pull/21652))**
933
934 - **Remove handling for empty required field
935 ([21623](https://github.com/civicrm/civicrm-core/pull/21623))**
936
937 - **Remove error handling for core error being returned
938 ([21425](https://github.com/civicrm/civicrm-core/pull/21425))**
939
940 - **Remove over-copied function
941 ([21641](https://github.com/civicrm/civicrm-core/pull/21641))**
942
943 - **Remove unused paramter
944 ([21685](https://github.com/civicrm/civicrm-core/pull/21685))**
945
946 - **Remove deprecated code lines
947 ([21566](https://github.com/civicrm/civicrm-core/pull/21566))**
948
949 - **Remove workflow_id reference
950 ([21671](https://github.com/civicrm/civicrm-core/pull/21671))**
951
952 - **Remove now-silly function
953 ([21680](https://github.com/civicrm/civicrm-core/pull/21680))**
954
955 - **Remove fugly bit
956 ([21497](https://github.com/civicrm/civicrm-core/pull/21497))**
957
958 - **Remove requirement to enter email address on Opt Out
959 ([21350](https://github.com/civicrm/civicrm-core/pull/21350))**
960
961 - **Remove requirement to enter email address on unsubscribe
962 ([21175](https://github.com/civicrm/civicrm-core/pull/21175))**
963
964 - **Remove deprecated input variable
965 ([21372](https://github.com/civicrm/civicrm-core/pull/21372))**
966
967 - **Remove unused private function
968 ([21371](https://github.com/civicrm/civicrm-core/pull/21371))**
969
970 - **Remove deprecated function
971 ([21361](https://github.com/civicrm/civicrm-core/pull/21361))**
972
973 - **Remove testing hack
974 ([21360](https://github.com/civicrm/civicrm-core/pull/21360))**
975
976 - **Remove deprecated function
977 ([21358](https://github.com/civicrm/civicrm-core/pull/21358))**
978
979 - **Removes duplicate replace on event fee amount.
980 ([21739](https://github.com/civicrm/civicrm-core/pull/21739))**
981
982 - **Remove function duplicated in error
983 ([21758](https://github.com/civicrm/civicrm-core/pull/21758))**
984
985 - **Remove now-obsolete getPseudoTokens
986 ([21760](https://github.com/civicrm/civicrm-core/pull/21760))**
987
988 - **APIv4 - Minor code cleanup to improve efficiency in
989 CreateApi4RequestSubscriber
990 ([21775](https://github.com/civicrm/civicrm-core/pull/21775))**
991
992 - **Function cleanup following move to non-static function
993 ([21693](https://github.com/civicrm/civicrm-core/pull/21693))**
994
995 - **[REF] Extract getRedirectUrl method
996 ([21687](https://github.com/civicrm/civicrm-core/pull/21687))**
997
998 - **[REF] Copy another email trait function back to the trait
999 ([21648](https://github.com/civicrm/civicrm-core/pull/21648))**
1000
1001 - **REF - Remove non-functional code from APIv3
1002 ([21727](https://github.com/civicrm/civicrm-core/pull/21727))**
1003
1004 - **[REF] Do not set input['line_item'] pointlessly
1005 ([21311](https://github.com/civicrm/civicrm-core/pull/21311))**
1006
1007 - **[REF] Use getSubmittedValue rather than passed values
1008 ([21668](https://github.com/civicrm/civicrm-core/pull/21668))**
1009
1010 - **(REF) MessageTemplate - Reverse renderTemplate()<=>sendTemplate() call
1011 ([21610](https://github.com/civicrm/civicrm-core/pull/21610))**
1012
1013 - **[REF] Separate contact tokens from 'tokenCompatSubscriber'
1014 ([21626](https://github.com/civicrm/civicrm-core/pull/21626))**
1015
1016 - **[Ref] Function signature cleanup
1017 ([21618](https://github.com/civicrm/civicrm-core/pull/21618))**
1018
1019 - **[REF] Return the sendEmail function to it's owner
1020 ([21608](https://github.com/civicrm/civicrm-core/pull/21608))**
1021
1022 - **[REF] Remove illusion of looping
1023 ([21554](https://github.com/civicrm/civicrm-core/pull/21554))**
1024
1025 - **[Ref] Extend email trait test, process more sanely
1026 ([21553](https://github.com/civicrm/civicrm-core/pull/21553))**
1027
1028 - **[REF] Extract domain tokens to their own class
1029 ([21510](https://github.com/civicrm/civicrm-core/pull/21510))**
1030
1031 - **[REF] add test & static array to participant values tokens
1032 ([21476](https://github.com/civicrm/civicrm-core/pull/21476))**
1033
1034 - **[REF] simplify member_tokens
1035 ([21481](https://github.com/civicrm/civicrm-core/pull/21481))**
1036
1037 - **[Ref] Cleanup on SelectValues::contributeTokens
1038 ([21465](https://github.com/civicrm/civicrm-core/pull/21465))**
1039
1040 - **[Ref] Remove pass-by-reference
1041 ([21466](https://github.com/civicrm/civicrm-core/pull/21466))**
1042
1043 - **[Ref] Remove unnecessary pass-by-reference
1044 ([21463](https://github.com/civicrm/civicrm-core/pull/21463))**
1045
1046 - **[REF] Use OO when determining what to suggest for settings.php prefixes for
1047 drupal/backdrop views, instead of scattered "if cms =="
1048 ([21042](https://github.com/civicrm/civicrm-core/pull/21042))**
1049
1050 - **[REF] Remove unused parameter
1051 ([21448](https://github.com/civicrm/civicrm-core/pull/21448))**
1052
1053 - **[REF] Remove unused variable
1054 ([21451](https://github.com/civicrm/civicrm-core/pull/21451))**
1055
1056 - **[REF] Extract code to load the contact in tokenCompat
1057 ([21450](https://github.com/civicrm/civicrm-core/pull/21450))**
1058
1059 - **[REF] Extract function to getDomainTokens
1060 ([21416](https://github.com/civicrm/civicrm-core/pull/21416))**
1061
1062 - **[REF] Remove cruft
1063 ([21418](https://github.com/civicrm/civicrm-core/pull/21418))**
1064
1065 - **[REF] Extract code to get the from address for a recurring contribution.
1066 ([21357](https://github.com/civicrm/civicrm-core/pull/21357))**
1067
1068 - **[Ref] Remove no-longer-used variables
1069 ([21459](https://github.com/civicrm/civicrm-core/pull/21459))**
1070
1071 - **[REF] Update Frequenecy template assignments in UpdateBilling to be
1072 consistent with #21469
1073 ([21635](https://github.com/civicrm/civicrm-core/pull/21635))**
1074
1075 - **[REF] Update Product Create to use hooks and also switch the manage
1076 product/premium page to use APIv4 Product Entity
1077 ([20822](https://github.com/civicrm/civicrm-core/pull/20822))**
1078
1079 - **[REF] Add in upgrade step to align the relationship cache table collation
1080 and charset with the other tables
1081 ([21389](https://github.com/civicrm/civicrm-core/pull/21389))**
1082
1083 - **[REF] stop passing form into createActivities
1084 ([21653](https://github.com/civicrm/civicrm-core/pull/21653))**
1085
1086 - **[REF] Extract function for re-use
1087 ([21778](https://github.com/civicrm/civicrm-core/pull/21778))**
1088
1089 - **[REF] Move getCustomFieldTokens to the tokens class, annotate more
1090 deprecations ([21660](https://github.com/civicrm/civicrm-core/pull/21660))**
1091
1092 - **Update contributors for Third Sector Design
1093 ([21516](https://github.com/civicrm/civicrm-core/pull/21516))**
1094
1095 - **[NFC/Unit test] - Fix test fail on php 7.4
1096 CRM_Core_BAO_MessageTemplateTest::testCaseActivityCopyTemplate
1097 ([21443](https://github.com/civicrm/civicrm-core/pull/21443))**
1098
1099 - **[NFC/Unit Test] Remove wombats and bananas from
1100 sites/default/files/civicrm/custom
1101 ([21768](https://github.com/civicrm/civicrm-core/pull/21768))**
1102
1103 - **[NFC/Unit test] - Fix secondary issue with case token consistency test
1104 ([21369](https://github.com/civicrm/civicrm-core/pull/21369))**
1105
1106 - **Authx: README: add note about CMS permissions
1107 ([21439](https://github.com/civicrm/civicrm-core/pull/21439))**
1108
1109 - **[NFC] Add test for new case email url
1110 ([21766](https://github.com/civicrm/civicrm-core/pull/21766))**
1111
1112 - **[NFC] Afform - Add array shape annotations to FormDataModel
1113 ([21765](https://github.com/civicrm/civicrm-core/pull/21765))**
1114
1115 - **[NFC] Unit test fixes for the problem of quickform rules going missing
1116 ([21725](https://github.com/civicrm/civicrm-core/pull/21725))**
1117
1118 - **NFC - Update code comments
1119 ([21675](https://github.com/civicrm/civicrm-core/pull/21675))**
1120
1121 - **[NFC] Unit test for file-on-case
1122 ([21678](https://github.com/civicrm/civicrm-core/pull/21678))**
1123
1124 - **[NFC] [test] minor cleanup in test
1125 ([21498](https://github.com/civicrm/civicrm-core/pull/21498))**
1126
1127 - **[NFC] Fix Fatal error on php 8 due to mis matched function declaration
1128 ([21487](https://github.com/civicrm/civicrm-core/pull/21487))**
1129
1130 - **[NFC] Put back email test without tokens and enhance a little
1131 ([21398](https://github.com/civicrm/civicrm-core/pull/21398))**
1132
1133 - **[NFC] Extend send email test to cover for contact tokens being replaced
1134 ([21386](https://github.com/civicrm/civicrm-core/pull/21386))**
1135
1136 - **[NFC] Add in type hints to template upgrade functions
1137 ([21390](https://github.com/civicrm/civicrm-core/pull/21390))**
1138
1139 - **NFC Clarify description for ckeditor4 plugin
1140 ([21349](https://github.com/civicrm/civicrm-core/pull/21349))**
1141
1142 - **Improve test readability, use schema labels for membership tokens
1143 ([21708](https://github.com/civicrm/civicrm-core/pull/21708))**
1144
1145 - **Add test to cancel subscription form
1146 ([21588](https://github.com/civicrm/civicrm-core/pull/21588))**
1147
1148 - **Fix test to test trait not deprecated function
1149 ([21373](https://github.com/civicrm/civicrm-core/pull/21373))**
1150
1151 - **Fix test
1152 ([21585](https://github.com/civicrm/civicrm-core/pull/21585))**
1153
1154 - **Tests - update to use postProcess
1155 ([21637](https://github.com/civicrm/civicrm-core/pull/21637))**
1156
1157 - **Basic IDE cleanup on test class
1158 ([21661](https://github.com/civicrm/civicrm-core/pull/21661))**
1159
1160 - **Test fix
1161 ([21662](https://github.com/civicrm/civicrm-core/pull/21662))**
1162
1163 - **tests/events/*.php - Enforce general compliance with hook/event signatures
1164 ([21615](https://github.com/civicrm/civicrm-core/pull/21615))**
1165
1166 - **HttpTestTrait - Allow one to easily authenticate subrequests
1167 ([21261](https://github.com/civicrm/civicrm-core/pull/21261))**
1168
1169 - **Test regression fix
1170 ([21649](https://github.com/civicrm/civicrm-core/pull/21649))**
1171
1172 - **Test tearDown fixes
1173 ([21548](https://github.com/civicrm/civicrm-core/pull/21548))**
1174
1175 - **Convert more tests to call postProcess
1176 ([21628](https://github.com/civicrm/civicrm-core/pull/21628))**
1177
1178 - **Stop testing for gender_id output that was described as 'legacy' years ago
1179 ([21558](https://github.com/civicrm/civicrm-core/pull/21558))**
1180
1181 - **Test cleanup
1182 ([21622](https://github.com/civicrm/civicrm-core/pull/21622))**
1183
1184 - **Fix test to use postProcess
1185 ([21630](https://github.com/civicrm/civicrm-core/pull/21630))**
1186
1187 - **Test cleanup -convert to use postProcess
1188 ([21629](https://github.com/civicrm/civicrm-core/pull/21629))**
1189
1190 - **Add test and fix for API4 failing to decode strings stored as HTML
1191 ([21549](https://github.com/civicrm/civicrm-core/pull/21549))**
1192
1193 - **Initial test on event tokens
1194 ([21563](https://github.com/civicrm/civicrm-core/pull/21563))**
1195
1196 - **Cleanup on test tear downs
1197 ([21552](https://github.com/civicrm/civicrm-core/pull/21552))**
1198
1199 - **Attempt to fix test site 500 errors on activity pdf
1200 ([21504](https://github.com/civicrm/civicrm-core/pull/21504))**
1201
1202 - **(NFC) TokenConsistencyTest - Add some examples of HTML escaping
1203 ([21837](https://github.com/civicrm/civicrm-core/pull/21837))**
1204
1205 - **[REF] Fix PDF Test failure on php versions 7.4 and later
1206 ([21866](https://github.com/civicrm/civicrm-core/pull/21866))**
1207
1208 ## <a name="credits"></a>Credits
1209
1210 This release was developed by the following code authors:
1211
1212 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman; Andy
1213 Burns; Benjamin W; Christian Wach; CiviCoop - Jaap Jansma; CiviCRM - Coleman
1214 Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy;
1215 Dave D; Digitalcourage - Detlev Sieber; Francesc Bassas i Bullich; Fuzion -
1216 Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick Figel; iXiam -
1217 Rubén Pineda; JMA Consulting - Monish Deb, Seamus Lee; John Kingsnorth;
1218 Lighthouse Consulting and Design - Brian Shaughnessy; Megaphone Technology
1219 Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Progressive Technology
1220 Project - Jamie McClelland; Third Sector Design - Kurund Jalmi, Michael
1221 McAndrew, William Mortada; Valéry Gouleau; Wikimedia Foundation - Eileen
1222 McNaughton
1223
1224 Most authors also reviewed code for this release; in addition, the following
1225 reviewers contributed their comments:
1226
1227 AGH Strategies - Eli Lisseck; Artful Robot - Rich Lott; Black Brick Software -
1228 David Hayes; CiviCRM - Josh Gowans; CiviDesk - Yashodha Chaku; CompuCorp - Omar
1229 Abu Hussein; Freeform Solutions - Herb van den Dool; Humanists UK - Andrew West;
1230 Lemniscus - Noah Miller; OPEN - dewy; Richard Baugh; Richard van Oosterhout;
1231 Semper IT - Karin Gerritsen; Skvare - Mark Hanna; Squiffle Consulting - Aidan
1232 Saunders; Tadpole Collective - Kevin Cristiano
1233
1234 ## <a name="feedback"></a>Feedback
1235
1236 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
1237 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
1238 and contact `@agh1`.