| 1 | # CiviCRM 5.15.0 |
| 2 | |
| 3 | Released July 3, 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 | - **Rearrange quick search options |
| 29 | ([dev/core#628](https://lab.civicrm.org/dev/core/issues/628): |
| 30 | [14441](https://github.com/civicrm/civicrm-core/pull/14441))** |
| 31 | |
| 32 | This change makes it so that the quicksearch field options can be rearranged. |
| 33 | |
| 34 | - **Improve formatting for settings checkboxes |
| 35 | ([14461](https://github.com/civicrm/civicrm-core/pull/14461) and |
| 36 | [14419](https://github.com/civicrm/civicrm-core/pull/14419))** |
| 37 | |
| 38 | Restyles the checkboxes on the "Display Preferences" screen so they all use |
| 39 | the same styling for visual consistency and restyles the "Components" settings |
| 40 | field as a checkbox list instead of it being an AdvMultiSelect element. |
| 41 | |
| 42 | - **Differentiate smart group from regular group using icon in select2 field |
| 43 | (preliminary work for [dev/core#785](https://lab.civicrm.org/dev/core/issues/785): |
| 44 | [14416](https://github.com/civicrm/civicrm-core/pull/14416))** |
| 45 | |
| 46 | Extends the addField() function to support fields of the type `select2` and |
| 47 | `select`. |
| 48 | |
| 49 | - **Cleanup & api-ise the dedupe code (preliminary work for |
| 50 | [dev/core#982](https://lab.civicrm.org/dev/core/issues/982): |
| 51 | [14298](https://github.com/civicrm/civicrm-core/pull/14298))** |
| 52 | |
| 53 | Adds a `dedupe.getstatistics` API action. |
| 54 | |
| 55 | - **Add Contact.get_merge_conflicts API |
| 56 | ([14394](https://github.com/civicrm/civicrm-core/pull/14394))** |
| 57 | |
| 58 | Adds a `contact.get_merge_conflicts` API action. |
| 59 | |
| 60 | - **Add API for Dedupe.getduplicates |
| 61 | ([14411](https://github.com/civicrm/civicrm-core/pull/14411))** |
| 62 | |
| 63 | Adds a `dedupe.getduplicates` API action. |
| 64 | |
| 65 | - **Support latest PHPUnit versions |
| 66 | ([dev/core#980](https://lab.civicrm.org/dev/core/issues/980): |
| 67 | [14333](https://github.com/civicrm/civicrm-core/pull/14333), |
| 68 | [14387](https://github.com/civicrm/civicrm-core/pull/14387), |
| 69 | [14279](https://github.com/civicrm/civicrm-core/pull/14279), |
| 70 | [14319](https://github.com/civicrm/civicrm-core/pull/14319), |
| 71 | [14315](https://github.com/civicrm/civicrm-core/pull/14315), |
| 72 | [14421](https://github.com/civicrm/civicrm-core/pull/14421), |
| 73 | [14404](https://github.com/civicrm/civicrm-core/pull/14404), |
| 74 | [254](https://github.com/civicrm/civicrm-packages/pull/254), |
| 75 | [14283](https://github.com/civicrm/civicrm-core/pull/14283) and |
| 76 | [14321](https://github.com/civicrm/civicrm-core/pull/14321))** |
| 77 | |
| 78 | Updates phpunit version support so that the CiviCRM test suite works with |
| 79 | phpunit versions 5 thru 8. Removes dependency on discontinued dbunit. Moves |
| 80 | towards using API functions instead of dbunit. |
| 81 | |
| 82 | - **Permit sort_name as a url parameter on advanced search |
| 83 | ([14475](https://github.com/civicrm/civicrm-core/pull/14475))** |
| 84 | |
| 85 | Lays the ground work for a metadata based approach to search forms, |
| 86 | Specifically for the contact form. Converts one field (sort_name) to be |
| 87 | added by metadata and also to be supported via url (sort_name=x). |
| 88 | |
| 89 | - **Allow updating ENGINE_CONFIG for System.updatelogtables |
| 90 | ([14348](https://github.com/civicrm/civicrm-core/pull/14348))** |
| 91 | |
| 92 | Makes it so users can modify the SQL engine config for log tables thru the |
| 93 | api. |
| 94 | |
| 95 | - **Reduce cache bypasses - Do not bypass custom metadata cache in setGroupTree |
| 96 | ([14292](https://github.com/civicrm/civicrm-core/pull/14292))** |
| 97 | |
| 98 | Improves performance when editing a form with custom data by using |
| 99 | the cached metadata instead of doing a database query to rebuild the metadata. |
| 100 | |
| 101 | - **Try enabling api4 extension in test suite |
| 102 | ([14241](https://github.com/civicrm/civicrm-core/pull/14241))** |
| 103 | |
| 104 | Makes the api4 extension available when running unit tests. |
| 105 | |
| 106 | - **Use data provider to test both API versions |
| 107 | ([14153](https://github.com/civicrm/civicrm-core/pull/14153))** |
| 108 | |
| 109 | Makes it so 311 API v3 tests are converted to also test API v4. |
| 110 | |
| 111 | - **Advanced search: activity tags should use select2 ([ |
| 112 | dev/core#924](https://lab.civicrm.org/dev/core/issues/924): |
| 113 | [14247](https://github.com/civicrm/civicrm-core/pull/14247))** |
| 114 | |
| 115 | Changes the "Activity Tags" field on the "Advanced Search" form to be a |
| 116 | select2 instead of a checkbox list to improve user experience. |
| 117 | |
| 118 | ## CiviContribute |
| 119 | |
| 120 | - **Better support in core for token payment processing (continues work for |
| 121 | [dev/core#905](https://lab.civicrm.org/dev/core/issues/905): |
| 122 | [14395](https://github.com/civicrm/civicrm-core/pull/14395) and |
| 123 | [14343](https://github.com/civicrm/civicrm-core/pull/14343))** |
| 124 | |
| 125 | Separates the `contribution_recur` status_id option group from the `contribution` |
| 126 | status_id option group and adds the contribution recur statuses 'Processing' |
| 127 | and 'Failing'. |
| 128 | |
| 129 | - **Add cancel_reason field to civicrm_contribution_recur table |
| 130 | ([dev/core#830](https://lab.civicrm.org/dev/core/issues/830): |
| 131 | [13997](https://github.com/civicrm/civicrm-core/pull/13997))** |
| 132 | |
| 133 | Adds a `Cancellation Reason` field to the form to cancel recurring |
| 134 | contributions. |
| 135 | |
| 136 | - **Add time start date and end date values on page contribution widget ajax |
| 137 | response ([dev/core#964](https://lab.civicrm.org/dev/core/issues/964): |
| 138 | [14262](https://github.com/civicrm/civicrm-core/pull/14262))** |
| 139 | |
| 140 | Makes campaign start and end dates available to the campaign widget on |
| 141 | Contribution Pages so that one can customize the campaign widget with options |
| 142 | such as "Starts in X days". |
| 143 | |
| 144 | - **Expose contribution page in Contribution Summary report |
| 145 | ([dev/core#959](https://lab.civicrm.org/dev/core/issues/959): |
| 146 | [14249](https://github.com/civicrm/civicrm-core/pull/14249))** |
| 147 | |
| 148 | Exposes the contribution page field in the "Contribution Summary" report. |
| 149 | |
| 150 | - **Add developer tab for summary report |
| 151 | ([14254](https://github.com/civicrm/civicrm-core/pull/14254))** |
| 152 | |
| 153 | Adds a developer tab to the "Contribution Summary" report. |
| 154 | |
| 155 | - **Wrap titles in metadata in ts on payment.create API |
| 156 | ([14450](https://github.com/civicrm/civicrm-core/pull/14450))** |
| 157 | |
| 158 | Improves the API v3 explorer for multilingual sites by translating the |
| 159 | titles in the payment create API action. |
| 160 | |
| 161 | - **Translation in billingblock.tpl - dropping 'Information' |
| 162 | ([14358](https://github.com/civicrm/civicrm-core/pull/14358))** |
| 163 | |
| 164 | Improves translation of the billing block on front facing contribution and |
| 165 | event forms by removing the word Information from the title. |
| 166 | |
| 167 | ## CiviEvent |
| 168 | |
| 169 | - **WYSIWYG support for i18n event fields |
| 170 | ([14384](https://github.com/civicrm/civicrm-core/pull/14384) and |
| 171 | [14396](https://github.com/civicrm/civicrm-core/pull/14396))** |
| 172 | |
| 173 | Adds support for wysiwyg editor in i18n popup for event fields. |
| 174 | |
| 175 | ## Drupal Integration |
| 176 | |
| 177 | - **Pass the RFC 3164 severity level thru to drupal watchdog. |
| 178 | ([14185](https://github.com/civicrm/civicrm-core/pull/14185))** |
| 179 | |
| 180 | Improves error logging for Drupal users by passing the severity level to |
| 181 | drupal watchdog. Before this change all errors passed from CiviCRM to |
| 182 | drupal watchdog were logged at the debug level now errors, warnings, notices, |
| 183 | info, etc. can be logged as such. |
| 184 | |
| 185 | ## <a name="bugs"></a>Bugs resolved |
| 186 | |
| 187 | ### Core CiviCRM |
| 188 | |
| 189 | - **Fix Notice errors caused by l10n rewriting of query so query outputed create |
| 190 | view rather than the create table |
| 191 | ([dev/translation#26](https://lab.civicrm.org/dev/translation/issues/26): |
| 192 | [14152](https://github.com/civicrm/civicrm-core/pull/14152))** |
| 193 | |
| 194 | Fixes a notice `Undefined property: CRM_Core_DAO::$Create_Table in |
| 195 | CRM_Core_DAO::checkConstraintExists()..` when enabling a language in |
| 196 | multilingual mode. |
| 197 | |
| 198 | - **File custom fields cause a fatal error when trying to merge |
| 199 | ([dev/core#723](https://lab.civicrm.org/dev/core/issues/723): |
| 200 | [14325](https://github.com/civicrm/civicrm-core/pull/14325))** |
| 201 | |
| 202 | Fixes a fatal error when trying to merge two contacts with the custom fields |
| 203 | of type "file". |
| 204 | |
| 205 | - **Autogenerated .htaccess is for apache 2.2 |
| 206 | ([dev/core#913](https://lab.civicrm.org/dev/core/issues/913): |
| 207 | [14158](https://github.com/civicrm/civicrm-core/pull/14158))** |
| 208 | |
| 209 | Updates the auto-generated .htaccess so it no longer gives an internal error |
| 210 | for sites on apache 2.4. |
| 211 | |
| 212 | - **Dedupe screen: single "flip" and multi-selected-flip have no effect |
| 213 | ([dev/core#932](https://lab.civicrm.org/dev/core/issues/932): |
| 214 | [14195](https://github.com/civicrm/civicrm-core/pull/14195))** |
| 215 | |
| 216 | Fixes the dedupe screen "flip selected duplicates" button so that it |
| 217 | works as expected. |
| 218 | |
| 219 | - **$this can not be used in static methods |
| 220 | ([dev/core#945](https://lab.civicrm.org/dev/core/issues/945): |
| 221 | [14217](https://github.com/civicrm/civicrm-core/pull/14217))** |
| 222 | |
| 223 | Fixes "$this can not be used in static methods" error thrown by |
| 224 | getIncompleteImportTables() in CRM/Contact/Import/ImportJob.php |
| 225 | |
| 226 | - **CiviCRM 5.13.4 - Specified key was too long; max key length is 767 bytes |
| 227 | ([dev/core#978](https://lab.civicrm.org/dev/core/issues/978): |
| 228 | [14363](https://github.com/civicrm/civicrm-core/pull/14363))** |
| 229 | |
| 230 | Fixes DB Error: `unknown error` if the system status check query fails. |
| 231 | |
| 232 | - **userFrameworkResourceURL gets wrong trailing slash on windows |
| 233 | ([dev/core#985](https://lab.civicrm.org/dev/core/issues/985): |
| 234 | [14405](https://github.com/civicrm/civicrm-core/pull/14405))** |
| 235 | |
| 236 | Fixes an issue where `addTrailingSlash` would generate a \ instead of a '/' on |
| 237 | Windows. |
| 238 | |
| 239 | - **Can't set a non-breaking space as Thousands Separator in Administer > |
| 240 | Localization settings |
| 241 | ([dev/core#994](https://lab.civicrm.org/dev/core/issues/994): |
| 242 | [14376](https://github.com/civicrm/civicrm-core/pull/14376))** |
| 243 | |
| 244 | Removes a form rule preventing location separators from having more than one |
| 245 | character so that one can use a non-breaking space (or other string longer |
| 246 | than one character). |
| 247 | |
| 248 | - **Add CRM_Utils_System::sendResponse(). Fix AssetBuilder's status-code on WP. |
| 249 | ([14468](https://github.com/civicrm/civicrm-core/pull/14468))** |
| 250 | |
| 251 | Ensures that a consistent response is returned across CMS's in regards to |
| 252 | Asset Builder URLs. Before this change Wordpress would return a different |
| 253 | response then Drupal/Backdrop and E2E Unit tests would fail on Wordpress. |
| 254 | |
| 255 | - **Fix Exception API to save lower id number as contact 1 |
| 256 | ([14448](https://github.com/civicrm/civicrm-core/pull/14448))** |
| 257 | |
| 258 | Improves consistency when deduping contacts. |
| 259 | |
| 260 | - **Fix Exception to remove result from duplicates |
| 261 | ([14447](https://github.com/civicrm/civicrm-core/pull/14447))** |
| 262 | |
| 263 | Ensures that marking a non-duplicate contact removes them from the cached |
| 264 | duplicates table. |
| 265 | |
| 266 | - **Fix upgrade on participant_register date |
| 267 | ([14427](https://github.com/civicrm/civicrm-core/pull/14427))** |
| 268 | |
| 269 | Fixes conversion routing on participant register date when upgrading to 5.15. |
| 270 | |
| 271 | - **Misc translation 'ts' fixes |
| 272 | ([14467](https://github.com/civicrm/civicrm-core/pull/14467))** |
| 273 | |
| 274 | Fixes a few places where `ts()` was used incorrectly so that is used correctly. |
| 275 | |
| 276 | - **Don't run search when editing smartgroup criteria |
| 277 | ([14464](https://github.com/civicrm/civicrm-core/pull/14464))** |
| 278 | |
| 279 | Ensures that editing smart group criteria does not trigger a search on that |
| 280 | smartgroup before the criteria can be viewed. |
| 281 | |
| 282 | - **Add angular-xeditable to angular |
| 283 | ([14414](https://github.com/civicrm/civicrm-core/pull/14414))** |
| 284 | |
| 285 | Add angular xeditable component to our bower_components. |
| 286 | |
| 287 | - **crmRouteBinder - Remove params from url if they equal their defaults |
| 288 | ([14211](https://github.com/civicrm/civicrm-core/pull/14211))** |
| 289 | |
| 290 | Ensures when a parameter is removed in the api4 explorer, it is also removed |
| 291 | from the url. |
| 292 | |
| 293 | - **Remove wasteful double-caching of settings metadata |
| 294 | ([14259](https://github.com/civicrm/civicrm-core/pull/14259))** |
| 295 | |
| 296 | Ensures that Settings metadata is cached once per domain and that |
| 297 | `hook_civicrm_alterSettingsMetaData()` is invoked only once per domain. |
| 298 | |
| 299 | - **Remove CIVICRM_TEMP_FORCE_UTF8; deprecate TempTable::setUtf8() |
| 300 | ([14004](https://github.com/civicrm/civicrm-core/pull/14004))** |
| 301 | |
| 302 | Continues work to phase out CIVICRM_TEMP_FORCE_UTF8. |
| 303 | |
| 304 | - **Stop overriding is_active default when saving new relationship |
| 305 | ([14199](https://github.com/civicrm/civicrm-core/pull/14199))** |
| 306 | |
| 307 | Ensures that new relationships are saved as active by default. |
| 308 | |
| 309 | - **Enotice fix on creating a smart group |
| 310 | ([14180](https://github.com/civicrm/civicrm-core/pull/14180))** |
| 311 | |
| 312 | Fixes an E-notice `Notice: Undefined index: component_mode in |
| 313 | CRM_Contact_Form_Task_SaveSearch->PreProcess()` when creating a smart group. |
| 314 | |
| 315 | - **Ensure that the oldest creation date is preserved when deduping |
| 316 | ([dev/core#996](https://lab.civicrm.org/dev/core/issues/996): |
| 317 | [14368](https://github.com/civicrm/civicrm-core/pull/14368))** |
| 318 | |
| 319 | - **Recurring activities don't carry over custom data and tags |
| 320 | ([CRM-21832](https://issues.civicrm.org/jira/browse/CRM-21832), |
| 321 | [14183](https://github.com/civicrm/civicrm-core/pull/14183))** |
| 322 | |
| 323 | - **Disabling Alphabetical Pager is not respected for events and contribution |
| 324 | pages. ([dev/core#705](https://lab.civicrm.org/dev/core/issues/705): |
| 325 | [14203](https://github.com/civicrm/civicrm-core/pull/14203))** |
| 326 | |
| 327 | - **When creating relationship types don't munge names |
| 328 | ([14216](https://github.com/civicrm/civicrm-core/pull/14216))** |
| 329 | |
| 330 | - **CRM_Extension_System - Only allow `test.*` extensions during headless |
| 331 | testing. Hide from regular users. |
| 332 | ([14392](https://github.com/civicrm/civicrm-core/pull/14392))** |
| 333 | |
| 334 | - **Fix name of cache key column to be all lower case rather than camel case in |
| 335 | civicrm_prevnext_cache |
| 336 | ([14359](https://github.com/civicrm/civicrm-core/pull/14359))** |
| 337 | |
| 338 | - **Don't apply api3 pre/post processing to api4 actions |
| 339 | ([14357](https://github.com/civicrm/civicrm-core/pull/14357))** |
| 340 | |
| 341 | - **Fix fatal error when full group by mysql mode enabled & selecting contacts |
| 342 | ([14331](https://github.com/civicrm/civicrm-core/pull/14331))** |
| 343 | |
| 344 | - **Caches - Normalize dependency on php-cache integration-tests |
| 345 | ([14423](https://github.com/civicrm/civicrm-core/pull/14423))** |
| 346 | |
| 347 | - **Cache/IntegrationTests - Remove. This can be replaced by composer dependency |
| 348 | ([255](https://github.com/civicrm/civicrm-packages/pull/255))** |
| 349 | |
| 350 | ## CiviCase |
| 351 | |
| 352 | - **Case report showing 1 result |
| 353 | ([dev/core#743](https://lab.civicrm.org/dev/core/issues/743): |
| 354 | [14082](https://github.com/civicrm/civicrm-core/pull/14082))** |
| 355 | |
| 356 | Fixes the Case Summary report so that it properly filters on case |
| 357 | relationships. |
| 358 | |
| 359 | - **Set title properly on Move/Copy/File on Case popup |
| 360 | ([14347](https://github.com/civicrm/civicrm-core/pull/14347))** |
| 361 | |
| 362 | Ensures when clicking "Move to Case"/"Copy to Case" from the Manage cases |
| 363 | activity list the title is set correctly and stays set correctly instead of |
| 364 | reverting to "File on Case". |
| 365 | |
| 366 | - **Manage Case search filter "Deleted Activities" no longer working |
| 367 | ([dev/core#1022](https://lab.civicrm.org/dev/core/issues/1022): |
| 368 | [14445](https://github.com/civicrm/civicrm-core/pull/14445))** |
| 369 | |
| 370 | Fixes the search filter "Deleted Activities" on the Manage Cases form. |
| 371 | |
| 372 | - **Closing a case gives a warning notice |
| 373 | ([dev/core#896](https://lab.civicrm.org/dev/core/issues/896): |
| 374 | [14160](https://github.com/civicrm/civicrm-core/pull/14160))** |
| 375 | |
| 376 | |
| 377 | ## CiviContribute |
| 378 | |
| 379 | - **Bug in storing settings for CiviContribute component |
| 380 | ([dev/financial#54](https://lab.civicrm.org/dev/financial/issues/54): |
| 381 | [14267](https://github.com/civicrm/civicrm-core/pull/14267))** |
| 382 | |
| 383 | Ensures deferred revenue settings are respected. |
| 384 | |
| 385 | - **Changing financial type on a contribution records incorrect financial items |
| 386 | ([dev/financial#56](https://lab.civicrm.org/dev/financial/issues/56): |
| 387 | [14309](https://github.com/civicrm/civicrm-core/pull/14309))** |
| 388 | |
| 389 | Fixes a bug where changing the financial type on a contribution record would |
| 390 | result in a sales tax row being added regardless of whether sales tax was |
| 391 | turned on. |
| 392 | |
| 393 | - **Fix financial ACL permissions to respect check_permissions |
| 394 | ([14118](https://github.com/civicrm/civicrm-core/pull/14118))** |
| 395 | |
| 396 | Fixes bug where `check_permissions=0` is ignored when doing contribution.get |
| 397 | in conjunction with financial ACLs. |
| 398 | |
| 399 | - **Elavon payment processor seems to no longer accept url encoded emails |
| 400 | ([dev/core#966](https://lab.civicrm.org/dev/core/issues/966): |
| 401 | [14263](https://github.com/civicrm/civicrm-core/pull/14263))** |
| 402 | |
| 403 | Fixes payment processing for sites using an Elavon processor. |
| 404 | |
| 405 | - **Set new inactive statuses as 'Chargeback' does not exist on new installs and |
| 406 | that breaks Contributionrecur.create API |
| 407 | ([14398](https://github.com/civicrm/civicrm-core/pull/14398))** |
| 408 | |
| 409 | - **Fix inconsistent handling when searching contribution text fields |
| 410 | ([14354](https://github.com/civicrm/civicrm-core/pull/14354))** |
| 411 | |
| 412 | - **Fix bug where contribution status is mishandled if label is changed |
| 413 | ([14352](https://github.com/civicrm/civicrm-core/pull/14352))** |
| 414 | |
| 415 | ## CiviEvent |
| 416 | |
| 417 | - **Sorting participants ignored search values. |
| 418 | ([dev/core#981](https://lab.civicrm.org/dev/core/issues/981): |
| 419 | [14313](https://github.com/civicrm/civicrm-core/pull/14313))** |
| 420 | |
| 421 | Ensures when searching for participants for a specific event and then sorting |
| 422 | the results the search parameters are respected, before this change all |
| 423 | participants for all events would be displayed. |
| 424 | |
| 425 | - **Fix deprecation notice on manage events page |
| 426 | ([14289](https://github.com/civicrm/civicrm-core/pull/14289))** |
| 427 | |
| 428 | Removes a `User deprecated function: Deprecated function |
| 429 | CRM_Event_BAO_Event::CheckPermission` notice from the manage events page. |
| 430 | |
| 431 | - **Backoffice participant transfer form does not populate contact reference |
| 432 | field ([dev/core#888](https://lab.civicrm.org/dev/core/issues/888): |
| 433 | [14102](https://github.com/civicrm/civicrm-core/pull/14102))** |
| 434 | |
| 435 | ## CiviMail |
| 436 | |
| 437 | - **Deletion of SMS provider caused all scheduled reminders to fail to be sent |
| 438 | (begins work for [dev/core#369](https://lab.civicrm.org/dev/core/issues/369): |
| 439 | [14266](https://github.com/civicrm/civicrm-core/pull/14266))** |
| 440 | |
| 441 | Before this change if the Scheduled reminder job was triggered and there were |
| 442 | active SMS scheduled reminders for which the SMS Provider has been deleted the |
| 443 | job would fail with the message "Provider not known or not provided" and no |
| 444 | scheduled reminders would go out this change makes it so that scheduled |
| 445 | reminders for which a SMS Provider exists will go out even if there are some |
| 446 | scheduled SMS reminders for which there is not an SMS Provider. |
| 447 | |
| 448 | - **E_NOTICE when creating bulk SMS |
| 449 | ([dev/core#1023](https://lab.civicrm.org/dev/core/issues/1023): |
| 450 | [14449](https://github.com/civicrm/civicrm-core/pull/14449))** |
| 451 | |
| 452 | Fixes E_NOTICE `Notice: Undefined index: Subject in |
| 453 | civicrm_api3_mailing_preview()` when creating bulk SMS. |
| 454 | |
| 455 | - **"Confirm this subscription" URL generated by MailingEventSubscribe API |
| 456 | should always be a front-end |
| 457 | URL([dev/core#1005](https://lab.civicrm.org/dev/core/issues/1005): |
| 458 | [14389](https://github.com/civicrm/civicrm-core/pull/14389))** |
| 459 | |
| 460 | Ensures that the "Confirm this subscription" URL included in bulk emails is |
| 461 | always a front end URL. |
| 462 | |
| 463 | - **SMTP help text is misleading - references the wrong admin screen |
| 464 | ([dev/core#879](https://lab.civicrm.org/dev/core/issues/879): |
| 465 | [14329](https://github.com/civicrm/civicrm-core/pull/14329))** |
| 466 | |
| 467 | - **[Outbound mail admin form] fix some more notices resulting from recent |
| 468 | change ([14433](https://github.com/civicrm/civicrm-core/pull/14433))** |
| 469 | |
| 470 | ## CiviPledge |
| 471 | |
| 472 | - **incorrect capitalization in default Pledges - Acknowledgement message |
| 473 | template ([dev/core#1010](https://lab.civicrm.org/dev/core/issues/1010): |
| 474 | [14465](https://github.com/civicrm/civicrm-core/pull/14465) and |
| 475 | [14469](https://github.com/civicrm/civicrm-core/pull/14469))** |
| 476 | |
| 477 | Ensures that Pledge acknowledgments use correct capitalization and the |
| 478 | `email_greeting`. |
| 479 | |
| 480 | - **correct syntax "IS NOT NULL" to get pledge payment count |
| 481 | ([13374](https://github.com/civicrm/civicrm-core/pull/13374))** |
| 482 | |
| 483 | Ensures when editing a payment for a pledge the screen does not freeze because |
| 484 | the API count returns 0. |
| 485 | |
| 486 | ## Drupal Integration |
| 487 | |
| 488 | - **incorrect Drupal 8 login URL |
| 489 | ([dev/core#898]https://lab.civicrm.org/dev/core/issues/898(): |
| 490 | [14138](https://github.com/civicrm/civicrm-core/pull/14138))** |
| 491 | |
| 492 | If you create a public contribution page on a Drupal 8 site, it will include a |
| 493 | login link for unauthenticated users, with parameters ?destination=... to |
| 494 | direct back to the contribution page after login. Fixes this link for |
| 495 | recent Drupal versionsso it points to the right login url. |
| 496 | |
| 497 | - **Drupal8: Implement set UF locale/language (affects mailing tokens) |
| 498 | ([dev/drupal#19](https://lab.civicrm.org/dev/drupal/issues/19): |
| 499 | [14302](https://github.com/civicrm/civicrm-core/pull/14302) and |
| 500 | [12152](https://github.com/civicrm/civicrm-core/pull/12152))** |
| 501 | |
| 502 | Fixes a 500 error when calling the REST API endpoint in Drupal 8 and fixes a |
| 503 | bug when using Drupal 8 with a multilingual site where mailing token links |
| 504 | were not taking the user to the page in the expected language. |
| 505 | |
| 506 | - **Drupal8/jquery |
| 507 | ([dev/drupal#68](https://lab.civicrm.org/dev/drupal/issues/68): |
| 508 | [14442](https://github.com/civicrm/civicrm-core/pull/14442))** |
| 509 | |
| 510 | Fixes a Javascript error if Drupal's jQuery is not loaded (when its not |
| 511 | needed). |
| 512 | |
| 513 | - **Fix legacy IPN endpoint for Drupal |
| 514 | ([dev/core#973](https://lab.civicrm.org/dev/core/issues/973): |
| 515 | [14272](https://github.com/civicrm/civicrm-core/pull/14272))** |
| 516 | |
| 517 | Fixes a `PHP Fatal error: Uncaught Error: Call to undefined function |
| 518 | variable_get()` error when bootstraping Drupal for Drupal sites collecting |
| 519 | recurring PayPal donations. |
| 520 | |
| 521 | - **Don't call session_start() before CMS bootstrap (PHP 7.2 compat) |
| 522 | ([14074](https://github.com/civicrm/civicrm-core/pull/14074))** |
| 523 | |
| 524 | Fixes a `Warning: ini_set(): A session is active` error for Drupal sites |
| 525 | running PHP > 7.1. |
| 526 | |
| 527 | ## Joomla Integration |
| 528 | |
| 529 | - **Fix php warning when viewing profiles |
| 530 | ([dev/joomla#11](https://lab.civicrm.org/dev/joomla/issues/11): |
| 531 | [14312](https://github.com/civicrm/civicrm-core/pull/14312))** |
| 532 | |
| 533 | ## <a name="misc"></a>Miscellany |
| 534 | |
| 535 | - **Declare API Key as a protected field for future use |
| 536 | ([14274](https://github.com/civicrm/civicrm-core/pull/14274))** |
| 537 | |
| 538 | - **Make apiRequst nextId accessible for api4 constructor |
| 539 | ([14311](https://github.com/civicrm/civicrm-core/pull/14311))** |
| 540 | |
| 541 | - **Remove confusing pass params by ref |
| 542 | ([14360](https://github.com/civicrm/civicrm-core/pull/14360))** |
| 543 | |
| 544 | - **Add EntityPageTrait |
| 545 | ([14399](https://github.com/civicrm/civicrm-core/pull/14399))** |
| 546 | |
| 547 | - **[code-quality] [jcalendar] remove jcalendar usage from |
| 548 | participant_register_date on event search |
| 549 | ([14330](https://github.com/civicrm/civicrm-core/pull/14330))** |
| 550 | |
| 551 | - **Deprecate creating recipients from MailingJob.create. |
| 552 | ([14097](https://github.com/civicrm/civicrm-core/pull/14097))** |
| 553 | |
| 554 | - **Fix running of CRM_Utils_MoneyTest on PHPUnit6+ |
| 555 | ([14424](https://github.com/civicrm/civicrm-core/pull/14424))** |
| 556 | |
| 557 | - **Remove broken delete from customGroupCreate |
| 558 | ([14239](https://github.com/civicrm/civicrm-core/pull/14239))** |
| 559 | |
| 560 | - **Remove duplicate line in case BAO |
| 561 | ([14345](https://github.com/civicrm/civicrm-core/pull/14345))** |
| 562 | |
| 563 | - **Switch to calling Payment.create api when processing a refund from |
| 564 | AdditionalPayment form |
| 565 | ([14317](https://github.com/civicrm/civicrm-core/pull/14317))** |
| 566 | |
| 567 | - **Updating contact (with no email) via import adding email doesn't set email |
| 568 | as primary (adds test for |
| 569 | [dev/core#953](https://lab.civicrm.org/dev/core/issues/953): |
| 570 | [14225](https://github.com/civicrm/civicrm-core/pull/14225))** |
| 571 | |
| 572 | - **Cancel first contribution associated to membership, cancels the membership |
| 573 | (preliminary work for |
| 574 | [dev/core#927](https://lab.civicrm.org/dev/core/issues/927): |
| 575 | [14197](https://github.com/civicrm/civicrm-core/pull/14197))** |
| 576 | |
| 577 | - **Searching for removed contacts in a smart group doesn't work (preliminary |
| 578 | work for [dev/core#926](https://lab.civicrm.org/dev/core/issues/926): |
| 579 | [14181](https://github.com/civicrm/civicrm-core/pull/14181))** |
| 580 | |
| 581 | - **When using custom fields for smart group criteria with relative dates the |
| 582 | group does not respect the relative date over time (preliminary work for |
| 583 | [dev/core#389](https://lab.civicrm.org/dev/core/issues/389)[14401]: |
| 584 | (https://github.com/civicrm/civicrm-core/pull/14401) and |
| 585 | [14386](https://github.com/civicrm/civicrm-core/pull/14386))** |
| 586 | |
| 587 | - **Remove instances of $dao->free |
| 588 | ([dev/core#562](https://lab.civicrm.org/dev/core/issues/562): |
| 589 | [14179](https://github.com/civicrm/civicrm-core/pull/14179))** |
| 590 | |
| 591 | - **Correct syntax for Get pledge payment count (extend test coverage for |
| 592 | [dev/core#627](https://lab.civicrm.org/dev/core/issues/627): |
| 593 | [14350](https://github.com/civicrm/civicrm-core/pull/14350))** |
| 594 | |
| 595 | - **Remove never-called function |
| 596 | _civicrm_api3_deprecated_contact_check_custom_params |
| 597 | ([14341](https://github.com/civicrm/civicrm-core/pull/14341))** |
| 598 | |
| 599 | - **IDE re-format of tools directory |
| 600 | ([14177](https://github.com/civicrm/civicrm-core/pull/14177))** |
| 601 | |
| 602 | - **Unit test for FGB error in #14331 |
| 603 | ([14340](https://github.com/civicrm/civicrm-core/pull/14340))** |
| 604 | |
| 605 | - **Test tweaks that *might* help with intermittant test weirdness |
| 606 | ([14458](https://github.com/civicrm/civicrm-core/pull/14458))** |
| 607 | |
| 608 | - **[TEST SUITE] Remove some use of dbunit from tests |
| 609 | ([14271](https://github.com/civicrm/civicrm-core/pull/14271))** |
| 610 | |
| 611 | - **Test cleanup to remove references to discontinued package dbunit |
| 612 | ([14276](https://github.com/civicrm/civicrm-core/pull/14276))** |
| 613 | |
| 614 | - **[dbunit test] remove dbunit dependency |
| 615 | ([14328](https://github.com/civicrm/civicrm-core/pull/14328))** |
| 616 | |
| 617 | - **Add unit test for merge handling on custom data. |
| 618 | ([14310](https://github.com/civicrm/civicrm-core/pull/14310))** |
| 619 | |
| 620 | - **Fix test / possible live error on submitting credit card renewals |
| 621 | ([14316](https://github.com/civicrm/civicrm-core/pull/14316))** |
| 622 | |
| 623 | - **Update testGetActivityAccessCiviCRMEnough test for clarity |
| 624 | ([14226](https://github.com/civicrm/civicrm-core/pull/14226))** |
| 625 | |
| 626 | - **[REF] Move retrieval of basicSearchFields to 'get' fn |
| 627 | ([14476](https://github.com/civicrm/civicrm-core/pull/14476))** |
| 628 | |
| 629 | - **[REF] Remove input format function from deprecated utils to the only place |
| 630 | that calls it ([14342](https://github.com/civicrm/civicrm-core/pull/14342))** |
| 631 | |
| 632 | - **[REF] extract isLiveMode |
| 633 | ([14336](https://github.com/civicrm/civicrm-core/pull/14336))** |
| 634 | |
| 635 | - **[REF] use generic loadStandardSearchOptionsFromUrl |
| 636 | ([14338](https://github.com/civicrm/civicrm-core/pull/14338))** |
| 637 | |
| 638 | - **[REF] Extract function to get cached duplicate matches |
| 639 | ([14324](https://github.com/civicrm/civicrm-core/pull/14324))** |
| 640 | |
| 641 | - **[REF] minor code re-org |
| 642 | ([14318](https://github.com/civicrm/civicrm-core/pull/14318))** |
| 643 | |
| 644 | - **[REF] Remove extraneous variable |
| 645 | ([14261](https://github.com/civicrm/civicrm-core/pull/14261))** |
| 646 | |
| 647 | - **[REF] Centralize logic for resolving settings pseudoconstants |
| 648 | ([14264](https://github.com/civicrm/civicrm-core/pull/14264))** |
| 649 | |
| 650 | - **[REF] Super Minor code readability fix |
| 651 | ([14258](https://github.com/civicrm/civicrm-core/pull/14258))** |
| 652 | |
| 653 | - **[REF] Move copyCustomFields function from Event to Core_DAO for |
| 654 | re-usablibilty ([14171](https://github.com/civicrm/civicrm-core/pull/14171))** |
| 655 | |
| 656 | - **[REF] Remove reference symbol from 2 variables |
| 657 | ([14270](https://github.com/civicrm/civicrm-core/pull/14270))** |
| 658 | |
| 659 | - **[cleanup] Remove deprecated pattern &CRM_Core_Config::singleton() |
| 660 | ([14178](https://github.com/civicrm/civicrm-core/pull/14178))** |
| 661 | |
| 662 | - **[REF] Refactor to reduce duplication on payment forms |
| 663 | ([14206](https://github.com/civicrm/civicrm-core/pull/14206))** |
| 664 | |
| 665 | - **[REF+ test] start process of cleaning up payment activity handling |
| 666 | ([14198](https://github.com/civicrm/civicrm-core/pull/14198))** |
| 667 | |
| 668 | - **[REF][Test] Remove call to |
| 669 | CRM_Contribute_BAO_Contribution::recordAdditionalPayment in favour of payment |
| 670 | create ([14137](https://github.com/civicrm/civicrm-core/pull/14137))** |
| 671 | |
| 672 | - **[REF+test] clean up code for getting labels for merge screen, stdise |
| 673 | ([14260](https://github.com/civicrm/civicrm-core/pull/14260))** |
| 674 | |
| 675 | - **[REF] Simplify ACL page template |
| 676 | ([14288](https://github.com/civicrm/civicrm-core/pull/14288))** |
| 677 | |
| 678 | - **[REF] Fix pointless use of CRM_Utils_Array::value in Campaign BAO |
| 679 | ([14300](https://github.com/civicrm/civicrm-core/pull/14300))** |
| 680 | |
| 681 | - **[code-cleanup] remove orderBy param from getDuplicatePairs, it is not used |
| 682 | ([14297](https://github.com/civicrm/civicrm-core/pull/14297))** |
| 683 | |
| 684 | - **[REF] extract buildGroupTree function |
| 685 | ([14303](https://github.com/civicrm/civicrm-core/pull/14303))** |
| 686 | |
| 687 | - **[REF] Test class cleanup - Extract function to create nuanced custom fields |
| 688 | to a trait ([14301](https://github.com/civicrm/civicrm-core/pull/14301))** |
| 689 | |
| 690 | - **[REF] Cleanup input & output on paymentActivityCreate & improve test |
| 691 | ([14269](https://github.com/civicrm/civicrm-core/pull/14269))** |
| 692 | |
| 693 | - **[REF] move calculation of migrationInfo into the function that uses it |
| 694 | ([14365](https://github.com/civicrm/civicrm-core/pull/14365))** |
| 695 | |
| 696 | - **[REF] extract buildClause from CRM_Report_Form_Event_Income |
| 697 | ([14098](https://github.com/civicrm/civicrm-core/pull/14098))** |
| 698 | |
| 699 | - **[REF] Activity Summary report - move temp table generation etc from |
| 700 | postProcess to buildQuery, remove postProcess, don't skip in unit tests |
| 701 | ([14375](https://github.com/civicrm/civicrm-core/pull/14375))** |
| 702 | |
| 703 | - **[REF] Activity form - very minor tidy up |
| 704 | ([14434](https://github.com/civicrm/civicrm-core/pull/14434))** |
| 705 | |
| 706 | - **[REF] Stop passing cacheKey to refillCache |
| 707 | ([14337](https://github.com/civicrm/civicrm-core/pull/14337))** |
| 708 | |
| 709 | - **[REF] dev/core#998 make processDupes testable & add test |
| 710 | ([14370](https://github.com/civicrm/civicrm-core/pull/14370))** |
| 711 | |
| 712 | - **[REF] Remove reference to 'changePaymentInstrument' from |
| 713 | updateFinancialAccounts as never passed in |
| 714 | ([14353](https://github.com/civicrm/civicrm-core/pull/14353))** |
| 715 | |
| 716 | - **[NFC][test-fix] centralise use of assertLike for comparing sql |
| 717 | ([14470](https://github.com/civicrm/civicrm-core/pull/14470))** |
| 718 | |
| 719 | - **[nfc] [test] Skip testGetFromTo on date transition |
| 720 | ([14472](https://github.com/civicrm/civicrm-core/pull/14472))** |
| 721 | |
| 722 | - **[NFC] Fix issue with Job Manager Test giving out a warning |
| 723 | ([14327](https://github.com/civicrm/civicrm-core/pull/14327))** |
| 724 | |
| 725 | - **[NFC] Fix comment block for variable declarations |
| 726 | ([14314](https://github.com/civicrm/civicrm-core/pull/14314))** |
| 727 | |
| 728 | - **(NFC) Update node package versions to latest ones |
| 729 | ([14087](https://github.com/civicrm/civicrm-core/pull/14087))** |
| 730 | |
| 731 | - **[NFC] Update civicrm_generated data file following addition of contriā¦ |
| 732 | ([14371](https://github.com/civicrm/civicrm-core/pull/14371))** |
| 733 | |
| 734 | - **(NFC) Remove without param tests |
| 735 | ([14454](https://github.com/civicrm/civicrm-core/pull/14454))** |
| 736 | |
| 737 | - **[NFC] PHPCS fixes. |
| 738 | ([14402](https://github.com/civicrm/civicrm-core/pull/14402))** |
| 739 | |
| 740 | - **[NFC] Update package-lock and civicrm_generated to fix langague issues |
| 741 | ([14385](https://github.com/civicrm/civicrm-core/pull/14385))** |
| 742 | |
| 743 | - **[NFC] phpdoc cleanup |
| 744 | ([14335](https://github.com/civicrm/civicrm-core/pull/14335))** |
| 745 | |
| 746 | - **[NFC] Fix variable types in DAO doc blocks |
| 747 | ([14294](https://github.com/civicrm/civicrm-core/pull/14294))** |
| 748 | |
| 749 | - **[NFC] fix docblock types from boolean to bool |
| 750 | ([14296](https://github.com/civicrm/civicrm-core/pull/14296))** |
| 751 | |
| 752 | - **[NFC] array formatting in CRM_Dedupe_MergerTest |
| 753 | ([14273](https://github.com/civicrm/civicrm-core/pull/14273))** |
| 754 | |
| 755 | - **[NFC] Update Language to be more user friendly when checking logs |
| 756 | ([14278](https://github.com/civicrm/civicrm-core/pull/14278))** |
| 757 | |
| 758 | - **[NFC] array formatting, some comments |
| 759 | ([14291](https://github.com/civicrm/civicrm-core/pull/14291))** |
| 760 | |
| 761 | - **[NFC] fix comment blocks capitalising null |
| 762 | ([14306](https://github.com/civicrm/civicrm-core/pull/14306))** |
| 763 | |
| 764 | - **[NFC] fix more places where var is declared as boolean rather than bool |
| 765 | ([14305](https://github.com/civicrm/civicrm-core/pull/14305))** |
| 766 | |
| 767 | - **[NFC] formatting & comment fixes - Regenerate DAO files |
| 768 | ([14304](https://github.com/civicrm/civicrm-core/pull/14304))** |
| 769 | |
| 770 | - **[NFC] ProfileTest class - formatting & general cleanup |
| 771 | ([14282](https://github.com/civicrm/civicrm-core/pull/14282))** |
| 772 | |
| 773 | - **[NFC] Add trailing comma to pseudoconstant array in DAOs |
| 774 | ([14295](https://github.com/civicrm/civicrm-core/pull/14295))** |
| 775 | |
| 776 | - **[NFC] array formatting in api_v3_paymentTest class |
| 777 | ([14451](https://github.com/civicrm/civicrm-core/pull/14451))** |
| 778 | |
| 779 | - **[NFC] Update Exception DAO class |
| 780 | ([14482](https://github.com/civicrm/civicrm-core/pull/14482))** |
| 781 | |
| 782 | - **[NFC] Further tests tidy up following removing of dbunit |
| 783 | ([14344](https://github.com/civicrm/civicrm-core/pull/14344))** |
| 784 | |
| 785 | - **[NFC] Docblock fixes |
| 786 | ([14323](https://github.com/civicrm/civicrm-core/pull/14323))** |
| 787 | |
| 788 | - **NFC Fix DAO Style issues |
| 789 | ([14307](https://github.com/civicrm/civicrm-core/pull/14307))** |
| 790 | |
| 791 | - **[NFC] reformat UFFieldTest |
| 792 | ([14308](https://github.com/civicrm/civicrm-core/pull/14308))** |
| 793 | |
| 794 | - **contributor-keys file - jira/lab.c.o username fix |
| 795 | ([14200](https://github.com/civicrm/civicrm-core/pull/14200))** |
| 796 | |
| 797 | ## <a name="credits"></a>Credits |
| 798 | |
| 799 | This release was developed by the following code authors: |
| 800 | |
| 801 | AGH Strategies - Alice Frumin, Andie Hunt, Eli Lisseck; Agileware - Francis |
| 802 | Whittle; Australian Greens - Seamus Lee; Business & Code - Alain Benbassat; |
| 803 | Christian Wach; Circle Interactive - Dave Jenkins; CiviCRM - Coleman Watts, Tim |
| 804 | Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy, Samuel |
| 805 | Vanhove; Dave D; Electronic Frontier Foundation - Mark Burdett; Francesc Bassas |
| 806 | i Bullich; Fuzion - Jitendra Purohit; iXiam - Vangelis Pantazis; JMA Consulting - |
| 807 | Monish Deb; Just Hope - Phil Morice Brubaker; Megaphone Technology Consulting - |
| 808 | Jon Goldberg; MJW Consulting - Matthew Wire; Onyemenam Ndubuisi; Pradeep |
| 809 | Nayak; Progressive Technology Project - Jamie McClelland; Stephen Palmstrom; |
| 810 | Wikimedia Foundation - Eileen McNaughton |
| 811 | |
| 812 | Most authors also reviewed code for this release; in addition, the following |
| 813 | reviewers contributed their comments: |
| 814 | |
| 815 | Agileware - Justin Freeman; Artful Robot - Rich Lott; Blackfly Solutions - Alan |
| 816 | Dixon; CEDC - Laryn Kragt Bakker; Chris Burgess; CiviCoop - Jaap Jansma; |
| 817 | Centrale Organisatie van Voetbal Scheidsrechters (COVS) - Ed van Leeuwen; Fuzion - |
| 818 | Luke Stewart; gareth-circle; Greenpeace CEE - Patrick Figel; JMA Consulting - |
| 819 | Joe Murray; John Kingsnorth; John Kyle Cronan; Joinery - Allen Shaw; Lighthouse |
| 820 | Design and Consulting - Brian Shaughnessy; myDropWizard - David Snopek; Nicol |
| 821 | Wistreich; Webstanz - Adelson; |
| 822 | |
| 823 | ## <a name="feedback"></a>Feedback |
| 824 | |
| 825 | These release notes are edited by Alice Frumin and Andie Hunt. If you'd like |
| 826 | to provide feedback on them, please log in to https://chat.civicrm.org/civicrm |
| 827 | and contact `@agh1`. |