Commit | Line | Data |
---|---|---|
94a1f6ae AH |
1 | # CiviCRM 5.28.0 |
2 | ||
0cee7083 | 3 | Released August 5, 2020 |
94a1f6ae | 4 | |
0cee7083 | 5 | - **[Synopsis](#synopsis)** |
94a1f6ae AH |
6 | - **[Features](#features)** |
7 | - **[Bugs resolved](#bugs)** | |
8 | - **[Miscellany](#misc)** | |
9 | - **[Credits](#credits)** | |
0cee7083 AH |
10 | - **[Feedback](#feedback)** |
11 | ||
12 | ## <a name="synopsis"></a>Synopsis | |
13 | ||
14 | | *Does this version...?* | | | |
15 | |:--------------------------------------------------------------- |:-------:| | |
73f7a7a9 AF |
16 | | Fix security vulnerabilities? | no | |
17 | | **Change the database schema?** | **yes** | | |
18 | | **Alter the API?** | **yes** | | |
80078c3e | 19 | | **Require attention to configuration options?** | **yes** | |
73f7a7a9 AF |
20 | | **Fix problems installing or upgrading to a previous version?** | **yes** | |
21 | | **Introduce features?** | **yes** | | |
22 | | **Fix bugs?** | **yes** | | |
94a1f6ae AH |
23 | |
24 | ## <a name="features"></a>Features | |
25 | ||
73f7a7a9 | 26 | ### CiviCRM Core |
94a1f6ae | 27 | |
4dab446f AH |
28 | - **End of life planning for MySQL server 5.0 - 5.6 (Work Towards |
29 | [dev/core#1681](https://lab.civicrm.org/dev/core/-/issues/1681): | |
30 | [17558](https://github.com/civicrm/civicrm-core/pull/17558))** | |
31 | ||
32 | Block sites from upgrading if on a MySQL version less than 5.6.5. | |
33 | ||
29b35cc5 TO |
34 | - **Ability to enable SSL for database connection. (Work Towards |
35 | [dev/core#1137](https://lab.civicrm.org/dev/core/-/issues/1137): | |
73f7a7a9 | 36 | [298](https://github.com/civicrm/civicrm-packages/pull/298))** |
94a1f6ae | 37 | |
29b35cc5 | 38 | Makes SSL database connections without client certificates work in PHP 7. |
94a1f6ae | 39 | |
4dab446f AH |
40 | - **Create new customPre hook |
41 | ([dev/core#1716](https://lab.civicrm.org/dev/core/-/issues/1716): | |
42 | [17144](https://github.com/civicrm/civicrm-core/pull/17144))** | |
43 | ||
44 | Creates a new hook customPre which makes it so one can impact or observe | |
45 | custom data before it is saved. | |
46 | ||
29b35cc5 | 47 | - **Investigate PHP currency library |
73f7a7a9 AF |
48 | ([dev/translation#48](https://lab.civicrm.org/dev/translation/-/issues/48): |
49 | [17608](https://github.com/civicrm/civicrm-core/pull/17608))** | |
94a1f6ae | 50 | |
73f7a7a9 AF |
51 | Implements the PHP library [brick/money](https://github.com/brick/money) to |
52 | better handle currency amounts. | |
94a1f6ae | 53 | |
73f7a7a9 AF |
54 | - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception |
55 | (Work Towards [dev/core#560](https://lab.civicrm.org/dev/core/-/issues/560): | |
56 | [17555](https://github.com/civicrm/civicrm-core/pull/17555), | |
57 | [295](https://github.com/civicrm/civicrm-packages/pull/295), | |
58 | [602](https://github.com/civicrm/civicrm-drupal/pull/602), | |
59 | [17550](https://github.com/civicrm/civicrm-core/pull/17550), | |
60 | [17534](https://github.com/civicrm/civicrm-core/pull/17534), | |
61 | [17541](https://github.com/civicrm/civicrm-core/pull/17541), | |
62 | [17545](https://github.com/civicrm/civicrm-core/pull/17545) and | |
63 | [17539](https://github.com/civicrm/civicrm-core/pull/17539))** | |
94a1f6ae | 64 | |
73f7a7a9 | 65 | Work towards throwing exceptions instead of fatal errors. |
94a1f6ae | 66 | |
29b35cc5 | 67 | - **APIv4 - Activity has no default for activity_date_time |
80078c3e AH |
68 | ([dev/core#1782](https://lab.civicrm.org/dev/core/-/issues/1782): |
69 | [17450](https://github.com/civicrm/civicrm-core/pull/17450))** | |
94a1f6ae | 70 | |
80078c3e AH |
71 | Sets the default for `activity_date_time` and `created_date` as the current |
72 | date when using the APIv4 Activity. | |
94a1f6ae | 73 | |
80078c3e AH |
74 | - **Update guzzle to d8 latest |
75 | ([dev/core#1803](https://lab.civicrm.org/dev/core/-/issues/1803): | |
76 | [17551](https://github.com/civicrm/civicrm-core/pull/17551))** | |
94a1f6ae | 77 | |
80078c3e AH |
78 | This updates guzzle to version 6.5.4, civicrm/civicrm-cxn-rpc to "version" |
79 | "v0.19.01.00", guzzlehttp/psr7 to version 1.6.1 and psr/log to version 1.1.3 | |
94a1f6ae | 80 | |
80078c3e AH |
81 | - **APIv4 - Improve row_count to work with HAVING, GROUP BY, and SELECT |
82 | ([17704](https://github.com/civicrm/civicrm-core/pull/17704))** | |
94a1f6ae | 83 | |
80078c3e AH |
84 | This changes the meaning of $result->count(), to give a total count of |
85 | filtered items, ignoring limit and offset. | |
94a1f6ae | 86 | |
80078c3e AH |
87 | - **APIv4 - Add more SQL functions |
88 | ([17692](https://github.com/civicrm/civicrm-core/pull/17692))** | |
94a1f6ae | 89 | |
80078c3e AH |
90 | Adds support for additional SQL functions in APIv4. Also categorizes them and |
91 | adds translated titles for the new Search Builder. | |
94a1f6ae | 92 | |
73f7a7a9 AF |
93 | - **APIv4 - Add titles and icons to entities |
94 | ([17527](https://github.com/civicrm/civicrm-core/pull/17527) and | |
95 | [17685](https://github.com/civicrm/civicrm-core/pull/17685))** | |
94a1f6ae | 96 | |
73f7a7a9 AF |
97 | Adds titles and icons to DAO entities and expose them to APIv4 Entity::get and |
98 | adds meta-metadata. | |
94a1f6ae | 99 | |
73f7a7a9 AF |
100 | - **APIv4 Explorer - UI support for join ON clause |
101 | ([17682](https://github.com/civicrm/civicrm-core/pull/17682))** | |
94a1f6ae | 102 | |
73f7a7a9 | 103 | Improves the APIv4 explorer to give selectable clauses when adding a JOIN. |
94a1f6ae | 104 | |
73f7a7a9 AF |
105 | - **Add permission metadata to contact is_deleted field |
106 | ([17721](https://github.com/civicrm/civicrm-core/pull/17721))** | |
94a1f6ae | 107 | |
73f7a7a9 | 108 | Improves the contact schema metadata. |
94a1f6ae | 109 | |
73f7a7a9 AF |
110 | - **API/DAO Metadata - Retain versioning metadata for possible usage in |
111 | runtime+tooling | |
112 | ([17735](https://github.com/civicrm/civicrm-core/pull/17735))** | |
94a1f6ae | 113 | |
73f7a7a9 | 114 | Adds metadata to indicate when fields are created. |
94a1f6ae | 115 | |
73f7a7a9 AF |
116 | - **Connect to database using SET NAMES utf8mb4 |
117 | ([17716](https://github.com/civicrm/civicrm-core/pull/17716))** | |
94a1f6ae | 118 | |
4dab446f AH |
119 | This change makes it so one can use utf8mb4 characters. However, databases |
120 | that do not support utf8mb4 will not be affected. | |
94a1f6ae | 121 | |
73f7a7a9 AF |
122 | - **Remove slow join from activity search |
123 | ([17250](https://github.com/civicrm/civicrm-core/pull/17250))** | |
94a1f6ae | 124 | |
73f7a7a9 | 125 | Improves performance of the activity search. |
94a1f6ae | 126 | |
73f7a7a9 AF |
127 | - **Add icons to standalone contact tasks |
128 | ([17667](https://github.com/civicrm/civicrm-core/pull/17667))** | |
94a1f6ae | 129 | |
4dab446f AH |
130 | This adds icon data to contact tasks that appear in the new search builder |
131 | extension. | |
94a1f6ae | 132 | |
73f7a7a9 AF |
133 | - **Add icons to multi-valued custom groups and display on contact tab |
134 | ([17531](https://github.com/civicrm/civicrm-core/pull/17531))** | |
94a1f6ae | 135 | |
4dab446f AH |
136 | Custom data sets that appear as tabs can now have configurable icons to |
137 | display on the tab. | |
94a1f6ae | 138 | |
73f7a7a9 AF |
139 | - **Add serialize metadata to domain.locales field |
140 | ([17651](https://github.com/civicrm/civicrm-core/pull/17651))** | |
94a1f6ae | 141 | |
73f7a7a9 AF |
142 | Adds metadata to help APIv4 serialize/unserialize the domain.locales |
143 | field correctly. | |
94a1f6ae | 144 | |
29b35cc5 | 145 | - **Add Smarty error event |
73f7a7a9 AF |
146 | ([16918](https://github.com/civicrm/civicrm-core/pull/16918) and |
147 | [292](https://github.com/civicrm/civicrm-packages/pull/292))** | |
94a1f6ae | 148 | |
29b35cc5 | 149 | Improves debugging errors in Smarty templates. |
94a1f6ae | 150 | |
73f7a7a9 AF |
151 | - **Allow HEAD requests to generate a form key |
152 | ([17321](https://github.com/civicrm/civicrm-core/pull/17321))** | |
94a1f6ae | 153 | |
73f7a7a9 | 154 | Avoids generating crashes (500 errors) when bots check links. |
94a1f6ae | 155 | |
73f7a7a9 AF |
156 | - **Include a new SqlParallel queue type that enables multiple queue runners to |
157 | process in parallel | |
158 | ([15422](https://github.com/civicrm/civicrm-core/pull/15422))** | |
94a1f6ae | 159 | |
29b35cc5 | 160 | Adds a new SQL queue type which will allow multiple runners to fetch the next |
73f7a7a9 | 161 | available job from a queue and run in parallel. |
94a1f6ae | 162 | |
73f7a7a9 AF |
163 | - **Allow adding datepicker to metadata based settings pages |
164 | ([16610](https://github.com/civicrm/civicrm-core/pull/16610))** | |
94a1f6ae | 165 | |
73f7a7a9 AF |
166 | Makes it so that datepicker can be added to metadata based settings pages by |
167 | specifying html_Type='datepicker' in settings metadata. | |
94a1f6ae | 168 | |
73f7a7a9 | 169 | ### CiviContribute |
94a1f6ae | 170 | |
73f7a7a9 AF |
171 | - **Add payment processor to details on list of recurring contributions |
172 | ([17179](https://github.com/civicrm/civicrm-core/pull/17179))** | |
94a1f6ae | 173 | |
4dab446f AH |
174 | The list of recurring contributions now has a column showing the payment |
175 | processor. | |
94a1f6ae | 176 | |
73f7a7a9 AF |
177 | - **Fix all core processors to throw exceptions and not rely on the |
178 | CRM_Core_Payment to convert errors to exceptions | |
179 | ([dev/financial#131](https://lab.civicrm.org/dev/financial/-/issues/131): | |
180 | [17565](https://github.com/civicrm/civicrm-core/pull/17565), | |
181 | [17559](https://github.com/civicrm/civicrm-core/pull/17559), | |
182 | [17542](https://github.com/civicrm/civicrm-core/pull/17542), | |
183 | [17502](https://github.com/civicrm/civicrm-core/pull/17502), | |
29b35cc5 | 184 | [17500](https://github.com/civicrm/civicrm-core/pull/17500), |
73f7a7a9 AF |
185 | [17597](https://github.com/civicrm/civicrm-core/pull/17597), |
186 | [17592](https://github.com/civicrm/civicrm-core/pull/17592) and | |
187 | [17596](https://github.com/civicrm/civicrm-core/pull/17596))** | |
94a1f6ae | 188 | |
4dab446f | 189 | Makes it so that core payment processors fail gracefully more often. |
94a1f6ae | 190 | |
73f7a7a9 AF |
191 | - **Add selfService flag to cancelSubscription getText so we can display |
192 | different text for each case | |
193 | ([17687](https://github.com/civicrm/civicrm-core/pull/17687))** | |
94a1f6ae | 194 | |
73f7a7a9 AF |
195 | Makes it so payment processor developers can identify the different contexts |
196 | someone may be canceling from and display appropriate messaging. | |
94a1f6ae | 197 | |
29b35cc5 | 198 | - **Price Field Form - Save the fid for the postProcess hook |
4dab446f AH |
199 | ([17639](https://github.com/civicrm/civicrm-core/pull/17639))** |
200 | ||
201 | Improves `postProcess` hook for Price Field Form by making the field id | |
202 | available. | |
203 | ||
80078c3e AH |
204 | - **Improve error handling on IPN |
205 | ([18062](https://github.com/civicrm/civicrm-core/pull/18062))** | |
206 | ||
207 | The error message and backtrace from a failed PayPal Website Payments Standard | |
208 | instant payment notification (IPN) are now logged. | |
209 | ||
73f7a7a9 | 210 | ### CiviMember |
94a1f6ae | 211 | |
73f7a7a9 AF |
212 | - **Display start/end adjustment on membership status page. |
213 | ([dev/core#1809](https://lab.civicrm.org/dev/core/-/issues/1809): | |
214 | [17571](https://github.com/civicrm/civicrm-core/pull/17571))** | |
94a1f6ae | 215 | |
73f7a7a9 AF |
216 | Improves the Membership Status administration page by adding columns for the |
217 | start/end adjustment. | |
94a1f6ae | 218 | |
80078c3e AH |
219 | ### WordPress Integration |
220 | ||
221 | - **Provide concrete details about civicrm.files | |
222 | ([18011](https://github.com/civicrm/civicrm-core/pull/18011) follows on | |
223 | [dev/wordpress#66](https://lab.civicrm.org/dev/wordpress/-/issues/66), see | |
224 | also [17868](https://github.com/civicrm/civicrm-core/pull/17868))** | |
225 | ||
226 | A message will appear after an upgrade to 5.28.0 or later specifying the | |
227 | calculated and expected file upload locations. | |
228 | ||
229 | Changes appearing in 5.27 have been reverted but will be reapplied in 5.29 | |
230 | after more notice is provided. | |
231 | ||
73f7a7a9 | 232 | ## <a name="bugs"></a>Bugs resolved |
94a1f6ae | 233 | |
73f7a7a9 | 234 | ### Core CiviCRM |
94a1f6ae | 235 | |
80078c3e AH |
236 | - **Contact image is broken |
237 | ([dev/wordpress#62](https://lab.civicrm.org/dev/wordpress/-/issues/62): | |
238 | [17853](https://github.com/civicrm/civicrm-core/pull/17853))** | |
239 | ||
240 | This resolves a problem on sites managed with Git where the `db.json` file | |
241 | would be missed. | |
242 | ||
73f7a7a9 AF |
243 | - **Evaluate if any indexed fields are unused (Work Towards |
244 | [dev/core#1634](https://lab.civicrm.org/dev/core/-/issues/1634): | |
245 | [17686](https://github.com/civicrm/civicrm-core/pull/17686))** | |
94a1f6ae | 246 | |
73f7a7a9 | 247 | Remove database index on `medium_id` from `civicrm_activity`. |
94a1f6ae | 248 | |
29b35cc5 | 249 | - **Activity - Default priority value when adding an activity |
73f7a7a9 AF |
250 | ([dev/core#1801](https://lab.civicrm.org/dev/core/-/issues/1801): |
251 | [17557](https://github.com/civicrm/civicrm-core/pull/17557))** | |
94a1f6ae | 252 | |
73f7a7a9 AF |
253 | Ensures when creating a new activity the priority field defaults correctly for |
254 | sites not in english. | |
94a1f6ae | 255 | |
73f7a7a9 AF |
256 | - **The multi-lingual multi-domain problem |
257 | ([dev/core#1852](https://lab.civicrm.org/dev/core/-/issues/1852): | |
258 | [17738](https://github.com/civicrm/civicrm-core/pull/17738) and | |
259 | [17733](https://github.com/civicrm/civicrm-core/pull/17733))** | |
94a1f6ae | 260 | |
73f7a7a9 AF |
261 | Ensures that the list of languages civicrm_domain.locales is the same for all |
262 | domains in a multi-domain set up. | |
94a1f6ae | 263 | |
73f7a7a9 AF |
264 | - **APIv4 - Skip empty leaves in WHERE clause |
265 | ([17576](https://github.com/civicrm/civicrm-core/pull/17576))** | |
94a1f6ae | 266 | |
29b35cc5 | 267 | Fixes a bug in search builder where APIv4 gives a SQL error while building |
4dab446f | 268 | your where clause. |
94a1f6ae | 269 | |
80078c3e AH |
270 | - **Offset is not respected in Date Preferences |
271 | ([dev/core#1847](https://lab.civicrm.org/dev/core/-/issues/1847) and | |
272 | [dev/core#1874](https://lab.civicrm.org/dev/core/-/issues/1874): | |
273 | [17762](https://github.com/civicrm/civicrm-core/pull/17762) and | |
274 | [17836](https://github.com/civicrm/civicrm-core/pull/17836))** | |
275 | ||
73f7a7a9 AF |
276 | - **Fix CRM_Utils_JS::dedupeClosures to ignore comments |
277 | ([17717](https://github.com/civicrm/civicrm-core/pull/17717))** | |
94a1f6ae | 278 | |
73f7a7a9 | 279 | Ensures comments do not interfere with deduping. |
94a1f6ae | 280 | |
29b35cc5 TO |
281 | - **Use PHPUnit7 as the primary test runner |
282 | ([17615](https://github.com/civicrm/civicrm-core/pull/17615), | |
283 | [17661](https://github.com/civicrm/civicrm-core/pull/17661), | |
284 | [120](https://github.com/civicrm/civicrm-backdrop/pull/120), | |
285 | [605](https://github.com/civicrm/civicrm-drupal/pull/605), | |
286 | [206](https://github.com/civicrm/civicrm-wordpress/pull/206))** | |
94a1f6ae | 287 | |
73f7a7a9 AF |
288 | - **Fix isMultilingual to use static caching and respect current domain |
289 | ([17646](https://github.com/civicrm/civicrm-core/pull/17646))** | |
94a1f6ae | 290 | |
73f7a7a9 AF |
291 | Improves the efficiency and accuracy of the `CRM_Core_I18n::isMultilingual` |
292 | function, preventing a large number of duplicate queries on every request. | |
94a1f6ae | 293 | |
73f7a7a9 AF |
294 | - **Update has_separator field in civicrm_navigation |
295 | ([17579](https://github.com/civicrm/civicrm-core/pull/17579))** | |
94a1f6ae | 296 | |
73f7a7a9 AF |
297 | This field was incorrectly marked as a boolean; it's actually an int with an |
298 | option list. | |
94a1f6ae | 299 | |
29b35cc5 | 300 | - **Civi\Payment\PropertyBag - Remove warning |
73f7a7a9 | 301 | ([17506](https://github.com/civicrm/civicrm-core/pull/17506))** |
94a1f6ae | 302 | |
73f7a7a9 AF |
303 | - **Fix duplicate upgrade function |
304 | ([17582](https://github.com/civicrm/civicrm-core/pull/17582))** | |
94a1f6ae | 305 | |
73f7a7a9 | 306 | Fixes a fatal error on upgrade caused by a merge conflict. |
94a1f6ae | 307 | |
73f7a7a9 AF |
308 | - **CRM_Case_XMLProcessor::allActivityTypes() doesn't do caching right |
309 | ([dev/core#1433](https://lab.civicrm.org/dev/core/-/issues/1433): | |
310 | [17627](https://github.com/civicrm/civicrm-core/pull/17627), | |
311 | [17616](https://github.com/civicrm/civicrm-core/pull/17616) and | |
312 | [17614](https://github.com/civicrm/civicrm-core/pull/17614))** | |
94a1f6ae | 313 | |
73f7a7a9 AF |
314 | - **CustomValue.GetTree API Does Not Return Display Value for Money Select/Radio |
315 | Custom field ([dev/core#1566](https://lab.civicrm.org/dev/core/-/issues/1566): | |
316 | [17008](https://github.com/civicrm/civicrm-core/pull/17008))** | |
94a1f6ae | 317 | |
73f7a7a9 AF |
318 | - **whom_url missing contact ID parameter in detailed logging report |
319 | ([dev/core#1749](https://lab.civicrm.org/dev/core/-/issues/1749): | |
320 | [17440](https://github.com/civicrm/civicrm-core/pull/17440))** | |
94a1f6ae | 321 | |
29b35cc5 | 322 | - **Regression - File fields export results in DB error |
73f7a7a9 AF |
323 | ([dev/core#1787](https://lab.civicrm.org/dev/core/-/issues/1787): |
324 | [17578](https://github.com/civicrm/civicrm-core/pull/17578))** | |
94a1f6ae | 325 | |
73f7a7a9 AF |
326 | - **Relative date filter - End of yesterday not working properly |
327 | ([dev/core#1798](https://lab.civicrm.org/dev/core/-/issues/1798): | |
328 | [17512](https://github.com/civicrm/civicrm-core/pull/17512))** | |
94a1f6ae | 329 | |
73f7a7a9 AF |
330 | - **Editing a custom field choice label changes the `name` if you do it from the |
331 | custom field admin screens | |
332 | ([dev/core#1817](https://lab.civicrm.org/dev/core/-/issues/1817): | |
333 | [17681](https://github.com/civicrm/civicrm-core/pull/17681))** | |
94a1f6ae | 334 | |
73f7a7a9 AF |
335 | - **Custom Date field with format=yy displays calendar icon that doesn't work |
336 | ([dev/core#1829](https://lab.civicrm.org/dev/core/-/issues/1829): | |
337 | [17664](https://github.com/civicrm/civicrm-core/pull/17664))** | |
94a1f6ae | 338 | |
73f7a7a9 AF |
339 | - **Unable to install 5.28 on Maria DB 10.3 on Ubuntu |
340 | ([dev/core#1860](https://lab.civicrm.org/dev/core/-/issues/1860): | |
341 | [17772](https://github.com/civicrm/civicrm-core/pull/17772))** | |
94a1f6ae | 342 | |
29b35cc5 | 343 | - **APIv4 - Filter getActions results based on user permissions |
4dab446f | 344 | ([17540](https://github.com/civicrm/civicrm-core/pull/17540))** |
94a1f6ae | 345 | |
73f7a7a9 AF |
346 | - **Pre-upgrade message for php-intl shows twice |
347 | ([17748](https://github.com/civicrm/civicrm-core/pull/17748))** | |
94a1f6ae | 348 | |
73f7a7a9 AF |
349 | - **Fix saving of State/Province Multi-select values |
350 | ([17737](https://github.com/civicrm/civicrm-core/pull/17737))** | |
94a1f6ae | 351 | |
73f7a7a9 AF |
352 | - **[regression] Attempting to access Multi-Record Custom Field import results |
353 | in crash ([dev/core#1841](https://lab.civicrm.org/dev/core/-/issues/1841): | |
354 | [17697](https://github.com/civicrm/civicrm-core/pull/17697))** | |
94a1f6ae | 355 | |
29b35cc5 | 356 | - **Use PSR-4 instead of PSR-0 in Civi directory |
73f7a7a9 | 357 | ([17690](https://github.com/civicrm/civicrm-core/pull/17690))** |
94a1f6ae | 358 | |
73f7a7a9 AF |
359 | - **Sort options without relying on unavailable buildOptions param |
360 | ([17621](https://github.com/civicrm/civicrm-core/pull/17621))** | |
94a1f6ae | 361 | |
73f7a7a9 AF |
362 | - **Throw exception if id not passed into discard |
363 | ([17666](https://github.com/civicrm/civicrm-core/pull/17666))** | |
94a1f6ae | 364 | |
73f7a7a9 AF |
365 | - **Fix validation of select2 fields in "On behalf of Organisation" block |
366 | ([17672](https://github.com/civicrm/civicrm-core/pull/17672))** | |
94a1f6ae | 367 | |
73f7a7a9 | 368 | - **Pass required attribute for quickform fields through to form |
80078c3e AH |
369 | ([16488](https://github.com/civicrm/civicrm-core/pull/16488) and |
370 | [17929](https://github.com/civicrm/civicrm-core/pull/17929) related to | |
371 | [dev/core#1903](https://lab.civicrm.org/dev/core/-/issues/1903))** | |
94a1f6ae | 372 | |
73f7a7a9 AF |
373 | - **CRM_Core_I18n::setLocale() - Fix bug with repeated usage |
374 | ([17374](https://github.com/civicrm/civicrm-core/pull/17374))** | |
94a1f6ae | 375 | |
73f7a7a9 AF |
376 | - **Fix retrieving MySQL version for checking as part of install requirements |
377 | ([17593](https://github.com/civicrm/civicrm-core/pull/17593))** | |
94a1f6ae | 378 | |
73f7a7a9 | 379 | - **Set ContactType.name as required in the schema. |
80078c3e AH |
380 | ([17548](https://github.com/civicrm/civicrm-core/pull/17548), |
381 | [17570](https://github.com/civicrm/civicrm-core/pull/17570), and | |
382 | [18070](https://github.com/civicrm/civicrm-core/pull/18070) related to | |
383 | [dev/core#1927](https://lab.civicrm.org/dev/core/-/issues/1927))** | |
94a1f6ae | 384 | |
73f7a7a9 AF |
385 | - **Fix "Undefined variable: entryFound" notice on Bookkeeping report |
386 | ([17554](https://github.com/civicrm/civicrm-core/pull/17554))** | |
94a1f6ae | 387 | |
73f7a7a9 AF |
388 | - **Zip code range search only supports numeric zip codes |
389 | ([17523](https://github.com/civicrm/civicrm-core/pull/17523))** | |
94a1f6ae | 390 | |
4dab446f AH |
391 | Rather than causing a database error, this displays an error message when |
392 | attempting to search a postal code range using non-numeric postal codes. | |
393 | ||
73f7a7a9 AF |
394 | - **Remove isThrowException from CRM_Utils_Type::validate() signature |
395 | ([17546](https://github.com/civicrm/civicrm-core/pull/17546))** | |
94a1f6ae | 396 | |
29b35cc5 | 397 | - **`codeVersion` not displayed in system status check error message about db |
80078c3e AH |
398 | version vs codeversion |
399 | ([dev/core#1882](https://lab.civicrm.org/dev/core/-/issues/1882): | |
400 | [17854](https://github.com/civicrm/civicrm-core/pull/17854))** | |
401 | ||
29b35cc5 TO |
402 | - **"Merge" form moves unchecked related entities (intra-RC regression) |
403 | ([dev/core#1930](https://lab.civicrm.org/dev/core/-/issues/1930): | |
404 | [18079](https://github.com/civicrm/civicrm-core/pull/18079))** | |
405 | ||
4dab446f AH |
406 | ### CiviCase |
407 | ||
29b35cc5 | 408 | - **Non-compliant query leads to (semi-)random sorting and failing unit test |
4dab446f AH |
409 | CRM_Case_BAO_CaseTest::testSortByCaseContact |
410 | ([dev/core#1844](https://lab.civicrm.org/dev/core/-/issues/1844): | |
411 | [17708](https://github.com/civicrm/civicrm-core/pull/17708))** | |
412 | ||
73f7a7a9 | 413 | ### CiviContribute |
94a1f6ae | 414 | |
73f7a7a9 AF |
415 | - **Payment instrument ID is not required at processorform level |
416 | ([17510](https://github.com/civicrm/civicrm-core/pull/17510))** | |
94a1f6ae | 417 | |
73f7a7a9 | 418 | Do not throw warning if payment instrument is not sent. |
94a1f6ae | 419 | |
73f7a7a9 AF |
420 | - **Bank fee has wrong date on import in civicrm_financial_item.transaction_date |
421 | incorrected uses import date rather than payment date on | |
422 | ([dev/core#1776](https://lab.civicrm.org/dev/core/-/issues/1776): | |
423 | [17389](https://github.com/civicrm/civicrm-core/pull/17389))** | |
94a1f6ae | 424 | |
73f7a7a9 AF |
425 | Ensures the `civicrm_financial_item.transaction_date` gets recorded correctly |
426 | when importing a transaction with a bank fee. | |
94a1f6ae | 427 | |
73f7a7a9 AF |
428 | - **Payment.create should not set contribution date to today |
429 | ([17688](https://github.com/civicrm/civicrm-core/pull/17688))** | |
94a1f6ae | 430 | |
73f7a7a9 AF |
431 | - **Fix PHP notice when we don't have credit card params |
432 | ([16514](https://github.com/civicrm/civicrm-core/pull/16514) and | |
433 | [17584](https://github.com/civicrm/civicrm-core/pull/17584))** | |
94a1f6ae | 434 | |
4dab446f AH |
435 | - **Improve PropertyBag handling of offsetGet and custom properties; add more |
436 | tests ([17588](https://github.com/civicrm/civicrm-core/pull/17588) and | |
437 | [17654](https://github.com/civicrm/civicrm-core/pull/17654))** | |
438 | ||
439 | - **Graphs on Contribution Summary report replace final row with grand total | |
440 | value ([dev/report#40](https://lab.civicrm.org/dev/report/-/issues/40): | |
441 | [17412](https://github.com/civicrm/civicrm-core/pull/17412))** | |
442 | ||
29b35cc5 TO |
443 | - **"Undefined offset" bug in BAO/FinancialAccount.php |
444 | ([dev/wordpress#61](https://lab.civicrm.org/dev/wordpress/-/issues/61): | |
445 | [17701](https://github.com/civicrm/civicrm-core/pull/17701) and | |
446 | [17689](https://github.com/civicrm/civicrm-core/pull/17689))** | |
447 | ||
448 | Ensures that the financial account is set correctly even when the name does | |
449 | not match the label. | |
450 | ||
73f7a7a9 | 451 | ### CiviEvent |
94a1f6ae | 452 | |
73f7a7a9 AF |
453 | - **Event participant_listing_id field defaults to 0 instead of Null |
454 | ([dev/core#1833](https://lab.civicrm.org/dev/core/-/issues/1833): | |
455 | [17677](https://github.com/civicrm/civicrm-core/pull/17677))** | |
94a1f6ae | 456 | |
4dab446f AH |
457 | - **Multiple line item shown on view contribution if participant is transferred |
458 | to another contact. | |
459 | ([dev/core#890](https://lab.civicrm.org/dev/core/-/issues/890): | |
460 | [16956](https://github.com/civicrm/civicrm-core/pull/16956))** | |
461 | ||
462 | ### CiviGrant | |
463 | ||
464 | - **Bug in Grant statistics report | |
465 | ([17640](https://github.com/civicrm/civicrm-core/pull/17640))** | |
466 | ||
73f7a7a9 | 467 | ### CiviSMS |
94a1f6ae | 468 | |
73f7a7a9 AF |
469 | - **Can't change SMS recipient on non-bulk SMS |
470 | ([dev/core#1840](https://lab.civicrm.org/dev/core/-/issues/1840): | |
471 | [17691](https://github.com/civicrm/civicrm-core/pull/17691))** | |
94a1f6ae | 472 | |
80078c3e AH |
473 | ### Drupal Integration |
474 | ||
475 | - **Error: Class 'CRM_Upgrade_Incremental_General' not found in | |
476 | Civi\Install\Requirements->checkMysqlVersion() | |
477 | ([dev/drupal#131](https://lab.civicrm.org/dev/drupal/-/issues/131): | |
478 | [18066](https://github.com/civicrm/civicrm-core/pull/18066))** | |
479 | ||
73f7a7a9 | 480 | ### Joomla Integration |
94a1f6ae | 481 | |
73f7a7a9 AF |
482 | - **Ensure that when normal routing trackable urls and opens in Joomla go to the |
483 | frontend not administrator site | |
484 | ([17760](https://github.com/civicrm/civicrm-core/pull/17760))** | |
94a1f6ae | 485 | |
73f7a7a9 | 486 | ### WordPress Integration |
94a1f6ae | 487 | |
73f7a7a9 AF |
488 | - **Remove `/` from the beginning and end of query string |
489 | ([207](https://github.com/civicrm/civicrm-wordpress/pull/207))** | |
94a1f6ae | 490 | |
73f7a7a9 AF |
491 | Fixes a 'You do not have permission to access this content.' error resulting |
492 | from an extra '/' in the `q=` string in the url. | |
94a1f6ae | 493 | |
73f7a7a9 AF |
494 | - **Base page fails to recognise Page Templates in subdirectories. |
495 | ([dev/wordpress#58](https://lab.civicrm.org/dev/wordpress/-/issues/58): | |
496 | [204](https://github.com/civicrm/civicrm-wordpress/pull/204))** | |
94a1f6ae | 497 | |
73f7a7a9 AF |
498 | Ensures that the CiviCRM base page is correctly identified when it does not |
499 | reside in the theme root directory. | |
94a1f6ae | 500 | |
80078c3e AH |
501 | - **Prevent session from starting during WordPress pseudo cron procedures |
502 | ([dev/core#1889](https://lab.civicrm.org/dev/core/-/issues/1889): | |
503 | [17890](https://github.com/civicrm/civicrm-core/pull/17890) and | |
504 | [210](https://github.com/civicrm/civicrm-wordpress/pull/210))** | |
505 | ||
73f7a7a9 AF |
506 | ## <a name="misc"></a>Miscellany |
507 | ||
29b35cc5 TO |
508 | - **Ship Flexmailer extension with civicrm-core |
509 | ([17669](https://github.com/civicrm/civicrm-core/pull/17669), | |
510 | ([17768](https://github.com/civicrm/civicrm-core/pull/17768))** | |
511 | ||
73f7a7a9 AF |
512 | - **Support passing old method name into deprecatedFunctionWarning |
513 | ([17552](https://github.com/civicrm/civicrm-core/pull/17552))** | |
94a1f6ae | 514 | |
73f7a7a9 AF |
515 | - **Add CRM_Core_Form::isFormInViewMode and CRM_Core_Form::isFormInEditMode |
516 | ([17637](https://github.com/civicrm/civicrm-core/pull/17637))** | |
94a1f6ae | 517 | |
29b35cc5 | 518 | - **CRM_Utils_JS - Dedupe 'use strict' directive |
73f7a7a9 | 519 | ([17711](https://github.com/civicrm/civicrm-core/pull/17711))** |
94a1f6ae | 520 | |
73f7a7a9 AF |
521 | - **Add isBackOffice, isPayLater, getPaymentMode helpers to |
522 | frontendpaymentformtrait | |
523 | ([17511](https://github.com/civicrm/civicrm-core/pull/17511))** | |
94a1f6ae | 524 | |
73f7a7a9 AF |
525 | - **Fix issue $this |
526 | ([589](https://github.com/civicrm/civicrm-drupal/pull/589))** | |
94a1f6ae | 527 | |
73f7a7a9 AF |
528 | - **Fix validateAll to no longer support unused abort param |
529 | ([17544](https://github.com/civicrm/civicrm-core/pull/17544))** | |
94a1f6ae | 530 | |
73f7a7a9 AF |
531 | - **Remove deprecated billingID from baseIPN |
532 | ([17525](https://github.com/civicrm/civicrm-core/pull/17525))** | |
94a1f6ae | 533 | |
73f7a7a9 AF |
534 | - **Add EntityFormTrait to pricefieldForm - stdised getEntityId() |
535 | ([17516](https://github.com/civicrm/civicrm-core/pull/17516))** | |
94a1f6ae | 536 | |
73f7a7a9 AF |
537 | - **Update contributor-key.yml |
538 | ([17553](https://github.com/civicrm/civicrm-core/pull/17553))** | |
94a1f6ae | 539 | |
73f7a7a9 | 540 | - **Export fix ([17644](https://github.com/civicrm/civicrm-core/pull/17644))** |
94a1f6ae | 541 | |
73f7a7a9 AF |
542 | - **Upgrade HTML Purifier to v4.12.0 to support for PHP7.4 |
543 | ([297](https://github.com/civicrm/civicrm-packages/pull/297))** | |
94a1f6ae | 544 | |
73f7a7a9 AF |
545 | - **Temporary tables should follow consistent naming convention |
546 | ([dev/core#183](https://lab.civicrm.org/dev/core/-/issues/183): | |
547 | [15796](https://github.com/civicrm/civicrm-core/pull/15796))** | |
94a1f6ae | 548 | |
73f7a7a9 AF |
549 | - **Remove unreachable lines |
550 | ([17563](https://github.com/civicrm/civicrm-core/pull/17563))** | |
94a1f6ae | 551 | |
73f7a7a9 AF |
552 | - **EventInfo template cleanup |
553 | ([17581](https://github.com/civicrm/civicrm-core/pull/17581))** | |
94a1f6ae | 554 | |
29b35cc5 | 555 | - **[NFC] Misspelled word |
73f7a7a9 | 556 | ([17652](https://github.com/civicrm/civicrm-core/pull/17652))** |
94a1f6ae | 557 | |
73f7a7a9 AF |
558 | - **Remove a usage of deprecated funtion get_magic_quotes_gpc and also switch out |
559 | {} for [] whne acecssing string or array offsets | |
560 | ([296](https://github.com/civicrm/civicrm-packages/pull/296))** | |
94a1f6ae | 561 | |
73f7a7a9 AF |
562 | - **Remove unused deprecated class |
563 | ([17535](https://github.com/civicrm/civicrm-core/pull/17535))** | |
94a1f6ae | 564 | |
73f7a7a9 AF |
565 | - **Remove obsolete function formatWikiURL |
566 | ([17726](https://github.com/civicrm/civicrm-core/pull/17726))** | |
94a1f6ae | 567 | |
29b35cc5 | 568 | - **[REF] Simplify the replacing of the email with the email from the url |
73f7a7a9 | 569 | ([17491](https://github.com/civicrm/civicrm-core/pull/17491))** |
94a1f6ae | 570 | |
73f7a7a9 AF |
571 | - **[REF] Replace incorrect usages of array_key_exists when the variable is not |
572 | an array with property_exists and also fix the parameter order for an implode | |
573 | statement ([17573](https://github.com/civicrm/civicrm-core/pull/17573))** | |
94a1f6ae | 574 | |
29b35cc5 | 575 | - **[REF] Convert Authorize.net to use Guzzle for update subscription class, add |
73f7a7a9 | 576 | test ([17585](https://github.com/civicrm/civicrm-core/pull/17585))** |
94a1f6ae | 577 | |
73f7a7a9 AF |
578 | - **[REF] Using {} to access string or array offsets has been deprecated in |
579 | PHP7.4 ([17574](https://github.com/civicrm/civicrm-core/pull/17574))** | |
94a1f6ae | 580 | |
29b35cc5 | 581 | - **[REF] Mark unused date functions as deprecated |
73f7a7a9 | 582 | ([17487](https://github.com/civicrm/civicrm-core/pull/17487))** |
94a1f6ae | 583 | |
73f7a7a9 AF |
584 | - **[REF] Using ternary operation without nesting is deprecated and also using |
585 | methods and properly instanciate the CiviCase Info object in test | |
586 | ([17575](https://github.com/civicrm/civicrm-core/pull/17575))** | |
94a1f6ae | 587 | |
29b35cc5 | 588 | - **[REF] Convert Authorize.net doDirectPayment to use guzzle & add test |
73f7a7a9 | 589 | ([17501](https://github.com/civicrm/civicrm-core/pull/17501))** |
94a1f6ae | 590 | |
73f7a7a9 AF |
591 | - **[REF] Replace the deprecated system_rebuild_module_data function with |
592 | equivilant extension.list.module service function calls to be Drupal 9 | |
593 | compatiable ([17515](https://github.com/civicrm/civicrm-core/pull/17515))** | |
94a1f6ae | 594 | |
29b35cc5 | 595 | - **[REF] Remove never reachable lines. |
73f7a7a9 | 596 | ([17556](https://github.com/civicrm/civicrm-core/pull/17556))** |
94a1f6ae | 597 | |
29b35cc5 | 598 | - **[REF] Remove another instance of fatal() |
73f7a7a9 | 599 | ([17549](https://github.com/civicrm/civicrm-core/pull/17549))** |
94a1f6ae | 600 | |
29b35cc5 | 601 | - **[REF] Readability extraction in Dummy class |
73f7a7a9 | 602 | ([17543](https://github.com/civicrm/civicrm-core/pull/17543))** |
94a1f6ae | 603 | |
73f7a7a9 AF |
604 | - **[REF] Replace some instances of fatal with thrown exceptions. |
605 | ([17533](https://github.com/civicrm/civicrm-core/pull/17533))** | |
94a1f6ae | 606 | |
29b35cc5 | 607 | - **[REF] Remove calls to, and deprecate, unhandled function |
73f7a7a9 | 608 | ([17499](https://github.com/civicrm/civicrm-core/pull/17499))** |
94a1f6ae | 609 | |
73f7a7a9 AF |
610 | - **[REF] Remove handling for 2 fields not on the form |
611 | ([17504](https://github.com/civicrm/civicrm-core/pull/17504))** | |
94a1f6ae | 612 | |
29b35cc5 | 613 | - **[REF] Remove some instances of fatal in BAO classes |
73f7a7a9 | 614 | ([17536](https://github.com/civicrm/civicrm-core/pull/17536))** |
94a1f6ae | 615 | |
29b35cc5 | 616 | - **[REF] Access the method not the property directly to check if a payment |
73f7a7a9 AF |
617 | processor supports recurring |
618 | ([17602](https://github.com/civicrm/civicrm-core/pull/17602))** | |
94a1f6ae | 619 | |
29b35cc5 | 620 | - **[REF] Ensure that our custom error handler is called when jQuery validates |
73f7a7a9 AF |
621 | and expand any collapsed accordions that are hiding required fields that |
622 | haven't been filled in | |
623 | ([17673](https://github.com/civicrm/civicrm-core/pull/17673))** | |
94a1f6ae | 624 | |
73f7a7a9 AF |
625 | - **[REF] Consolidate code in processMembership |
626 | ([17611](https://github.com/civicrm/civicrm-core/pull/17611))** | |
94a1f6ae | 627 | |
73f7a7a9 AF |
628 | - **[REF] Cleanup function for retrieving contact types. |
629 | ([17676](https://github.com/civicrm/civicrm-core/pull/17676))** | |
94a1f6ae | 630 | |
29b35cc5 | 631 | - **[REF] Fix Javascript syntax error |
73f7a7a9 | 632 | ([17678](https://github.com/civicrm/civicrm-core/pull/17678))** |
94a1f6ae | 633 | |
29b35cc5 | 634 | - **[REF] Fix jQuery error message display on select2 field validation |
73f7a7a9 | 635 | ([17671](https://github.com/civicrm/civicrm-core/pull/17671))** |
94a1f6ae | 636 | |
73f7a7a9 AF |
637 | - **[REF] Fix allowing users to clear values for raido custom fields when not |
638 | required ([17670](https://github.com/civicrm/civicrm-core/pull/17670))** | |
94a1f6ae | 639 | |
73f7a7a9 AF |
640 | - **[REF] Extract getTestTrxnID |
641 | ([17642](https://github.com/civicrm/civicrm-core/pull/17642))** | |
94a1f6ae | 642 | |
29b35cc5 TO |
643 | - **Update Flexmailer to be PHP7.4 compatible |
644 | ([17779](https://github.com/civicrm/civicrm-core/pull/17779), [17660](https://github.com/civicrm/civicrm-core/pull/17660))** | |
94a1f6ae | 645 | |
73f7a7a9 AF |
646 | - **[REF] Ensure that the Manual Payment Processor sets the _paymentProcessor |
647 | variable like other Processors to fix issues in PHP7.4 and UnitTests | |
648 | ([17648](https://github.com/civicrm/civicrm-core/pull/17648))** | |
94a1f6ae | 649 | |
73f7a7a9 AF |
650 | - **[REF] Fix PHP7.4 Test fails when we are accessing array keys when the value |
651 | is not an array | |
652 | ([17649](https://github.com/civicrm/civicrm-core/pull/17649))** | |
94a1f6ae | 653 | |
73f7a7a9 AF |
654 | - **[REF] Fix parts of code where curly brackets were being used for array or |
655 | string access which is deprecated in PHP7.4 | |
656 | ([17647](https://github.com/civicrm/civicrm-core/pull/17647))** | |
94a1f6ae | 657 | |
73f7a7a9 AF |
658 | - **[REF] Fix issue with using array access tools on NULL values |
659 | ([17600](https://github.com/civicrm/civicrm-core/pull/17600))** | |
94a1f6ae | 660 | |
73f7a7a9 AF |
661 | - **[REF] Replace incorrect usage of array_key_exists with property_exists in |
662 | Group BAO Class | |
663 | ([17604](https://github.com/civicrm/civicrm-core/pull/17604))** | |
94a1f6ae | 664 | |
73f7a7a9 AF |
665 | - **[REF] Add test for renewing old expired membership via form |
666 | ([17564](https://github.com/civicrm/civicrm-core/pull/17564))** | |
94a1f6ae | 667 | |
73f7a7a9 AF |
668 | - **[REF] Update packages to work with PHP7.4 |
669 | ([17598](https://github.com/civicrm/civicrm-core/pull/17598))** | |
94a1f6ae | 670 | |
73f7a7a9 AF |
671 | - **[REF] Fix another couple of uses of array_key_exists when the variable being |
672 | checked is an object | |
673 | ([17601](https://github.com/civicrm/civicrm-core/pull/17601))** | |
94a1f6ae | 674 | |
29b35cc5 TO |
675 | - **[REF] Remove deprecated methods of booting Drupal container and getting |
676 | Drupal timezone information | |
73f7a7a9 | 677 | ([17522](https://github.com/civicrm/civicrm-core/pull/17522))** |
94a1f6ae | 678 | |
73f7a7a9 AF |
679 | - **[REF] Fix some additional issues where curly braces were being used to |
680 | access string or array offsets | |
681 | ([17599](https://github.com/civicrm/civicrm-core/pull/17599))** | |
94a1f6ae | 682 | |
73f7a7a9 AF |
683 | - **[NFC] Update existing APIv3 MembershipType Tests to also test against APIv4 |
684 | as appropriate ([17528](https://github.com/civicrm/civicrm-core/pull/17528))** | |
94a1f6ae | 685 | |
29b35cc5 | 686 | - **[NFC] cleanup docblocks in CRM_Utils_JS |
73f7a7a9 | 687 | ([17714](https://github.com/civicrm/civicrm-core/pull/17714))** |
94a1f6ae | 688 | |
73f7a7a9 AF |
689 | - **[NFC] Fix some outdated wiki links |
690 | ([17739](https://github.com/civicrm/civicrm-core/pull/17739))** | |
94a1f6ae | 691 | |
73f7a7a9 AF |
692 | - **[NFC] Fix contributor key for Lighthouse Consulting and Design |
693 | ([17727](https://github.com/civicrm/civicrm-core/pull/17727))** | |
94a1f6ae | 694 | |
29b35cc5 | 695 | - **[NFC] Fix unit test failure on MySQL 8 due to ordering issue |
73f7a7a9 AF |
696 | ([17674](https://github.com/civicrm/civicrm-core/pull/17674))** |
697 | ||
73f7a7a9 AF |
698 | - **[NFC] Remove instances where html is passed to crmMoney |
699 | ([17612](https://github.com/civicrm/civicrm-core/pull/17612))** | |
700 | ||
701 | - **[NFC] Add assertions to existing test to lock in current behaviour | |
702 | ([17605](https://github.com/civicrm/civicrm-core/pull/17605))** | |
703 | ||
704 | - **[NFC] Update mocking to use getMockBuilder instead instead of createMock | |
705 | ([17606](https://github.com/civicrm/civicrm-core/pull/17606))** | |
706 | ||
29b35cc5 | 707 | - **[NFC] Formatting cleanup on contribution/recur templates |
73f7a7a9 AF |
708 | ([17603](https://github.com/civicrm/civicrm-core/pull/17603))** |
709 | ||
710 | - **[NFC] Minor code cleanup | |
711 | ([17566](https://github.com/civicrm/civicrm-core/pull/17566))** | |
712 | ||
80078c3e AH |
713 | - **MembershipRenewalTest - Fix failure |
714 | ([17830](https://github.com/civicrm/civicrm-core/pull/17830))** | |
715 | ||
716 | - **[REF] Fix regression where adding any date based field onto a profile | |
717 | triggers an error date preferences not configured when previewing the profile | |
718 | ([17973](https://github.com/civicrm/civicrm-core/pull/17973))** | |
719 | ||
720 | - **[NFC] Port some recent test fixes from master to 5.28 | |
721 | ([18053](https://github.com/civicrm/civicrm-core/pull/18053))** | |
722 | ||
94a1f6ae AH |
723 | ## <a name="credits"></a>Credits |
724 | ||
725 | This release was developed by the following code authors: | |
726 | ||
88bd6b02 | 727 | AGH Strategies - Alice Frumin, Andie Hunt; British Humanist Association - |
73f7a7a9 AF |
728 | Andrew West; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - |
729 | Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; CompuCorp - Ivan; Coop | |
730 | SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Dietermartens; ES-Progress - | |
731 | Sandor Semsey; Flinders University of South Australia - Tom Anderson; Fuzion - | |
732 | Jitendra Purohit; JMA Consulting - Seamus Lee; Lighthouse Consulting and | |
733 | Design- Brian Shaughnessy; Marcin Lewandowski; Megaphone Technology Consulting - | |
734 | Jon Goldberg; MJW Consulting - Matthew Wire; Tadpole Collective - Kevin | |
735 | Cristiano; Wikimedia Foundation - Eileen McNaughton | |
94a1f6ae AH |
736 | |
737 | Most authors also reviewed code for this release; in addition, the following | |
738 | reviewers contributed their comments: | |
739 | ||
73f7a7a9 AF |
740 | a-n The Artists Information Company - William Mortada; Agileware - Francis |
741 | Whittle, Justin Freeman; Andrew Thompson; Artful Robot - Rich Lott; Betty | |
742 | Dolfing; Blackfly Solutions - Alan Dixon; CiviCoop - Jaap Jansma; Fuzion - Luke | |
743 | Stewart, Peter Davis; JMA Consulting - Joe Murray; MJCO - Mikey O'Toole; Semper | |
744 | IT - Karin Gerritsen; Squiffle Consulting - Aidan Saunders; Third Sector Design: | |
4dab446f | 745 | Eriol Fox; Timbsoft Technologies - Tunbola Ogunwande |
0cee7083 AH |
746 | |
747 | ## <a name="feedback"></a>Feedback | |
748 | ||
88bd6b02 | 749 | These release notes are edited by Alice Frumin and Andie Hunt. If you'd like |
0cee7083 AH |
750 | to provide feedback on them, please log in to https://chat.civicrm.org/civicrm |
751 | and contact `@agh1`. |