# CiviCRM 5.30.0 Released October 7, 2020 - **[Synopsis](#synopsis)** - **[Features](#features)** - **[Bugs resolved](#bugs)** - **[Miscellany](#misc)** - **[Credits](#credits)** - **[Feedback](#feedback)** ## Synopsis | *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?** | **yes** | | **Introduce features?** | **yes** | | **Fix bugs?** | **yes** | ## Features ### Core CiviCRM - **APIv4 Explorer: Generate short cv code ([18089](https://github.com/civicrm/civicrm-core/pull/18089))** Improves the APIv4 Explorer user interface by including cv code to run the API from CLI. - **Optimise proximity custom search, by reducing addGeocodingData fn call ([18248](https://github.com/civicrm/civicrm-core/pull/18248))** Improves performance of the proximity custom search. - **Support more table names for utf8mb4 conversions and database name ([18249](https://github.com/civicrm/civicrm-core/pull/18249))** Improves the System.utf8conversion API so that one can specify table patterns and databases. - **distmaker - Autogenerate civicrm-*-patchset.tar.gz ([18229](https://github.com/civicrm/civicrm-core/pull/18229))** Adds a script to autogenerate `civicrm-*-patchset.tar.gz` instead of having to manually generate it every release. - **Finish allowing use of SSL to connect to database (Work Towards [dev/core#1926](https://lab.civicrm.org/dev/core/-/issues/1926): [18095](https://github.com/civicrm/civicrm-core/pull/18095))** Code cleanup towards the goal of allowing SSL database connections. - **Profile settings - Add new contacts to a Group? is misleading ([dev/core#1950](https://lab.civicrm.org/dev/core/-/issues/1950): [18153](https://github.com/civicrm/civicrm-core/pull/18153))** Improves user experience by editing the help text and description for the "Add new contacts to a Group?" setting. - **API4: Inconsistent behavior on Role ID ([dev/event#37](https://lab.civicrm.org/dev/event/-/issues/37): [18285](https://github.com/civicrm/civicrm-core/pull/18285))** Allows searching within arrays or serialized strings via APIv4 (and the new Search extension). - **APIv4 - Fix output of CustomValue create/save/update ([18195](https://github.com/civicrm/civicrm-core/pull/18195))** Improves APIv4 output when saving custom pseudo-entities so that it outputs the values saved instead of `[is_error => 0, result => true]`. - **Add ability to enable query logging per process ([18335](https://github.com/civicrm/civicrm-core/pull/18335))** Makes it possible to enable logging by process as opposed to all processes or no processes. - **Expose field label to APIv4 and Search creator ([18255](https://github.com/civicrm/civicrm-core/pull/18255) and [18256](https://github.com/civicrm/civicrm-core/pull/18256))** Progress towards codifying the difference between a field's title and label in the schema. These changes: - expose labels to APIv4 - switch to using labels in the new search extension. - separates titles from labels in exportable fields. - attempts to clarify the difference between titles and labels in the getfields description as: - title: "Technical name of field, shown in API and exports" - label: "User-facing label, shown on most forms and displays" - **Metadata fix - phone_type_id, location_type_id, gender_id ([18114](https://github.com/civicrm/civicrm-core/pull/18114))** Improves metadata for various fields to align with new title and label standards. - **CRM_Utils_VersionCheck - respect force param ([18183](https://github.com/civicrm/civicrm-core/pull/18183))** Makes the versionCheck job more consistent with other checks by respecting APIv4's "force" setting to run even if disabled. - **Add Serialize key to payment_processor field for Event & Contribution Page ([18110](https://github.com/civicrm/civicrm-core/pull/18110))** Use metatdata rather than code handling to save array of processors. This makes it so that the DAO can handle arrays if it knows the format. ### CiviContribute - **Shell Financial ACLs extension ([18269](https://github.com/civicrm/civicrm-core/pull/18269))** Begins work to move Financial ACL code into an extension. - **Add Line Item v4 API (Work Towards [dev/core#1980](https://lab.civicrm.org/dev/core/-/issues/1980): [18275](https://github.com/civicrm/civicrm-core/pull/18275) and [18293](https://github.com/civicrm/civicrm-core/pull/18293))** Extends permission handling for LineItem delete and LineItem ACLs from APIv3 to to APIv4 by moving it to the `financialacls` extension. - **Book keeping Report : Add Time field for Transaction Date and Receive Date field ([dev/report#47](https://lab.civicrm.org/dev/report/-/issues/47): [18268](https://github.com/civicrm/civicrm-core/pull/18268))** Adds a time field to the "Transaction Date" and "Receive Date" filters on the Bookkeeping report. ### CiviEvent - **Wrap "not you" message in crmRegion ([18236](https://github.com/civicrm/civicrm-core/pull/18236))** Wraps the "Not you, do you want to register for someone else" message in a crmRegion so that it can be removed/replaced by the buildForm hook. ### CiviMail - **Add new columns to mailing summary report ([dev/core#1944](https://lab.civicrm.org/dev/core/-/issues/1944): [18132](https://github.com/civicrm/civicrm-core/pull/18132))** Adds two new columns to the mailing summary report: "Sender Name" and "Sender Email". - **Add disable_smarty option to MessageTemplate.send API ([18118](https://github.com/civicrm/civicrm-core/pull/18118))** Improves the `MessageTemplate.send` API by adding a new optional parameter "disable_smarty", when "disable_smarty" is set to true smarty is not applied to the contents of the message. ### WordPress Integration - **Switch WP over to new installer ([dev/wordpress#37](https://lab.civicrm.org/dev/wordpress/-/issues/37): [215](https://github.com/civicrm/civicrm-wordpress/pull/215))** Switch to new CiviCRM Installer. ### Drupal Integration - **Allow for the setting of an additional constant CIVICRM_DRUSH_DSN ([613](https://github.com/civicrm/civicrm-drupal/pull/613))** Allows sites to configure CIVICRM_DRUSH_DSN for drush to use to set up database connections. ## Bugs resolved ### Core CiviCRM - **Increase size of mysql field in export table for column with CRM_Utils_Type::T_INT type ([dev/core#1661](https://lab.civicrm.org/dev/core/-/issues/1661): [17956](https://github.com/civicrm/civicrm-core/pull/17956))** Fixes some data too long for column errors when exporting. - **Improve robustness of api/class.api.php ([18283](https://github.com/civicrm/civicrm-core/pull/18283))** Ensures that the API mode is set to "local" when an empty string is passed as the server. - **add serialize data to actionschedule ([18289](https://github.com/civicrm/civicrm-core/pull/18289))** Ensures one can create a scheduled reminder via the API that triggers on two different events. - **API - Add upgrade-safe checks to ensure table exists before reading ([18135](https://github.com/civicrm/civicrm-core/pull/18135))** Adds efficient checks into the API (v3 and v4) to ensure a DAO table exists before trying to read from it. This prevents hard-crashes in the UI when there are pending updates (or during the upgrade process itself), - **DB_DataObject - Read CIVICRM_DEBUG_LOG_QUERY correctly ([305](https://github.com/civicrm/civicrm-packages/pull/305))** Makes The value of `CIVICRM_DEBUG_LOG_QUERY` TRUE-ish or FALSE-ish instead of considering any value true. - **APIv4 Explorer - Fix possible undefined index ([18093](https://github.com/civicrm/civicrm-core/pull/18093))** - **Option value cache key missing domain ID can result in wrong value retrieved for domain ([dev/core#1971](https://lab.civicrm.org/dev/core/-/issues/1971): [18252](https://github.com/civicrm/civicrm-core/pull/18252))** - **Upgrade screen - show success instead of error if already upgraded ([18181](https://github.com/civicrm/civicrm-core/pull/18181))** - **trim white space when checking dedupe ([18234](https://github.com/civicrm/civicrm-core/pull/18234))** - **Fix search extension excluded from tarball ([18402](https://github.com/civicrm/civicrm-core/pull/18402))** - **Permissions problem on add or edit template ([dev/core#2008](https://lab.civicrm.org/dev/core/-/issues/2008): [18437](https://github.com/civicrm/civicrm-core/pull/18437))** - **Search ext: Aggregate field fixes ([18520](https://github.com/civicrm/civicrm-core/pull/18520))** - **Some datepicker fields only allow choosing dates far in the future ([dev/core#2052](https://lab.civicrm.org/dev/core/-/issues/2052): [18524](https://github.com/civicrm/civicrm-core/pull/18524))** ### CiviCase - **Fix js for case type status change on load ([18254](https://github.com/civicrm/civicrm-core/pull/18254))** ### CiviContribute - **Clean money for non-deductible amount ([18300](https://github.com/civicrm/civicrm-core/pull/18300))** Ensures that the Contribution API cleans data entered into the "non-deductible amount" field the same way it cleans the other money fields. - **Processors - remove gross_amount param from processors ([18177](https://github.com/civicrm/civicrm-core/pull/18177))** The gross_amount param is returned by a bunch of processors but is not used so this removes it. - **{contribution.receipt_date} token does not use any CiviCRM date formatter, output in YYYY-MM-DD HH:MM:SS format and {contribution.receive_date} also uses a non-standard format ([18176](https://github.com/civicrm/civicrm-core/pull/18176))** - **Fix PHP notice on contribution page ([18116](https://github.com/civicrm/civicrm-core/pull/18116))** - **E_NOTICE on contribution page widget tab ([18189](https://github.com/civicrm/civicrm-core/pull/18189))** - **change payment instrument when pending payment paid through credit card ([dev/core#912](https://lab.civicrm.org/dev/core/-/issues/912): [18266](https://github.com/civicrm/civicrm-core/pull/18266))** - **PayPal Standard redirect fails on WordPress ([dev/core#1997](https://lab.civicrm.org/dev/core/-/issues/1997): [18525](https://github.com/civicrm/civicrm-core/pull/18525) and [18534](https://github.com/civicrm/civicrm-core/pull/18534))** - **Invoice no longer displays amount paid/due ([dev/core#2035](https://lab.civicrm.org/dev/core/-/issues/2035): [18602](https://github.com/civicrm/civicrm-core/pull/18602) and [18628](https://github.com/civicrm/civicrm-core/pull/18628))** ### CiviEvent - **Allow the "Cancellation or transfer time limit (hours)" to be negative ([dev/event#34](https://lab.civicrm.org/dev/event/-/issues/34): [18067](https://github.com/civicrm/civicrm-core/pull/18067))** Ensures that entering a negative value into "Cancellation or transfer time limit (hours)" saves correctly and works as expected. - **Batch Update via Profile does not supply data for editing when custom fields created after participant added to event ([18235](https://github.com/civicrm/civicrm-core/pull/18235))** - **E_WARNING when saving event fees admin page if there's no discounts set ([18169](https://github.com/civicrm/civicrm-core/pull/18169))** ### CiviMail - **Unexpected behavior from api.MailingEventSubscribe.create (Work Towards [dev/mail#24](https://lab.civicrm.org/dev/mail/-/issues/24): [18325](https://github.com/civicrm/civicrm-core/pull/18325))** Fixes labels for APIv3 `MailingEventSubscribe.create` so that they accurately represent the behavior (unsubscribe v subscribe). - **Mass SMS: Limit group selection to mailing groups ([18154](https://github.com/civicrm/civicrm-core/pull/18154))** Ensures that the fields "Include Groups" and "Exclude Groups" on the "New SMS" form only list groups of the type "Mailing List". - **Help text bubble is empty and smarty errors when .hlp file is missing for settings forms ([dev/core#1920](https://lab.civicrm.org/dev/core/-/issues/1920): [18648](https://github.com/civicrm/civicrm-core/pull/18648))** - **Fix error when creating new AB test mailing because domain_id is a required field ([18685](https://github.com/civicrm/civicrm-core/pull/18685))** ### CiviMember - **Fix regression on back-office membership renewal by credit card ([18615](https://github.com/civicrm/civicrm-core/pull/18615))** ### Drupal Integration - **Fix : Enable Drupal Watchdog Logging for Drupal 8 ([dev/core#1943](https://lab.civicrm.org/dev/core/-/issues/1943): [18115](https://github.com/civicrm/civicrm-core/pull/18115))** Ensure the setting `Enable Drupal Watchdog Logging` works on Drupal 8 sites. ### WordPress Integration - **Check if $post defined before trying to use its field values. ([18168](https://github.com/civicrm/civicrm-core/pull/18168))** This fixes php notices like `PHP Notice: Trying to get property 'post_name' of non-object in \wp-content\plugins\civicrm\civicrm\CRM\Utils\System\WordPress.php on line 288` ## Miscellany - **Fix regen and update civicrm_generated ([18273](https://github.com/civicrm/civicrm-core/pull/18273))** - **Do not pass by reference for createRelatedMemberships ([18243](https://github.com/civicrm/civicrm-core/pull/18243))** - **Typo in groups dropdown on scheduled reminders admin form ([dev/core#1956](https://lab.civicrm.org/dev/core/-/issues/1956): [18323](https://github.com/civicrm/civicrm-core/pull/18323))** - **Replace CRM_Utils_Array::value in contribution/confirm and bao/membership ([18157](https://github.com/civicrm/civicrm-core/pull/18157))** - **Cleanup contactID variables in event/contribution register buildQuickForm ([18208](https://github.com/civicrm/civicrm-core/pull/18208))** - **Use already determined value for contributionRecurID ([18265](https://github.com/civicrm/civicrm-core/pull/18265))** - **Minor code cleanup to Order API ([18217](https://github.com/civicrm/civicrm-core/pull/18217))** - **CodeGen - Add use statement to extensions DAO files ([18094](https://github.com/civicrm/civicrm-core/pull/18094))** - **Use more appropriate money format function ([18151](https://github.com/civicrm/civicrm-core/pull/18151))** - **Metadata fix in activity search ([18216](https://github.com/civicrm/civicrm-core/pull/18216))** - **Replace deprecated Drupal 8 constants ([18240](https://github.com/civicrm/civicrm-core/pull/18240))** - **Spelling mistake "separator" not "seperator" ([18238](https://github.com/civicrm/civicrm-core/pull/18238))** - **Remove unused variables from repeatTransaction ([18209](https://github.com/civicrm/civicrm-core/pull/18209))** - **Remove first_contribution key from repeattransaction ([18197](https://github.com/civicrm/civicrm-core/pull/18197))** - **Remove unnecessary transformation of upgrade msg severity ([18182](https://github.com/civicrm/civicrm-core/pull/18182))** - **Remove old dropped items from the schema xml ([18244](https://github.com/civicrm/civicrm-core/pull/18244))** - **Remove 1 of 2 remaining places where relatedObjects is called in completeOrder ([18257](https://github.com/civicrm/civicrm-core/pull/18257))** - **Remove last pass-by-reference in completeOrder signature ([18258](https://github.com/civicrm/civicrm-core/pull/18258))** - **Remove legacy handling for 'fixing' line_item.entity_id ([18155](https://github.com/civicrm/civicrm-core/pull/18155))** - **Remove deprecated code ids['userId'] ([18156](https://github.com/civicrm/civicrm-core/pull/18156))** - **Remove 'hack' that overwrites result of searchColumns hook in mailings list ([18237](https://github.com/civicrm/civicrm-core/pull/18237))** - **Remove unused variable ([18108](https://github.com/civicrm/civicrm-core/pull/18108))** - **Remove handling for 4.2 DBs ([612](https://github.com/civicrm/civicrm-drupal/pull/612))** - **Remove ref to logging time ([18221](https://github.com/civicrm/civicrm-core/pull/18221))** - **Remove 2019 deprecated function ([18242](https://github.com/civicrm/civicrm-core/pull/18242))** - **remove dropped tables for activity target and assignment ([18280](https://github.com/civicrm/civicrm-core/pull/18280))** - **Deprecate 'trapException' in DAO::executeQuery ([18138](https://github.com/civicrm/civicrm-core/pull/18138))** - **Deprecate/remove unused checkVersion() functions ([18134](https://github.com/civicrm/civicrm-core/pull/18134))** - **[REF] Ensure that the form param _id is set when adding a new group w… ([18250](https://github.com/civicrm/civicrm-core/pull/18250))** - **[REF] Update recent replacement for CRM_Utils_Array::value ([18172](https://github.com/civicrm/civicrm-core/pull/18172) and [18453](https://github.com/civicrm/civicrm-core/pull/18453))** - **[REF] Remove usages of CRM_Utils_Money::format that pass in a blank s… ([18142](https://github.com/civicrm/civicrm-core/pull/18142))** - **[REF] Move isSSLDSN() function to avoid potential problems ([18131](https://github.com/civicrm/civicrm-core/pull/18131))** - **(REF) CRM_Core_Region - Remove unused bits ([18139](https://github.com/civicrm/civicrm-core/pull/18139))** - **[REF] Move Auto DSN Switching into a core function ([18270](https://github.com/civicrm/civicrm-core/pull/18270))** - **[REF] Remove DB Package as it is now deployed using composer ([302](https://github.com/civicrm/civicrm-packages/pull/302))** - **[REF] Deploy Pear DB package using composer ([18027](https://github.com/civicrm/civicrm-core/pull/18027) and [18473](https://github.com/civicrm/civicrm-core/pull/18473))** - **[REF] Update subtypeInfo function to leverage getAllContactTypes ([17934](https://github.com/civicrm/civicrm-core/pull/17934))** - **[REF] Fix metadata label for contribution_page_id ([18047](https://github.com/civicrm/civicrm-core/pull/18047))** - **REF Remove unused passbyreference and var from ipn_process_transaction ([18311](https://github.com/civicrm/civicrm-core/pull/18311))** - **[REF] Clean up return variables on updateContributionStatus, updatePendingOnlineContribution ([18303](https://github.com/civicrm/civicrm-core/pull/18303))** - **[REF] Move function to delete merged contacts to the Merger class and include all instances of the pair ([17980](https://github.com/civicrm/civicrm-core/pull/17980))** - **[REF] Remove most interaction with $objects in completeOrder ([18315](https://github.com/civicrm/civicrm-core/pull/18315))** - **[REF] Fix financial item allocation of negative payments against completed payments ([17810](https://github.com/civicrm/civicrm-core/pull/17810))** - **[REF] Separate and move line-item specific portion of checkTaxAmount to LineItem api ([18294](https://github.com/civicrm/civicrm-core/pull/18294))** - **[REF] [test] Slight increase in test cover & make functions more re-usable ([18291](https://github.com/civicrm/civicrm-core/pull/18291))** - **[REF] simplify retrieval of existing membership on membership renewal form ([18296](https://github.com/civicrm/civicrm-core/pull/18296))** - **[REF] Extract function to get locations to merge, rename 'operation' … ([17991](https://github.com/civicrm/civicrm-core/pull/17991))** - **[REF] Deprecate unused SQL temptable functions ([18171](https://github.com/civicrm/civicrm-core/pull/18171))** - **Minor cleanup in test class ([18170](https://github.com/civicrm/civicrm-core/pull/18170))** - **Add line item acl tests ([18274](https://github.com/civicrm/civicrm-core/pull/18274))** - **Fix test set up to call Order.create to create the correct line items ([18279](https://github.com/civicrm/civicrm-core/pull/18279))** - **Test & remove handling for max_related in renewal form ([18295](https://github.com/civicrm/civicrm-core/pull/18295))** - **Add test to check, remove unnecessary lines ([18292](https://github.com/civicrm/civicrm-core/pull/18292))** - **[Test framework] - Remove test for deprecated way of calling hook invoke ([18136](https://github.com/civicrm/civicrm-core/pull/18136))** - **(NFC) Update various DAO checksums ([18184](https://github.com/civicrm/civicrm-core/pull/18184))** - **[NFC] Add code comments about hidden but still used buttons ([18119](https://github.com/civicrm/civicrm-core/pull/18119))** - **[NFC] [Test] Initial testing on event payment forms. ([18112](https://github.com/civicrm/civicrm-core/pull/18112))** - **[NFC] Update locale over-ride documentation to mention that it is mos… ([17919](https://github.com/civicrm/civicrm-core/pull/17919))** - **(NFC) Add some tests to the `resources` group ([18211](https://github.com/civicrm/civicrm-core/pull/18211))** - **[NFC] Some DAO checksums not updated ([18239](https://github.com/civicrm/civicrm-core/pull/18239))** - **[NFC] Array formatting ([18109](https://github.com/civicrm/civicrm-core/pull/18109))** - **[NFC] IDE cleanup - arrays, single quotes ([614](https://github.com/civicrm/civicrm-drupal/pull/614))** - **[NFC] Update Event DAO Checksum ([18361](https://github.com/civicrm/civicrm-core/pull/18361))** - **[NFC] Fix dates in RelationshipTest ([18530](https://github.com/civicrm/civicrm-core/pull/18530))** - **api_v3_MultilingualTest - Skip Cxn entities ([18547](https://github.com/civicrm/civicrm-core/pull/18547))** - **[NFC] Update Checksum on CustomField DAO ([18689](https://github.com/civicrm/civicrm-core/pull/18689))** ## Credits This release was developed by the following code authors: AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman, Pengyi Zhang; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Sunil Pawar, Yashodha Chaku; Dave D; Flinders University of South Australia - Tom Anderson; JMA Consulting - Monish Deb, Seamus Lee; John Kingsnorth; Lemniscus - Noah Miller; Lighthouse Consulting and Design - Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MillerTech - Chamil Wijesooriya; MJW Consulting - Matthew Wire; Squiffle Consulting - Aidan Saunders; Wikimedia Foundation - Eileen McNaughton, Maggie Epps; Wildsight - Lars Sanders-Green Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: Artful Robot - Rich Lott; Christian Wach; Circle Interactive - Martin Castle; Dave D; Fuzion - Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick Figel; MJCO - Mikey O'Toole; Semper IT - Karin Gerritsen; Squiffle Consulting - Aidan Saunders; Tadpole Collective - Kevin Cristiano ## Feedback These release notes are edited by Alice Frumin and Andie Hunt. If you'd like to provide feedback on them, please log in to https://chat.civicrm.org/civicrm and contact `@agh1`.