Merge pull request #22798 from civicrm/5.47
[civicrm-core.git] / release-notes / 5.47.0.md
1 # CiviCRM 5.47.0
2
3 Released March 2, 2022
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? | |
17 | Change the database schema? | |
18 | Alter the API? | |
19 | Require attention to configuration options? | |
20 | Fix problems installing or upgrading to a previous version? | |
21 | Introduce features? | |
22 | Fix bugs? | |
23
24 ## <a name="features"></a>Features
25
26 ## <a name="bugs"></a>Bugs resolved
27
28 ### Core CiviCRM
29
30 - **Follow up fix on #22685 financial acl move to extension ([22499](https://github.com/civicrm/civicrm-core/pull/22499))**
31
32 - **Contributor key: Add Ian Wilson ([22781](https://github.com/civicrm/civicrm-core/pull/22781))**
33
34 - **dev/core#3066 - Check CiviPledge is enabled before disconnecting pledge payments ([22779](https://github.com/civicrm/civicrm-core/pull/22779))**
35
36 - **dev/core#3063 APIv3 - Fix numeric option matching ([22740](https://github.com/civicrm/civicrm-core/pull/22740))**
37
38 - **Fix ContributionRecur.payment_processor_id pseudoconstant ([22750](https://github.com/civicrm/civicrm-core/pull/22750))**
39
40 - **enforce required fields on Contact.duplicatecheck ([22741](https://github.com/civicrm/civicrm-core/pull/22741))**
41
42 - **dev/core#3056 - Crash with search builder if civigrant not enabled and have admin rights ([22714](https://github.com/civicrm/civicrm-core/pull/22714))**
43
44 - **dev/core#3059 Regression fix - be tolerant with smarty money ([22727](https://github.com/civicrm/civicrm-core/pull/22727))**
45
46 - **(dev/core#3055) Fix dedupe check to not require elevated permissions ([22733](https://github.com/civicrm/civicrm-core/pull/22733))**
47
48 - **APIv4 SortableEntity - Fix sorting custom fields with option groups ([22716](https://github.com/civicrm/civicrm-core/pull/22716))**
49
50 - **dev/core#3057 - Fix missing civigrant ([22717](https://github.com/civicrm/civicrm-core/pull/22717))**
51
52 - **authx - Add configuration screen ([22058](https://github.com/civicrm/civicrm-core/pull/22058))**
53
54 - **REF - Switch to using new `CRM_Core_Component::isEnabled()` ([22687](https://github.com/civicrm/civicrm-core/pull/22687))**
55
56 - **Improve field accessibility in legacycustomsearches ([22710](https://github.com/civicrm/civicrm-core/pull/22710))**
57
58 - **Don't throw PHP notice when rendering dedupefind template. ([22709](https://github.com/civicrm/civicrm-core/pull/22709))**
59
60 - **(dev/core#2077) Make 'civicrm/ajax/rest' interoperable with 'extern/rest.php' parameters ([19727](https://github.com/civicrm/civicrm-core/pull/19727))**
61
62 - **Enotice fixes with datepicker ([22705](https://github.com/civicrm/civicrm-core/pull/22705))**
63
64 - **Enotice fix with priceset template ([22708](https://github.com/civicrm/civicrm-core/pull/22708))**
65
66 - **Remove unused invalidProfiles variable, and simplify template. ([22704](https://github.com/civicrm/civicrm-core/pull/22704))**
67
68 - **Enotic fixes ([22697](https://github.com/civicrm/civicrm-core/pull/22697))**
69
70 - **5.46.0 - Run some autocleaning on release notes ([22700](https://github.com/civicrm/civicrm-core/pull/22700))**
71
72 - **Bump follow-redirects from 1.11.0 to 1.14.7 ([22696](https://github.com/civicrm/civicrm-core/pull/22696))**
73
74 - **Bump engine.io from 4.1.1 to 4.1.2 ([22695](https://github.com/civicrm/civicrm-core/pull/22695))**
75
76 - **Bump ansi-regex from 5.0.0 to 5.0.1 ([22693](https://github.com/civicrm/civicrm-core/pull/22693))**
77
78 - **Bump log4js from 6.3.0 to 6.4.1 ([22694](https://github.com/civicrm/civicrm-core/pull/22694))**
79
80 - **[REF] Switch OptionGroup BAO to use new centralized logic to make name from title ([22654](https://github.com/civicrm/civicrm-core/pull/22654))**
81
82 - **Update composer.json for composer 2.2 allow-plugins ([22692](https://github.com/civicrm/civicrm-core/pull/22692))**
83
84 - **Fix typo preventing uninstalling ckeditor4 ([22691](https://github.com/civicrm/civicrm-core/pull/22691))**
85
86 - **Move permission access handling for civicrm/admin/financial/financialType?reset=1 to extension ([22685](https://github.com/civicrm/civicrm-core/pull/22685))**
87
88 - **CustomGroup - Ensure 'name' is always unique ([22675](https://github.com/civicrm/civicrm-core/pull/22675))**
89
90 - **[REF] - Cleanup Contact BAO variables ([22609](https://github.com/civicrm/civicrm-core/pull/22609))**
91
92 - **(REF) Queues - Expand docblocks. Extract SQL trait. ([22681](https://github.com/civicrm/civicrm-core/pull/22681))**
93
94 - **Queues - Add support for using persistent queues ([22657](https://github.com/civicrm/civicrm-core/pull/22657))**
95
96 - **[REF] APIv4 - Rename trait 'SoftDelete' to 'SoftDeleteEntity' ([22662](https://github.com/civicrm/civicrm-core/pull/22662))**
97
98 - **dev/translation#38 Fix multilingual triggers for when fields default to an empty string ([22647](https://github.com/civicrm/civicrm-core/pull/22647))**
99
100 - **dev/core#2866 Generate text version of message at send time if not present ([22632](https://github.com/civicrm/civicrm-core/pull/22632))**
101
102 - **5.46 ([22676](https://github.com/civicrm/civicrm-core/pull/22676))**
103
104 - **dev/core#2989 - validate campaign id for contribution import ([22235](https://github.com/civicrm/civicrm-core/pull/22235))**
105
106 - **Ensure all api3 functions have documented types ([22674](https://github.com/civicrm/civicrm-core/pull/22674))**
107
108 - **Fix spelling mistake in function name, addMembershipToRealtedContacts should be addMembershipToRelatedContacts ([22673](https://github.com/civicrm/civicrm-core/pull/22673))**
109
110 - **Manage Contribution page, the link to "Online Contribution (Test-drive)" is an admin-only URL to register in the backend, should be a frontend URL ([22672](https://github.com/civicrm/civicrm-core/pull/22672))**
111
112 - **[REF] APIv4 - Deprecate and stop using PreSaveSubscriber ([22648](https://github.com/civicrm/civicrm-core/pull/22648))**
113
114 - **Avoid PHP notices on activity form ([22666](https://github.com/civicrm/civicrm-core/pull/22666))**
115
116 - **5.46 ([22671](https://github.com/civicrm/civicrm-core/pull/22671))**
117
118 - **dev/core#2122 - Manage event online registration page doesn't determine timezone correctly ([22619](https://github.com/civicrm/civicrm-core/pull/22619))**
119
120 - **add `contact_id` to email params in `emailLetter` function ([22538](https://github.com/civicrm/civicrm-core/pull/22538))**
121
122 - **APIv4 - Use empty string instead of 'null' to pass null values to the db ([22587](https://github.com/civicrm/civicrm-core/pull/22587))**
123
124 - **dev/core#2866 add pre-upgrade warning ([22634](https://github.com/civicrm/civicrm-core/pull/22634))**
125
126 - **5.46 ([22652](https://github.com/civicrm/civicrm-core/pull/22652))**
127
128 - **CiviCRM Event, the link to "On-line Registration (Test Drive)" is an admin-only URL to register in the backend, should be a frontend URL ([22669](https://github.com/civicrm/civicrm-core/pull/22669))**
129
130 - **[REF] Tidy up group.tpl ([22668](https://github.com/civicrm/civicrm-core/pull/22668))**
131
132 - **SearchKit - Fix selecting operators and values in clauses ([22653](https://github.com/civicrm/civicrm-core/pull/22653))**
133
134 - **Set default values to avoid notices when rendering (event templates screen) ([22663](https://github.com/civicrm/civicrm-core/pull/22663))**
135
136 - **Fix smarty notices in membership dashboard ([22660](https://github.com/civicrm/civicrm-core/pull/22660))**
137
138 - **Avoid PHP notice on 'Manage Contribution Pages' screen ([22661](https://github.com/civicrm/civicrm-core/pull/22661))**
139
140 - **Another set of PHPdoc corrections ([22658](https://github.com/civicrm/civicrm-core/pull/22658))**
141
142 - **Correctly document types for class consts ([22659](https://github.com/civicrm/civicrm-core/pull/22659))**
143
144 - **SearchKit - Improve editable UX by not allowing required fields to be left blank ([22358](https://github.com/civicrm/civicrm-core/pull/22358))**
145
146 - **APIv4 - Correctly return date-only custom field values without the time ([22649](https://github.com/civicrm/civicrm-core/pull/22649))**
147
148 - **Resolve docblock inaccuracy in CRM_Contribute_Form_Task_TaskTrait ([22646](https://github.com/civicrm/civicrm-core/pull/22646))**
149
150 - **dev/core#2122 - Add an event timezone for sample data ([22645](https://github.com/civicrm/civicrm-core/pull/22645))**
151
152 - **dev/core#2122 - Fix "add" version for event timezone dao field ([22644](https://github.com/civicrm/civicrm-core/pull/22644))**
153
154 - **5.46 ([22639](https://github.com/civicrm/civicrm-core/pull/22639))**
155
156 - **Extensions - Revise prose for status check ([22638](https://github.com/civicrm/civicrm-core/pull/22638))**
157
158 - **Fix inaccuracy in docblock for method calculateBaseScheduleDate ([22631](https://github.com/civicrm/civicrm-core/pull/22631))**
159
160 - **Resolve inaccuracies in CRM_Core_BAO_File::attachmentInfo docblock ([22629](https://github.com/civicrm/civicrm-core/pull/22629))**
161
162 - **Tidy up functions related to printing. ([22601](https://github.com/civicrm/civicrm-core/pull/22601))**
163
164 - **Do not pass in tablename ([22625](https://github.com/civicrm/civicrm-core/pull/22625))**
165
166 - **Remove deprecated language construct ([22627](https://github.com/civicrm/civicrm-core/pull/22627))**
167
168 - **Remove isset from online contribution receipt ([22615](https://github.com/civicrm/civicrm-core/pull/22615))**
169
170 - **More phpcbs code cleanups ([22551](https://github.com/civicrm/civicrm-core/pull/22551))**
171
172 - **SearchKit - Expose relationship description, created/modified_date & permissions ([22606](https://github.com/civicrm/civicrm-core/pull/22606))**
173
174 - **dev/core#2122 - Fix version specified in message template upgrade ([22620](https://github.com/civicrm/civicrm-core/pull/22620))**
175
176 - **SearchKit - Allow smarty in field rewrite ([22592](https://github.com/civicrm/civicrm-core/pull/22592))**
177
178 - **dev/core#2122 - prevent E_NOTICEs and blank dates being converted to current datetime ([22622](https://github.com/civicrm/civicrm-core/pull/22622))**
179
180 - **[REF] CustomField Admin - Decouple page code from form code ([22519](https://github.com/civicrm/civicrm-core/pull/22519))**
181
182 - **dev/core#2122 Add timezone support for events ([20476](https://github.com/civicrm/civicrm-core/pull/20476))**
183
184 - **Fix batch summary to use the api ([22618](https://github.com/civicrm/civicrm-core/pull/22618))**
185
186 - **Split View Relationship tpl ito own file ([22617](https://github.com/civicrm/civicrm-core/pull/22617))**
187
188 - **Add option to display money tokens without formatting ([22548](https://github.com/civicrm/civicrm-core/pull/22548))**
189
190 - **Only format smarty aliases as money if specified ([22547](https://github.com/civicrm/civicrm-core/pull/22547))**
191
192 - **Fix smarty notices in footer files ([22613](https://github.com/civicrm/civicrm-core/pull/22613))**
193
194 - **Remove use of .font-size11pt and .font-size12pt ([22314](https://github.com/civicrm/civicrm-core/pull/22314))**
195
196 - **report cleanup - no functional change ([22611](https://github.com/civicrm/civicrm-core/pull/22611))**
197
198 - **Issue #899: don't show PCPs where the events or contribution pages are disabled or past the end date ([20845](https://github.com/civicrm/civicrm-core/pull/20845))**
199
200 - **dev/core#1613 Change event registration button text based on if there are additional participants ([20251](https://github.com/civicrm/civicrm-core/pull/20251))**
201
202 - **SearchKit - Improve field/operator/value selection UI ([22604](https://github.com/civicrm/civicrm-core/pull/22604))**
203
204 - **Contact BAO - Deprecate unused function ([22610](https://github.com/civicrm/civicrm-core/pull/22610))**
205
206 - **Don't pass redundent empty strings when instantiating CRM_Core_ShowHideBlocks ([22605](https://github.com/civicrm/civicrm-core/pull/22605))**
207
208 - **Fix Grant::retrieve to meet full phpcs standard ([22558](https://github.com/civicrm/civicrm-core/pull/22558))**
209
210 - **Make phpType definitions in generated DAO objects more accurate. ([22607](https://github.com/civicrm/civicrm-core/pull/22607))**
211
212 - **CiviCase - Denote `created_date` as readonly ([22608](https://github.com/civicrm/civicrm-core/pull/22608))**
213
214 - **[REF] SearchKit docblock cleanup ([22603](https://github.com/civicrm/civicrm-core/pull/22603))**
215
216 - **SearchKit - Support operators in conditional css rules ([22552](https://github.com/civicrm/civicrm-core/pull/22552))**
217
218 - **Fix call to log method warn (should be warning) ([22602](https://github.com/civicrm/civicrm-core/pull/22602))**
219
220 - **(NFC) Correct type hints for bad null default values ([22600](https://github.com/civicrm/civicrm-core/pull/22600))**
221
222 - **5.46 ([22599](https://github.com/civicrm/civicrm-core/pull/22599))**
223
224 - **tpl notices and docblocks ([22449](https://github.com/civicrm/civicrm-core/pull/22449))**
225
226 - **(dev/core#3012) Expose email on hold as filter for contribution report ([22368](https://github.com/civicrm/civicrm-core/pull/22368))**
227
228 - **[REF] SearchKit - Function extraction ([22598](https://github.com/civicrm/civicrm-core/pull/22598))**
229
230 - **Use tokens in offline contribution receipt (new installs) ([22560](https://github.com/civicrm/civicrm-core/pull/22560))**
231
232 - **Remove unreachable code ([22594](https://github.com/civicrm/civicrm-core/pull/22594))**
233
234 - **Pass remove-by-reference ([22593](https://github.com/civicrm/civicrm-core/pull/22593))**
235
236 - **SearchKit - Support conditional links ([22557](https://github.com/civicrm/civicrm-core/pull/22557))**
237
238 - **(dev/core#1304) Queue - Add high-level tracking table ([22324](https://github.com/civicrm/civicrm-core/pull/22324))**
239
240 - **Add consistency between checkTemplateFileExists functions, ([22586](https://github.com/civicrm/civicrm-core/pull/22586))**
241
242 - **Duplicate function from deprecated utils onto calling classes & remove ([22481](https://github.com/civicrm/civicrm-core/pull/22481))**
243
244 - **Remove useless function ([22585](https://github.com/civicrm/civicrm-core/pull/22585))**
245
246 - **CRM_Core_Component (et al) - Deprecate unused functions ([22566](https://github.com/civicrm/civicrm-core/pull/22566))**
247
248 - **5.46 to master ([22591](https://github.com/civicrm/civicrm-core/pull/22591))**
249
250 - **Remove param default ([22590](https://github.com/civicrm/civicrm-core/pull/22590))**
251
252 - **(dev/core#3012) Expose more options for email on hold as filter for l… ([22572](https://github.com/civicrm/civicrm-core/pull/22572))**
253
254 - **APIv4 - Make Permission 'group' discoverable in API Explorer ([22559](https://github.com/civicrm/civicrm-core/pull/22559))**
255
256 - **SearchKit - Update operator labels ([22554](https://github.com/civicrm/civicrm-core/pull/22554))**
257
258 - **Use rolling window for translating 2-digit years into 4-digit years ([22581](https://github.com/civicrm/civicrm-core/pull/22581))**
259
260 - **dev/event#66: allow duplicate price field labels ([22508](https://github.com/civicrm/civicrm-core/pull/22508))**
261
262 - **DAO - Centralize logic to derive unique name from label ([22570](https://github.com/civicrm/civicrm-core/pull/22570))**
263
264 - **Simplify apiv4 conformance test ([22579](https://github.com/civicrm/civicrm-core/pull/22579))**
265
266 - **Add billingStateProvince and standardized property names ([21583](https://github.com/civicrm/civicrm-core/pull/21583))**
267
268 - **Fix return values for API3 Job.delete ([22561](https://github.com/civicrm/civicrm-core/pull/22561))**
269
270 - **5.46 ([22582](https://github.com/civicrm/civicrm-core/pull/22582))**
271
272 - **SearchKit - add/remove tags action for all taggable entities ([21865](https://github.com/civicrm/civicrm-core/pull/21865))**
273
274 - **Remove method getWordReplacement. ([22577](https://github.com/civicrm/civicrm-core/pull/22577))**
275
276 - **[REF] Upgrade JQuery UI to 1.13.0 ([22576](https://github.com/civicrm/civicrm-core/pull/22576))**
277
278 - **(NFC) Minor phpdoc fixes to CRM_Mailing_Event_BAO_Unsubscribe::send_unsub_response ([22574](https://github.com/civicrm/civicrm-core/pull/22574))**
279
280 - **Add created_date & modified_date to civicrm_relationship ([22480](https://github.com/civicrm/civicrm-core/pull/22480))**
281
282 - **(NFC) Minor amends to getGroupByFromSelectColumns ([22575](https://github.com/civicrm/civicrm-core/pull/22575))**
283
284 - **(NFC) Correctly document CRM_Utils_Hook::pre to allow null ID ([22562](https://github.com/civicrm/civicrm-core/pull/22562))**
285
286 - **[REF] Components - Use extracted function ([22573](https://github.com/civicrm/civicrm-core/pull/22573))**
287
288 - **dev/core#2757 test to demonstrate contact delete actions were not called for v4 api ([22458](https://github.com/civicrm/civicrm-core/pull/22458))**
289
290 - **(NFC) CiviReport, etal - More phpdoc fixes ([22565](https://github.com/civicrm/civicrm-core/pull/22565))**
291
292 - **[REF] SearchKit - Simplify import/export popup code ([22507](https://github.com/civicrm/civicrm-core/pull/22507))**
293
294 - **Activity Details field on batch update via profile has wrong fieldname ([22568](https://github.com/civicrm/civicrm-core/pull/22568))**
295
296 - **Remove duplicate file ([22569](https://github.com/civicrm/civicrm-core/pull/22569))**
297
298 - **(NFC) Update PHPDoc for alterDeferredRevenueItems ([22563](https://github.com/civicrm/civicrm-core/pull/22563))**
299
300 - **(REF) Extract function `CRM_Core_Component::isEnabled()` ([22567](https://github.com/civicrm/civicrm-core/pull/22567))**
301
302 - **(NFC) Comment fixes Stricter phpcs ([22555](https://github.com/civicrm/civicrm-core/pull/22555))**
303
304 - **(NFC) Remaining css phpcs fixes ([22553](https://github.com/civicrm/civicrm-core/pull/22553))**
305
306 - **Follow up fn removal ([22556](https://github.com/civicrm/civicrm-core/pull/22556))**
307
308 - **Remove obsolete scripts ([22549](https://github.com/civicrm/civicrm-core/pull/22549))**
309
310 - **[REF] SavedSearch - Deprecate/remove redundant/unused functions ([22542](https://github.com/civicrm/civicrm-core/pull/22542))**
311
312 - **Re-fix enotice on searchType to work with default modifiers ([22466](https://github.com/civicrm/civicrm-core/pull/22466))**
313
314 - **Remove obsolete postIPN script ([22550](https://github.com/civicrm/civicrm-core/pull/22550))**
315
316 - **PHPCS standards on css.... ([22529](https://github.com/civicrm/civicrm-core/pull/22529))**
317
318 - **(REF) Remove constructors that do nothing ([22544](https://github.com/civicrm/civicrm-core/pull/22544))**
319
320 - **Remove unused variable ([22545](https://github.com/civicrm/civicrm-core/pull/22545))**
321
322 - **Remove some old scripts ([22534](https://github.com/civicrm/civicrm-core/pull/22534))**
323
324 - **Refactor buildPremiumPreviewBlock function to make intended usage clearer ([22541](https://github.com/civicrm/civicrm-core/pull/22541))**
325
326 - **5.46 to master ([22540](https://github.com/civicrm/civicrm-core/pull/22540))**
327
328 - **More comments & style fixes ([22533](https://github.com/civicrm/civicrm-core/pull/22533))**
329
330 - **Smarty notice fix on Email help ([22470](https://github.com/civicrm/civicrm-core/pull/22470))**
331
332 - **Re-run regen ([22536](https://github.com/civicrm/civicrm-core/pull/22536))**
333
334 - **Fixes to spaces from phpcs ([22535](https://github.com/civicrm/civicrm-core/pull/22535))**
335
336 - **[NFC] Update test example template and regenerate examples ([22531](https://github.com/civicrm/civicrm-core/pull/22531))**
337
338 - **Remove category from case activity template ([22530](https://github.com/civicrm/civicrm-core/pull/22530))**
339
340 - **Run stricter phpcs on Civi dir ([22527](https://github.com/civicrm/civicrm-core/pull/22527))**
341
342 - **Run 'full drupal strictness' standard over api/v3/examples ([22528](https://github.com/civicrm/civicrm-core/pull/22528))**
343
344 - **Remove empty check ([22444](https://github.com/civicrm/civicrm-core/pull/22444))**
345
346 - **Move deprecated function back to the only class that calls it ([22517](https://github.com/civicrm/civicrm-core/pull/22517))**
347
348 - **Fix php comments ([22526](https://github.com/civicrm/civicrm-core/pull/22526))**
349
350 - **Add unit test on updateGreeting & remove deprecated fn call ([22482](https://github.com/civicrm/civicrm-core/pull/22482))**
351
352 - **[REF] - Use CRM_Contact_BAO_ContactType::basicTypes() ([22520](https://github.com/civicrm/civicrm-core/pull/22520))**
353
354 - **[NFC] Fixes to the type definitions for contactType methods ([22524](https://github.com/civicrm/civicrm-core/pull/22524))**
355
356 - **[Ref] Remove unused _colours property ([22525](https://github.com/civicrm/civicrm-core/pull/22525))**
357
358 - **Another set of PHPDoc fixes ([22522](https://github.com/civicrm/civicrm-core/pull/22522))**
359
360 - **Fix more phpdoc comments in member links functions ([22521](https://github.com/civicrm/civicrm-core/pull/22521))**
361
362 - **Remove unreachable, nonsensical code ([22518](https://github.com/civicrm/civicrm-core/pull/22518))**
363
364 - **Fix php comments ([22515](https://github.com/civicrm/civicrm-core/pull/22515))**
365
366 - **Unit tests for 22429 and apply same treatment to other money format functions ([22442](https://github.com/civicrm/civicrm-core/pull/22442))**
367
368 - **Test cleanup - remove direct calls to BAO_Membership::add ([22497](https://github.com/civicrm/civicrm-core/pull/22497))**
369
370 - **Merge function back into parent function ([22516](https://github.com/civicrm/civicrm-core/pull/22516))**
371
372 - **Add type to phpdoc comment for report statistic function ([22514](https://github.com/civicrm/civicrm-core/pull/22514))**
373
374 - **Update phpdoc references to $self to include type ([22513](https://github.com/civicrm/civicrm-core/pull/22513))**
375
376 - **[test] - Add test coverage for adjusting custom group weights ([22512](https://github.com/civicrm/civicrm-core/pull/22512))**
377
378 - **Enotice fixes ([22471](https://github.com/civicrm/civicrm-core/pull/22471))**
379
380 - **Select2 - Fix auto-expanding collapsible optgroups for multi-selects ([22505](https://github.com/civicrm/civicrm-core/pull/22505))**
381
382 - **(REF) CRM_Core_Resources - Limit visibility of `getEntityRefMetadata` ([22511](https://github.com/civicrm/civicrm-core/pull/22511))**
383
384 - **Various phpdoc fixes ([22509](https://github.com/civicrm/civicrm-core/pull/22509))**
385
386 - **(REF) ContactUtils - Rename local variables ([22510](https://github.com/civicrm/civicrm-core/pull/22510))**
387
388 - **[REF] CoreResources - Simplify disabled component check ([22506](https://github.com/civicrm/civicrm-core/pull/22506))**
389
390 - **Move permission checks from Query & BAO to financialacl extension ([22495](https://github.com/civicrm/civicrm-core/pull/22495))**
391
392 - **Rationalise relationship validation ([22491](https://github.com/civicrm/civicrm-core/pull/22491))**
393
394 - **(NFC) Civi::pipe - Swap various quotes ([22503](https://github.com/civicrm/civicrm-core/pull/22503))**
395
396 - **NFC: Clean up description for alterDisplayName hook ([22501](https://github.com/civicrm/civicrm-core/pull/22501))**
397
398 - **Civi::pipe - Add support for background worker-processes with JSON pipes ([22262](https://github.com/civicrm/civicrm-core/pull/22262))**
399
400 - **Port test form earlier PR ([22502](https://github.com/civicrm/civicrm-core/pull/22502))**
401
402 - **MailingEventQueue - Use consistent CamelCaseName. Prevent conflicts. ([22343](https://github.com/civicrm/civicrm-core/pull/22343))**
403
404 - **SearchKit - Enable joins for custom fields and option groups ([22355](https://github.com/civicrm/civicrm-core/pull/22355))**
405
406 - **5.46 ([22496](https://github.com/civicrm/civicrm-core/pull/22496))**
407
408 - **Remove support for deprecated key ([22443](https://github.com/civicrm/civicrm-core/pull/22443))**
409
410 - **Fully remove contactAB function ([22485](https://github.com/civicrm/civicrm-core/pull/22485))**
411
412 - **Don't default membership type create to inactive ([22498](https://github.com/civicrm/civicrm-core/pull/22498))**
413
414 - **Extensions - Add dependency status check ([22464](https://github.com/civicrm/civicrm-core/pull/22464))**
415
416 - **Remove handling for impossible array ([22494](https://github.com/civicrm/civicrm-core/pull/22494))**
417
418 - **[REF] Improve APIv4 save functions ([22403](https://github.com/civicrm/civicrm-core/pull/22403))**
419
420 - **CiviGrant - Use SearchKit for contact summary tab ([22467](https://github.com/civicrm/civicrm-core/pull/22467))**
421
422 - **Improve method phpdoc for CRM_Utils_System ([22492](https://github.com/civicrm/civicrm-core/pull/22492))**
423
424 - **Remove always-true-if ([22486](https://github.com/civicrm/civicrm-core/pull/22486))**
425
426 - **Stop calling confusing function that doesn't do much ..... ([22468](https://github.com/civicrm/civicrm-core/pull/22468))**
427
428 - **5.46 to master ([22484](https://github.com/civicrm/civicrm-core/pull/22484))**
429
430 - **Remove seemingly unreachable help text ([22469](https://github.com/civicrm/civicrm-core/pull/22469))**
431
432 - **Move function to the class that 'owns' it ([22472](https://github.com/civicrm/civicrm-core/pull/22472))**
433
434 - **Fix broken function reference ([22474](https://github.com/civicrm/civicrm-core/pull/22474))**
435
436 - **Remove broken script ([22473](https://github.com/civicrm/civicrm-core/pull/22473))**
437
438 - **dev/core#983 Fix Access CiviCampaign permissions (instead of admin) ([22459](https://github.com/civicrm/civicrm-core/pull/22459))**
439
440 - **Simplify getting contact_id from recurring contribution when generating subscription URLs ([22448](https://github.com/civicrm/civicrm-core/pull/22448))**
441
442 - **Remove & deprecate silly function ([22456](https://github.com/civicrm/civicrm-core/pull/22456))**
443
444 - **Migrate CiviGrant component to an extension ([22064](https://github.com/civicrm/civicrm-core/pull/22064))**
445
446 - **Fix Fatal Error on contribution tab and user dashboard when recurring payment generated using extension get disabled ([22264](https://github.com/civicrm/civicrm-core/pull/22264))**
447
448 - **Remove unused variable ([22462](https://github.com/civicrm/civicrm-core/pull/22462))**
449
450 - **Remove IF that only loops through one value ([22455](https://github.com/civicrm/civicrm-core/pull/22455))**
451
452 - **Replace all isset checks on line.tax_rate ([22421](https://github.com/civicrm/civicrm-core/pull/22421))**
453
454 - **Fix syntax error in CRM_Mailing_Event_BAO_Reply ([22453](https://github.com/civicrm/civicrm-core/pull/22453))**
455
456 - **Event Registration: allow default Price Set values from the URL ([22313](https://github.com/civicrm/civicrm-core/pull/22313))**
457
458 - **Mark function as private ([22457](https://github.com/civicrm/civicrm-core/pull/22457))**
459
460 - **5.46 ([22460](https://github.com/civicrm/civicrm-core/pull/22460))**
461
462 - **A whole bunch of phpdoc fixes ([22454](https://github.com/civicrm/civicrm-core/pull/22454))**
463
464 - **Simplify variables pass in & out of function ([22439](https://github.com/civicrm/civicrm-core/pull/22439))**
465
466 - **Remove if & foreach that no longer do anything ([22447](https://github.com/civicrm/civicrm-core/pull/22447))**
467
468 - **Remove call to php 4 function ([22446](https://github.com/civicrm/civicrm-core/pull/22446))**
469
470 - **Clean up input and outputs ([22440](https://github.com/civicrm/civicrm-core/pull/22440))**
471
472 - **5.46 ([22441](https://github.com/civicrm/civicrm-core/pull/22441))**
473
474 - **APIv4 - Add SubscriptionHistory entity ([22435](https://github.com/civicrm/civicrm-core/pull/22435))**
475
476 - **Enotice fix ([22436](https://github.com/civicrm/civicrm-core/pull/22436))**
477
478 - **5.46 ([22428](https://github.com/civicrm/civicrm-core/pull/22428))**
479
480 - **don't allow multiple currencies in a batch ([20884](https://github.com/civicrm/civicrm-core/pull/20884))**
481
482 - **[REF] Rename variable to be meaningful ([22431](https://github.com/civicrm/civicrm-core/pull/22431))**
483
484 - **Navigation - Make required fields NOT NULL ([22430](https://github.com/civicrm/civicrm-core/pull/22430))**
485
486 - **[REF] Tidy up formatting in gotv.tpl, remove extra </div> ([22433](https://github.com/civicrm/civicrm-core/pull/22433))**
487
488 - **Tidy CRM_Report_Page_Options code ([22432](https://github.com/civicrm/civicrm-core/pull/22432))**
489
490 - **Fix class references in phpdoc comments ([22434](https://github.com/civicrm/civicrm-core/pull/22434))**
491
492 - **[REF] Stop returning unused variables ([22401](https://github.com/civicrm/civicrm-core/pull/22401))**
493
494 - **[REF] Centralize BAO handling of custom data ([22426](https://github.com/civicrm/civicrm-core/pull/22426))**
495
496 - **Remove / deprecate case param handling ([22420](https://github.com/civicrm/civicrm-core/pull/22420))**
497
498 - **Remove htmlFile validation rule, as it can't possibly work. ([22425](https://github.com/civicrm/civicrm-core/pull/22425))**
499
500 - **Fight back against copy & paste gone wild ([22417](https://github.com/civicrm/civicrm-core/pull/22417))**
501
502 - **Fix phpdoc types for $_query in CRM_Core_Selector_Base subclasses ([22424](https://github.com/civicrm/civicrm-core/pull/22424))**
503
504 - **[NFC] Tidy up phpdoc in CRM_Utils_QueryFormatter ([22423](https://github.com/civicrm/civicrm-core/pull/22423))**
505
506 - **Increase GroupContact:create deprecation ([22416](https://github.com/civicrm/civicrm-core/pull/22416))**
507
508 - **Stop returning unused parameters ([22410](https://github.com/civicrm/civicrm-core/pull/22410))**
509
510 - **APIv4 - Docblock updates, mark BAO::create functions deprecated ([22415](https://github.com/civicrm/civicrm-core/pull/22415))**
511
512 - **APIv4 - Fix test ([22414](https://github.com/civicrm/civicrm-core/pull/22414))**
513
514 - **APIv4 - Fix incorrect placement of decodeRows in loop ([22413](https://github.com/civicrm/civicrm-core/pull/22413))**
515
516 - **Remove unreachable else ([22406](https://github.com/civicrm/civicrm-core/pull/22406))**
517
518 - **[REF] Remove handling for no organization being passed ([22395](https://github.com/civicrm/civicrm-core/pull/22395))**
519
520 - **Remove deprecated code ([22411](https://github.com/civicrm/civicrm-core/pull/22411))**
521
522 - **NFC - Fix typo in docblock ([22409](https://github.com/civicrm/civicrm-core/pull/22409))**
523
524 - **Remove check for contact_check as it is always an array here ([22407](https://github.com/civicrm/civicrm-core/pull/22407))**
525
526 - **dev/core#2587 Ignore modified_date when checking for changes during mailing auto-save ([20561](https://github.com/civicrm/civicrm-core/pull/20561))**
527
528 - **Fix testMultipleMembershipsContribution to use order api ([22274](https://github.com/civicrm/civicrm-core/pull/22274))**
529
530 - **Stop calling hook twice ([22404](https://github.com/civicrm/civicrm-core/pull/22404))**
531
532 - **Remove always-true IF ([22399](https://github.com/civicrm/civicrm-core/pull/22399))**
533
534 - **[REF] Remove unused variable ([22398](https://github.com/civicrm/civicrm-core/pull/22398))**
535
536 - **Remove unnecessary pass-by-ref ([22397](https://github.com/civicrm/civicrm-core/pull/22397))**
537
538 - **Add metadata so Activity Created Date is available in Form Builder ([22320](https://github.com/civicrm/civicrm-core/pull/22320))**
539
540 - **Ensure assigned smarty array has empty keys (not no keys) ([22379](https://github.com/civicrm/civicrm-core/pull/22379))**
541
542 - **Clarify contents of ids for further fixes ([22402](https://github.com/civicrm/civicrm-core/pull/22402))**
543
544 - **wp-cli/civicrm.php - Add 'civicrm pipe' subcommand ([270](https://github.com/civicrm/civicrm-wordpress/pull/270))**
545
546 - **Streamline and enhance the plugin load procedure (rebased) ([271](https://github.com/civicrm/civicrm-wordpress/pull/271))**
547
548 - **Merge 5.46 to master ([339](https://github.com/civicrm/civicrm-packages/pull/339))**
549
550 ## <a name="misc"></a>Miscellany
551
552 ## <a name="credits"></a>Credits
553
554 This release was developed by the following code authors:
555
556 AGH Strategies - Andie Hunt; Agileware - Francis Whittle, Justin Freeman; BrightMinded Ltd - Bradley Taylor; Christian Wach; CiviCoop - Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; dependabot[bot]; Freeform Solutions - Herb van den Dool; Jens Schuppe; JMA Consulting - Seamus Lee; Joinery - Allen Shaw; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; PERORA SRL - Samuele Masetto; Registered Nurses' Association of Ontario - Ian Wilson; Romain Thouvenin; Skvare - Sunil Pawar; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton
557
558 Most authors also reviewed code for this release; in addition, the following
559 reviewers contributed their comments:
560
561 Agileware - Francis Whittle, Justin Freeman; Andy Burns; Artful Robot - Rich Lott; Betty Dolfing; Blackfly Solutions - Alan Dixon; BrightMinded Ltd - Bradley Taylor; Circle Interactive - Pradeep Nayak; civibot[bot]; CiviCoop - Jaap Jansma, Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy, Shane Bill; Dave D; Freeform Solutions - Herb van den Dool; Fuzion - Luke Stewart; in2part; Jens Schuppe; JMA Consulting - Joe Murray, Monish Deb, Seamus Lee; Joinery - Allen Shaw; Korlon - Stuart Gaston; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; Mikey O'Toole; MJW Consulting - Matthew Wire; pboling; PERORA SRL - Samuele Masetto; Skvare - Sunil Pawar; Tadpole Collective - Kevin Cristiano; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green