Fix mglaman mapping
[civicrm-core.git] / release-notes / 5.27.0.md
1 # CiviCRM 5.27.0
2
3 Released July 1, 2020
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 - **Warn users who lack PHP-Intl extension (Work Towards
29 [dev/translation#48](https://lab.civicrm.org/dev/translation/-/issues/48):
30 [17668](https://github.com/civicrm/civicrm-core/pull/17668), [17728](https://github.com/civicrm/civicrm-core/pull/17728))**
31
32 A system check warning will now appear on sites that lack the PHP
33 Internationalization extension. This is in preparation for changes that will
34 appear in CiviCRM 5.28 and require the extension.
35
36 - **Advanced Search - Allow searching by first/last name; pass values from
37 quicksearch ([dev/core#1722](https://lab.civicrm.org/dev/core/-/issues/1722):
38 [17118](https://github.com/civicrm/civicrm-core/pull/17118))**
39
40 This makes separate First Name and Last Name fields available on the Advanced
41 Search form, and it ensures quick search filters are passed to the appropriate
42 field.
43
44 - **Add more search options
45 ([17372](https://github.com/civicrm/civicrm-core/pull/17372))**
46
47 Improves the search form for individuals in contact reference fields by adding
48 fields for Employer Name, First Name, Last Name, and Nick Name.
49
50 - **End of life planning for MySQL server 5.0 - 5.6
51 ([dev/core#1681](https://lab.civicrm.org/dev/core/-/issues/1681):
52 [17518](https://github.com/civicrm/civicrm-core/pull/17518) and
53 [17496](https://github.com/civicrm/civicrm-core/pull/17496))**
54
55 Sites running MySQL 5.5 and below will have a pre-upgrade message and a system
56 check warning to say that CiviCRM 5.28 will require MySQL 5.6 or MariaDB 10.1.
57
58 - **APIv4 - Improve pseudoconstant suffix support
59 ([17368](https://github.com/civicrm/civicrm-core/pull/17368) and
60 [17482](https://github.com/civicrm/civicrm-core/pull/17482))**
61
62 APIv4 allows pseudoconstant fields to be specified with the pseudoconstant
63 name followed by a suffix, such as `activity_type_id:label`. This now works
64 for retrieval and sort.
65
66 - **APIv4 - Support custom entity joins
67 ([17394](https://github.com/civicrm/civicrm-core/pull/17394))**
68
69 Improves APIv4 so that it supports implicit and explicit joins onto custom
70 entities.
71
72 - **Make reCAPTCHA settings clearer
73 ([17426](https://github.com/civicrm/civicrm-core/pull/17426))**
74
75 The help text for reCAPTCHA settings now specifies the type of reCAPTCHA
76 supported.
77
78 - **Configurable logfile size and hashing
79 ([17192](https://github.com/civicrm/civicrm-core/pull/17192))**
80
81 Allows a system administrator to give logs a predictable name, allowing them
82 to be more easily ingested into other tools, and be handled by external log
83 rotation tools.
84
85 - **Allow for installation on Symfony 4.4
86 ([17380](https://github.com/civicrm/civicrm-core/pull/17380))**
87
88 Makes it so CiviCRM plays nicely with Symfony 4.4.
89
90 - **Add domain tokens to the Message Template admin interface
91 ([17388](https://github.com/civicrm/civicrm-core/pull/17388))**
92
93 This adds the domain tokens (the domain organization name, address, email, and
94 phone) to the available listed tokens for editing message templates.
95
96 - **Hide icon elements from screen readers and add handling for
97 screen-reader-only text
98 ([17318](https://github.com/civicrm/civicrm-core/pull/17318),
99 [17293](https://github.com/civicrm/civicrm-core/pull/17293),
100 [17294](https://github.com/civicrm/civicrm-core/pull/17294), and
101 [17310](https://github.com/civicrm/civicrm-core/pull/17310))**
102
103 CiviCRM uses empty `<i>` elements to provide most icons. Screen readers,
104 which won't render the visual icon anyway, will either skip over an empty
105 element or announce it in a way that would be confusing. This makes it
106 explicit that screen readers and other ARIA devices should skip them.
107
108 Meanwhile, if the icon is the only way a piece of information is displayed, a
109 screen reader user won't get that information. This adds a `sr-only` class
110 that makes the element invisible on screen without being ignored by a screen
111 reader.
112
113 Screen reader text is added for the field option wrench icons, relationship
114 permissions, and membership auto-renew status.
115
116 - **Add icon helper functions and remove most uses of check.gif
117 ([17279](https://github.com/civicrm/civicrm-core/pull/17279) and
118 [17289](https://github.com/civicrm/civicrm-core/pull/17289))**
119
120 This adds helper functions in PHP and Smarty to render consistent icons with a
121 minimum of code. It also replaces most instances of the green checkmark image
122 with a checkmark icon.
123
124 - **Separate icon markup from labels and add JS icon helper
125 ([17319](https://github.com/civicrm/civicrm-core/pull/17319) and
126 [17285](https://github.com/civicrm/civicrm-core/pull/17285))**
127
128 These changes improve `CRM_Core_Action::formLink()`, `hook_civicrm_links`, and
129 certain listing pages so that HTML icon markup is added at the point of
130 display rather than during the processing of values.
131
132 It also adds a helper function in Javascript similar to those in PHP and
133 Smarty to render icons.
134
135 - **crmButton: Support icon=0 for no icon
136 ([17303](https://github.com/civicrm/civicrm-core/pull/17303))**
137
138 Makes it possible to create a button without an icon using {crmButton}.
139
140 - **Replace stop-icon.png with fa-ban over a relevant icon for privacy
141 ([17283](https://github.com/civicrm/civicrm-core/pull/17283) and
142 [17307](https://github.com/civicrm/civicrm-core/pull/17307))**
143
144 The communication preference icons are standardized and more specific than the
145 old stop sign.
146
147 - **Replace image icons with Font Awesome icons
148 ([17296]([17280](https://github.com/civicrm/civicrm-core/pull/17280),
149 [17281](https://github.com/civicrm/civicrm-core/pull/17281),
150 [17282](https://github.com/civicrm/civicrm-core/pull/17282),
151 [17295](https://github.com/civicrm/civicrm-core/pull/17295),
152 https://github.com/civicrm/civicrm-core/pull/17296),
153 [17297](https://github.com/civicrm/civicrm-core/pull/17297))**
154
155 Nearly all image icons have been replaced with the corresponding icons from
156 the Font Awesome library.
157
158 - **Simplify admin console and remove superfluous icons
159 ([17284](https://github.com/civicrm/civicrm-core/pull/17284))**
160
161 The Administration console has been redesigned to have a simpler layout,
162 display more information, dynamically include all enabled components, display
163 responsively on small screens, and remove a slew of 15-year-old image icons.
164
165 - **Dedupe performance - hard-remove financial_item from list of dymnamic refs
166 to contact table
167 ([17567](https://github.com/civicrm/civicrm-core/pull/17567))**
168
169 This improves performance when deduping by no longer querying the financial
170 item table.
171
172 - **Trigger fatalErrorHandler for PEAR errors and for logs with severity ERROR
173 or higher ([17277](https://github.com/civicrm/civicrm-core/pull/17277))**
174
175 This allows extensions that implement `$config->fatalErrorHandler` to react to
176 a wider variety of errors that CiviCRM may generate.
177
178 ### CiviContribute
179
180 - **Wrap separators in price field in spans with classes
181 ([dev/user-interface#18](https://lab.civicrm.org/dev/user-interface/-/issues/18):
182 [17078](https://github.com/civicrm/civicrm-core/pull/17078))**
183
184 Colons separating pre- and post-field help text from price fields are now
185 wrapped in `<span>` elements.
186
187 - **Allow to search on contribution ID
188 ([dev/core#1580](https://lab.civicrm.org/dev/core/-/issues/1580):
189 [16484](https://github.com/civicrm/civicrm-core/pull/16484))**
190
191 This improves the "Find Contributions" search form by adding a field to search
192 by Contribution ID.
193
194 - **APIv4 - Add "Price"-related entities
195 ([17363](https://github.com/civicrm/civicrm-core/pull/17363))**
196
197 Priceset, PriceField, and PriceOption entities are added to APIv4.
198
199 - **APIv4 - Add ContributionRecur entity
200 ([17299](https://github.com/civicrm/civicrm-core/pull/17299))**
201
202 Adds Contribution Recur to APIv4.
203
204 ### CiviMail
205
206 - **Allow click-through and open tracking to be enabled/disabled by default
207 ([17291](https://github.com/civicrm/civicrm-core/pull/17291))**
208
209 Adds a setting to CiviMail which allows for setting the click-through and open
210 tracking defaults.
211
212 - **Extend content array of hook_civicrm_alterMailContent
213 ([dev/core#1620](https://lab.civicrm.org/dev/core/-/issues/1620):
214 [16629](https://github.com/civicrm/civicrm-core/pull/16629))**
215
216 Adds campaign_id to template for `alterMailContent` hook.
217
218 - **Migrate CiviMail "extern" scripts to conventional routes
219 ([17312](https://github.com/civicrm/civicrm-core/pull/17312))**
220
221 Updates CiviMail's default behavior to replace `extern/open.php` and
222 `extern/url.php` with `civicrm/mailing/open` and `civicrm/mailing/url`.
223
224 - **Make `is_archived` work as a url-search parameter
225 ([17328](https://github.com/civicrm/civicrm-core/pull/17328))**
226
227 The Find Mailings URL can now have `is_archived` as a parameter to only find
228 archived mailings.
229
230 ### CiviMember
231
232 - **Add MembershipType to Api4
233 ([17448](https://github.com/civicrm/civicrm-core/pull/17448))**
234
235 Adds a Membership Type entity to APIv4.
236
237 ### Drupal Integration
238
239 - **CiviCRM menu toggle "adjust menu position" customisable
240 ([dev/core#1757](https://lab.civicrm.org/dev/core/-/issues/1757):
241 [17362](https://github.com/civicrm/civicrm-core/pull/17362))**
242
243 This hides the "adjust menu position" icon in the CiviCRM Menu for non admin
244 users to avoid confusion for users who do not have access to the Drupal admin
245 menu.
246
247 - **Provide "Calendar" module with an end-date when a duration is provided
248 ([601](https://github.com/civicrm/civicrm-drupal/pull/601))**
249
250 Improves display of activities in calendar views.
251
252 ## <a name="bugs"></a>Bugs resolved
253
254 ### Core CiviCRM
255
256 - **CRM_Utils_Time::setTime and getTime() and their use in unit tests
257 ([dev/core#1781](https://lab.civicrm.org/dev/core/-/issues/1781):
258 [17414](https://github.com/civicrm/civicrm-core/pull/17414))**
259
260 This allows the CRM_Utils_Time functions used in unit tests to use TIME_FUNC
261 to better isolate timing bugs.
262
263 - **Confusing popups when importing activities
264 ([dev/user-interface#17](https://lab.civicrm.org/dev/user-interface/-/issues/17):
265 [17067](https://github.com/civicrm/civicrm-core/pull/17067))**
266
267 This fixes a bug where the confirmation popup would appear when hitting the
268 back/cancel buttons, not just the import button, on most import forms.
269
270 - **Installing CiviCRM in another language, with civicrm-setup
271 ([dev/translation#39](https://lab.civicrm.org/dev/translation/-/issues/39):
272 [17244](https://github.com/civicrm/civicrm-core/pull/17244))**
273
274 Fixes a bug when installing CiviCRM in another language with civicrm-setup.
275
276 - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception
277 ([dev/core#560](https://lab.civicrm.org/dev/core/-/issues/560):
278 [17421](https://github.com/civicrm/civicrm-core/pull/17421),
279 [17343](https://github.com/civicrm/civicrm-core/pull/17343),
280 [17336](https://github.com/civicrm/civicrm-core/pull/17336) and
281 [17341](https://github.com/civicrm/civicrm-core/pull/17341))**
282
283 - **CiviCRM 5.13.4 - smart groups with contact subtypes: subtype is not in
284 Contact Type field on edit criteria mode
285 ([dev/core#991](https://lab.civicrm.org/dev/core/-/issues/991):
286 [16541](https://github.com/civicrm/civicrm-core/pull/16541))**
287
288 Fixes contact subtypes not being carried over when editing a smart group
289 created in Advanced Search.
290
291 - **Unable to import relationship
292 ([dev/core#1731](https://lab.civicrm.org/dev/core/-/issues/1731):
293 [17163](https://github.com/civicrm/civicrm-core/pull/17163))**
294
295 Ensures that importing relationships works as expected when the same field is
296 to be imported for the main imported contact and a related contact.
297
298 - **Apostrophes in richtext fields don't get exported properly in CiviReport
299 ([dev/core#1743](https://lab.civicrm.org/dev/core/-/issues/1743):
300 [17260](https://github.com/civicrm/civicrm-core/pull/17260))**
301
302 - **Statically added members of a smart group are not found
303 ([dev/core#1745](https://lab.civicrm.org/dev/core/-/issues/1745):
304 [17419](https://github.com/civicrm/civicrm-core/pull/17419))**
305
306 - **Deleting an activity with attachments doesn't delete the file or entries in
307 civicrm_file/civicrm_entity_file
308 ([dev/core#1753](https://lab.civicrm.org/dev/core/-/issues/1753):
309 [17298](https://github.com/civicrm/civicrm-core/pull/17298))**
310
311 - **Deselected checkbox settings are not saved
312 ([dev/core#1794](https://lab.civicrm.org/dev/core/-/issues/1794):
313 [17493](https://github.com/civicrm/civicrm-core/pull/17493))**
314
315 Ensures deselected values are saved on custom field settings forms.
316
317 - **Added activity types don't appear in the type dropdown on New Activity
318 ([dev/core#1822](https://lab.civicrm.org/dev/core/-/issues/1822):
319 [17625](https://github.com/civicrm/civicrm-core/pull/17625))**
320
321 - **API doesn't allow passing option values by label
322 ([dev/core#1816](https://lab.civicrm.org/dev/core/-/issues/1816):
323 [17628](https://github.com/civicrm/civicrm-core/pull/17628))**
324
325 Updates APIv4 so that it matches based on label if name is not found.
326
327 - **APIv4 - Improve custom field spec gathering
328 ([17471](https://github.com/civicrm/civicrm-core/pull/17471))**
329
330 - **APIv4 - Remove implicit multi joins & add explicit joins
331 ([17332](https://github.com/civicrm/civicrm-core/pull/17332))**
332
333 - **APIv4 - Fix entity name on custom groups in schemaMapper
334 ([17425](https://github.com/civicrm/civicrm-core/pull/17425))**
335
336 - **APIv4 - fix returning custom field values with API4
337 ([17399](https://github.com/civicrm/civicrm-core/pull/17399))**
338
339 - **Attempting to access Multi-Record Custom Field import results
340 in crash
341 ([dev/core#1841](https://lab.civicrm.org/dev/core/-/issues/1841):
342 [17713](https://github.com/civicrm/civicrm-core/pull/17713))**
343
344 - **Fix issue with building smart groups when $contactQueries is empty
345 ([17622](https://github.com/civicrm/civicrm-core/pull/17622))**
346
347 If a clause of a contact query used to build a smart group is empty, it would
348 result in a database error.
349
350 - **Replace deprecated `money_format()` fn to support PHP 7.4
351 (Work Towards [dev/core#1494](https://lab.civicrm.org/dev/core/-/issues/1494):
352 [17577](https://github.com/civicrm/civicrm-core/pull/17577), [17730](https://github.com/civicrm/civicrm-core/pull/17730))**
353
354 Adds a deprecation notice and a status check for a money value format
355 configuration other than the default.
356
357 - **QueueTest - Be more forgiving about slow execution
358 ([17532](https://github.com/civicrm/civicrm-core/pull/17532))**
359
360 - **CommunityMessages - Define more consistent behavior in the face of slow
361 execution ([17529](https://github.com/civicrm/civicrm-core/pull/17529))**
362
363 This helps avoid test failures on broadcast messages when the system is
364 running slowly.
365
366 - **Scheduled Reminders - Set boolean fields to false if not set.
367 ([17494](https://github.com/civicrm/civicrm-core/pull/17494))**
368
369 - **Allow bidirectional assignment of relationships from search results
370 ([17413](https://github.com/civicrm/civicrm-core/pull/17413))**
371
372 Previously relationships could only be created from search results where the
373 contacts would be valid in the "A" side of the relationship type.
374
375 - **Navigation menu - Fix translation of new-subtype entries
376 ([17451](https://github.com/civicrm/civicrm-core/pull/17451))**
377
378 The "New" in menu items for creating a new contact of a subtype was not
379 translated.
380
381 - **utf8mb4 - If strict mode enabled query will fail if KEY_BLOCK_SIZE is not 0
382 ([17253](https://github.com/civicrm/civicrm-core/pull/17253))**
383
384 - **Update DAO and l10n schema file
385 ([17395](https://github.com/civicrm/civicrm-core/pull/17395))**
386
387 Price option name and value are now required in the database.
388
389 - **Fix adding languages in multilingual
390 ([17228](https://github.com/civicrm/civicrm-core/pull/17228))**
391
392 This resolves a database error when adding or removing a language on a
393 multilingual site.
394
395 - **Don't exclude deleted contacts from ACL cache when user has permission
396 ([17379](https://github.com/civicrm/civicrm-core/pull/17379))**
397
398 - **SMTP page appears broken when language is French (JS issue)
399 ([dev/core#1760](https://lab.civicrm.org/dev/core/-/issues/1760):
400 [17317](https://github.com/civicrm/civicrm-core/pull/17317))**
401
402 Javascript strings that appear in Smarty are now escaped more thoroughly to
403 avoid markup problems.
404
405 - **Add serialize column to civicrm_custom_field, remove "Multi-Select" html
406 type ([16992](https://github.com/civicrm/civicrm-core/pull/16992), [17722](https://github.com/civicrm/civicrm-core/pull/17722))**
407
408 Work towards making custom select and multi-select fields more similar to
409 core select/multi-select fields.
410
411 - **Respect file fields that have been configured as view only in profiles
412 ([17079](https://github.com/civicrm/civicrm-core/pull/17079))**
413
414 - **Tag create - Respect created_date and created_id params
415 ([17257](https://github.com/civicrm/civicrm-core/pull/17257))**
416
417 - **Public status messages should show correct class/icon like error
418 ([17376](https://github.com/civicrm/civicrm-core/pull/17376))**
419
420 - **Decorative chevrons should be icons not angle quotes
421 ([17245](https://github.com/civicrm/civicrm-core/pull/17245))**
422
423 - **A/B Test - Icon should be Erlenmeyer flask, not bar chart
424 ([17316](https://github.com/civicrm/civicrm-core/pull/17316))**
425
426 - **Proceeding to confirmation page should be a "next" button not a check
427 ([17246](https://github.com/civicrm/civicrm-core/pull/17246))**
428
429 ### CiviCase
430
431 - **Case Activity: Follow-up activity assignee does not receive email
432 ([dev/core#1721](https://lab.civicrm.org/dev/core/-/issues/1721):
433 [17116](https://github.com/civicrm/civicrm-core/pull/17116))**
434
435 Ensures when a follow up case activity is created the assignee is sent an
436 email.
437
438 ### CiviContribute
439
440 - **Custom fields disappear on page refresh
441 ([dev/core#1728](https://lab.civicrm.org/dev/core/-/issues/1728):
442 [17301](https://github.com/civicrm/civicrm-core/pull/17301))**
443
444 This ensures that financial type specific custom fields are displayed on the
445 backend contribution form when it is refreshed.
446
447 - **Fix pricefield pseudoconstant.
448 ([17364](https://github.com/civicrm/civicrm-core/pull/17364))**
449
450 Fixes `PriceField` entity to build options for the `price_set_id`
451 pseudoconstant field.
452
453 - **Nuance cancel options for processors
454 ([17430](https://github.com/civicrm/civicrm-core/pull/17430))**
455
456 This allows payment processors to specify the way they allow cancellation of
457 recurring contributions.
458
459 - **[regression] Contribution amount choices don't appear for anonymous users
460 ([dev/core#1823](https://lab.civicrm.org/dev/core/-/issues/1823):
461 [17619](https://github.com/civicrm/civicrm-core/pull/17619))**
462
463 - **Import Contribution of custom fields only accepts "Numeric Value" rather
464 than "Label" ([dev/core#1806](https://lab.civicrm.org/dev/core/-/issues/1806):
465 [17632](https://github.com/civicrm/civicrm-core/pull/17632))**
466
467 - **"Financial Type" listed twice in contribution export
468 ([dev/core#1650](https://lab.civicrm.org/dev/core/-/issues/1650):
469 [17147](https://github.com/civicrm/civicrm-core/pull/17147))**
470
471 - **Record Payment does not update check_number & trxn id on main contribution.
472 ([dev/core#1758](https://lab.civicrm.org/dev/core/-/issues/1758):
473 [17314](https://github.com/civicrm/civicrm-core/pull/17314))**
474
475 - **civicrm_financial_trxn.fee_amount reversals mixed up
476 ([dev/core#1775](https://lab.civicrm.org/dev/core/-/issues/1775):
477 [17386](https://github.com/civicrm/civicrm-core/pull/17386))**
478
479 - **jquery validation type error on the credit card field
480 ([dev/core#1797](https://lab.civicrm.org/dev/core/-/issues/1797):
481 [17497](https://github.com/civicrm/civicrm-core/pull/17497))**
482
483 Fixes a jQuery error when submitting a front end contribution form with a
484 credit card field.
485
486 - **Fix payment instrument bug by using correct payment instrument
487 ([17607](https://github.com/civicrm/civicrm-core/pull/17607))**
488
489 When a backend payment form records a payment it now will use a
490 processor-specific default payment instrument rather than the site-wide
491 default if it is set.
492
493 - **Payment PropertyBag - Fix setAmount
494 ([17505](https://github.com/civicrm/civicrm-core/pull/17505))**
495
496 Ensures "Amount" is set correctly on PropertyBag.
497
498 - **Fixed hide show of start date
499 ([17446](https://github.com/civicrm/civicrm-core/pull/17446))**
500
501 Fix hide/show of receive date for recurring contributions.
502
503 - **Don't allow Contribution.repeattransaction to be used without a recurring
504 contribution ([17447](https://github.com/civicrm/civicrm-core/pull/17447))**
505
506 - **Add actual field name for processor_id to getSubscriptionDetails
507 ([17466](https://github.com/civicrm/civicrm-core/pull/17466))**
508
509 - **Make 'Pending' the default status for Contribution.repeattransaction
510 ([17432](https://github.com/civicrm/civicrm-core/pull/17432))**
511
512 - **Fetch line items from correct contribution when repeating a contribution
513 ([17220](https://github.com/civicrm/civicrm-core/pull/17220))**
514
515 - **Support order_reference param in API3 Payment.create
516 ([17278](https://github.com/civicrm/civicrm-core/pull/17278))**
517
518 - **E_WARNINGS when viewing list of pledge payments
519 ([dev/core#1791](https://lab.civicrm.org/dev/core/-/issues/1791):
520 [17434](https://github.com/civicrm/civicrm-core/pull/17434))**
521
522 - **Add propertyBag handling for getEmail when incoming uses email-5
523 ([17267](https://github.com/civicrm/civicrm-core/pull/17267))**
524
525 Payment processors can now retrieve billing email using the `propertyBag`
526 class methods.
527
528 ### CiviMail
529
530 - **Don't log subscription_history
531 ([dev/core#1762](https://lab.civicrm.org/dev/core/-/issues/1762):
532 [17323](https://github.com/civicrm/civicrm-core/pull/17323))**
533
534 The `civicrm_subscription_history` table is effectively a log of contacts
535 being added to and removed from groups. Rows do not change value; each change
536 in group subscription results in a new row. Consequently, there is no reason
537 to attach detailed logging to this table.
538
539 - **Unsubscribe generates 500 server error responses, logs say "missing
540 parameters" ([dev/core#1773](https://lab.civicrm.org/dev/core/-/issues/1773):
541 [17402](https://github.com/civicrm/civicrm-core/pull/17402))**
542
543 Ensures the unsubscribe form can only be submitted once.
544
545 ### CiviMember
546
547 - **Recurring contribution fails with "ipn_payment_callback_exception", for
548 membership auto-renewal via PayPalPro.
549 ([dev/core#1608](https://lab.civicrm.org/dev/core/-/issues/1608):
550 [17355](https://github.com/civicrm/civicrm-core/pull/17355))**
551
552 - **Don't hide disabled memberships from the contact membership tab
553 ([dev/membership#24](https://lab.civicrm.org/dev/membership/-/issues/24):
554 [17143](https://github.com/civicrm/civicrm-core/pull/17143) and
555 [17435](https://github.com/civicrm/civicrm-core/pull/17435))**
556
557 This resolves a problem where memberships of disabled membership types would
558 not appear on the membership tab but would throw a duplicate membership
559 warning when creating a new membership with the same membership organization.
560 This also adds a unit test to lock in the correct behavior.
561
562 - **Update MembershipType.name to be a required field
563 ([17463](https://github.com/civicrm/civicrm-core/pull/17463))**
564
565 - **Fix PHP notice when is_override is not set
566 ([17273](https://github.com/civicrm/civicrm-core/pull/17273))**
567
568 ### Joomla Integration
569
570 - **Upgrade from 5.26.2 to 5.27 RC Fails
571 ([dev/joomla/#28](https://lab.civicrm.org/dev/joomla/-/issues/28):
572 [17710](https://github.com/civicrm/civicrm-core/pull/17710))**
573
574 ### WordPress Integration
575
576 - **Styling issues after upgrade to WordPress 5.3
577 ([dev/wordpress#46](https://lab.civicrm.org/dev/wordpress/-/issues/46):
578 [16967](https://github.com/civicrm/civicrm-core/pull/16967))**
579
580 - **WP - Change definitions of `cms.root`, `civicrm.root`
581 ([17360](https://github.com/civicrm/civicrm-core/pull/17360))**
582
583 The base logic for computing path/URL defaults is in Civi/Core/Paths.php.
584
585 For CiviCRM on WordPress, certain variables (which are easier to compute via
586 WordPress APIs) are overridden in `CRM_Utils_System_WordPress`.
587
588 On WordPress, the path/URL logic for has been split: there is one code path
589 for normal CiviCRM pages which is based on WordPress APIs, and there is
590 another for older, standalone scripts in the `extern` folder which is based on
591 the same logic as before.
592
593 - **Declare minimum WP and PHP versions required for installation
594 ([201](https://github.com/civicrm/civicrm-wordpress/pull/201))**
595
596 - **wp-rest - Adjust extern URL. Be more defensive about 'query' part.
597 ([192](https://github.com/civicrm/civicrm-wordpress/pull/192))**
598
599 This resolves issues with tracking URLs via the `wp-rest` endpoint that are
600 then modified with `hook_civicrm_alterExternUrl`.
601
602 ## <a name="misc"></a>Miscellany
603
604 - **Handle less common dynamic reference cases
605 ([17653](https://github.com/civicrm/civicrm-core/pull/17653))**
606
607 - **Use apiv4, cache infra for basicTypes
608 ([17387](https://github.com/civicrm/civicrm-core/pull/17387))**
609
610 - **Cleanup PriceFieldValue BAO
611 ([17306](https://github.com/civicrm/civicrm-core/pull/17306))**
612
613 - **Clarify definition of amount field in civicrm_contribution_recur table.
614 ([17311](https://github.com/civicrm/civicrm-core/pull/17311))**
615
616 - **Call completeOrder directly from contribute status update form
617 ([17347](https://github.com/civicrm/civicrm-core/pull/17347))**
618
619 - **Switch docblock code to use markdown syntax.
620 ([17304](https://github.com/civicrm/civicrm-core/pull/17304))**
621
622 - **Preliminary cleanup on form
623 ([17345](https://github.com/civicrm/civicrm-core/pull/17345))**
624
625 - **Add getBAOClassName utiltiy function
626 ([17268](https://github.com/civicrm/civicrm-core/pull/17268))**
627
628 - **CRM/Logging - Remove obsolete cache static clear in test
629 ([17269](https://github.com/civicrm/civicrm-core/pull/17269))**
630
631 - **Remove incorrect retrievals of tax-term setting
632 ([17183](https://github.com/civicrm/civicrm-core/pull/17183))**
633
634 - **CiviEvent Dashboard and Manage Events: clean up disused url template vars
635 ([17378](https://github.com/civicrm/civicrm-core/pull/17378))**
636
637 - **Set default using spec for activity_date_time
638 ([17390](https://github.com/civicrm/civicrm-core/pull/17390))**
639
640 - **Convert remaining Authorize.net test to use guzzle
641 ([17473](https://github.com/civicrm/civicrm-core/pull/17473))**
642
643 - **Various BAO create/add cleanups to use writeRecord()
644 ([17308](https://github.com/civicrm/civicrm-core/pull/17308))**
645
646 - **Remove instantiation of transaction from payment express ipn class
647 ([17348](https://github.com/civicrm/civicrm-core/pull/17348))**
648
649 - **Remove null code
650 ([17381](https://github.com/civicrm/civicrm-core/pull/17381))**
651
652 - **Remove validation bypass
653 ([17384](https://github.com/civicrm/civicrm-core/pull/17384))**
654
655 - **Simplify recurring contribution template inheritance
656 ([17178](https://github.com/civicrm/civicrm-core/pull/17178))**
657
658 - **Remove $_REQUEST passed into CRM_Utils_Request::retrieve NFC
659 ([17377](https://github.com/civicrm/civicrm-core/pull/17377))**
660
661 - **Use now instead of date for activity API3 spec
662 ([17411](https://github.com/civicrm/civicrm-core/pull/17411))**
663
664 - **Typo Fix ([17409](https://github.com/civicrm/civicrm-core/pull/17409))**
665
666 - **Fix logic for job log cleanup and make SQL safer
667 ([17203](https://github.com/civicrm/civicrm-core/pull/17203))**
668
669 - **Remove always-true if block.
670 ([17415](https://github.com/civicrm/civicrm-core/pull/17415))**
671
672 - **Remove No longer required HTTP_Request Package
673 ([293](https://github.com/civicrm/civicrm-packages/pull/293))**
674
675 - **Remove code that still seems unnecessary.
676 ([17342](https://github.com/civicrm/civicrm-core/pull/17342))**
677
678 - **Undo variable variable.
679 ([17371](https://github.com/civicrm/civicrm-core/pull/17371))**
680
681 - **Use non-deprecated method
682 ([17370](https://github.com/civicrm/civicrm-core/pull/17370))**
683
684 - **Remove last reference to Payment->_processorName in core & remove from
685 processors ([17474](https://github.com/civicrm/civicrm-core/pull/17474))**
686
687 - **Remove unused singleton from core payment processors
688 ([17468](https://github.com/civicrm/civicrm-core/pull/17468))**
689
690 - **Test fixes to support apiv4 add of MembershipType
691 ([17488](https://github.com/civicrm/civicrm-core/pull/17488))**
692
693 - **Merge code - remove UPDATE IGNORE+Delete & just use reliable update
694 ([17072](https://github.com/civicrm/civicrm-core/pull/17072))**
695
696 - **Remove unneeded parameters in {ts} on membership form
697 ([17326](https://github.com/civicrm/civicrm-core/pull/17326))**
698
699 - **Remove unused 'reset' param, other NFC tidy up:
700 ([17392](https://github.com/civicrm/civicrm-core/pull/17392))**
701
702 - **Fix setLanguage docblock, other nfc changes
703 ([17356](https://github.com/civicrm/civicrm-core/pull/17356))**
704
705 - **[REF] Simplify contributionIDs code
706 ([17441](https://github.com/civicrm/civicrm-core/pull/17441))**
707
708 - **[REF] Extract getAttachments
709 ([17405](https://github.com/civicrm/civicrm-core/pull/17405))**
710
711 - **[REF] Preliminary cleanup for #17339
712 ([17417](https://github.com/civicrm/civicrm-core/pull/17417))**
713
714 - **[REF] Remove unreachable block.
715 ([17407](https://github.com/civicrm/civicrm-core/pull/17407))**
716
717 - **[REF] Pass an array of correct params to the function to create a recurring
718 contribution. ([17398](https://github.com/civicrm/civicrm-core/pull/17398))**
719
720 - **[REF] Code simplification & unit test on suppressed emails in task
721 ([17393](https://github.com/civicrm/civicrm-core/pull/17393))**
722
723 - **[REF] duplicate function.
724 ([17400](https://github.com/civicrm/civicrm-core/pull/17400))**
725
726 - **[REF] Pass params not-by-reference
727 ([17406](https://github.com/civicrm/civicrm-core/pull/17406))**
728
729 - **[REF] Refactor to switch from pear HTTP Request class to using Guzzle
730 ([17420](https://github.com/civicrm/civicrm-core/pull/17420))**
731
732 - **[REF] [Reports] Ensure that all contribution pages including disabled ones
733 are return… ([17357](https://github.com/civicrm/civicrm-core/pull/17357))**
734
735 - **[REF] Cleanup and extract string functions specific to entity names.
736 ([17330](https://github.com/civicrm/civicrm-core/pull/17330))**
737
738 - **[REF] Stop passing by reference.
739 ([17349](https://github.com/civicrm/civicrm-core/pull/17349))**
740
741 - **[REF] Simplify subject code.
742 ([17436](https://github.com/civicrm/civicrm-core/pull/17436))**
743
744 - **[REF] Implement required fields database changes that have occured du…
745 ([17465](https://github.com/civicrm/civicrm-core/pull/17465), [17725](https://github.com/civicrm/civicrm-core/pull/17725))**
746
747 - **[REF] Bump Pear Log version to fix compatability with Drupal 8 / Drup…
748 ([17460](https://github.com/civicrm/civicrm-core/pull/17460))**
749
750 - **[REF] Convert one of the http calls in Authorize.net class to use guzzle.
751 ([17449](https://github.com/civicrm/civicrm-core/pull/17449))**
752
753 - **[REF] Minor simplification
754 ([17443](https://github.com/civicrm/civicrm-core/pull/17443))**
755
756 - **[REF] Grant BAO cleanup
757 ([17264](https://github.com/civicrm/civicrm-core/pull/17264))**
758
759 - **[REF] CRM_Core_DAO_AllCoreTables::getBriefName to accept BAO name
760 ([17331](https://github.com/civicrm/civicrm-core/pull/17331))**
761
762 - **[REF] Missing semicolon on smtp settings page, code cleanup in file-on-case,
763 add test ([17335](https://github.com/civicrm/civicrm-core/pull/17335))**
764
765 - **[REF] Extract createFollowUpActivities
766 ([17481](https://github.com/civicrm/civicrm-core/pull/17481))**
767
768 - **[REF] Switch to an api call to get the contact details.
769 ([17442](https://github.com/civicrm/civicrm-core/pull/17442))**
770
771 - **[REF] Minor code simplification
772 ([17373](https://github.com/civicrm/civicrm-core/pull/17373))**
773
774 - **[REF] Call completeOrder directly from event status update form
775 ([17346](https://github.com/civicrm/civicrm-core/pull/17346))**
776
777 - **[REF] Remove never-passed params from function signature
778 ([17464](https://github.com/civicrm/civicrm-core/pull/17464))**
779
780 - **[REF] Fix serialized membership field handling in RelationshipTest
781 ([17469](https://github.com/civicrm/civicrm-core/pull/17469))**
782
783 - **[REF] Minor tidy up
784 ([17302](https://github.com/civicrm/civicrm-core/pull/17302))**
785
786 - **[REF] Remove always NULL param modified_id
787 ([17489](https://github.com/civicrm/civicrm-core/pull/17489))**
788
789 - **[REF] Add contribution_id field to search using metadata instead of h…
790 ([17286](https://github.com/civicrm/civicrm-core/pull/17286))**
791
792 - **[REF] Fix unit test failures on MySQL 5.6 due to Custom Field table being
793 created without Dynamic Row Format
794 ([17586](https://github.com/civicrm/civicrm-core/pull/17586))**
795
796 - **[REF] Start to convert Dummy processor to use PropertyBag
797 ([17452](https://github.com/civicrm/civicrm-core/pull/17452))**
798
799 - **[Ref] remove calls to, and deprecate, pending function
800 ([17490](https://github.com/civicrm/civicrm-core/pull/17490))**
801
802 - **[REF] Cleanup MailingAB BAO
803 ([17309](https://github.com/civicrm/civicrm-core/pull/17309))**
804
805 - **[TEST] Update test to support for 8.0.19 change
806 ([17354](https://github.com/civicrm/civicrm-core/pull/17354))**
807
808 - **[TEST] Fix test failure on Drupal 8 E2E PrevNextTest by only includin…
809 ([17358](https://github.com/civicrm/civicrm-core/pull/17358))**
810
811 - **[TEST] dev/core#1766 - Remove flakiness from testGetFromTo tests
812 ([dev/core#1766](https://lab.civicrm.org/dev/core/-/issues/1766):
813 [17338](https://github.com/civicrm/civicrm-core/pull/17338))**
814
815 - **[NFC/TEST] dev/core#1784 - Unit tests for contact delete/restore
816 ([dev/core#1784](https://lab.civicrm.org/dev/core/-/issues/1784):
817 [17437](https://github.com/civicrm/civicrm-core/pull/17437))**
818
819 - **NFC - Change array() to short syntax []
820 ([17470](https://github.com/civicrm/civicrm-core/pull/17470))**
821
822 - **[NFC] Update Karma to be latest version
823 ([17439](https://github.com/civicrm/civicrm-core/pull/17439))**
824
825 - **(NFC) CRM_Utils_Url - Fix declared type
826 ([17320](https://github.com/civicrm/civicrm-core/pull/17320))**
827
828 - **[NFC] Remove some more of the old cvs blocks
829 ([17383](https://github.com/civicrm/civicrm-core/pull/17383))**
830
831 - **NFC Add a bit more clarity to createEmailActivity function
832 ([17391](https://github.com/civicrm/civicrm-core/pull/17391))**
833
834 - **[NFC] Add comment that deprecated code is actually still reachable
835 ([17340](https://github.com/civicrm/civicrm-core/pull/17340))**
836
837 - **(NFC) Remove some cvs docblock help
838 ([17322](https://github.com/civicrm/civicrm-core/pull/17322))**
839
840 - **[NFC] Add comment regarding lower case for Polish states
841 ([17327](https://github.com/civicrm/civicrm-core/pull/17327))**
842
843 - **(NFC) RegionTest - Small cleanups
844 ([17270](https://github.com/civicrm/civicrm-core/pull/17270))**
845
846 - **[NFC] Add sr-only class for content only for screen readers
847 ([17255](https://github.com/civicrm/civicrm-core/pull/17255))**
848
849 - **NFC Change hardcoded ID to constant
850 ([17275](https://github.com/civicrm/civicrm-core/pull/17275))**
851
852 - **[NFC] Fix use of single quotes, strict operator
853 ([17492](https://github.com/civicrm/civicrm-core/pull/17492))**
854
855 ## <a name="credits"></a>Credits
856
857 This release was developed by the following code authors:
858
859 a-n The Artists Information Company - William Mortada; AGH Strategies - Alice
860 Frumin, Andrew Hunt; Andrei Mondoc; British Humanist Association - Andrew West;
861 Caltha - Tomasz Pietrzkowski; Christian Wach; Circle Interactive - Pradeep
862 Nayak; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku;
863 CompuCorp - René Olivo; Coop SymbioTIC - Mathieu Lutfy; Dave D; Dominic Hargreaves;
864 Electronic Frontier Foundation - Mark Burdett; Freeform Solutions - Herb van den
865 Dool; Fuzion - Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick
866 Figel; JMA Consulting - Edsel Lopez, Seamus Lee; John Kingsnorth; Joinery -
867 Allen Shaw; Kartik Kathuria; Lighthouse Design and Consulting - Brian
868 Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJCO - Mikey
869 O'Toole; MJW Consulting - Matthew Wire; Palante Technology Cooperative - Morgan
870 Robinson; Semper IT - Karin Gerritsen; Tadpole Collective - Kevin Cristiano;
871 Wikimedia Foundation - Eileen McNaughton
872
873 Most authors also reviewed code for this release; in addition, the following
874 reviewers contributed their comments:
875
876 Agileware - Justin Freeman; Artful Robot - Rich Lott; Betty Dolfing; CiviCoop -
877 Jaap Jansma; iXiam - Luciano Spiegel; JMA Consulting - Monish Deb; Kartik
878 Kathuria; Korlon - Stuart Gaston; Megaphone Technology Consulting - Dennis P.
879 Osorio; Squiffle Consulting - Aidan Saunders
880
881 ## <a name="feedback"></a>Feedback
882
883 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
884 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
885 and contact `@agh1`.