# CiviCRM 5.12.0
Released April 3, 2019
- **[Bugs resolved](#bugs)**
## <a name="synopsis"></a>Synopsis
| *Does this version...?* | |
| Fix security vulnerabilities? | no |
| **Change the database schema?** | **yes** |
| **Alter the API?** | **yes** |
| **Require attention to configuration options?** | **yes** |
| **Fix problems installing or upgrading to a previous version?** | **yes** |
| **Introduce features?** | **yes** |
| **Fix bugs?** | **yes** |
## <a name="features"></a>Features
### Core CiviCRM
- **Migrate KAM smartmenus to core
The Keyboard Accessible Menus extension is now moved to core, replacing the
CiviCRM navigation menu with a grey one provided by the SmartMenus jQuery
plugin. The new menu is mobile-responsive and more accessible.
- **[dev/core#657](https://lab.civicrm.org/dev/core/issues/657) Add filter for
country on Repeat Contributions Report
This change adds a filter for Country to the Repeat Contributions Report.
- **[dev/core#690](https://lab.civicrm.org/dev/core/issues/690) Support more
entities in Attachment API by short-circuiting permission check
You can now use the Attachment API to update attachment custom fields on
Memberships and several other entities.
- **[dev/core#561](https://lab.civicrm.org/dev/core/issues/561) Replace
jcalendar instances with datepicker
(https://github.com/civicrm/civicrm-core/pull/13746)) Continued Work**
These changes update the following places to use the datepicker instead of the
jcalendar widget: the age field on the Advanced Search form in the
Demographics section, the activity date time field on the find activites form,
and the date field on the Change Case Type Form. Additionally on the Find
Activities form these changes make it possible to pass the activity_date_time
criteria in the url.
- **Add install and runtime status warnings if MySQL utf8mb4 is not supported
This change adds a warning to the system status page, as well as at install
time, if a site's MySQL server does not support the utf8mb4 character set. See
also [dev/core#749](https://lab.civicrm.org/dev/core/issues/749) for an
intra-release regression related to this.
- **Record change log entry when contact is moved to or restored from trash
This change makes it so that a change log entry is created when a contact is
moved to the trash or restored from the trash.
- **Towards supporting EntityForm for 'View Action'
This change enhances support for viewing entities in the abstracted
"EntityForm" code. This may be used in the future to standardize viewing and
editing CiviCRM entities.
- **Standardize format for entityRef create links
This change standardizes the creation links in entity reference fields so that
they are pre-loaded for the client and so that they work equally well with all
- **Add in Exception API to support the refactor of Dedupe Exception Page
This change adds an API to create, get, and delete dedupe exceptions.
- **CRM.loadScript improvements
This change makes it so that dynamically loaded scripts are not served from
stale browser caches and allows angular apps to dynamically load scripts.
- **Make submitOnce() button js into a button parameter
This change makes it so that developers can set a button as submit only once
using the parameter `submitOnce = TRUE`.
- **[dev/core#562](https://lab.civicrm.org/dev/core/issues/562) Remove instances
of $dao->free ((https://github.com/civicrm/civicrm-core/pull/13560) and
(https://github.com/civicrm/civicrm-core/pull/13564)) Continued Work**
These changes improve performance by removing instances of $dao->free.
- **Upgrade PHPWord
CiviCRM now contains an updated version of the code library for generating
- **Add pseudoconstant for payment_processor_id to contributionrecur
((https://github.com/civicrm/civicrm-core/pull/13702)) Continued Work**
This change alters the schema to add support for payment_processor_id as a
pseudoconstant for recurring contributions.
- **[dev/core#767](https://lab.civicrm.org/dev/core/issues/767) Add 'Cancelled /
Refunded Date' and 'Cancellation / Refund Reason' in the Detail Contributions
This change adds the fields and filters 'Cancelled / Refunded Date' and
'Cancellation / Refund Reason' to the Contribution Detail report.
- **[dev/report#8](https://lab.civicrm.org/dev/report/issues/8) Contribution
reports don't include thank-you date
This change adds the "thank you date" field to the Contribution Summary and
- **[dev/core#735](https://lab.civicrm.org/dev/core/issues/735) Query
performance - suppress 'product' and related fields where products are not in
the database ((https://github.com/civicrm/civicrm-core/pull/13638))**
This change removes the "Premium" column from the Contribution tab for sites
that do not use products and improves performance on those sites by not
searching for product related fields.
- **Speed up contribution results by removing join on civicrm_financial_type
table when rendering search results.
This change improves performance when searching contributions.
- **Allow viewing of cancelled recurring contributions
It is now possible to view canceled recurring contributions through the user
- **Add new Payment.sendconfirmation api
A new Payment.sendconfirmation API method is available for generating payment
- **Switch additional payment form to use Payment.sendconfirmation api
The additional payment form now generates confirmation emails using the new
- **Payment notification formatting, move greeting into table
The greeting in the payment notification email is now aligned with the table
of payment information.
- **Update Payment Notification to use greeting, remove text to 'Please print
this confirmation for your records.
The Payment Notification email no longer asks recipients to "Please print this
confirmation for your records." It also is updated to use the email_greeting
instead of the display_name for the greeting.
- **Contribution/ContributionRecur metadata updates for EntityForm
These changes update the metadata for Contribution and ContributionRecur so
that they can be used to autogenerate forms with EntityForm.
- **CiviCRM Membership Detail report, add column to display if membership is
Primary or Inherited
This change adds a column "Primary/Inherited?" to the Membership Detail
### Drupal Integration
- **Make address Supplemental line 3 available to views
This change makes it so that one can use the address field "Supplemental
Address 3" in a view.
### Joomla Integration
- **Improves styling on Joomla! upgrade screen
This change improves the styling of the Joomla upgrade screen.
## <a name="bugs"></a>Bugs resolved
### Core CiviCRM
- **[dev/core#842](https://lab.civicrm.org/dev/core/issues/842) Regression??
Inline editing of website field deletes it
This resolves a bug where editing a website field inline on the contact
summary tab sometimes would delete the field entirely.
- **[dev/core#190](https://lab.civicrm.org/dev/core/issues/190) custom data with
multiple records profile: after submission, profile view shows first record
instead of most recent
When submitting a profile with files that allow multiple records, the most
recently created record is now retrieved on the confirmation page. Before
this change, the first record was retrieved.
- **Fix (sometimes serious) performance problem on submitting profiles for
- **[dev/core#748](https://lab.civicrm.org/dev/core/issues/748) Deadlocks and
performance issues when using smartgroups / ACLs extensively
This change improves performance of many queries by no longer using the
`UPPER()` and `LOWER()` MySQL functions.
- **[dev/core#397](https://lab.civicrm.org/dev/core/issues/397) Dedupe for
Individual Birth Date Results in Error
This change fixes a fatal error when using a dedupe rule with the birth date
- **[dev/core#821](https://lab.civicrm.org/dev/core/issues/821) Activity:
Assigned to: It is not possible to search by the "refine search" drop-down
When setting an activity assignee, a bug prevented using the filters in the
contact reference field.
- **[dev/core#580](https://lab.civicrm.org/dev/core/issues/580) No groups
displayed on Manage Groups when "All Groups" is selected
This resolves a bug where if a user had an ACL that gave them permission to
Edit "All Groups" but did not have the permission "View All Contacts", on the
"Manage Groups" screen no groups would appear.
- **[dev/core#642](https://lab.civicrm.org/dev/core/issues/642) New Contact
Report: New report isn't created automatically when the user selects the
"Create Report" action
the Constituent Report (Summary) template.
- **[dev/core#683](https://lab.civicrm.org/dev/core/issues/683) Incorrectly
encoded state and country names
This change ensures that when countries and state/provinces are added they use
proper character encoding.
- **[dev/core#691](https://lab.civicrm.org/dev/core/issues/691) It is no longer
possible to have the default country not set
This change makes the default country field on the settings form optional,
before this change it was required.
- **[dev/core#700](https://lab.civicrm.org/dev/core/issues/700) Advanced Search:
The reason of failed search result is not displayed, when a contact with the
matching Contact ID was not found
When using the Advanced Search form to search by contact ID, this change
ensures that if there is no matching contact the message states the search
- **[dev/core#708](https://lab.civicrm.org/dev/core/issues/708) Advanced Search:
The "Modified By" option was set instead of "Added by"
In Advanced Search, the listing of search criteria for searches yielding no
results would display "modified by" when "added by" was a criterion.
- **[dev/core#705](https://lab.civicrm.org/dev/core/issues/705) Disabling
Alphabetical Pager is not respected for events and contribution pages.
- **[dev/core#714](https://lab.civicrm.org/dev/core/issues/714) Manage groups:
Error: "API permission check failed for Group/create call; insufficient
permission" when the user tries to edit some group's details
On the Manage Groups form, if a user does not have permissions to edit a
group, the edit link is disabled.
- **[dev/core#742](https://lab.civicrm.org/dev/core/issues/742) Repeated
warning: "simplexml_load_file(): I/O warning : failed to load external entity
This change fixes warnings regarding failing to parse the XML file when
clearing the CiviCRM caches.
- **[dev/report#11](https://lab.civicrm.org/dev/report/issues/11) Soft Credit
report fails when Only Full Group By is enabled
- **Remove mcrypt system status check
PHP 7.2 does not support mcrypt, which is being deprecated. This removes the
status check that would notify administrators if mcrypt is not installed.
- **Fix api bug whereby 0 & '0' are not accepted as range parameters for BETWEEN
- **Render Note field tokens correctly - they are already HTML.
- **Rationalise Activity api ACLs for consistency, to respect the hook & improve
This change alters the way permissions are handled on sites that use ACLs when
the activity.get api is called with the 'check_permissions' flag set to TRUE.
- **Upgrader: Don't abort if state_province already exists
This change fixes a fatal error when upgrading from 4.7.30 and 4.7.32 if
state_province values already exists so that sites with state_province values
can safely upgrade from 4.7.30 t0 4.7.32.
- **Do not attempt to store out-of-range street number
Before this change attempting to geocode an address with a long street number
would result in a fatal error "DB Error Out of range value for column
'street_number'". This change aborts parsing for addresses with long street
- **geocode job: Do not return more messages than can fit in the log data column
This change fixes an error: "DB Error: Data too long for column 'data' at row
1" when running the geocoder job on a site with over 500 unparseable
addresses. This error was being thrown because the message in the job log was
too big to be saved, and this change makes it so that the message is shortened to
fit in the database.
- **only set custom field to null if it is really null, not string 'null'
Custom fields saved with `NULL`, `Null`, or any value other than `null` will
be saved as-is. A value of `null`, however, still saves a null value.
- **CRM/Logging - Fix various bugs in schema parsing
This change improves logging so that logs return constraints as well as
indexes (before this change indexes were not returned), and returns column
lengths without surrounding parenthesis and returns arrays using ['index1',
'index2'] syntax instead of [0 => ['constraint_name' => 'foo']] syntax.
- **CRM/Logging - Fix log table exceptions
This change ensures that log table exceptions are applied for columns
regardless of whether or not they have backticks.
- **Fix html2pdf default PDF format when multiple pdf_format are available.
This change ensures that the correct default PDF format is selected when
multiple pdf format options are available.
- **Always load recaptcha JS over HTTPS
This change ensures that reCAPTCHA is loaded regardless of whether the site is
being served over HTTP or HTTPS.
- **If a profile is used to create a contact with a subtype the contact will not
have any existing subtypes
This change fixes PHP notices being thrown when creating a contact with a
subtype via a profile.
- **Remove activitystatus js. Add submitOnce handler for activity create
This change makes it so users can only click "save" once when creating an
activity to prevent users from accidentally creating multiple activities by
clicking save multiple times.
- **Fix contact ID help on advanced search
This change ensures the help text appears when one clicks the help icon next
to Contact ID on the Advanced Search form.
- **Used buildoptions function to get all groups
This change fixes a "DB Error: no such field" message when using the Contact
API to get contacts from a group where the group name and group title are
different so that no error is thrown.
- **[dev/core#684](https://lab.civicrm.org/dev/core/issues/684) Case Manager not
updating correctly (CiviCRM 5.8.2)
This change ensures that if the Case Manager is changed on the Manage Case
screen the "(Case Manager)" tag appears correctly.
- **[dev/core#739](https://lab.civicrm.org/dev/core/issues/739) Field not found
when sorting report by Case Type as a section header
This change fixes the "Unknown column 'case_civireport.case_type_name' in
'field list'" error thrown on a Case Detail report sorted by the field Case
Type with the option "Section Header" checked.
- **[dev/core#770](https://lab.civicrm.org/dev/core/issues/770) View Case
Activity page displays disabled custom fields
- **[dev/core#644](https://lab.civicrm.org/dev/core/issues/644) "From" address
on membership renewal notices is wrong
In some configurations, contribution receipts would be sent with a contact ID
as the "From" address rather than an actual address.
- **[dev/core#659](https://lab.civicrm.org/dev/core/issues/659) Civi returning
500 errors to Paypal Pro request to civicrm/extern/ipn.php
When CiviCRM encounters an error in processing an instant payment
notification, it no longer returns HTTP status of 500. PayPal would disable
IPN after too many 500 errors, assuming the site is broken.
- **[dev/core#716](https://lab.civicrm.org/dev/core/issues/716) Add decimals in
Contribution Amount on Repeat Contributions Report
This change ensures that the Repeat Contributions Report does not truncate the
decimals of contributions.
- **[dev/core#801](https://lab.civicrm.org/dev/core/issues/801) Thank You
letters have an invalid 'from' when sending from the contact's email address
- **[dev/core#720](https://lab.civicrm.org/dev/core/issues/720) Performance
change approved - remove mode & median slow queries
This change removes the mode and median stats on the contribution search
summary and contribution tab on contacts to improve performance.
- **Remove another instance of 'lower'
This change improves performance when searching notes fields on a
- **[dev/core#769](https://lab.civicrm.org/dev/core/issues/769) ZIP Archive for
multiple batch exports fail
This change fixes ZIP Archives for multiple batch exports for instances with
any PHP version greater than 5.6.
- **[dev/report#7](https://lab.civicrm.org/dev/report/issues/7) Transaction Date
filter in Bookkeeping Transactions report
This change ensures that the trxn_date field on the Bookkeeping Report filter
respects the times designated in the filter. Before this change it would only
return transactions that occurred at midnight.
- **[dev/core#812](https://lab.civicrm.org/dev/core/issues/812) Contribution row
displayed even if contact has 0 contributions.
- **Status of test contribution is not fetched on ThankYou page.
This change ensures that on a Contribution page with a payment processor that
captures payment instantly and does not use the confirmation page, the
confirmation message on the Thank You page states the status of the
transaction instead of "Your contribution has been submitted...".
- **Move assign of currency for entityForm outside of foreach so order of fields
don't matter ((https://github.com/civicrm/civicrm-core/pull/13696))**
This change ensures assign currency works regardless of whether currency is
before or after the money fields.
- **Find Contributions columns/headers not aligned when "Contributions OR Soft
Credits?" filter set to "Soft Credits Only"
This change ensures that when running a Find Contributions search with the
"Contributions OR Soft Credits?" filter set to "Soft Credits Only" the headers
line up with the correct columns.
- **[dev/core#696](https://lab.civicrm.org/dev/core/issues/696) Changes to
copied event phone and email reflects in original event phone and email
This change fixes a bug where if a user copied an event and then edited the
email and or phone number on the copy, the changes would be applied to the
- **Fix Custom post outer div class on event registration form
This change updates the class applied to the outer div around a custom profile
in the post section of the form to use 1 custom_pre-section and 1
custom_post-section instead of two custom_pre-sections.
- **Fix the invocation of post hook for ParticipantPayment ensuring that an id
is passed in post hook
- **[dev/core#469](https://lab.civicrm.org/dev/core/issues/469) Error on action
"Email - schedule/send via CiviMail" with multiple event names filter
- **CiviMail: Fix reply forwarding for mailers with From: and Return-path:
- **"Only variable references should be returned by reference" notice in
This change fixes a "Only variable references should be returned by reference"
PHP notice under various SMTP error conditions.
- **[dev/core#631](https://lab.civicrm.org/dev/core/issues/631) Problem when
merging contacts which have membership records
When merging contacts with memberships, the default is now that the "add new"
box is checked. This brings memberships over from the left-hand contact
without attempting to merge memberships. Merging memberships from the contact
merge interface can result in data loss.
### Drupal Integration
- **fix broken logic in CRM_Utils_System_DrupalBase::formatResourceUrl()
This change fixes a bug where Drupal sites were not processing absolute URLs
containing the $base_url passed in from extensions (like Shoreditch)
civicrm/file/imagefile serving up wrong images
((https://github.com/civicrm/civicrm-drupal/pull/564)) Extends work**
This change fixes a problem with the Views file field handler displaying
incorrect uploaded images.
### Wordpress Integration
- **[dev/wordpress#18](https://lab.civicrm.org/dev/wordpress/issues/18) wp-cli
sometimes fails to find cms path
This change ensures that the path specified to wp-cli as `--path` is passed to
CiviCRM which fixes some URL errors specifically but not limited to when
sending bulk mailings with trackable URLs.
## <a name="misc"></a>Miscellany
- **Upgrade Karma version to latest version
- **[infra/ops#878](https://lab.civicrm.org/infra/ops/issues/878) Add a test
matrix for E2E tests on each CMS
This change improves reliability by increasing test coverage.
- **Try and add data set example where email_on_hold / on_hold is NULL in the
This change adds test coverage for certain smart group criteria.
- **[dev/core#746](https://lab.civicrm.org/dev/core/issues/746) Search Builder
searches using > 1 smart group where operator is equals is broken from 5.10.0
((https://github.com/civicrm/civicrm-core/pull/13685)) Continued work**
This change adds test coverage for Search Builder searches using > 1 smart
- **[dev/report#10](https://lab.civicrm.org/dev/report/issues/10) No pagination
on Contribution Detail report
((https://github.com/civicrm/civicrm-core/pull/13678)) Continued Work**
This change adds a unit test for pagination on the Contribution Detail report.
- **Optimize CRM_Core_BAO_FinancialTrxn::getTotalPayment
- **Bump minimum upgradable ver to 4.2.9
- **Use CRM_Utils_SQL_TempTable to drop and create table.
- **Clean up Payment.create function
- **[dev/report#9](https://lab.civicrm.org/dev/report/issues/9) Deprecate
`getBasicContactFields` in favor of `getColumns('Contact')`
- **Extract getSearchSQLParts function
- **[Test changes] Mailing job test use
- **Code cleanup - remove extraneous permissions clause
- **Fix typo in comments
- **Removes redundant IF
- **(NFC) formatting changes
- **report clean up - remove redundant code
- **Fix typo and space
- **[minor cleanup] reduce params passed to searchQuery
- **[TEST FIX] Increase uniqueness in testSingleNowDates
- **Revert "[REF] Extract record refund function"
- **Minor code cleanup
- **[NFC, test class] formatting, remove unused variables
- **Authorizenet test - reduce chance of intermittent fails
- **[unused code cleanup] Remove unused 'signupType' url support
- **[Test support] Add extra output info when getsingle fails as this seems to
be common in intermittant fails
- **Remove tests that no longer work due to dead service
- **Refactor CRM_Utils_SQL_TempTable::build()->createWithQuery($sql) interface
to support MEMORY tabls
- **REF Convert deprecated functions to buildOptions for case
- **[REF] Extract record refund function
- **[REF] Extract getSearchSQL from getSearchQuery.
- **[REF] minor code cleanup - do not build order var just to hurt brains
- **[REF] minor cleanup of groupBy definition.
- **[REF] extract add median to stats
- **[REF] extract cancelled stats to own function
- **[REF] Move entityRef filters into their respective BAOs
- **[REF] extract basic soft credit stats to separate function
- **[REF] Remove unused function parameter
- **[REF] Extract lines to add the pseudoconstant to the select
- **[REF] extract calculation of mode stat
- **[REF] extract calculation of basic stats
- **[REF] Move addSelectWhere-like function to be located on BAO_Contribution
- **[REF] Fix silly function to do less handling of non-existent scenarios
- **[REF] extract chunk of code to a separate function
- **[REF] Use api rather than selector for rendering contributions on user
dashboard ((https://github.com/civicrm/civicrm-core/pull/13584) and
- **[REF] switch from (undeclared) class property to local variable.
- **[REF] Minor readability cleanup
- **[REF] Remove useless class CRM_Report_Form_Event
- **[REF] extract getToFinancialAccount from
- **[ref] Extract activity payment creation
- **[REF] separate financial handling & component transitioning in
- **[REF] towards cleanup of update membership code
- **(REF) Rename variables and adjust variable definitions for Event Register
- **[REF] Extract recordPayment portion
- **[REF] minor refactor around retrieving processor id for recur
- **[code cleanup] Default wrong declared
- **[Code cleanup] Remove unused $stationery_path parameter
- **Remove long block of commented out code from 4 years ago
- **Add unit test on getContributionBalance fn (#13187)
- **Phase out CIVICRM_TEMP_FORCE_UTF8
- **Extract record refund function
- **Move pear/mail from packages to composer.json
- **Decommision getPartialPaymentTrxn function
- **Fix & test searchQuery order by to be less dependent on what is selected for
- **EntityRef - Standardize on PascalCase for entity name and fix minor bug
## <a name="credits"></a>Credits
This release was developed by the following code authors:
AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Alok Patel; Alexy
Mikhailichenko; Australian Greens - Seamus Lee; avall-llovera; CiviCRM - Coleman
Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy;
Electronic Frontier Foundation - Mark Burdett; Francesc Bassas i Bullich; Fuzion -
Jitendra Purohit; GreenPeace Central and Eastern Europe - Patrick Figel; JMA
Consulting - Edsel Lopez, Monish Deb; Ken West; Lighthouse Design and Consulting -
Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJW
Consulting - Matthew Wire; Nicol Wistreich; Pradeep Nayak; Skvare - Mark Hanna;
Squiffle Consulting - Aidan Saunders; Wikimedia Foundation - Eileen McNaughton
Most authors also reviewed code for this release; in addition, the following
reviewers contributed their comments:
Agileware - Justin Freeman; Circle Interactive - Dave Jenkins, Reece Benson;
CiviDesk - Sunil Pawar; Dave D; Fuzion - Peter Davis; JMA Consulting - Joe
Murray; Luna Design - Andrew Wasson; Mark Westergaard; MJCO - Mikey O'Toole;
Progressive Technology Project - Jamie McClelland; Richard van Oosterhout;
Tadpole Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew
## <a name="feedback"></a>Feedback
These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
and contact `@agh1`.