CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2023-03-21T05:03:21Zhttps://lab.civicrm.org/dev/core/-/issues/1500Add system check for required PHP extensions (bcmath, curl, etc.)2023-03-21T05:03:21ZAllenShawAdd system check for required PHP extensions (bcmath, curl, etc.)I was recently bitten by the bcmath requirement (along the lines of https://civicrm.stackexchange.com/q/31932/907), on a system that (for unrelated reasons) was making error messages fairly hard to get to.
It occurs to me that since Civ...I was recently bitten by the bcmath requirement (along the lines of https://civicrm.stackexchange.com/q/31932/907), on a system that (for unrelated reasons) was making error messages fairly hard to get to.
It occurs to me that since CiviCRM core requires several php extensions (https://docs.civicrm.org/sysadmin/en/latest/requirements/#php-extensions), it would be helpful to have a system check that uses `extension_loaded()` to confirm these are installed, and presents a 'critical' error if any are missing.https://lab.civicrm.org/dev/core/-/issues/1448Upgrade - confirm navigation away from page2023-01-15T05:03:23ZarborrowUpgrade - confirm navigation away from pageSo yesterday, I had one of those moments where I just wanted to kick myself while upgrading CiviCRM. I had fired off the database upgrade (civicrm/upgrade?reset=1) and saw a bunch of notices related to templates which I copied for docume...So yesterday, I had one of those moments where I just wanted to kick myself while upgrading CiviCRM. I had fired off the database upgrade (civicrm/upgrade?reset=1) and saw a bunch of notices related to templates which I copied for documentation purposes while the database upgrade continued.
I intended to switch over to a new browser tab and paste the documentation into a document there when before I new it I had migrated away from the upgrade page abandoning the upgrade mid-process. Hoping against hope, I went back and thought perhaps it might be able to pickup where it left off. No such luck. The installation had been interrupted and it was suggested that I restore my backup (which of course I hadn't done because well I never have these sorts of troubles :p) and then try the upgrade process again.
I suspect I am not the first to do this but believe it would be a good idea to add some type of confirmation button on the database upgrade page to save me from myself and make it one step harder to interrupt the upgrade process with a "are you sure you want to continue to interrupt the database upgrade". It just seems a little too easy to interrupt this crucial process.
I was thinking something along the lines of: https://code-maven.com/prevent-leaving-the-page-using-plain-javascripthttps://lab.civicrm.org/dev/core/-/issues/1424Export doesn't work in Excel with diacritic chars2020-07-12T03:19:04ZeileenExport doesn't work in Excel with diacritic charsPROPOSAL - prepend the BOM for UTF8 "\xEF\xBB\xBF" so csv's exported from excel
Discussion (note this is the same writeup on the PR - creating a gitlab too as I suspect there might be discussion).
There is a long-standing issue ...PROPOSAL - prepend the BOM for UTF8 "\xEF\xBB\xBF" so csv's exported from excel
Discussion (note this is the same writeup on the PR - creating a gitlab too as I suspect there might be discussion).
There is a long-standing issue whereby files exported from CiviCRM with diacritic characters - eg.
ę are mangled when opened in MS Excel.
The underlying issue is that the characters are UTF-8 encoded & MS Excel by default does not assume UTF8.
In order to do so it needs a BOM - Byte Order Marker - which is a few hex characters at the start of
the csv.
The BOM indicator is 'not recommended' .... unless you want your csv to work with
MS Excel. Since MS Excel is a major use case for csvs I think it's pretty clear that all
things being equal we want to support it... I note that there are extensions to export to excel
natively but I don't think that replaces this. The number one reason to want to export
a csv is to work with it in a spreadsheeting programme & unless we can't safely make it
work in core we shouldn't require an extension for that.
There are various recommendations over time but it seems things have improved in the MS
Excel world and what works on Windows now appears to work on Mac too - at least on a recent version.
This link https://donatstudios.com/CSV-An-Encoding-Nightmare is a pretty good discussion.
While the above link and others say that you need a different BOM for MAC than Windows my
testing shows that the one recommended for Windows works fine on Mac Excel (while you would need
to convert to UTF 16 to follow the Mac recommendation. (https://csv.thephpleague.com/9.0/interoperability/encoding/)
Other links
https://stackoverflow.com/questions/35294443/does-excel-for-mac-2016-properly-import-unicode-in-csv-files
https://stackoverflow.com/questions/2223882/whats-the-difference-between-utf-8-and-utf-8-without-bom/2223926#2223926
Notably this summary :
" When should you encode with a BOM?
If you're unable to record the metadata in any other way (through a charset tag or file system meta), and the programs being used like BOMs, you should encode with a BOM. This is especially true on Windows where anything without a BOM is generally assumed to be using a legacy code page. The BOM tells programs like Office that, yes, the text in this file is Unicode; here's the encoding used.
When it comes down to it, the only files I ever really have problems with are CSV. Depending on the program, it either must, or must not have a BOM. For example, if you're using Excel 2007+ on Windows, it must be encoded with a BOM if you want to open it smoothly and not have to resort to importing the data."
So the argument for a BOM is - if you want it to be compatible with MS Excel use a BOM. This seems to apply.
The risk is that perhaps there is some variant of csv viewing programme that can't cope - the risk of this is rather mitigited by
1) the fact that MS Excel adds the BOM to the start of any files it saves as UTF-8 encoded csv so any programme that expects to open MS Excel generated
csvs would need to be able to cope with it. In addition it is a standard, if not required, file indicator so it feels like the programmes
that were legacy in 2016 writeups might be of no concern now.
2) There really is no programatic way to export these csvs so the risk that this is being parsed by code is close to zero
There are 2 other things we could do to mitigate
1) test on more platforms - I've tested with MS Excel for Mac (Office 365 v 16.31) and Libre Office and MS Numbers
& MS word, cot editor & notes
2) We could add a setting. I'm generally a bit loath on settings as they are a bit of a maintenance nightmare.
However, perhaps it would be a setting like 'export csvs in legacy format & there could be a link
to the gitlab to explain your use-case if you feel the need to set it. If no-one does then we could later remove.
Final note - csv tables are created with the CRM_Core_Report_Excel (spot the irony) from 3 places
- the main export, the export for custom fields & a third place which I believe to be unreachable. This is one path
only but I can look at centralising for the custom fields export path.5.22.0https://lab.civicrm.org/dev/core/-/issues/1387"config_backend" should be thoroughly removed2023-02-05T05:03:36Ztotten"config_backend" should be thoroughly removedOverview
----------------------------------------
In CiviCRM 4.7.0, the column `civicrm_domain.config_backend` was migrated to the `civicrm_setting` table. However, the migration was incomplete.
Reproduction steps
----------------------...Overview
----------------------------------------
In CiviCRM 4.7.0, the column `civicrm_domain.config_backend` was migrated to the `civicrm_setting` table. However, the migration was incomplete.
Reproduction steps
----------------------------------------
1. Create a new site (e.g. `civibuild create dmaster`)
2. Run `DESC civicrm_domain`
3. Observe that column `config_backend` exists
Current behaviour
----------------------------------------
* If a site upgrades from `$ver <= 4.6`, then the column `civicrm_domain.config_backend` does NOT exist.
* If a new site is created in `4.7 <= $ver <= 5.21`, then the column `civicrm_domain.config_backend` DOES exist.
Expected behaviour
----------------------------------------
The column should not exist in v5.21 (or whatever gets the fix). It should not matter if the site originated on v4.5, v4.7, or v5.20.
Comments
----------------------------------------
Historically, this field is related to `CRM_Core_BAO_ConfigSetting`. One should grep on both `config_backend` and `ConfigSetting` to track down code-paths that may be referencing it.
It is still desirable to retain upgrade/transitional logic (eg `CRM_Upgrade_Incremental_php_FourSeven`, `Civi\Core\SettingsBag`); but otherwise these should be removed, and any dependent code-paths should be re-tested.https://lab.civicrm.org/dev/core/-/issues/1379Status should be Pending Refund but stays at Completed2023-01-09T05:03:23Zmagnolia61Status should be Pending Refund but stays at CompletedTesting some more with price sets and recording refunds and payments I ran into the following issue, which is pretty specific but can be a symptom of something that should be changed.
STEPS:
1. Event registration with price set. Fee 50....Testing some more with price sets and recording refunds and payments I ran into the following issue, which is pretty specific but can be a symptom of something that should be changed.
STEPS:
1. Event registration with price set. Fee 50. Contribution status = pending
2. Record Payment of 50 euro. Contribution status = Completed
3. Change Event price set to Fee 25. Contribution status = Pending Refund
4. Record Refund of 25. Contribution status = Completed
All is well at this point. But check what happens next
5. Change Event price set to Fee 50. Contribution status should become: Partially Paid.
Instead it remains at completed. Event Balance = 25 (25 should still be paid).
Also the contribution amount should have become 50 again. But it remains to be 25.
Two observations:
a. When at step 5 a fee higher than the original 50 is selected (fi. 75 euro) then the contribution changes correctly to Partially Paid
b. Because the 'record payment' & 'record refund' buttons react to the contribution status rather than the Balance, they are not shown when the contribution has a false status of Completed.
As a sidenote I think the 'Record Payment' and 'Record Refund' buttons/links should always be available and other amounts than the full balance should be able to be refunded.
Tested this on the sandbox as shown below:
![Peek_2019-11-09_10-59](/uploads/7d6a80a12e83bf62c8fe30f534567399/Peek_2019-11-09_10-59.gif)https://lab.civicrm.org/dev/core/-/issues/1309Contribution Dashboard still uses broken Open Flash Charts2019-10-12T16:11:35ZeileenContribution Dashboard still uses broken Open Flash ChartsReplacement chart not rendering on Contribution Dashboard @artfulrobot promised to make it beautiful againReplacement chart not rendering on Contribution Dashboard @artfulrobot promised to make it beautiful again5.20.0RichRichhttps://lab.civicrm.org/dev/core/-/issues/1299Fix Changelog Reports2022-12-22T05:03:22ZguyiacFix Changelog ReportsCorrect anomalies in the change log reporting (for example the representation when of changes made in batch).
Patrick working on at BCN Sprint.Correct anomalies in the change log reporting (for example the representation when of changes made in batch).
Patrick working on at BCN Sprint.Patrick Figelpfigel@greenpeace.orgPatrick Figelpfigel@greenpeace.orghttps://lab.civicrm.org/dev/core/-/issues/1298Add Email and Phone as Entities that Custom Fields can be assigned to2022-12-23T05:03:31ZguyiacAdd Email and Phone as Entities that Custom Fields can be assigned toPatrick working on this at BCN SprintPatrick working on this at BCN SprintPatrick Figelpfigel@greenpeace.orgPatrick Figelpfigel@greenpeace.orghttps://lab.civicrm.org/dev/core/-/issues/1295Per agreement in NYC sprint, add status check is_active to table2019-10-17T18:16:43ZeileenPer agreement in NYC sprint, add status check is_active to tablehttps://docs.google.com/document/d/1z1Lm-DUrri6xPzGXU37nLk5SfRjo4i9Elvx-lfbmK24/edit#heading=h.164d9ulc2oa3https://docs.google.com/document/d/1z1Lm-DUrri6xPzGXU37nLk5SfRjo4i9Elvx-lfbmK24/edit#heading=h.164d9ulc2oa35.20.0https://lab.civicrm.org/dev/core/-/issues/1286Do not escape html in report header and footers on API create2020-01-20T10:52:39ZMichael McAndrewDo not escape html in report header and footers on API createReportInstance.create escapes the HTML when inserting into the DB (and when retreiving, it seems) but other parts of the UI do not.
`civicrm_report_instance.header` and `civicrm_report_instance.footer` both contain HTML that (if I am fo...ReportInstance.create escapes the HTML when inserting into the DB (and when retreiving, it seems) but other parts of the UI do not.
`civicrm_report_instance.header` and `civicrm_report_instance.footer` both contain HTML that (if I am following https://lab.civicrm.org/dev/core/blob/master/CRM/Utils/API/HTMLInputCoder.php correctly - @colemanw - you touched that file recently) should not be escaped.
Adding 'header' and 'footer' to the list of fields that should not be escaped fixes the issue.
Aside: `CRM_Utils_API_HTMLInputCoder::getSkipFields()` seems flawed in that it does not specify the entity of the field that is to be ignored. Thankfully in this instance, the CiviCRM DB schema 'header' and 'footer' are only used the civicrm_report_instance but it feels like this class could end up inadvertently not escaping html that should be escaped (and maybe that is a potential security issue?)5.23.0colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/1262Case statuses in case type configuration page are not ordered by their weight.2019-09-18T13:27:08ZvarshithCase statuses in case type configuration page are not ordered by their weight.In the case type settings/config page, where we have a tab for 'Case status' that lists all case statuses from which we can select the ones we want for that case type.
This list of case statuses are not ordered by their weight which woul...In the case type settings/config page, where we have a tab for 'Case status' that lists all case statuses from which we can select the ones we want for that case type.
This list of case statuses are not ordered by their weight which would the correct way to list these.
![screenshot-localhost-2019.09.18-11_02_06](/uploads/cabdc1dbad15de7e10ca1867f3999e1f/screenshot-localhost-2019.09.18-11_02_06.png)
I have added a screenshot of the page when adding a new case type. In this the case status 'first' has the lowest weight and so I expect to see it on the top of the list.https://lab.civicrm.org/dev/core/-/issues/1177Add system check for deprecated ARCHIVE log tables2022-12-06T05:03:34ZPatrick Figelpfigel@greenpeace.orgAdd system check for deprecated ARCHIVE log tablesIn #663, we changed the default engine for log tables from `ARCHIVE` to `InnoDB` and shipped this with 5.16. While new installations (and tables first created on 5.16+) will use the `InnoDB` engine by default, existing log tables are not...In #663, we changed the default engine for log tables from `ARCHIVE` to `InnoDB` and shipped this with 5.16. While new installations (and tables first created on 5.16+) will use the `InnoDB` engine by default, existing log tables are not migrated automatically. This needs to be done using the `System.updatelogtables` API with `forceEngineMigration` set to "1".
Once the change has seen some production usage (i.e. a couple of releases from now), we should add a system check to warn admins if any of their log tables use the `ARCHIVE` engine and prompt them to migrate affected tables using the API.https://lab.civicrm.org/dev/core/-/issues/1166Update Country list: change Macedonia, Republic of into North Macedonia2019-12-03T08:07:43ZBetty DolfingUpdate Country list: change Macedonia, Republic of into North MacedoniaI understand ([see stackexchange question](https://civicrm.stackexchange.com/questions/31577/countries-up-to-date)) that the country list in CiviCRM is [maintained manually](https://github.com/civicrm/civicrm-core/blob/5.15.2/xml/templat...I understand ([see stackexchange question](https://civicrm.stackexchange.com/questions/31577/countries-up-to-date)) that the country list in CiviCRM is [maintained manually](https://github.com/civicrm/civicrm-core/blob/5.15.2/xml/templates/civicrm_country.tpl#L172).
In the iso 3166-1 list, Macedonia, Republic of is now called: **North Macedonia**
Can this be changed in the country list in CiviCRM?5.21.0seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/1164Editing event participant can affect wrong record if multiple participants ar...2023-08-24T10:07:23ZJKingsnorthEditing event participant can affect wrong record if multiple participants are opened in multiple tabs/windowsThis is an old issue (sorry I couldn't yet find the original issue in JIRA that was raised for this.)
It was recently attempted to get fixed here: https://lab.civicrm.org/dev/core/issues/1164 / https://github.com/civicrm/civicrm-core/pu...This is an old issue (sorry I couldn't yet find the original issue in JIRA that was raised for this.)
It was recently attempted to get fixed here: https://lab.civicrm.org/dev/core/issues/1164 / https://github.com/civicrm/civicrm-core/pull/14244 but a regression caused the patch for event participants to be reverted.
The problem, example of dmaster:
* Events > Find participants > Search
* 'Edit' one participant (Lincoln) in a new tab
* 'Edit' a second participant (Teresa) in a new tab
* Go to Lincoln's edit tab, change to no-show, save
* The change has been applied to the WRONG record (Event registration information for Teresa Terry has been updated.)
This is because the participant ID is being stored in the session.https://lab.civicrm.org/dev/core/-/issues/1160Events with templates but no custom field values don't save custom fields2021-04-07T01:44:01ZJonGoldEvents with templates but no custom field values don't save custom fieldsThis is closely related to core#553, but the fix for #553 doesn't solve this.
In core#553, if you have an event template that DOES specify values for custom fields, they don't get copied to a new event.
In this case, if you have an eve...This is closely related to core#553, but the fix for #553 doesn't solve this.
In core#553, if you have an event template that DOES specify values for custom fields, they don't get copied to a new event.
In this case, if you have an event template that does NOT specify values for custom fields, then any values you enter for custom fields are ignored.
This is true both with and without [PR #14063](https://github.com/civicrm/civicrm-core/pull/14063) so it's not an unreleased regression.https://lab.civicrm.org/dev/core/-/issues/1155Activity Summary Report sorts by activity type id than label2022-11-28T05:03:19ZmountevActivity Summary Report sorts by activity type id than labelActivity Summary Report when sorted by "Activity Type" sorts by type-id than activity type label, resulting in unexpected result.
![image](/uploads/7f8aa211b5b4a9313b111f1954aacf06/image.png)Activity Summary Report when sorted by "Activity Type" sorts by type-id than activity type label, resulting in unexpected result.
![image](/uploads/7f8aa211b5b4a9313b111f1954aacf06/image.png)https://lab.civicrm.org/dev/core/-/issues/1153Remove old code for standalone CiviCRM2021-12-17T13:32:06ZJKingsnorthRemove old code for standalone CiviCRMRemove \CRM_Core_Invoke::hackStandalone - and the single call to it. It refers to a removed function (CRM_Core_Standalone::).
This path/handle no longer exist and should be removed from the schema XML and DB?
civicrm/standalone/registe...Remove \CRM_Core_Invoke::hackStandalone - and the single call to it. It refers to a removed function (CRM_Core_Standalone::).
This path/handle no longer exist and should be removed from the schema XML and DB?
civicrm/standalone/register
CRM_Standalone_Form_Register
There's also a comment reference in \CRM\Core\Session.phphttps://lab.civicrm.org/dev/core/-/issues/1150Date/Time of the first activity in a repeat activity sequence is wrong if you...2022-11-27T05:03:22ZDaveDDate/Time of the first activity in a repeat activity sequence is wrong if you choose a start date in the repeating section1. Create an activity.
2. In the repeat activity section choose a start date/time.
3. When you click save the confirmation popup seems to have the correct date/times all listed.
4. The first activity that gets created has the activity da...1. Create an activity.
2. In the repeat activity section choose a start date/time.
3. When you click save the confirmation popup seems to have the correct date/times all listed.
4. The first activity that gets created has the activity date/time from the original (which is likely the current date/time), not the start date you picked.
Can reproduce on dmaster.demohttps://lab.civicrm.org/dev/core/-/issues/1149With logging turned on editing an activity displays as a deletion2019-07-29T13:37:33ZDaveDWith logging turned on editing an activity displays as a deletionI don't have any more details at the moment but can reproduce on dmaster.demo.
1. Turn on logging (system settings - misc).
2. Create an activity
3. Edit it.
4. View the "Contact Logging Report (Summary)". It shows it as a deletion.
Al...I don't have any more details at the moment but can reproduce on dmaster.demo.
1. Turn on logging (system settings - misc).
2. Create an activity
3. Edit it.
4. View the "Contact Logging Report (Summary)". It shows it as a deletion.
Also actual deletions don't show up at all in the report.https://lab.civicrm.org/dev/core/-/issues/1148Rationalise / stdise paths vs settings2022-11-27T05:03:22ZeileenRationalise / stdise paths vs settingsPer the long discussion here - https://github.com/civicrm/civicrm-core/pull/14718 we have some new 'paths' you can set for urls but others are in 'settings' which is a bit confusing. Ideally we would convert the settings ones but make th...Per the long discussion here - https://github.com/civicrm/civicrm-core/pull/14718 we have some new 'paths' you can set for urls but others are in 'settings' which is a bit confusing. Ideally we would convert the settings ones but make them overridable via 'settings' as expressed
"Perhaps it's possible to first use Civi::paths behind the scenes and have it populate/override paths set in $civicrm_settings?"