| 1 | # CiviCRM 5.14.0 |
| 2 | |
| 3 | Released June 5, 2019 |
| 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 | - **Minimum supported PHP version is 7.0 |
| 29 | ([14437](https://github.com/civicrm/civicrm-core/pull/14437), [14459](https://github.com/civicrm/civicrm-core/pull/14459))** |
| 30 | |
| 31 | CiviCRM now requires PHP 7.0 or higher. While sites running PHP 5.6 will be |
| 32 | able to upgrade to CiviCRM 5.14.0, they will see an error message saying it is |
| 33 | no longer supported. Upcoming changes to CiviCRM will not be evaluated with |
| 34 | regard to PHP 5.6 compatibility, and new sites installing CiviCRM must have |
| 35 | PHP 7.0 or higher. |
| 36 | |
| 37 | - **civi.api.prepare - Allow dynamic wrappers (preliminary work for |
| 38 | [dev/core#873](https://lab.civicrm.org/dev/core/issues/873): |
| 39 | [14047](https://github.com/civicrm/civicrm-core/pull/14047))** |
| 40 | |
| 41 | This furthers the goal of allowing users to A/B test subject lines in Mosaico |
| 42 | by allowing extension developers to dynamically wrap an API using a listener |
| 43 | for the new civi.api.prepare event. |
| 44 | |
| 45 | - **Make DAO fields more consistent |
| 46 | ([14072](https://github.com/civicrm/civicrm-core/pull/14072))** |
| 47 | |
| 48 | This PR makes it so the 'where' field is populated regardless of whether |
| 49 | import or export is set. The goal of this pull request is to simplify some of |
| 50 | the metadata based magic by trying to get the meaning of import & export |
| 51 | closer to the original intent. |
| 52 | |
| 53 | - **Hook to alter menubar css variables & fix breakpoint in WP |
| 54 | ([14135](https://github.com/civicrm/civicrm-core/pull/14135) and |
| 55 | [14420](https://github.com/civicrm/civicrm-core/pull/14420))** |
| 56 | |
| 57 | A new hook, `hook_civicrm_getAssetUrl()`, allows modifying parameters for a |
| 58 | semi-static asset like a CSS file that takes certain parameters. The result |
| 59 | is that the menu bar is more flexible and configurable, and this fixes a |
| 60 | couple of issues with it in WordPress at certain widths. |
| 61 | |
| 62 | - **Replace jcalendar instances with datepicker (continues |
| 63 | [dev/core#561](https://lab.civicrm.org/dev/core/issues/561): |
| 64 | [14150](https://github.com/civicrm/civicrm-core/pull/14150) and |
| 65 | [14099](https://github.com/civicrm/civicrm-core/pull/14099))** |
| 66 | |
| 67 | The campaign search form and pledge forms now use datepicker instead of the |
| 68 | deprecated jcalendar for choosing dates. |
| 69 | |
| 70 | - **Result filter criteria doesn't show IS NULL/IS NOT NULL for operations |
| 71 | ([dev/core#865](https://lab.civicrm.org/dev/core/issues/865): |
| 72 | [14028](https://github.com/civicrm/civicrm-core/pull/14028))** |
| 73 | |
| 74 | Allow users to access to the operations `IS NULL` and `IS NOT NULL` when |
| 75 | choosing report filters for multiselect fields. |
| 76 | |
| 77 | - **Allow url to set IS NULL/ NOT NULL in report for operations |
| 78 | ([dev/core#876](https://lab.civicrm.org/dev/core/issues/876): |
| 79 | [14052](https://github.com/civicrm/civicrm-core/pull/14052))** |
| 80 | |
| 81 | Makes it so that the newly added filter options IS NULL/ NOT NULL (added |
| 82 | above) can be passed via URL. |
| 83 | |
| 84 | - **Convert dedupe select to select 2 and remove not-used var |
| 85 | ([14161](https://github.com/civicrm/civicrm-core/pull/14161))** |
| 86 | |
| 87 | On the Dedupe rules form, the "Field" drop-downs are converted to Select2 |
| 88 | fields. |
| 89 | |
| 90 | - **Add function filterLinks to return an array of links for an entity that can |
| 91 | be used by the API / form layer to generate a link |
| 92 | ([14112](https://github.com/civicrm/civicrm-core/pull/14112))** |
| 93 | |
| 94 | Adds the function filterLinks (CRM_Core_Action::filterLinks()) which can be |
| 95 | used to generate link html client-side. This function is currently unused, |
| 96 | added in preparation for CiviCase link refactoring. |
| 97 | |
| 98 | - **Add serialize metadata to tag used_for field |
| 99 | ([14096](https://github.com/civicrm/civicrm-core/pull/14096))** |
| 100 | |
| 101 | Add schema metadata to the Tag `used_for` field, which is a comma separated |
| 102 | list. |
| 103 | |
| 104 | - **Cron Status Check - Better hyperlinks |
| 105 | ([14085](https://github.com/civicrm/civicrm-core/pull/14085))** |
| 106 | |
| 107 | Improves the System Status check "Cron Not Running" by including a link to |
| 108 | most up to date documentation. |
| 109 | |
| 110 | - **Add pseudoconstant to UFField dao |
| 111 | ([14041](https://github.com/civicrm/civicrm-core/pull/14041))** |
| 112 | |
| 113 | Improves the UFField API by exposing the option list for the field |
| 114 | `fieldname`, before this change it was displayed as a text field instead of a |
| 115 | select. |
| 116 | |
| 117 | - **CQ: Switch core forms to be Entity Forms (continues |
| 118 | [dev/core#818](https://lab.civicrm.org/dev/core/issues/818): |
| 119 | [13887](https://github.com/civicrm/civicrm-core/pull/13887))** |
| 120 | |
| 121 | The group settings form now relies upon a standard entity form for the most |
| 122 | part, with most fields defined by metadata. This removes boilerplate code |
| 123 | from the specific form function, standardizing the form and facilitating later |
| 124 | form improvements that can be made across the board. |
| 125 | |
| 126 | ### CiviContribute |
| 127 | |
| 128 | - **CQ: Refactor Recurring Contribution Forms (continues |
| 129 | [dev/core#846](https://lab.civicrm.org/dev/core/issues/846): |
| 130 | [13994](https://github.com/civicrm/civicrm-core/pull/13994) and |
| 131 | [13993](https://github.com/civicrm/civicrm-core/pull/13993)))** |
| 132 | |
| 133 | This begins the process of converting recurring contribution forms to use |
| 134 | entity forms. It standardizes the way in which the payment processor is |
| 135 | loaded in the 3 forms that update subscriptions. |
| 136 | |
| 137 | - **Call Payment.create from Payment.cancel |
| 138 | ([13689](https://github.com/civicrm/civicrm-core/pull/13689))** |
| 139 | |
| 140 | This change improves the Payment.create API by adding handling for negative |
| 141 | amounts and moves the Payment.cancel API to use the Payment.create API instead |
| 142 | of a bespoke function. |
| 143 | |
| 144 | - **Switch to using ContributionRecur.cancel API from CancelSubscription form |
| 145 | ([14033](https://github.com/civicrm/civicrm-core/pull/14033))** |
| 146 | |
| 147 | This change makes it so the CancelSubscription Form uses the |
| 148 | ContributionRecur.cancel API instead of a bespoke function. |
| 149 | |
| 150 | - **Update MasterCard icon to match branding guidelines |
| 151 | ([14078](https://github.com/civicrm/civicrm-core/pull/14078))** |
| 152 | |
| 153 | Updates the MasterCard icon to match the MasterCard branding guidelines: |
| 154 | https://brand.mastercard.com/brandcenter/mastercard-brand-mark/downloads.html |
| 155 | |
| 156 | ### CiviEvent |
| 157 | |
| 158 | - **Event Cart: add support for the Credit Card type icons |
| 159 | ([14175](https://github.com/civicrm/civicrm-core/pull/14175))** |
| 160 | |
| 161 | Adds support for the Credit Card type icons (Amex, visa etc.) to Event Cart |
| 162 | registration forms. |
| 163 | |
| 164 | ### Drupal Integration |
| 165 | |
| 166 | - **Drupal Views : relationships for standard groups |
| 167 | ([CRM-20006](https://issues.civicrm.org/jira/browse/CRM-20006): |
| 168 | [507](https://github.com/civicrm/civicrm-drupal/pull/507))** |
| 169 | |
| 170 | Adds relationships for standard groups to the CiviCRM/Drupal Views |
| 171 | integration. |
| 172 | |
| 173 | - **Enable contribution views to filter on empty Receipt and Thank You dates |
| 174 | ([573](https://github.com/civicrm/civicrm-drupal/pull/573))** |
| 175 | |
| 176 | Adds a view filter on "Thank You date" and "Receipt Date" for empty/not empty |
| 177 | which can be used to create a view showing contributions that |
| 178 | have/have not been thanked. |
| 179 | |
| 180 | ## <a name="bugs"></a>Bugs resolved |
| 181 | |
| 182 | ### Core CiviCRM |
| 183 | |
| 184 | - **Email processor filing all emails as .unknown attachments |
| 185 | ([dev/core#940](https://lab.civicrm.org/dev/core/issues/940): |
| 186 | [14208](https://github.com/civicrm/civicrm-core/pull/14208))** |
| 187 | |
| 188 | Fixes a regression where emails being sent to the email-to-activity mailbox |
| 189 | were being saved with a `.unknown` extension and no content. |
| 190 | |
| 191 | - **.ics files should be whitelisted as file types for upload |
| 192 | ([dev/core#974](https://lab.civicrm.org/dev/core/issues/974): |
| 193 | [14531](https://github.com/civicrm/civicrm-core/pull/14351))** |
| 194 | |
| 195 | - **Regression - faster activity tab in 5.13 won't sort by source_name now |
| 196 | ([dev/core#934](https://lab.civicrm.org/dev/core/issues/934): |
| 197 | [14194](https://github.com/civicrm/civicrm-core/pull/14194) and |
| 198 | [14204](https://github.com/civicrm/civicrm-core/pull/14204))** |
| 199 | |
| 200 | - **Search displaying Related Contacts produces fatal error |
| 201 | ([dev/core#1002](https://lab.civicrm.org/dev/core/issues/1002): |
| 202 | [14409](https://github.com/civicrm/civicrm-core/pull/14409))** |
| 203 | |
| 204 | - **Error randomly appearing when Financial type ACL is enabled |
| 205 | ([dev/core#918](https://lab.civicrm.org/dev/core/issues/918): |
| 206 | [14165](https://github.com/civicrm/civicrm-core/pull/14165) and |
| 207 | [14168](https://github.com/civicrm/civicrm-core/pull/14168))** |
| 208 | |
| 209 | Fixes an undefined index error `Undefined index: status in |
| 210 | CRM_Utils_Check_Component_FinancialTypeAcls::checkFinancialAclReport()` when a |
| 211 | site has a Financial Type ACL enabled. |
| 212 | |
| 213 | - **utf8mb4 warning keeps coming back up |
| 214 | ([dev/core#880](https://lab.civicrm.org/dev/core/issues/880): |
| 215 | [14123](https://github.com/civicrm/civicrm-core/pull/14123))** |
| 216 | |
| 217 | This change makes it so users only receive the Mysql utf8mb4 status check |
| 218 | once, before this change the status check would show up whenever apache was |
| 219 | restarted. |
| 220 | |
| 221 | - **Fix import primary phone, primary email, add tests |
| 222 | ([14043](https://github.com/civicrm/civicrm-core/pull/14043))** |
| 223 | |
| 224 | Fixes a bug where importing a phone (or email) & choosing 'Primary' as the |
| 225 | location type resulted in the creation of a duplicate, sometimes with no |
| 226 | location type. |
| 227 | |
| 228 | - **Fix upgrade message db setting location |
| 229 | ([14083](https://github.com/civicrm/civicrm-core/pull/14083))** |
| 230 | |
| 231 | Updates the upgrade message "This database uses InnoDB Full Text Search for |
| 232 | optimized searching. The upgrade procedure has not been tested with this |
| 233 | feature. You should disable (and later re-enable) the feature by navigating |
| 234 | to..." to point to the right settings form "Administer => Customize Data and |
| 235 | Screens => Search Preferences" instead of "Administer => System Settings => |
| 236 | Miscellaneous". |
| 237 | |
| 238 | - **Fix getAddressColumns() to respect tableAlias |
| 239 | ([14014](https://github.com/civicrm/civicrm-core/pull/14014))** |
| 240 | |
| 241 | Fixes `CRM_Report_Form::getAddressColumns()` function so that it no longer |
| 242 | returns an error when used twice. |
| 243 | |
| 244 | - **Ensure edit tooltip is always initially hidden in contact summary block |
| 245 | ([14065](https://github.com/civicrm/civicrm-core/pull/14065))** |
| 246 | |
| 247 | Ensures when a user does not have permission to edit a contact summary block, |
| 248 | the little "Edit" tooltip is hidden. |
| 249 | |
| 250 | - **Skip adding core resources when building assets |
| 251 | ([14010](https://github.com/civicrm/civicrm-core/pull/14010))** |
| 252 | |
| 253 | - **Advanced Search - Mailing column headers out of alignment |
| 254 | ([dev/core#248](https://lab.civicrm.org/dev/core/issues/248): |
| 255 | [14134](https://github.com/civicrm/civicrm-core/pull/14134))** |
| 256 | |
| 257 | - **Validate queue_id is a positive integer before passing to the BAO |
| 258 | ([14355](https://github.com/civicrm/civicrm-core/pull/14355))** |
| 259 | |
| 260 | - **Fixes issue where contact's display name did not show on membership edit |
| 261 | If there was no registered email address |
| 262 | ([dev/core#1000](https://lab.civicrm.org/dev/core/issues/1000): |
| 263 | [14438](https://github.com/civicrm/civicrm-core/pull/14438))** |
| 264 | |
| 265 | ### CiviCase |
| 266 | |
| 267 | - **Case activity query performs poorly on large databases |
| 268 | ([dev/core#832](https://lab.civicrm.org/dev/core/issues/832): |
| 269 | [14086](https://github.com/civicrm/civicrm-core/pull/14086) and |
| 270 | [14139](https://github.com/civicrm/civicrm-core/pull/14139))** |
| 271 | |
| 272 | This change enhances performance of CiviCase by streamlining the Case Activity |
| 273 | Query which was crashing the server for some sites with large databases by |
| 274 | producing too many temporary files. |
| 275 | |
| 276 | - **Make `hook_civicrm_pre()` and `hook_civicrm_post()` fire on CaseContacts |
| 277 | ([14030](https://github.com/civicrm/civicrm-core/pull/14030))** |
| 278 | |
| 279 | ### CiviContribute |
| 280 | |
| 281 | - **Always bootstrap CRM_Utils_System on legacy IPN endpoint |
| 282 | ([dev/drupal#66](https://lab.civicrm.org/dev/drupal/issues/66), |
| 283 | [dev/core#973](https://lab.civicrm.org/dev/core/issues/973), and |
| 284 | [dev/core#1017](https://lab.civicrm.org/dev/core/issues/1017): |
| 285 | [14406](https://github.com/civicrm/civicrm-core/pull/14406) and |
| 286 | [14430](https://github.com/civicrm/civicrm-core/pull/14430))** |
| 287 | |
| 288 | This fixes a recent regression where recurring payments would fail to be |
| 289 | recorded in CiviCRM if the contribution was set to notify the legacy IPN URL. |
| 290 | |
| 291 | - **Fix checksum failure when editing recuring contributions |
| 292 | ([14407](https://github.com/civicrm/civicrm-core/pull/14407))** |
| 293 | |
| 294 | Fixes a fatal error where checksum users were not able to cancel or update |
| 295 | recurring contributions. |
| 296 | |
| 297 | - **Fix error when exporting soft credits ([dev/core#1015](https://lab.civicrm.org/dev/core/issues/1015): [14453](https://github.com/civicrm/civicrm-core/pull/14453))** |
| 298 | |
| 299 | ### CiviEvent |
| 300 | |
| 301 | - **Event Cart: Pass the contactID to fix payment on Stripe |
| 302 | ([14173](https://github.com/civicrm/civicrm-core/pull/14173))** |
| 303 | |
| 304 | Fixes a bug where a user could not complete an Event Registration using Event |
| 305 | Cart and the Stripe payment processor. |
| 306 | |
| 307 | - **Event Cart: Fix sending of email receipts |
| 308 | ([14170](https://github.com/civicrm/civicrm-core/pull/14170))** |
| 309 | |
| 310 | Fixes fatal error being thrown when an email receipt was sent from an Event |
| 311 | Cart registration. |
| 312 | |
| 313 | - **Event Cart: Honor the allow_same_participant_emails setting |
| 314 | ([14174](https://github.com/civicrm/civicrm-core/pull/14174))** |
| 315 | |
| 316 | Ensures the Event Cart Checkout process honors the "allow participants with |
| 317 | the same email address". |
| 318 | |
| 319 | - **Event Cart: Fix start_date formatting in line items during checkout |
| 320 | ([14169](https://github.com/civicrm/civicrm-core/pull/14169))** |
| 321 | |
| 322 | Ensures start dates are formatted according to the site's localization |
| 323 | preference during the Event Cart checkout process. |
| 324 | |
| 325 | - **When creating a new event using a template, the new event screen is |
| 326 | taking the default values directly from the custom fields, and not from what's |
| 327 | saved in the event template. |
| 328 | ([CRM-18570](https://issues.civicrm.org/jira/browse/CRM-18570), [dev/core#553](https://lab.civicrm.org/dev/core/issues/553): |
| 329 | [14063](https://github.com/civicrm/civicrm-core/pull/14063))** |
| 330 | |
| 331 | ### CiviMail |
| 332 | |
| 333 | - **Fixed double protocol being added in link by CKEditor. |
| 334 | ([14128](https://github.com/civicrm/civicrm-core/pull/14128))** |
| 335 | |
| 336 | Fixes a bug where adding action tokens using the CKEditor link interface, and |
| 337 | then editing them could cause double protocols (ex: http://https:// or |
| 338 | http://http://). |
| 339 | |
| 340 | - **Fix ts() usage in CRM_SMS_Form_Schedule |
| 341 | ([14111](https://github.com/civicrm/civicrm-core/pull/14111))** |
| 342 | |
| 343 | Allows translation of the "Send Mass SMS" form. |
| 344 | |
| 345 | ### CiviMember |
| 346 | |
| 347 | - **Batch update membership type |
| 348 | ([dev/core#338](https://lab.civicrm.org/dev/core/issues/338): |
| 349 | [14064](https://github.com/civicrm/civicrm-core/pull/14064))** |
| 350 | |
| 351 | Fixes a regression when batch updating membership types and copying values |
| 352 | down the column. |
| 353 | |
| 354 | - **Membership status processor ignoring records where is_override=0 |
| 355 | ([dev/core#881](https://lab.civicrm.org/dev/core/issues/881): |
| 356 | [14059](https://github.com/civicrm/civicrm-core/pull/14059) and |
| 357 | [14073](https://github.com/civicrm/civicrm-core/pull/14073))** |
| 358 | |
| 359 | - **Back-office membership renewals don't display an on-screen notification |
| 360 | ([dev/membership#9](https://lab.civicrm.org/dev/membership/issues/9): |
| 361 | [14088](https://github.com/civicrm/civicrm-core/pull/14088))** |
| 362 | |
| 363 | - **Fix test / possible live error on submitting credit card renewals |
| 364 | ([14412](https://github.com/civicrm/civicrm-core/pull/14412))** |
| 365 | |
| 366 | This resolves intermittent errors in unit tests when renewing memberships due |
| 367 | to the `receive_date` not being set. |
| 368 | |
| 369 | - **Fixed auto populate of contact reference field on membership signup form |
| 370 | ([14077](https://github.com/civicrm/civicrm-core/pull/14077))** |
| 371 | |
| 372 | ### Drupal Integration |
| 373 | |
| 374 | - **Civi 5.12.1 renders Quicksearch unreadable on Drupal 8 |
| 375 | ([dev/drupal#56](https://lab.civicrm.org/dev/drupal/issues/56): |
| 376 | [14080](https://github.com/civicrm/civicrm-core/pull/14080))** |
| 377 | |
| 378 | Fixes a regression where the text in the Quicksearch box was too light to read |
| 379 | so that it is darker and easier to read. |
| 380 | |
| 381 | - **Don't render an empty mailto link for empty email addresses |
| 382 | ([540](https://github.com/civicrm/civicrm-drupal/pull/540))** |
| 383 | |
| 384 | Fixes a bug in Views where an "email address" field set to output as a |
| 385 | `mailto:` link would still make a link if no email exists. |
| 386 | |
| 387 | - **Column next_sched_contribution should be next_sched_contribution_date for |
| 388 | Views integration |
| 389 | ([dev/drupal#48](https://lab.civicrm.org/dev/drupal/issues/48): |
| 390 | [578](https://github.com/civicrm/civicrm-drupal/pull/578))** |
| 391 | |
| 392 | ### Joomla Integration |
| 393 | |
| 394 | - **Fix bug preventing affecting `cv --user` on Joomla |
| 395 | ([13890](https://github.com/civicrm/civicrm-core/pull/13890))** |
| 396 | |
| 397 | ## <a name="misc"></a>Miscellany |
| 398 | |
| 399 | - **Bump PHP version to match core requirements |
| 400 | ([567](https://github.com/civicrm/civicrm-drupal/pull/567))** |
| 401 | |
| 402 | - **CiviUnitTestCase - Extract traits to facilitate extension testing |
| 403 | (preliminary work for |
| 404 | [dev/core#873](https://lab.civicrm.org/dev/core/issues/873): |
| 405 | [14044](https://github.com/civicrm/civicrm-core/pull/14044))** |
| 406 | |
| 407 | - **Refactor dedupe merger (preliminary work for |
| 408 | [dev/core#723](https://lab.civicrm.org/dev/core/issues/723): |
| 409 | [14144](https://github.com/civicrm/civicrm-core/pull/14144) and |
| 410 | [14146](https://github.com/civicrm/civicrm-core/pull/14146))** |
| 411 | |
| 412 | - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception |
| 413 | (continues [dev/core#560](https://lab.civicrm.org/dev/core/issues/560): |
| 414 | [14143](https://github.com/civicrm/civicrm-core/pull/14143))** |
| 415 | |
| 416 | - **(Partial) Towards fixing E2E_Core_AssetBuilderTest on WordPress |
| 417 | ([14212](https://github.com/civicrm/civicrm-core/pull/14212/), |
| 418 | [14201](https://github.com/civicrm/civicrm-core/pull/14201))** |
| 419 | |
| 420 | - **(REF) Add unit tests on contribution recur trxn_id, contribution recur |
| 421 | processor id (preparation for |
| 422 | [dev/core#830](https://lab.civicrm.org/dev/core/issues/830): |
| 423 | [14119](https://github.com/civicrm/civicrm-core/pull/14119))** |
| 424 | |
| 425 | - **Remove instances of $dao->free (continues |
| 426 | [dev/core#562](https://lab.civicrm.org/dev/core/issues/562): |
| 427 | [14070](https://github.com/civicrm/civicrm-core/pull/14070), |
| 428 | [14071](https://github.com/civicrm/civicrm-core/pull/14071) and |
| 429 | [14037](https://github.com/civicrm/civicrm-core/pull/14037))** |
| 430 | |
| 431 | - **(NFC) Add tests of retreiving notes for display on a contact record a… |
| 432 | ([14094](https://github.com/civicrm/civicrm-core/pull/14094))** |
| 433 | |
| 434 | - **(NFC) Update CRM/Contact to match new coder style |
| 435 | ([14022](https://github.com/civicrm/civicrm-core/pull/14022))** |
| 436 | |
| 437 | - **(NFC) Minor code style fixes |
| 438 | ([14015](https://github.com/civicrm/civicrm-core/pull/14015))** |
| 439 | |
| 440 | - **(NFC) Add in unit test checking that E2E test returns sensible contac… |
| 441 | ([14076](https://github.com/civicrm/civicrm-core/pull/14076))** |
| 442 | |
| 443 | - **(NFC) Whitespace formatting for formButtons.tpl |
| 444 | ([14107](https://github.com/civicrm/civicrm-core/pull/14107))** |
| 445 | |
| 446 | - **(NFC) Expand unit test to show off double protocol error |
| 447 | ([14141](https://github.com/civicrm/civicrm-core/pull/14141))** |
| 448 | |
| 449 | - **(REF) Move gathering of location info to relevant function (towards |
| 450 | dev/core#723) ([14142](https://github.com/civicrm/civicrm-core/pull/14142))** |
| 451 | |
| 452 | - **(REF) Move the qfbug handling to it's own function (towards dev/core#723) |
| 453 | ([14140](https://github.com/civicrm/civicrm-core/pull/14140))** |
| 454 | |
| 455 | - **(REF) Use events for CMS resource loading |
| 456 | ([14131](https://github.com/civicrm/civicrm-core/pull/14131))** |
| 457 | |
| 458 | - **(REF) Extract getConflicts function |
| 459 | ([14148](https://github.com/civicrm/civicrm-core/pull/14148))** |
| 460 | |
| 461 | - **(REF) Extract get cfields function |
| 462 | ([14151](https://github.com/civicrm/civicrm-core/pull/14151))** |
| 463 | |
| 464 | - **(REF) Use variable for menubar height |
| 465 | ([14122](https://github.com/civicrm/civicrm-core/pull/14122))** |
| 466 | |
| 467 | - **(REF) Clean up CRM_Contribute_Form_SearchTest |
| 468 | ([14068](https://github.com/civicrm/civicrm-core/pull/14068))** |
| 469 | |
| 470 | - **(REF) Extract formatLocationBlock from import parsing |
| 471 | ([14040](https://github.com/civicrm/civicrm-core/pull/14040))** |
| 472 | |
| 473 | - **(REF) Function extraction in dedupe code |
| 474 | ([14157](https://github.com/civicrm/civicrm-core/pull/14157))** |
| 475 | |
| 476 | - **(REF) cleanup input parameters on extracted function |
| 477 | ([14050](https://github.com/civicrm/civicrm-core/pull/14050))** |
| 478 | |
| 479 | - **(REF) Fix accepted params in CustomValueTable::setValues |
| 480 | ([14079](https://github.com/civicrm/civicrm-core/pull/14079))** |
| 481 | |
| 482 | - **(REF) Fix unnecessary required param in contact BAO update |
| 483 | ([14075](https://github.com/civicrm/civicrm-core/pull/14075))** |
| 484 | |
| 485 | - **(REF) Reduce redundant code in CRM_Utils_Type::validate |
| 486 | ([14011](https://github.com/civicrm/civicrm-core/pull/14011))** |
| 487 | |
| 488 | - **(REF) Replace hardcoded IDs with pseudoconstants in activity form |
| 489 | ([14108](https://github.com/civicrm/civicrm-core/pull/14108))** |
| 490 | |
| 491 | - **(REF) Standardize UFField create function |
| 492 | ([14084](https://github.com/civicrm/civicrm-core/pull/14084))** |
| 493 | |
| 494 | - **(REF) Call formatLocationBlock from parent function. |
| 495 | ([14105](https://github.com/civicrm/civicrm-core/pull/14105))** |
| 496 | |
| 497 | - **(REF; dev/core#873) MailingAB - Migrate "copy winner" logic from JS to PHP |
| 498 | ([14045](https://github.com/civicrm/civicrm-core/pull/14045))** |
| 499 | |
| 500 | - **(REF) Don't pass activity object to addCaseActivityLinks |
| 501 | ([14110](https://github.com/civicrm/civicrm-core/pull/14110))** |
| 502 | |
| 503 | - **(REF) Use shared function to check inbound email permissions |
| 504 | ([14109](https://github.com/civicrm/civicrm-core/pull/14109))** |
| 505 | |
| 506 | - **(REF) Follow up tidy up on import fixes |
| 507 | ([14117](https://github.com/civicrm/civicrm-core/pull/14117))** |
| 508 | |
| 509 | - **Readability cleanup on EventIncome report (towards bringing it under |
| 510 | testing) ([13963](https://github.com/civicrm/civicrm-core/pull/13963))** |
| 511 | |
| 512 | - **Remove deprecated function |
| 513 | ([14039](https://github.com/civicrm/civicrm-core/pull/14039))** |
| 514 | |
| 515 | - **Revert "dev/core#553: Creating new event takes value from default value not |
| 516 | from saved template for custom fields" |
| 517 | ([14121](https://github.com/civicrm/civicrm-core/pull/14121))** |
| 518 | |
| 519 | - **Update docblock for doPayment function |
| 520 | ([13844](https://github.com/civicrm/civicrm-core/pull/13844))** |
| 521 | |
| 522 | - **(Cleanup) Remove CRM_Report_Form_Extended |
| 523 | ([14149](https://github.com/civicrm/civicrm-core/pull/14149))** |
| 524 | |
| 525 | ## <a name="credits"></a>Credits |
| 526 | |
| 527 | This release was developed by the following code authors: |
| 528 | |
| 529 | AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Alok Patel; Australian |
| 530 | Greens - Seamus Lee; Christian Wach; CiviCRM - Coleman Watts, Tim Otten; |
| 531 | CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Electronic |
| 532 | Frontier Foundation - Mark Burdett; Freeform Solutions - Herb van den Dool; |
| 533 | Fuzion - Luke Stewart; Guillaume Rischard; JMA Consulting - Monish Deb; John |
| 534 | Kingsnorth; Korlon - Stuart Gaston; Lighthouse Design and Consulting - Brian |
| 535 | Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - |
| 536 | Matthew Wire; Pradeep Nayak; Squiffle Consulting - Aidan Saunders; Tadpole |
| 537 | Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton |
| 538 | |
| 539 | Most authors also reviewed code for this release; in addition, the following |
| 540 | reviewers contributed their comments: |
| 541 | |
| 542 | AGH Strategies - Tommy Bobo; DevApp - Adam Kwiatkowski; Fuzion - Jitendra |
| 543 | Purohit; JMA Consulting - Joe Murray; Nicol Wistreich; Palante - Morgan |
| 544 | Robinson; Skvare - Mark Hanna; Tapash Datta |
| 545 | |
| 546 | ## <a name="feedback"></a>Feedback |
| 547 | |
| 548 | These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like |
| 549 | to provide feedback on them, please log in to https://chat.civicrm.org/civicrm |
| 550 | and contact `@agh1`. |