| 1 | # CiviCRM 5.23.0 |
| 2 | |
| 3 | Released March 4, 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? | no | |
| 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 | - **Add PDF letter functionality for Activities using new token processor |
| 29 | ([14662](https://github.com/civicrm/civicrm-core/pull/14662))** |
| 30 | |
| 31 | Adds the ability to create PDF letters that include activity tokens from the |
| 32 | activity search. |
| 33 | |
| 34 | - **Add utf8 to utfmb8 conversion api command |
| 35 | ([15969](https://github.com/civicrm/civicrm-core/pull/15969))** |
| 36 | |
| 37 | Adds an API to convert the database from utf8 to utf8mb4. This is intended to |
| 38 | help early adopters using the utf8mb4 standard (which includes support for |
| 39 | emojis) with CiviCRM. |
| 40 | |
| 41 | - **Move exportui extension into core |
| 42 | ([16335](https://github.com/civicrm/civicrm-core/pull/16335))** |
| 43 | |
| 44 | Updates the 'Select Fields' screen on step 3 of the Export wizard. |
| 45 | |
| 46 | - **Allow setting a custom L10n/I18n resource directory |
| 47 | ([dev/translation#30](https://lab.civicrm.org/dev/translation/issues/30): |
| 48 | [15408](https://github.com/civicrm/civicrm-core/pull/15408) and |
| 49 | [16583](https://github.com/civicrm/civicrm-core/pull/16583))** |
| 50 | |
| 51 | Adds a new setting for the "L10n/I18n resource directory" which allows site |
| 52 | administrators to specify the location of the l10n directory (and allows the |
| 53 | directory to be outside of the main code base). |
| 54 | |
| 55 | - **Proposal to add a new hook_civicrm_alterExternUrl |
| 56 | ([dev/core#1100](https://lab.civicrm.org/dev/core/issues/1100): |
| 57 | [15475](https://github.com/civicrm/civicrm-core/pull/15475))** |
| 58 | |
| 59 | Adds a new hook `hook_civicrm_alterExternUrl` which can be used by extension |
| 60 | developers to alter Extern scripts. |
| 61 | |
| 62 | - **Support MySQL 8.0 now that it is GA |
| 63 | (Work Towards [dev/core#392](https://lab.civicrm.org/dev/core/issues/392): |
| 64 | [16204](https://github.com/civicrm/civicrm-core/pull/16204), |
| 65 | [16202](https://github.com/civicrm/civicrm-core/pull/16202) and |
| 66 | [16207](https://github.com/civicrm/civicrm-core/pull/16207))** |
| 67 | |
| 68 | Works toward supporting MySQL 8.0 by: |
| 69 | + Ensuring that the log_date column on logging tables is NOT NULL in MySQL 8. |
| 70 | + Ensuring that `CRM_Utils_QueryFormatterTest` passes on MySQL 8. |
| 71 | + Fixing the handling of dates in `getMembershipStarts` function to ensure |
| 72 | date is passed to query as yyyy-mm-dd to fix test failure on MySQL 8. |
| 73 | |
| 74 | - **Field Names now Reserved Words in MySQL8 |
| 75 | ([dev/core#1143](https://lab.civicrm.org/dev/core/issues/1143): |
| 76 | [16206](https://github.com/civicrm/civicrm-core/pull/16206), |
| 77 | [16203](https://github.com/civicrm/civicrm-core/pull/16203), |
| 78 | [16201](https://github.com/civicrm/civicrm-core/pull/16201), |
| 79 | [16193](https://github.com/civicrm/civicrm-core/pull/16193) and |
| 80 | [16214](https://github.com/civicrm/civicrm-core/pull/16214))** |
| 81 | |
| 82 | MySQL8 reserves the words "description" and "grouping" which CiviCRM uses as |
| 83 | field names. These changes work to ensure that these fields play nicely when |
| 84 | using MySQL8. |
| 85 | |
| 86 | - **CQ: Migrate simple Preferences & Settings forms to using a Generic class. |
| 87 | (Work Towards [dev/core#495](https://lab.civicrm.org/dev/core/issues/495): |
| 88 | [16224](https://github.com/civicrm/civicrm-core/pull/16224), |
| 89 | [16234](https://github.com/civicrm/civicrm-core/pull/16234), |
| 90 | [16235](https://github.com/civicrm/civicrm-core/pull/16235), |
| 91 | [16236](https://github.com/civicrm/civicrm-core/pull/16236), |
| 92 | [16237](https://github.com/civicrm/civicrm-core/pull/16237), |
| 93 | [16233](https://github.com/civicrm/civicrm-core/pull/16233), |
| 94 | [16232](https://github.com/civicrm/civicrm-core/pull/16232), |
| 95 | [16228](https://github.com/civicrm/civicrm-core/pull/16228), |
| 96 | [16229](https://github.com/civicrm/civicrm-core/pull/16229) and |
| 97 | [16227](https://github.com/civicrm/civicrm-core/pull/16227))** |
| 98 | |
| 99 | Makes admin settings field labels translatable. |
| 100 | |
| 101 | - **composer.json - Update civicrm-setup |
| 102 | ([16423](https://github.com/civicrm/civicrm-core/pull/16423))** |
| 103 | |
| 104 | Improves civicrm-setup for scripted installations of Druapl8 with `cv` and GUI |
| 105 | based installations on WordPress. |
| 106 | |
| 107 | - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception |
| 108 | (Work Towards [dev/core#560](https://lab.civicrm.org/dev/core/issues/560): |
| 109 | [16433](https://github.com/civicrm/civicrm-core/pull/16433))** |
| 110 | |
| 111 | Work towards throwing exceptions instead of fatal errors. |
| 112 | |
| 113 | - **Google+ references should be removed as it phases out (Work Towards |
| 114 | [dev/core#711](https://lab.civicrm.org/dev/core/issues/711): |
| 115 | [16099](https://github.com/civicrm/civicrm-core/pull/16099) and |
| 116 | [16185](https://github.com/civicrm/civicrm-core/pull/16185))** |
| 117 | |
| 118 | Google is phasing out Google+ this begins work to remove all visible |
| 119 | references to Google+ from CiviCRM. |
| 120 | |
| 121 | - **"config_backend" should be thoroughly removed (Work Towards |
| 122 | [dev/core#1387](https://lab.civicrm.org/dev/core/issues/1387): |
| 123 | [15842](https://github.com/civicrm/civicrm-core/pull/15842))** |
| 124 | |
| 125 | Ensures that the column `civicrm_domain.config_backend` is not created on new |
| 126 | sites and drops the column `civicrm_domain.config_backend` for sites that |
| 127 | started on 4.7-5.20. Additionally, this deprecates some functions related to |
| 128 | the setting `civicrm_domain.config_backend`. |
| 129 | |
| 130 | - **Address ID field should be exportable |
| 131 | ([dev/core#1512](https://lab.civicrm.org/dev/core/issues/1512): |
| 132 | [16240](https://github.com/civicrm/civicrm-core/pull/16240))** |
| 133 | |
| 134 | Makes Address ID an exportable field. |
| 135 | |
| 136 | - **APIv3 - Only scan files for deprecation checks in Entity.get |
| 137 | ([16460](https://github.com/civicrm/civicrm-core/pull/16460))** |
| 138 | |
| 139 | Improves performance of APIv3 by stopping scanning nonexistent files. |
| 140 | |
| 141 | - **Add debug info to api4 output |
| 142 | ([16351](https://github.com/civicrm/civicrm-core/pull/16351))** |
| 143 | |
| 144 | Improves API4 by adding debug info and displaying the query. |
| 145 | |
| 146 | - **APIv4 - don't throw exception when updating/deleting 0 items |
| 147 | ([16374](https://github.com/civicrm/civicrm-core/pull/16374))** |
| 148 | |
| 149 | Improves APIv4's update and delete actions when operating on 0 items so that |
| 150 | they do not throw exceptions, instead they return 0 results. |
| 151 | |
| 152 | - **APIv4 - Variable substitution in docblocks |
| 153 | ([16449](https://github.com/civicrm/civicrm-core/pull/16449))** |
| 154 | |
| 155 | Makes the help text more meaningful in the APIv4 Explorer by always referring to |
| 156 | the correct entity & action names. |
| 157 | |
| 158 | - **APIv4 Explorer css tweaks |
| 159 | ([16431](https://github.com/civicrm/civicrm-core/pull/16431))** |
| 160 | |
| 161 | Makes the checkboxes in the APIv4 explorer line up better and makes them bold |
| 162 | when checked. |
| 163 | |
| 164 | - **APIv4 docs improvements |
| 165 | ([16411](https://github.com/civicrm/civicrm-core/pull/16411))** |
| 166 | |
| 167 | Improves APIv4 docs and their display in the explorer. |
| 168 | |
| 169 | - **APIv4 Explorer - Better UI for defaults param |
| 170 | ([16454](https://github.com/civicrm/civicrm-core/pull/16454))** |
| 171 | |
| 172 | Improves APIv4 so that it handles defaults param with select2 instead of a |
| 173 | text box. Also shows the new way of using the variadic addSelect function. |
| 174 | |
| 175 | - **Api4 - improve docblocks & display links in explorer |
| 176 | ([16373](https://github.com/civicrm/civicrm-core/pull/16373))** |
| 177 | |
| 178 | Improves documentation for most APIv4 entities by adding clickable links |
| 179 | to documentation displayed in the APIv4 explorer. |
| 180 | |
| 181 | - **Implement PaymentProcessor and PaymentProcessorType APIv4 Entities |
| 182 | ([15624](https://github.com/civicrm/civicrm-core/pull/15624))** |
| 183 | |
| 184 | Adds `PaymentProcesor` and `PaymentProcessorType` entities to APIv4. |
| 185 | |
| 186 | - **Update function to repair indexes to take table as a parameter |
| 187 | ([16146](https://github.com/civicrm/civicrm-core/pull/16146))** |
| 188 | |
| 189 | Makes it so the `System.getmissingindices` and `System.updateindexes` APIs |
| 190 | accept 'tables' as a parameter (array or string) and limits the results to the |
| 191 | specified tables if supplied. |
| 192 | |
| 193 | - **Api4 - Support wildcard * in select clause |
| 194 | ([16302](https://github.com/civicrm/civicrm-core/pull/16302))** |
| 195 | |
| 196 | Adds support for the * wildcard in the SELECT clause of APIv4 Get actions. |
| 197 | |
| 198 | - **Api4 - Filter returned fields by contact type |
| 199 | ([16300](https://github.com/civicrm/civicrm-core/pull/16300))** |
| 200 | |
| 201 | Ensures that civicrm_api4('Contact', 'get' ...) filters the fields returned |
| 202 | based on contact type. |
| 203 | |
| 204 | - **Api4 - Convert field values to correct data type |
| 205 | ([16274](https://github.com/civicrm/civicrm-core/pull/16274))** |
| 206 | |
| 207 | Ensures that Api4 returns field values as the correct data type (instead of |
| 208 | always as a raw string). |
| 209 | |
| 210 | - **Api4 - format output consistently across get/create/update. |
| 211 | ([16305](https://github.com/civicrm/civicrm-core/pull/16305))** |
| 212 | |
| 213 | Improves consistency of output in Api4. |
| 214 | |
| 215 | - **Add more functionality to the api4 $index param |
| 216 | ([16257](https://github.com/civicrm/civicrm-core/pull/16257))** |
| 217 | |
| 218 | Improves APIv4 by making the `$index` param support 4 modes: Integer, String, |
| 219 | Non-associative array and Associative array and documenting them more clearly. |
| 220 | |
| 221 | - **Use markdown in php docblocks & display in APIv4 Explorer |
| 222 | ([16425](https://github.com/civicrm/civicrm-core/pull/16425))** |
| 223 | |
| 224 | Reformats some docblocks to use markdown, and uses the marked.js library to |
| 225 | display the docblocks clearly in the APIv4 Explorer. |
| 226 | |
| 227 | - **Civi\Test - Allow `headless()->apply()` (etc) to execute without setup.sh |
| 228 | ([16405](https://github.com/civicrm/civicrm-core/pull/16405))** |
| 229 | |
| 230 | Makes it possible to run the headless test suites without running setup.sh. |
| 231 | |
| 232 | - **Allow most values of $civicrm_paths['XXX']['url'] to be relative |
| 233 | ([16403](https://github.com/civicrm/civicrm-core/pull/16403))** |
| 234 | |
| 235 | Allows system administrators to override various path and URL computations |
| 236 | using a relative URL. |
| 237 | |
| 238 | - **composer.json - Explicitly set target PHP platform |
| 239 | ([16421](https://github.com/civicrm/civicrm-core/pull/16421))** |
| 240 | |
| 241 | Refines the way in which composer resolves dependencies - so as to prefer |
| 242 | packages that are compatible with CiviCRM's declared minimum requirement. |
| 243 | |
| 244 | - **Add function to set entitySubType for entity forms |
| 245 | ([16017](https://github.com/civicrm/civicrm-core/pull/16017))** |
| 246 | |
| 247 | Makes it so entity subtype can be set in a standard way and is used if set. |
| 248 | |
| 249 | - **Add metadata to is_primary fields |
| 250 | ([16113](https://github.com/civicrm/civicrm-core/pull/16113))** |
| 251 | |
| 252 | Improves field information for `is_primary` for the sake of Form Builder. |
| 253 | |
| 254 | - **Check field to carry over custom data by default when the other contact has |
| 255 | none ([16246](https://github.com/civicrm/civicrm-core/pull/16246))** |
| 256 | |
| 257 | Improves the contact merge screen by defaulting to checking the box to |
| 258 | carryover any custom data fields where the contact being merged into has no |
| 259 | data. |
| 260 | |
| 261 | - **Add resolved to return array for get_conflicts |
| 262 | ([15829](https://github.com/civicrm/civicrm-core/pull/15829))** |
| 263 | |
| 264 | Enhances the `Contact.get_merge_conflicts` API call to also include an array |
| 265 | of resolved conflicts. |
| 266 | |
| 267 | ### CiviCase |
| 268 | |
| 269 | - **Add case tokens to email activities |
| 270 | ([dev/core#522](https://lab.civicrm.org/dev/core/issues/522): |
| 271 | [16105](https://github.com/civicrm/civicrm-core/pull/16105))** |
| 272 | |
| 273 | Adds the ability to use case tokens in PDF Letters and single emails. |
| 274 | |
| 275 | - **Restrict case roles by group |
| 276 | ([15570](https://github.com/civicrm/civicrm-core/pull/15570))** |
| 277 | |
| 278 | Adds a setting to restrict contacts available to be selected for a case role |
| 279 | by group. |
| 280 | |
| 281 | ### CiviContribute |
| 282 | |
| 283 | - **Add columns to Contribution Detail report: Employer, Location Type, |
| 284 | Preferred Communication Method |
| 285 | ([dev/core#1573](https://lab.civicrm.org/dev/core/issues/1573): |
| 286 | [16458](https://github.com/civicrm/civicrm-core/pull/16458))** |
| 287 | |
| 288 | Improves the Contribution Detail report by making the fields 'Employer', |
| 289 | 'Location Type', 'Preferred Communication Method' available as columns. |
| 290 | |
| 291 | - **Add "Contributor Name" to Offline Contribution Receipts |
| 292 | ([16286](https://github.com/civicrm/civicrm-core/pull/16286))** |
| 293 | |
| 294 | Adds the display name of the contributor to Offline Contribution Receipts. |
| 295 | |
| 296 | - **Add pre/post hooks on ContributionSoft entity |
| 297 | ([16264](https://github.com/civicrm/civicrm-core/pull/16264))** |
| 298 | |
| 299 | Add Pre and post hooks for the `ContributionSoft` entity. |
| 300 | |
| 301 | - **Deprecate creating partially paid contributions, other than by partially |
| 302 | paying a contribution. |
| 303 | ([15855](https://github.com/civicrm/civicrm-core/pull/15855))** |
| 304 | |
| 305 | Adds deprecation noise when an attempt is made to set a contribution to |
| 306 | partially paid other than by adding a payment (using Payment.create). This is |
| 307 | necessary not only because we have a preferred workflow but also because |
| 308 | setting to "Partially Paid" doesn't actually create the `financial_trxn` that |
| 309 | is required if done via `Contribution.create` flow. |
| 310 | |
| 311 | ### CiviEvent |
| 312 | |
| 313 | - **Expose "is_show_location" to control display of event locations |
| 314 | ([dev/core#1511](https://lab.civicrm.org/dev/core/issues/1511): |
| 315 | [16230](https://github.com/civicrm/civicrm-core/pull/16230))** |
| 316 | |
| 317 | Exposes an option to show event location on the event configuration tab. |
| 318 | |
| 319 | ### CiviMail |
| 320 | |
| 321 | - **Make Deja Vu Sans the default font for mailing labels |
| 322 | ([dev/core#1502](https://lab.civicrm.org/dev/core/issues/1502): |
| 323 | [16216](https://github.com/civicrm/civicrm-core/pull/16216))** |
| 324 | |
| 325 | Updates the default font for mailing labels to be "Deja Vu Sans" which is a |
| 326 | font that supports unicode characters. |
| 327 | |
| 328 | - **Pass through mailing id to alterMailContent hook |
| 329 | ([dev/core#1253](https://lab.civicrm.org/dev/core/issues/1253): |
| 330 | [15306](https://github.com/civicrm/civicrm-core/pull/15306))** |
| 331 | |
| 332 | Improves the `hook_civicrm_alterMailContent` hook by passing the mailing ID to |
| 333 | it so that developers can access data about the mailing that the content is |
| 334 | part of. |
| 335 | |
| 336 | - **Eventually google will require OAUTH for bounce processing and may require |
| 337 | it for outbound SMTP through gmail servers |
| 338 | (Work Towards [dev/mail#59](https://lab.civicrm.org/dev/mail/issues/59): |
| 339 | [16231](https://github.com/civicrm/civicrm-core/pull/16231), |
| 340 | [16518](https://github.com/civicrm/civicrm-core/pull/16518), |
| 341 | [16307](https://github.com/civicrm/civicrm-core/pull/16307) and |
| 342 | [16306](https://github.com/civicrm/civicrm-core/pull/16306))** |
| 343 | |
| 344 | Adds the ability to connect to IMAP server using XOAUTH2 protocol. Updates the |
| 345 | version of zetacomponents/mail package to a version that will support XAUTH2. |
| 346 | |
| 347 | - **Allow personalised 'view in browser' links for mass emails |
| 348 | ([dev/core#1064](https://lab.civicrm.org/dev/core/issues/1064): |
| 349 | [14591](https://github.com/civicrm/civicrm-core/pull/14591))** |
| 350 | |
| 351 | Improves the CiviMail "view in browser" experience by allowing personalized |
| 352 | links. |
| 353 | |
| 354 | ### CiviMember |
| 355 | |
| 356 | - **When viewing a membership show if the status is overridden |
| 357 | ([16341](https://github.com/civicrm/civicrm-core/pull/16341))** |
| 358 | |
| 359 | Adds the text "(Overridden)" next to the membership status when viewing a |
| 360 | membership for which the status has been overridden. |
| 361 | |
| 362 | - **Auto renew text appears at top of membership edit form |
| 363 | ([dev/core#1519](https://lab.civicrm.org/dev/core/issues/1519): |
| 364 | [16269](https://github.com/civicrm/civicrm-core/pull/16269))** |
| 365 | |
| 366 | Improves the placement of the Auto Renew help text on the Membership edit |
| 367 | form. |
| 368 | |
| 369 | - **Improve accessibility of membership edit form |
| 370 | ([dev/core#1520](https://lab.civicrm.org/dev/core/issues/1520): |
| 371 | [16272](https://github.com/civicrm/civicrm-core/pull/16272))** |
| 372 | |
| 373 | Updates the help text link text on the membership edit form to be meaningful |
| 374 | to improve accessibility. |
| 375 | |
| 376 | - **Permit modified_id as a parameter for membership create api |
| 377 | ([16166](https://github.com/civicrm/civicrm-core/pull/16166))** |
| 378 | |
| 379 | Adds `modified_id` as a parameter for APIv3 `membership.create`. |
| 380 | |
| 381 | ### Wordpress Integration |
| 382 | |
| 383 | - **WordPress Version Update |
| 384 | ([dev/wordpress#2](https://lab.civicrm.org/dev/wordpress/issues/2): |
| 385 | [16211](https://github.com/civicrm/civicrm-core/pull/16211))** |
| 386 | |
| 387 | Ensures the WordPress plugin version is updated by distmaker. |
| 388 | |
| 389 | - **Pass language code to CiviCRM for Wordpress |
| 390 | ([16446](https://github.com/civicrm/civicrm-core/pull/16446))** |
| 391 | |
| 392 | Ensures CiviCRM will always pick up the language that WordPress is configured |
| 393 | to use instead of having to configure the language in both CiviCRM and |
| 394 | WordPress. |
| 395 | |
| 396 | - **Update civicrm.settings.php.template to default to CLEANURL for WP |
| 397 | ([16284](https://github.com/civicrm/civicrm-core/pull/16284))** |
| 398 | |
| 399 | Makes it so that new WordPress/CiviCRM sites default to having CleanUrls. |
| 400 | |
| 401 | ## <a name="bugs"></a>Bugs resolved |
| 402 | |
| 403 | ### Core CiviCRM |
| 404 | |
| 405 | - **No Household Member Relationship Created when an Individual shares a |
| 406 | relationship with a household |
| 407 | ([dev/core#1319](https://lab.civicrm.org/dev/core/issues/1319): |
| 408 | [16447](https://github.com/civicrm/civicrm-core/pull/16447))** |
| 409 | |
| 410 | Fixes a regression in core where sharing an address with a household stopped |
| 411 | creating a household member relationship so that there is a checkbox (that |
| 412 | defaults to checked) to create a household member relationship when sharing |
| 413 | an address with a household. |
| 414 | |
| 415 | - **Add mechanism for avoiding conflicts when deduping |
| 416 | ([dev/core#1355](https://lab.civicrm.org/dev/core/issues/1355): |
| 417 | [15670](https://github.com/civicrm/civicrm-core/pull/15670))** |
| 418 | |
| 419 | Improves dedupe functionality so that it aborts early if two (or more) |
| 420 | dedupe jobs are running at the same time and attempt to act on the same |
| 421 | contact. |
| 422 | |
| 423 | - **Clear asset builder cache when clearing cache |
| 424 | ([dev/core#1395](https://lab.civicrm.org/dev/core/issues/1395): |
| 425 | [15857](https://github.com/civicrm/civicrm-core/pull/15857))** |
| 426 | |
| 427 | Ensures the "dyn" folder gets cleared when clearing CiviCRM caches. |
| 428 | |
| 429 | - **Smart groups with deleted/disabled custom fields throw fatal error on its |
| 430 | usage. (Work Towards [dev/core#1471](https://lab.civicrm.org/dev/core/issues/1471): |
| 431 | [16267](https://github.com/civicrm/civicrm-core/pull/16267))** |
| 432 | |
| 433 | Adds an alert on the system status page when deleted custom fields are used in |
| 434 | a smart group. |
| 435 | |
| 436 | - **Invalid links to extension directory |
| 437 | ([dev/core#1550](https://lab.civicrm.org/dev/core/issues/1550): |
| 438 | [16394](https://github.com/civicrm/civicrm-core/pull/16394))** |
| 439 | |
| 440 | Fixes an invalid link to the extension directory in help text. |
| 441 | |
| 442 | - **CQ: Eliminate 'contribution_invoice_settings' 'Setting' in favour of |
| 443 | following our standard (Work Towards |
| 444 | [dev/core#1558](https://lab.civicrm.org/dev/core/issues/1558): |
| 445 | [16397](https://github.com/civicrm/civicrm-core/pull/16397), |
| 446 | [16398](https://github.com/civicrm/civicrm-core/pull/16398), |
| 447 | [16412](https://github.com/civicrm/civicrm-core/pull/16412) and |
| 448 | [16424](https://github.com/civicrm/civicrm-core/pull/16424))** |
| 449 | |
| 450 | Works towards eliminating the 'contribution_invoice_settings' 'Setting' in |
| 451 | favor of following the CiviCRM standard by ensuring the `credit_notes_prefix` |
| 452 | is retrieved the standard way, refactoring some old code and adding some data |
| 453 | conversion code for the non-standard setting. |
| 454 | |
| 455 | - **Errors in link ReCaptcha and Extension Directory |
| 456 | ([dev/translation#33](https://lab.civicrm.org/dev/translation/issues/33): |
| 457 | [16387](https://github.com/civicrm/civicrm-core/pull/16387))** |
| 458 | |
| 459 | Fixes a link with incorrect quoting leading to malformed html and a link with |
| 460 | an incorrect anchor. |
| 461 | |
| 462 | - **Incorrect Contact Reference option for Postal Code in civicrm_data.sql |
| 463 | ([dev/translation#34](https://lab.civicrm.org/dev/translation/issues/34): |
| 464 | [16352](https://github.com/civicrm/civicrm-core/pull/16352))** |
| 465 | |
| 466 | Fixes a bug where custom fields of the type "contact reference" would |
| 467 | display the country instead of the postal code so that they show the country |
| 468 | as expected. |
| 469 | |
| 470 | - **Getting Started dashlet does not cache per language |
| 471 | ([dev/translation#35](https://lab.civicrm.org/dev/translation/issues/35): |
| 472 | [16354](https://github.com/civicrm/civicrm-core/pull/16354))** |
| 473 | |
| 474 | Ensures the CiviCRM Resources dashlet displays in the user's language. |
| 475 | |
| 476 | - **Call hook_civicrm_copy for RecurringEntity |
| 477 | ([16466](https://github.com/civicrm/civicrm-core/pull/16466))** |
| 478 | |
| 479 | Ensures that `hook_civicrm_copy` is called when entities are copied via |
| 480 | RecurringEntity. |
| 481 | |
| 482 | - **CRM_Utils_XML::parseFile() - Fix obscure segfault |
| 483 | ([16463](https://github.com/civicrm/civicrm-core/pull/16463))** |
| 484 | |
| 485 | Fixes a Segfault error for users with a very specific config (Macs running php |
| 486 | 7.4.1 or 7.3.9 MAMP 5.6). |
| 487 | |
| 488 | - **Add require_once to api3TestTrait |
| 489 | ([16461](https://github.com/civicrm/civicrm-core/pull/16461))** |
| 490 | |
| 491 | Ensures the `api3TestTrait` includes the file for the |
| 492 | `_civicrm_api3_get_options_from_params` function instead of relying on it |
| 493 | being loaded tangentially. |
| 494 | |
| 495 | - **Cleanup API_Exception usage |
| 496 | ([16432](https://github.com/civicrm/civicrm-core/pull/16432))** |
| 497 | |
| 498 | Fixes mis-capitalized exception class name, and moves a APIv3-only check to the |
| 499 | right place. |
| 500 | |
| 501 | - **IconPicker widget improvements |
| 502 | ([15760](https://github.com/civicrm/civicrm-core/pull/15760))** |
| 503 | |
| 504 | Fixes some style issues with the icon picker widget and adds some controls to |
| 505 | the dialog. |
| 506 | |
| 507 | - **CRM_Core_Menu - Fix warnings during local test run |
| 508 | ([16406](https://github.com/civicrm/civicrm-core/pull/16406))** |
| 509 | |
| 510 | Fixes the warning `Warning: simplexml_load_file(): I/O warning : failed to |
| 511 | load external entity` when running the test suite on Drupal 8 sites on OSX. |
| 512 | |
| 513 | - **Add user friendly error message on merge error |
| 514 | ([dev/core#1540](https://lab.civicrm.org/dev/core/issues/1540): |
| 515 | [16340](https://github.com/civicrm/civicrm-core/pull/16340))** |
| 516 | |
| 517 | Adds a user friendly error when attempting to merge two contacts from the |
| 518 | Advanced Search Screen when no Supervised rule is present on the site, before |
| 519 | this change a fatal error was thrown. |
| 520 | |
| 521 | - **Enotice fix ([16293](https://github.com/civicrm/civicrm-core/pull/16293))** |
| 522 | |
| 523 | Fixes an "Warning: Invalid argument supplied foreach()" e-notice on the edit |
| 524 | smart group screen. |
| 525 | |
| 526 | - **Force reCaptcha is not working when pay later enabled |
| 527 | ([16282](https://github.com/civicrm/civicrm-core/pull/16282))** |
| 528 | |
| 529 | Ensures that ReCaptcha is always on even if only pay later is enabled as a |
| 530 | payment method. |
| 531 | |
| 532 | - **Dedupe rules don't work with custom fields/Variable type error during import |
| 533 | process ([dev/core#1597](https://lab.civicrm.org/dev/core/issues/1597) and |
| 534 | [dev/core#1595](https://lab.civicrm.org/dev/core/issues/1595): |
| 535 | [16558](https://github.com/civicrm/civicrm-core/pull/16558))** |
| 536 | |
| 537 | Fixes a regression where dedupe rules were failing when attempting to use a |
| 538 | custom field as the match field. |
| 539 | |
| 540 | - **Select_string only accepts integers: 1 |
| 541 | ([dev/translation#36](https://lab.civicrm.org/dev/translation/issues/36): |
| 542 | [16599](https://github.com/civicrm/civicrm-core/pull/16599))** |
| 543 | |
| 544 | Fixes an error for translated sites when trying to perform a contact search. |
| 545 | |
| 546 | - **Advanced Search: "active period" filter regression |
| 547 | ([dev/core#1592](https://lab.civicrm.org/dev/core/issues/1592): |
| 548 | [16535](https://github.com/civicrm/civicrm-core/pull/16535))** |
| 549 | |
| 550 | Fixes a bug in Advanced Search where the filter "active period" (for |
| 551 | relationships) is not respected. |
| 552 | |
| 553 | - **Advanced search links on mailing reports page give "DB Error: syntax error" |
| 554 | ([dev/core#1551](https://lab.civicrm.org/dev/core/issues/1551): |
| 555 | [16534](https://github.com/civicrm/civicrm-core/pull/16534))** |
| 556 | |
| 557 | Fixes a regression where this url |
| 558 | "civicrm/contact/search/advanced?force=1&mailing_id=1" throws a fatal error. |
| 559 | |
| 560 | - **Upgrade fails when civicrm_managed table contains a row including |
| 561 | entity_type='PaymentProcessorType'; |
| 562 | ([dev/core#1498](https://lab.civicrm.org/dev/core/issues/1498): |
| 563 | [16521](https://github.com/civicrm/civicrm-core/pull/16521))** |
| 564 | |
| 565 | - **Fix loading with alternate packages path (system-level) |
| 566 | ([16407](https://github.com/civicrm/civicrm-core/pull/16407))** |
| 567 | |
| 568 | - **Fix loading with alternate packages path (UI-level) |
| 569 | ([16409](https://github.com/civicrm/civicrm-core/pull/16409))** |
| 570 | |
| 571 | - **setup.sh - Fixes for running in basic composer file-structure |
| 572 | ([16408](https://github.com/civicrm/civicrm-core/pull/16408))** |
| 573 | |
| 574 | - **Make $civicrm_paths less sensitive to trailing slashes. Add tests. |
| 575 | ([16404](https://github.com/civicrm/civicrm-core/pull/16404))** |
| 576 | |
| 577 | - **Prevent PropertBag from being so noisy about deprecation warnings |
| 578 | ([16390](https://github.com/civicrm/civicrm-core/pull/16390))** |
| 579 | |
| 580 | - **Wrong parameter passed to executeQuery function |
| 581 | ([16353](https://github.com/civicrm/civicrm-core/pull/16353))** |
| 582 | |
| 583 | - **Update temp table handler to support utf8mb4 if that is the db collation |
| 584 | ([15992](https://github.com/civicrm/civicrm-core/pull/15992))** |
| 585 | |
| 586 | - **Enforce isSkipLineItem for membership payment entity in Order.create |
| 587 | ([15891](https://github.com/civicrm/civicrm-core/pull/15891))** |
| 588 | |
| 589 | - **Fetch Only Active Custom Group Extend Values |
| 590 | ([15759](https://github.com/civicrm/civicrm-core/pull/15759))** |
| 591 | |
| 592 | - **Ensure that we always return a raw urlencoded url for extenal urls to fix |
| 593 | Flexmailer tests |
| 594 | ([16265](https://github.com/civicrm/civicrm-core/pull/16265))** |
| 595 | |
| 596 | - **Country/State PseudoConstant not sorted according to the locale |
| 597 | ([16258](https://github.com/civicrm/civicrm-core/pull/16258))** |
| 598 | |
| 599 | - **Change check.gif to an actual gif (was a PNG) |
| 600 | ([16220](https://github.com/civicrm/civicrm-core/pull/16220))** |
| 601 | |
| 602 | - **Fix Error handling following DB Package upgrade |
| 603 | ([16213](https://github.com/civicrm/civicrm-core/pull/16213))** |
| 604 | |
| 605 | - **Do not escape html in report header and footers on API create |
| 606 | ([dev/core#1286](https://lab.civicrm.org/dev/core/issues/1286): |
| 607 | [15383](https://github.com/civicrm/civicrm-core/pull/15383))** |
| 608 | |
| 609 | - **Editing a group description inline causes the recent items list to display |
| 610 | blank instead of the group title |
| 611 | ([dev/core#1506](https://lab.civicrm.org/dev/core/issues/1506): |
| 612 | [16197](https://github.com/civicrm/civicrm-core/pull/16197))** |
| 613 | |
| 614 | - **Recent items list has blank entry and E_NOTICE's when viewing an Email |
| 615 | activity from activities tab |
| 616 | ([dev/core#1507](https://lab.civicrm.org/dev/core/issues/1507): |
| 617 | [16195](https://github.com/civicrm/civicrm-core/pull/16195))** |
| 618 | |
| 619 | - **'Merge All Contacts with the Same Address' doesn't consider Household |
| 620 | replace individuals that share same address. ([CRM-21858 |
| 621 | ](https://issues.civicrm.org/jira/browse/CRM-21858) and |
| 622 | [dev/core#1364](https://lab.civicrm.org/dev/core/issues/1364): |
| 623 | [16369](https://github.com/civicrm/civicrm-core/pull/16369))** |
| 624 | |
| 625 | - **Scheduled reminder emails sent to contacts with do_not_email set or with |
| 626 | email on hold ([dev/core#1378](https://lab.civicrm.org/dev/core/issues/1378): |
| 627 | [15778](https://github.com/civicrm/civicrm-core/pull/15778))** |
| 628 | |
| 629 | - **Update BAO_Acl internal functions to protected & unused to deprecated |
| 630 | ([16189](https://github.com/civicrm/civicrm-core/pull/16189))** |
| 631 | |
| 632 | - **Deactivating CiviContribute causes SQL error |
| 633 | ([dev/core#547](https://lab.civicrm.org/dev/core/issues/547): |
| 634 | [16365](https://github.com/civicrm/civicrm-core/pull/16365))** |
| 635 | |
| 636 | ### CiviCase |
| 637 | |
| 638 | - **Changing a civicase activity's label breaks the max_instances check |
| 639 | ([dev/core#1116](https://lab.civicrm.org/dev/core/issues/1116): |
| 640 | [16347](https://github.com/civicrm/civicrm-core/pull/16347))** |
| 641 | |
| 642 | - **Case Resource shows contact names that are not accessible to logged in user |
| 643 | ([dev/core#1499](https://lab.civicrm.org/dev/core/issues/1499): |
| 644 | [16150](https://github.com/civicrm/civicrm-core/pull/16150))** |
| 645 | |
| 646 | - **Fix activity.case_id token to always display the first case ID |
| 647 | ([16208](https://github.com/civicrm/civicrm-core/pull/16208))** |
| 648 | |
| 649 | ### CiviContribute |
| 650 | |
| 651 | - **Positive integer expected for recurring interval even when user is not |
| 652 | making a recurring contribution |
| 653 | ([dev/core#1588](https://lab.civicrm.org/dev/core/issues/1588): |
| 654 | [16532](https://github.com/civicrm/civicrm-core/pull/16532))** |
| 655 | |
| 656 | Fixes a Fatal error when the recurring option "Support recurring intervals" is |
| 657 | enabled on a contribution page. |
| 658 | |
| 659 | - **Make getTotalPayments return 0 instead of NULL |
| 660 | ([16129](https://github.com/civicrm/civicrm-core/pull/16129))** |
| 661 | |
| 662 | - **Email address token on the confirmation message not working for a pay later |
| 663 | contribution. ([dev/core#1255](https://lab.civicrm.org/dev/core/issues/1255): |
| 664 | [15314](https://github.com/civicrm/civicrm-core/pull/15314))** |
| 665 | |
| 666 | - **Paypal IPN fails when contact is merged |
| 667 | ([dev/core#1249](https://lab.civicrm.org/dev/core/issues/1249): |
| 668 | [15307](https://github.com/civicrm/civicrm-core/pull/15307))** |
| 669 | |
| 670 | - **`,` as decimal separator, and [space] as thousand separators leads to api |
| 671 | errors ([dev/core#1522](https://lab.civicrm.org/dev/core/issues/1522): |
| 672 | [16392](https://github.com/civicrm/civicrm-core/pull/16392))** |
| 673 | |
| 674 | - **Fix retrieving contribution_status_id for manual payment processor |
| 675 | ([16018](https://github.com/civicrm/civicrm-core/pull/16018))** |
| 676 | |
| 677 | - **Set contribution status to refunded when it has been refunded |
| 678 | ([16148](https://github.com/civicrm/civicrm-core/pull/16148))** |
| 679 | |
| 680 | ### CiviEvent |
| 681 | |
| 682 | - **"Confirm Event Invitation" message template has a bad variable |
| 683 | ([dev/event#32](https://lab.civicrm.org/dev/event/issues/32): |
| 684 | [16367](https://github.com/civicrm/civicrm-core/pull/16367))** |
| 685 | |
| 686 | Fixes the URL for self-service updates links in the "Confirm Event Invitation" |
| 687 | message template to include the participant ID so that they link correctly. |
| 688 | |
| 689 | - **Respect form value for register_date on participant form |
| 690 | ([16439](https://github.com/civicrm/civicrm-core/pull/16439))** |
| 691 | |
| 692 | Fixes a bug where the participant registration date is exposed on the |
| 693 | backoffice event form, but when a credit card payment is being submitted it is |
| 694 | ignored. |
| 695 | |
| 696 | - **Scheduled reminders are incorrectly sent from event templates when |
| 697 | "additional group" is selected |
| 698 | ([dev/event#28](https://lab.civicrm.org/dev/event/issues/28): |
| 699 | [16311](https://github.com/civicrm/civicrm-core/pull/16311))** |
| 700 | |
| 701 | - **"Confirm from waitlist" doesn't consider whether participant roles are |
| 702 | counted. ([dev/event#23](https://lab.civicrm.org/dev/event/issues/23): |
| 703 | [16098](https://github.com/civicrm/civicrm-core/pull/16098))** |
| 704 | |
| 705 | - **Event registration form doesn't prevent multiple signups for waitlisted |
| 706 | participants. ([dev/event#30](https://lab.civicrm.org/dev/event/issues/30): |
| 707 | [16358](https://github.com/civicrm/civicrm-core/pull/16358))** |
| 708 | |
| 709 | - **Permission error on event info page for anonymous users |
| 710 | ([dev/core#1517](https://lab.civicrm.org/dev/core/issues/1517): |
| 711 | [16266](https://github.com/civicrm/civicrm-core/pull/16266))** |
| 712 | |
| 713 | ### CiviMember |
| 714 | |
| 715 | - **Changing the membership type causes multiple copies of related membership |
| 716 | text on edit membership page |
| 717 | ([dev/core#1537](https://lab.civicrm.org/dev/core/issues/1537): |
| 718 | [16326](https://github.com/civicrm/civicrm-core/pull/16326))** |
| 719 | |
| 720 | - **search builder: member since field ignored |
| 721 | ([dev/core#1602](https://lab.civicrm.org/dev/core/issues/1602): |
| 722 | [16578](https://github.com/civicrm/civicrm-core/pull/16578))** |
| 723 | |
| 724 | Ensures that "Search Builder" respects the "Member Since" field. |
| 725 | |
| 726 | ### Drupal Integration |
| 727 | |
| 728 | - **composer.json - Relax psr/log constraint. Improve D8 compatibility. |
| 729 | ([16471](https://github.com/civicrm/civicrm-core/pull/16471))** |
| 730 | |
| 731 | Fixes a composer conflict when installing CiviCRM on Drupal 8.7. |
| 732 | |
| 733 | - **Drupal8: Enabling language breaks a fresh CiviCRM install |
| 734 | ([dev/drupal#85](https://lab.civicrm.org/dev/drupal/issues/85): |
| 735 | [15912](https://github.com/civicrm/civicrm-core/pull/15912))** |
| 736 | |
| 737 | - **Drupal8 - Contact Report does not load any values in the ACL Group/Role |
| 738 | field ([dev/drupal#89](https://lab.civicrm.org/dev/drupal/issues/89): |
| 739 | [16273](https://github.com/civicrm/civicrm-core/pull/16273) and |
| 740 | [15318](https://github.com/civicrm/civicrm-core/pull/15318))** |
| 741 | |
| 742 | - **CiviCRM session instance not working when Masquerading in Drupal 7 |
| 743 | ([dev/drupal#98](https://lab.civicrm.org/dev/drupal/issues/98): |
| 744 | [16177](https://github.com/civicrm/civicrm-core/pull/16177))** |
| 745 | |
| 746 | - **Wiki link in OG Sync module description gives a 404 |
| 747 | ([dev/drupal#102](https://lab.civicrm.org/dev/drupal/issues/102): |
| 748 | [595](https://github.com/civicrm/civicrm-drupal/pull/595))** |
| 749 | |
| 750 | ## <a name="misc"></a>Miscellany |
| 751 | |
| 752 | - **Duplicate code (for real) |
| 753 | ([16363](https://github.com/civicrm/civicrm-core/pull/16363) and |
| 754 | [16567](https://github.com/civicrm/civicrm-core/pull/16567))** |
| 755 | |
| 756 | - **Mailing Subscribe Form: remove nbsp from descriptions |
| 757 | ([16186](https://github.com/civicrm/civicrm-core/pull/16186))** |
| 758 | |
| 759 | - **Remove SymfonyComponents/YAML package |
| 760 | ([285](https://github.com/civicrm/civicrm-packages/pull/285))** |
| 761 | |
| 762 | - **Update DB_Object |
| 763 | ([280](https://github.com/civicrm/civicrm-packages/pull/280))** |
| 764 | |
| 765 | - **Update gettext to latest tagged release |
| 766 | ([227](https://github.com/civicrm/civicrm-packages/pull/227))** |
| 767 | |
| 768 | - **Upgrade DB package to be version 1.9.3 |
| 769 | ([276](https://github.com/civicrm/civicrm-packages/pull/276))** |
| 770 | |
| 771 | - **Update copyright headers following merge of #14662 |
| 772 | ([16199](https://github.com/civicrm/civicrm-core/pull/16199))** |
| 773 | |
| 774 | - **Add tax rates to metadata |
| 775 | ([16253](https://github.com/civicrm/civicrm-core/pull/16253))** |
| 776 | |
| 777 | - **Add helper for getting participantValues |
| 778 | ([16355](https://github.com/civicrm/civicrm-core/pull/16355))** |
| 779 | |
| 780 | - **Update docs link for edit scheduled job parameters |
| 781 | ([16299](https://github.com/civicrm/civicrm-core/pull/16299))** |
| 782 | |
| 783 | - **Start to use function rather than multiple queries for event details add |
| 784 | test ([16329](https://github.com/civicrm/civicrm-core/pull/16329))** |
| 785 | |
| 786 | - **Simplify event title retrieval, use cache, add test |
| 787 | ([16345](https://github.com/civicrm/civicrm-core/pull/16345))** |
| 788 | |
| 789 | - **Change function buildEventFeeForm to non-static |
| 790 | ([16337](https://github.com/civicrm/civicrm-core/pull/16337))** |
| 791 | |
| 792 | - **Finish removal of deferred_revenue_enabled from non-standard setting |
| 793 | ([16395](https://github.com/civicrm/civicrm-core/pull/16395))** |
| 794 | |
| 795 | - **Api4 - Improve Entity::get |
| 796 | ([16346](https://github.com/civicrm/civicrm-core/pull/16346))** |
| 797 | |
| 798 | - **Api4 - Make abstract function abstract |
| 799 | ([16343](https://github.com/civicrm/civicrm-core/pull/16343))** |
| 800 | |
| 801 | - **Api4 - Use explicit adder functions rather than magicMethod |
| 802 | ([16372](https://github.com/civicrm/civicrm-core/pull/16372))** |
| 803 | |
| 804 | - **Update contributor-key.yml |
| 805 | ([16268](https://github.com/civicrm/civicrm-core/pull/16268))** |
| 806 | |
| 807 | - **Update my contributor details |
| 808 | ([16184](https://github.com/civicrm/civicrm-core/pull/16184))** |
| 809 | |
| 810 | - **APIv4 documentation & code cleanup |
| 811 | ([16457](https://github.com/civicrm/civicrm-core/pull/16457))** |
| 812 | |
| 813 | - **Fix minor typo in help text. |
| 814 | ([16303](https://github.com/civicrm/civicrm-core/pull/16303))** |
| 815 | |
| 816 | - **Extract code for isPaymentOnExistingContribution. |
| 817 | ([16327](https://github.com/civicrm/civicrm-core/pull/16327))** |
| 818 | |
| 819 | - **Remove function that exactly matches parent class. |
| 820 | ([16316](https://github.com/civicrm/civicrm-core/pull/16316))** |
| 821 | |
| 822 | - **Remove unsupported and unused package DB_Table |
| 823 | ([277](https://github.com/civicrm/civicrm-packages/pull/277))** |
| 824 | |
| 825 | - **Remove $ids as parameter for Membership::add |
| 826 | ([16192](https://github.com/civicrm/civicrm-core/pull/16192))** |
| 827 | |
| 828 | - **Remove unused code in Case/Form/Activity postProcess |
| 829 | ([16304](https://github.com/civicrm/civicrm-core/pull/16304))** |
| 830 | |
| 831 | - **Remove never passed-in parameter from addPayments |
| 832 | ([16262](https://github.com/civicrm/civicrm-core/pull/16262))** |
| 833 | |
| 834 | - **Remove duplicate line of code |
| 835 | ([16317](https://github.com/civicrm/civicrm-core/pull/16317))** |
| 836 | |
| 837 | - **Remove unreachable code lines. |
| 838 | ([16349](https://github.com/civicrm/civicrm-core/pull/16349))** |
| 839 | |
| 840 | - **Remove unused code |
| 841 | ([16371](https://github.com/civicrm/civicrm-core/pull/16371))** |
| 842 | |
| 843 | - **Remove irrelevant code. |
| 844 | ([16348](https://github.com/civicrm/civicrm-core/pull/16348))** |
| 845 | |
| 846 | - **Remove unindexed join from getACLRoles query |
| 847 | ([16183](https://github.com/civicrm/civicrm-core/pull/16183))** |
| 848 | |
| 849 | - **Remove unmaintained unsupported System_Command package |
| 850 | ([283](https://github.com/civicrm/civicrm-packages/pull/283))** |
| 851 | |
| 852 | - **fix typo's in the text |
| 853 | ([16361](https://github.com/civicrm/civicrm-core/pull/16361))** |
| 854 | |
| 855 | - **fix more typo's in the text |
| 856 | ([16368](https://github.com/civicrm/civicrm-core/pull/16368))** |
| 857 | |
| 858 | - **Fix unit tests after gettext merge |
| 859 | ([282](https://github.com/civicrm/civicrm-packages/pull/282))** |
| 860 | |
| 861 | - **Update recently-added PathUrlTest to be more representative |
| 862 | ([16607](https://github.com/civicrm/civicrm-core/pull/16607))** |
| 863 | |
| 864 | - **Fix tests to use buildFeeFn |
| 865 | ([16389](https://github.com/civicrm/civicrm-core/pull/16389))** |
| 866 | |
| 867 | - **Add unit test to back office form when a payment is made against a partially |
| 868 | paid contribution |
| 869 | ([16437](https://github.com/civicrm/civicrm-core/pull/16437))** |
| 870 | |
| 871 | - **Revised version of test from #15725 |
| 872 | ([15948](https://github.com/civicrm/civicrm-core/pull/15948))** |
| 873 | |
| 874 | - **Update failing test to match intervening changes elsewhere |
| 875 | ([16270](https://github.com/civicrm/civicrm-core/pull/16270))** |
| 876 | |
| 877 | - **Fix unit test so price set params are valid |
| 878 | ([16344](https://github.com/civicrm/civicrm-core/pull/16344))** |
| 879 | |
| 880 | - **Update Export unit test to pass on MySQL 8 |
| 881 | ([16375](https://github.com/civicrm/civicrm-core/pull/16375))** |
| 882 | |
| 883 | - **Basic extraction of paid event processing |
| 884 | ([16281](https://github.com/civicrm/civicrm-core/pull/16281))** |
| 885 | |
| 886 | - **Refactor CRM_Contact_BAO_Contact::importableFields() to use metadata |
| 887 | ([16222](https://github.com/civicrm/civicrm-core/pull/16222))** |
| 888 | |
| 889 | - **[REF] Remove setting of unused function. |
| 890 | ([16315](https://github.com/civicrm/civicrm-core/pull/16315))** |
| 891 | |
| 892 | - **[REF] Remove apparent copy & paste code. |
| 893 | ([16308](https://github.com/civicrm/civicrm-core/pull/16308))** |
| 894 | |
| 895 | - **[REF] Move the bounce to the start of the form submit |
| 896 | ([16333](https://github.com/civicrm/civicrm-core/pull/16333))** |
| 897 | |
| 898 | - **[REF] Eliminate silly parameter from function signature. |
| 899 | ([16330](https://github.com/civicrm/civicrm-core/pull/16330))** |
| 900 | |
| 901 | - **[REF] Extract code that assigns event variables to the tpl |
| 902 | ([16325](https://github.com/civicrm/civicrm-core/pull/16325))** |
| 903 | |
| 904 | - **[REF] Fix return value on deleting financial type |
| 905 | ([16280](https://github.com/civicrm/civicrm-core/pull/16280))** |
| 906 | |
| 907 | - **[REF] Move handling of default payment instrument for a payment proc… |
| 908 | ([16279](https://github.com/civicrm/civicrm-core/pull/16279))** |
| 909 | |
| 910 | - **[REF] Move use of priceSetID & amount_override to where they are used |
| 911 | ([16252](https://github.com/civicrm/civicrm-core/pull/16252))** |
| 912 | |
| 913 | - **[REF] Cleanup CRM_Member_BAO_Membership::buildMembershipTypeValues |
| 914 | ([16059](https://github.com/civicrm/civicrm-core/pull/16059))** |
| 915 | |
| 916 | - **[REF] Remove enclosed & escaped variables |
| 917 | ([16249](https://github.com/civicrm/civicrm-core/pull/16249))** |
| 918 | |
| 919 | - **[REF] Minor code simplification in dedupe. |
| 920 | ([16245](https://github.com/civicrm/civicrm-core/pull/16245))** |
| 921 | |
| 922 | - **[REF] move sessionStart functionality to System subclass |
| 923 | ([16241](https://github.com/civicrm/civicrm-core/pull/16241))** |
| 924 | |
| 925 | - **[REF] Update fetchAll function signature to match parent function |
| 926 | ([16198](https://github.com/civicrm/civicrm-core/pull/16198))** |
| 927 | |
| 928 | - **REF Simplify if statement on case activity form |
| 929 | ([16210](https://github.com/civicrm/civicrm-core/pull/16210))** |
| 930 | |
| 931 | - **[REF] Eliminate ['userID'] as an input for BAO_Membership::create |
| 932 | ([16196](https://github.com/civicrm/civicrm-core/pull/16196))** |
| 933 | |
| 934 | - **[REF] Move the storing of custom data into the add function rather th… |
| 935 | ([16191](https://github.com/civicrm/civicrm-core/pull/16191))** |
| 936 | |
| 937 | - **[REF] Remove never-passed param from getLineItems |
| 938 | ([16251](https://github.com/civicrm/civicrm-core/pull/16251))** |
| 939 | |
| 940 | - **[REF] Extract location wrangling code. |
| 941 | ([16247](https://github.com/civicrm/civicrm-core/pull/16247))** |
| 942 | |
| 943 | - **[REF] rename lineItem & lineItems variable |
| 944 | ([16254](https://github.com/civicrm/civicrm-core/pull/16254))** |
| 945 | |
| 946 | - **[REF] Activate fetchAll function in DataObject file |
| 947 | ([281](https://github.com/civicrm/civicrm-packages/pull/281))** |
| 948 | |
| 949 | - **[REF] Reduce places where we pass ids into Mailing::create |
| 950 | ([16263](https://github.com/civicrm/civicrm-core/pull/16263))** |
| 951 | |
| 952 | - **[REF] Remove ids and fully deprecate passing it to Contribution::create |
| 953 | ([16256](https://github.com/civicrm/civicrm-core/pull/16256))** |
| 954 | |
| 955 | - **[REF] Pass params into function rather than this weird check for whether |
| 956 | params exists. ([16438](https://github.com/civicrm/civicrm-core/pull/16438))** |
| 957 | |
| 958 | - **[REF] Move assignment of BalanceAmount |
| 959 | ([16334](https://github.com/civicrm/civicrm-core/pull/16334))** |
| 960 | |
| 961 | - **[REF] Fix CRM_Core_BAO_UFGroup::createUFJoin to not receive by reference. |
| 962 | ([16260](https://github.com/civicrm/civicrm-core/pull/16260))** |
| 963 | |
| 964 | - **[REF] Interim code cleanup - make the usage of addPayments clearer |
| 965 | ([16441](https://github.com/civicrm/civicrm-core/pull/16441))** |
| 966 | |
| 967 | - **[REF] Remove unused variable |
| 968 | ([16434](https://github.com/civicrm/civicrm-core/pull/16434))** |
| 969 | |
| 970 | - **[REF] Add test for line item, extract fn |
| 971 | ([16402](https://github.com/civicrm/civicrm-core/pull/16402))** |
| 972 | |
| 973 | - **[REF] Ensure that the from is correctly modified in both the main que… |
| 974 | ([16422](https://github.com/civicrm/civicrm-core/pull/16422))** |
| 975 | |
| 976 | - **[REF] Remove some unused variables |
| 977 | ([16414](https://github.com/civicrm/civicrm-core/pull/16414))** |
| 978 | |
| 979 | - **REF Extract code to build pcp_supporter_text and enable translation |
| 980 | ([16271](https://github.com/civicrm/civicrm-core/pull/16271))** |
| 981 | |
| 982 | - **[REF] Remove unused variables |
| 983 | ([16396](https://github.com/civicrm/civicrm-core/pull/16396))** |
| 984 | |
| 985 | - **[REF] Extract function to export header row |
| 986 | ([16364](https://github.com/civicrm/civicrm-core/pull/16364))** |
| 987 | |
| 988 | - **[REF] Extract & share code to determine revenue recognition date. |
| 989 | ([16388](https://github.com/civicrm/civicrm-core/pull/16388))** |
| 990 | |
| 991 | - **[NFC] code cleanup |
| 992 | ([16310](https://github.com/civicrm/civicrm-core/pull/16310))** |
| 993 | |
| 994 | - **[NFC] Code cleanup |
| 995 | ([16309](https://github.com/civicrm/civicrm-core/pull/16309))** |
| 996 | |
| 997 | - **[NFC] code cleanup |
| 998 | ([16301](https://github.com/civicrm/civicrm-core/pull/16301))** |
| 999 | |
| 1000 | - **[NFC] Minor code cleanup |
| 1001 | ([16290](https://github.com/civicrm/civicrm-core/pull/16290))** |
| 1002 | |
| 1003 | - **[NFC] Extend unit test to cover for recent refactor by eileen to ensure sup… |
| 1004 | ([16332](https://github.com/civicrm/civicrm-core/pull/16332))** |
| 1005 | |
| 1006 | - **[NFC] Code formatting |
| 1007 | ([16331](https://github.com/civicrm/civicrm-core/pull/16331))** |
| 1008 | |
| 1009 | - **[NFC] Code cleanup |
| 1010 | ([16314](https://github.com/civicrm/civicrm-core/pull/16314))** |
| 1011 | |
| 1012 | - **NFC Convert Manage PCP page to short array syntax |
| 1013 | ([16320](https://github.com/civicrm/civicrm-core/pull/16320))** |
| 1014 | |
| 1015 | - **[NFC] Add in more assertions around the content of line items and tot… |
| 1016 | ([16218](https://github.com/civicrm/civicrm-core/pull/16218))** |
| 1017 | |
| 1018 | - **[NFC] Doc Block fix should be bool no boolean as per coding standards |
| 1019 | ([596](https://github.com/civicrm/civicrm-drupal/pull/596))** |
| 1020 | |
| 1021 | - **[NFC] Code comments |
| 1022 | ([16248](https://github.com/civicrm/civicrm-core/pull/16248))** |
| 1023 | |
| 1024 | - **[NFC] Minor cleanup in test class |
| 1025 | ([16250](https://github.com/civicrm/civicrm-core/pull/16250))** |
| 1026 | |
| 1027 | - **[NFC] Skip utf8mb4 test on MySQL versions lower than 5.7 |
| 1028 | ([16483](https://github.com/civicrm/civicrm-core/pull/16483))** |
| 1029 | |
| 1030 | - **[NFC] Test update following PR #16150, assertEquals first param is th… |
| 1031 | ([16219](https://github.com/civicrm/civicrm-core/pull/16219))** |
| 1032 | |
| 1033 | - **[NFC] Explicitly specify that it is the Payment processor Type Name n… |
| 1034 | ([16275](https://github.com/civicrm/civicrm-core/pull/16275))** |
| 1035 | |
| 1036 | - **NFC Fix TokenRow docblock |
| 1037 | ([16452](https://github.com/civicrm/civicrm-core/pull/16452))** |
| 1038 | |
| 1039 | - **[NFC] Minor test cleanup. |
| 1040 | ([16450](https://github.com/civicrm/civicrm-core/pull/16450))** |
| 1041 | |
| 1042 | - **[NFC] Remove unused local variables from |
| 1043 | CRM_Contribute_Form_AdditionalPayment::processCreditCard |
| 1044 | ([16342](https://github.com/civicrm/civicrm-core/pull/16342))** |
| 1045 | |
| 1046 | - **[NFC] throw exceptions, single quotes, declare exceptions, remove unused |
| 1047 | param ([16415](https://github.com/civicrm/civicrm-core/pull/16415))** |
| 1048 | |
| 1049 | - **(NFC) Update Var declaration to be standard in CRM folder |
| 1050 | ([16382](https://github.com/civicrm/civicrm-core/pull/16382))** |
| 1051 | |
| 1052 | - **(NFC) Civi/*.php - Update for |
| 1053 | Drupal.Commenting.VariableComment.IncorrectVarType |
| 1054 | ([16379](https://github.com/civicrm/civicrm-core/pull/16379))** |
| 1055 | |
| 1056 | - **NFC Add parameter definition to membershipstatus.calc |
| 1057 | ([16370](https://github.com/civicrm/civicrm-core/pull/16370))** |
| 1058 | |
| 1059 | - **[NFC] Ensure that annon permissions are correctly assigned when enabling |
| 1060 | civicrm webtest module in backdrop |
| 1061 | ([16547](https://github.com/civicrm/civicrm-core/pull/16547))** |
| 1062 | |
| 1063 | - **[NFC] Fix style error |
| 1064 | ([16549](https://github.com/civicrm/civicrm-core/pull/16549))** |
| 1065 | |
| 1066 | ## <a name="credits"></a>Credits |
| 1067 | |
| 1068 | This release was developed by the following code authors: |
| 1069 | |
| 1070 | a-n The Artists Information Company - William Mortada; AGH Strategies - Andrew |
| 1071 | Hunt; Agileware - Pengyi Zhang; Andrei Mondoc; British Humanist Association - |
| 1072 | Andrew West; Caltha - Tomasz Pietrzkowski; Chris Burgess; Circle Interactive - |
| 1073 | Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; |
| 1074 | CiviDesk - Yashodha Chaku; CompuCorp - Vinu Varshith Sekar; Coop SymbioTIC - |
| 1075 | Mathieu Lutfy, Samuel Vanhove; Dave D; Electronic Frontier Foundation - Mark |
| 1076 | Burdett; Fuzion - Jitendra Purohit; GMCVO Databases - Jade Gaunt; JMA Consulting - |
| 1077 | Seamus Lee; John Kingsnorth; Joinery - Allen Shaw; Joris Vercammen; Megaphone |
| 1078 | Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; MJW Consulting - |
| 1079 | Matthew Wire; myDropWizard - David Snopek; Progressive Technology Project - |
| 1080 | Jamie McClelland; Squiffle Consulting - Aidan Saunders; Tadpole Collective - |
| 1081 | Kevin Cristiano; Third Sector Design - Michael McAndrew; Timbsoft Technologies - |
| 1082 | Tunbola Ogunwande; Web Access - Kurund Jalmi; Wikimedia Foundation - Eileen |
| 1083 | McNaughton, Elliott Eggleston |
| 1084 | |
| 1085 | Most authors also reviewed code for this release; in addition, the following |
| 1086 | reviewers contributed their comments: |
| 1087 | |
| 1088 | AGH Strategies - Alice Frumin; Agileware - Justin Freeman; Andrew |
| 1089 | Cormick-Dockery; Artful Robot - Rich Lott; Christian Wach; CiviDesk - Nicolas |
| 1090 | Ganivet; CompuCorp - Shitij Gugnani; Francesc Bassas i Bullich; Fuzion - Luke |
| 1091 | Stewart, Peter Davis; Greenpeace Central and Eastern Europe - Patrick Figel; JMA |
| 1092 | Consulting - Joe Murray, Monish Deb; Korlon - Stuart Gaston; Lighthouse Design |
| 1093 | and Consulting - Brian Shaughnessy; mikantchap; Richard van Oosterhout; SYSTOPIA |
| 1094 | Organisationsberatung - Björn Endres; tapashdatta; |
| 1095 | |
| 1096 | ## <a name="feedback"></a>Feedback |
| 1097 | |
| 1098 | These release notes are edited by Alice Frumin and Andie Hunt. If you'd like |
| 1099 | to provide feedback on them, please log in to https://chat.civicrm.org/civicrm |
| 1100 | and contact `@agh1`. |