Fetching contributors…
Cannot retrieve contributors at this time
840 lines (617 sloc) 37.7 KB

CiviCRM 4.7.25

Released October 4, 2017


Does this version...?
Fix security vulnerabilities? no
Change the database schema? yes
Alter the API? yes
Require attention to configuration options? no
Fix problems installing or upgrading to a previous version? no
Introduce features? yes
Fix bugs? yes


Core CiviCRM

  • CRM-20769 Allow for Button Text on profiles to be overriden in settings (10940 and 11051)

    This adds columns to the civicrm_uf_group table to support customizing profile buttons.

  • CRM-20964 Include queue id while retrieving rows from Event Queue. (10757)

    CRM_Mailing_Event_BAO_Queue::getRows() returned rows for each intended recipients, but didn't include any info which differentiates each row.

    This adds a queue_id in the key column of the $result array which enables hooks to know which row is getting displayed.

  • CRM-21118 Add action links for message templates overview at top of page (10917)

    Previously action links (add message template) were only shown at the bottom of the page. If you have lots of message templates it is not visible until scrolling down. This adds the links at the top of the page as well (like many other pages in CiviCRM).

  • CRM-20979 pre help for price fields not exposed to UI. (10780)

    Adds a field to the Add/Edit Price Field Form to enter pre help for price fields.

  • CRM-20680 Make the CiviCRM logo spin while waiting for next page to load (10903) (fix to previous work)

    This fixes a side effect of the new feature that caused all CiviCRM logos on the page to spin.

  • CRM-21078 Allow user to save and continue editing message template (10871)

    The message template editing screen now matches similar forms in CiviCRM by offering separate "Save" and "Save and Done" buttons.

  • CRM-20941 Determine & notify date to end support for PHP5.3 and PHP5.4 (10851)

    A pre-upgrade message and system check now warn administrators of sites using PHP versions prior to 5.6.

  • CRM-17157 CiviCRM money validation should allow more decimal places (10827)

    Previously, validation of money fields limited values to two decimal places. This allows for currencies that may have more decimal places.

  • CRM-20926 Allow extensions to flag PHPIDS html/json fields (10709)

    Extensions can now denote fields that should be be evaluated as HTML, JSON, or exceptions for the intrusion detection system (IDS).

  • CRM-20155 The dedupe code passes has serious maintainability issues, locked in by hooks (10890) (preliminary work)

    This is initial cleanup work toward separating the dedupe process from the form layer, allowing for extensions to do custom dedupe logic. This initial work merely cleans up the existing processing.

  • CRM-17748 Expose options['result_buffering'] to CRM_Core_DAO (10585)

    Queries sent to the DAO can now pass options for DB_mysql. Specifically, a result_buffering option can reduce PHP memory needs by calling for an unbuffered query.

  • CRM-20733 Relationship report improvements (10679)

    The Relationship Report can now filter results by permissions (contact A over contact B and vice-versa) and order results by start date.

  • CRM-21108 Creating contacts is slow, part 1 of 2: Calculating Greetings (10906)

    This optimizes the population of greetings for newly-created contacts, the slowest part of generating contacts.

  • CRM-18231 Support safe migration from production to non-production instances (10972, 10936, and 8724)

    This introduces a feature of environment labels that can be set in civicrm.settings.php and be extended in specially-named settings files. If the label is anything other than Production, outbound email and scheduled jobs are disabled. See further explanation in the Sysadmin Guide


  • CRM-20958 Data model: Track creation+modification times for activities+cases (10754)

    Adds timestamp columns created_date and modified_date to the tables civicrm_activity and civicrm_case

  • CRM-21052 Allow opt-out of embedded case-activity tracking (10842)

    A new setting, "Enable Embedded Activity Revisions", determines whether each revision to a case records the change as an activity. This has been the behavior in the past and will continue to be the default for CiviCase until the redesign is complete. However, many CiviCase users may prefer to leave change logging to the log tables that are created when overall CiviCRM logging is enabled.


  • CRM-21058 Add Event filter to PCP contribution report (10862)

    The Personal Campaign Page report now allows filtering by the title of a PCP's associated event.

  • CRM-20990 Assign $contributionStatus to the Contribution Online message template (10793)

    The contribution status is now available as a Smarty variable on the receipt message template for online contributions.

  • CRM-21019 Change column labels (10813)

    The column headers on accounting batch screens are now clearer.


  • CRM-20507 Prevent disclosure of is_public=0 Custom Groups in email templates (10661)

    Custom data groups can be public or backend-only as of 4.7.19. This suppresses non-public fields from email receipts for event registrations.


  • CRM-20905 Simple mail : Make max emails a hidden config instead of hardcoded value set to 50 (10705)

    The maximum number of emails sent through the quick "send an email" feature is set to 50. This change allows that number to be overridden through the setting API or settings file.


  • CRM-21152 Add spec for MembershipStatus.calc API function (10944)

    Adds a function to adjust metadata for Calc action. The metadata is used for setting defaults, documentation & validation.

Drupal Integration

  • CRM-21016 Allow Drupal views to be used for Notes related to contributions (468)

    Drupal Views will now join to the civicrm_note table for any related entity, not just contacts.

  • Add Contributions relevant to the Participant record. (469)

    Drupal Views will now join to the civicrm_participant_payment table, allowing related contributions to be displayed alongside event registrations.

Bugs resolved

Core CiviCRM

  • CRM-21068 &lastModified() fails more gracefully. (10863)

    This change avoids displaying an error if something is missing from the log entry for a contact when shown in the summary view.

  • CRM-21099 Contribution search: "Total Cancelled Amount" surprisingly includes "refunded" status (10893)

    In the results of a Find Contributions search, summary numbers are displayed at the top. One of these is "Total Cancelled Amount" this total included contributions with a "Refunded" or "Cancelled" status. This total now only includes contributions with a status of "Cancelled".

  • CRM-21075 Notice errors on contact edit (10878)

    When a user would edit their record, a series of notices would be generated because of use of a deprecated function. This change removes those errors.

  • CRM-21057 export field mapping limited to 25 records (10848)

    This resolves a bug where only 25 saved export mappings were available to select.

  • CRM-21124 Fix DB error on deduping by criteria when criteria string is too long (10921)

  • CRM-21061 Fix rare CiviReport error relating to long report names (10854)

    The relatively short length of the report_id field in the civicrm_report table meant that reports with long names would produce obtuse errors. The field is now 512 characters long.

  • CRM-21004 profile: unable to copy profiles used for events/contribs/etc. (10802)

  • CRM-21230 Multi-value custom field import fail with error message: Call to undefined method CRM_Custom_Import_Parser_Api::formatContactParameters (11039)

  • CRM-21174 Circular dependency during upgrade: civicrm_menu.module_data (10974)

    A field to be created during the upgrade was accidentally loaded as part of the upgrade.

  • CRM-21175 Fatal error on multiple custom field import (10975)

    Import mappings now must have a mapping type. This resolves an error that would appear when a mapping type was missing; now, the mapping type is created on the fly.

  • CRM-20533 'Update Indices' System Status action can get tied up (index name already exists, localised dbs?) (10908) (continues previous work)

    A system check offers to update old or missing table indices when it detects they are missing. In practice, many sites have equivalent indices to the ones that are supposedly missing, but the index names differ or the index fields are listed in a different order. This script has had persistent problems with attempting to create indices that already exist or incorrectly dropping indices.

    This most recent change deletes false indices automatically when the Update Indices process is started rather than asking the site administrator. Any false-looking index that is actually good will simply be replaced when the missing indices are populated.

  • CRM-21110 Relationships tab on contact summary runs query twice (10907)

    This streamlines the processing of the contact relationship listing to reduce the number of queries to run.

  • CRM-21142 Installation fails if PHP XML module isn't installed (10939)

    The installer now checks that PHP SimpleXML support is present.

  • CRM-21139 Font-Awesome icons not showing on fatal error screen (10937)

    Now crm-i.css is specifically loaded on the fatal error template.

  • CRM-19933 Importing contacts clears out preferred communication method (10731)

  • CRM-21079 Datetime logs don't supports timezones (10874) (continues previous work)

    A system check appears if certain database fields are DATETIME rather than TIMESTAMP. Due to the complexity of assigning timezones and the possibility of customizations depending upon those fields, the check merely explains the situation and recommends using Doctor When, a time lord extension, to straighten out the situation.

  • CRM-20970 long postal code in db prevents searching by zipcode range (10781) (completes previous work)

    This adds test coverage for the fix which appeared in 4.7.24.

  • CRM-20790 CIVICRM-159 - Import Contacts, Current Employer (Employee of field) is not being imported at all (10808)

    Import would fail to record relationships if data for one or both contacts in the relationship matched existing contacts.

  • CRM-21049 Can't create a RelationshipType record via API with "All Contacts" as a value (10839)

    This prevented relationship types created in the API where one or both contacts could be any contact type.

  • CRM-20993 API - Extension get - Cannot filter by ID anymore (10794)

  • CRM-21029 Activity report SQL syntax error (10819)

    A SQL error would appear in the Activity Report, including the Scheduled Activities dashlet, when no ACL WHERE clauses are applicable.

  • CRM-20858 Custom fields migrated even when not asked during merge (10831)

  • CRM-21129 CLI import doesn't allow single-column CSVs (10924)

  • CRM-19612 DB error deduping a group when rule has more than one field (10405)

  • CRM-19664 Skip row and keep importing if matching this contact based on the de-dupe rule would cause an external ID conflict (9410)


  • CRM-21077 Warn the user when testing outbound mail configuration if CIVICRM_MAIL_LOG is set (10870)

    When sending a test email from the Outbound Email form, a user would not be notified if the CiviCRM settings file was set to send all outbound email to a log file.

  • CRM-20643 Fix invalid bounce type filter for bounce report (10427)

    A dummy option of -- please select -- for bounce type was hard-coded as a filter option. This caused the report to default to this value and not load any data.

  • CRM-21000 Display result as Mailing on Advance Search produces DB Error (10798)

    This resolves an error in Advanced Search when the form is set to display mailings rather than contacts.

  • CRM-20855 Disabling "Search Primary Details Only" causes partial CiviMail delivery failure (10915)

  • CRM-20982 Fix: Mails sent via command line fail due to EHLO/HELO being "localhost" (10785)

    SMTP connections from the command line now attempt to identify themselves with EHLO and the base URL rather than just EHLO localhost.

Backdrop Integration

  • CRM-21088 Backdrop class contains drupal_ calls that should be changed (10884)

    This would cause problems if Backdrop compatibility mode was disabled.

  • CRM-21098 Prevent Backdrop admin drop-down menus from appearing beneath CiviCRM admin menu (10892)

  • CRM-21095 CSS conflicts between CiviCRM and Backdrop (10891, 42, and 41)


  • CRM-21094 Minor improvement to display of columns in Survey Details report (10889)

    This arranges the columns so that contact-related fields are together and preceding activity fields.

  • CRM-21089 Fatal error on "Interview Respondents" (10885)

Drupal Integration

  • CRM-17652 Symfony conflict between Civi and Drupal 8 (10694 and 465) (in progress)

    This uses Composer to install dependencies (such as Symfony) in a way that does not conflict with Drupal 8. It resolves a bug where Drupal 8 sites with CiviCRM could not install any more modules.

  • CRM-20838 Provide alert & fix method for tables in the CiviCRM Db with no log table (10628)

    If Drupal and CiviCRM are installed with the same database and logging is enabled, the logging triggers get confused by the existence of tables created by the role sync modules. A system check now suggests that corresponding log tables be created when it notices this.


  • CRM-21126 member_is_primary not set by default on passing owner in the url (10923)

    The membership search now allows owner=1 to be specified as a URL parameter that populates the "Primary member?" field.

  • CRM-20571 Offline / Back Office Renewal fatal error when "renewal_date" set to far back. (10822)

    A helpful warning appears when attempting to set a membership renewal date prior to the join date.

  • CRM-20966 Contribution deleted when relationship deleted, incorrect line items & membership_payments for second inherited membership created in back end via price set (10759)

    This resolves a problem where membership contributions would be applied incorrectly when one contact inherits memberships of separate types from separate related contacts. This could result in data loss if the relationship is deleted.

  • CRM-20955 Contact's second membership fails to inherit when created in back end using price set (10745)


  • CRM-21055 Change label of cancel button (10845)

    The button to exit the backend contribution form without saving is now labeled "Close" rather than "Cancel". This now differs from all other forms.

  • CRM-17040 Import Contributions using External Id's causes soft credit to be wrongly associated (10797)

    This resolves a problem that occurred when importing contributions that have both soft credit and donor contacts identified by external ID. The contribution would record the soft credit contact as the actual donor.

  • CRM-20949 BillingBlock.tpl contains wrong paymentProcessor object on initial load of backend Contribution page. (10734)

  • CRM-21087 Payment popup goes weird if you click 'adjust payment amount'. (10882)

    The pledge payment pop-up caused problems with page focus and covering the Save button.

  • CRM-20936 Hide statuses on backoffice contribution form (10718)

    Non-applicable contribution statuses are now suppressed when creating contributions, event registrations, and memberships on the backend.

  • CRM-21045 Multiple email field shown on Contribution Page. (10832)

    If a contribution page included a profile with a billing email, the email field at the top of the contribution page would fail to disappear, resulting in two HTML fields for the same data. This resolves that bug.

  • CRM-21047 TypeError: financialtypeIds is undefined, on contribution form (10836)

    This resolves a Javascript error on the backend contribution form.

  • CRM-20615 Export only those batches having status Exported (10394)

    This prevents batches from bein exported if the status isn't yet set to "exported".

  • CRM-21026 Contribution count on contact tabs excludes contributions with disabled financial types (10824)

  • CRM-19469 EWay transaction receipt not sent when member signs up using front-end form but works in the CiviCRM back-end (9973)

  • CRM-21043 Fix Dupe check of on behalf organisation (10830)

    When contributing on behalf of an organization, the organization would not be checked against duplicates and a new contact would be created each time.

  • CRM-19739 "New Account Relationship Option Screen" does not show exception (10651)

    Creating an invalid account relationship would result in an endless spinning logo rather than displaying an error.

  • CRM-21015 Contribution page creates recurring contribution even though recurring is not selected (10835)

    Recurring contributions would be created if a contribution page had the option for recurring contributions and a membership price set, even if the recurring contribution checkbox was empty.

  • CRM-21005 "Record Payment" dialogue lacks required field and is clunky (10817)

    The form for recording a payment did not require a payment method even though that is necessary. Omitting it would result in a system error rather than a validation error. Also, the payment amount now defaults to the amount due.

  • CRM-21031 Financial type ID display instead of label in "View Price Options" (10823)

  • CRM-19186 Subsequent Installments of Recurring Credit Card Contributions Indicate a Payment Instrument of Check (10749)

  • CRM-17281 Pledges miscalculate when total amount is not an integer and a payment is received that covers three installments (10861)

  • CRM-21039 Trying to add Asset account relationship throws validation error (10828)

  • CRM-20988 Don't display option of Export, Delete etc to users who lack that permission (10791)



  • CRM-20935 Deleting an event does not delete links to profiles it used (10719)

    Rows in civicrm_uf_join were not deleted when events were deleted. This resolves the bug and performs a cleanup of orphaned rows upon upgrade.

  • CRM-20237 Event pricesets copied with long suffix cause DB error (10929)

    When copied, a price set has a copy ID tacked onto the end of its title. This change prevents copies of copies from accumulating many copy ID add-ons.

  • CRM-21069 Fail more gracefully on event display with invalid data in the DB (10865)

    This avoids a database error by suppressing display of participant records where the event has been deleted in the database.

  • CRM-20914 participant note field breaking export when populated with data over 32 characters (10700)

  • CRM-20933 Updating Pay later event registration from backend produces formRule error (10716)

  • CRM-21121 Event Income (Summary) report backtrace with 'only_full_group_by' (10926)

  • CRM-20027 Need 'access deleted contacts' permission to retrieve loc block addresses using API (10916)

    Addresses lacking contact IDs because they're used for event locations were treated like addresses belonging to deleted contacts.

  • CRM-13309 Participant Role on Event's Schedule Reminder form does not populate (10801)

    The field to restrict scheduled reminders to specific participant roles would not appear.

  • CRM-20942 Email location type must be 'primary' in profile or user creation won't work for event (10744)

WordPress Integration

  • Fix parameter parsing in wp-cli civicrm api. (114)

  • CRM-21166 WP-CLI commands fail due to whitespace in regex (115)


  • CRM-19968 Disable multiple languages fixes (9783)

    This patch makes the following tweaks to the SQL queries that run when disabling multiple languages so that it is more likely to succeed.

    1. Column is renamed instead of created and copied, as the copy often leads to a row size constraint (eg. in civicrm_event when you have some text in intro_text_lang).
    2. Use DROP VIEW IF EXISTS instead of DROP VIEW (supported in mysql 5.1+). There is more support for IF EXISTS on other SQL functions in new versions of mysql but we can't use them if we're maintaining compatibility.


  • CRM-21153 Fix mispelled variable (10945)

    Fixes a misspelled variable

  • CRM-21065 Replace some deprecated slow function calls: some CRM_Core_OptionGroup::values with CRM_Activity_BAO_ActivityContact::buildOptions (10860)

    Replace (some not all) CRM_Core_OptionGroup::values with CRM_Activity_BAO_ActivityContact::buildOptions where it is safe to do so (ie. parameters map directly).

  • CRM-20927 Allow civicrm_menu to store new data in generic column (10858) (completes previous work)

    The schema change is moved to a PHP-based upgrade task rather than a SQL incremental upgrade query template.

  • CRM-21036 Change deprecated comments to tags so phpstorm marks functions as deprecated (10825)

  • CRM-21023 Replace deprecated code and hardcoded IDs with pseudoconstants in Activity BAO (10816)

  • (NFC) SettingsStack - Finish incomplete docblock (10950)

  • Reinstate accidentally deleted test. (10938)

  • NFC remove some unused vars, fix comment (10886)

  • Renamed test class. (10730)

  • Fix PHP Warnings. Replace fatal with statusBounce. Mark breadcrumbs parameter as array instead of string so editors don't give a warning (10888)

  • (NFC) Update contributor-key.yml (10894)

  • (NFC) Improve docs in (10853)

  • (NFC) SettingsStack - Add test coverage for new helper class (10867)

  • [NFC] Simplify method of getting logged in contact ID (10855)

  • Update CONTRIBUTORS.txt (10843)

  • Update Jon Goldberg in CONTRIBUTORS.txt (10840)

  • Klaas Eikelboom (Kainuk Empowerment) is member of CiviCooP (10812)

  • (NFC) Lint (473)


This release was developed by the following code authors:

Aaron Jones; Abhikalak Consultants - Amal Sharma; AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Agileware Team, Justin Freeman; Australian Greens - Seamus Lee; CEDC - Laryn Kragt Bakker; Circle Interactive - Dave Jenkins; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; CiviFirst - John Kirk; CompuCorp - Camilo Rodriguez; Coop SymbioTIC - Mathieu Lutfy; Eaiman Shoshi; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; JMA Consulting - Edsel Lopez, Monish Deb, Pradeep Nayak; John Kingsnorth; Joinery - Allen Shaw; Ken West; Left Join Labs - Sean Madsen; Lemniscus - Noah Miller; Lighthouse Design and Consulting - Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; myDropWizard - David Snopek; Oxfam Germany - Thomas Schüttler; Progressive Technology Project - Jamie McClelland; Randy Tobias; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton

Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments:

Artful Robot - Rich Lott; Barbara Miller; Black Brick Software - David Hayes; Blackfly Solutions - Alan Dixon; Brian Hay; Brian McFee; British Humanist Association - Andrew West, William Gordon; Christian Wach; Circle Interactive - Andrew Walker, Martin Castle; CiviCoop - Jaap Jansma, Klaas Eikelboom; CiviDesk - Nicolas Ganivet; Community Builders - Andrew Perry; CompuCorp - Guanhuan Chen, Omar Abu Hussein; Dave D; Dave Greenberg; Dave Rolsky; David Hepper; Davis Media Access - Darrick Servis; Deepak Srivastava; Donald Hirst; Donald Lobo; Effy Elden; Electronic Frontier Foundation - Mark Burdett; eQuality Technology - Greg Rundlett; Forest CRM Consulting - Tamar Meir; Fuzion - Chris Burgess, Peter Davis; Greenleaf Advancement - Guy Iaccarino; Hemophilia of North Carolina - Charles Register; JMA Consulting - Joe Murray; Joel Stevens; Johan Vervloet; Klangsoft - David Reedy Jr; Korlon - Stuart Gaston; Lullabot - Nate Lampton; Manish Zope; Marc Brazeau; Mathias Consulting - Cheryl Chase; Michal Mach; National Democratic Institute - Evan Summers; Nubay Services - David Tarrant; Openflows - Eric Goldhagen; Palante Technology Cooperative - Joseph Lacey; Phil McKerracher; Rareș Pamfil; Responsive Development Technologies - Thomas Nilefalk; Rex Keal; Richard van Oosterhout; Saurabh Batra; Semper IT - Karin Gerritsen; SEN Magazine - Jeremy Nicholls; Shailesh Lende; Skvare - Mark Hanna; Squiffle Consulting - Aidan Saunders; Steve Binkowski; Team Expansion - Greg Harris; Tobias Lounsbury; Wikimedia Foundation - Elliott Eggleston


These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like to provide feedback on them, please login to and contact @agh1.