Development issueshttps://lab.civicrm.org/groups/dev/-/issues2019-11-24T19:59:34Zhttps://lab.civicrm.org/dev/core/-/issues/500CiviCase: dashboard summary count includes cases from inactive relationships2019-11-24T19:59:34ZbgmCiviCase: dashboard summary count includes cases from inactive relationshipsHow to reproduce:
* Create a case
* Assign it to someone, view their dashboard, it will show X cases
* Then re-assign it to someone else, view their dashboard, it will still show X cases (instead of X-1).How to reproduce:
* Create a case
* Assign it to someone, view their dashboard, it will show X cases
* Then re-assign it to someone else, view their dashboard, it will still show X cases (instead of X-1).5.11bgmbgmhttps://lab.civicrm.org/dev/core/-/issues/495CQ: Migrate simple Preferences & Settings forms to using a Generic class.2023-06-27T05:03:25ZeileenCQ: Migrate simple Preferences & Settings forms to using a Generic class.Per https://github.com/civicrm/civicrm-core/pull/13023 @mattwire & myself have recently worked on consolidating some of the setting form metadata handling. This is mostly done however our end goal is worth spelling out.
Basically the cl...Per https://github.com/civicrm/civicrm-core/pull/13023 @mattwire & myself have recently worked on consolidating some of the setting form metadata handling. This is mostly done however our end goal is worth spelling out.
Basically the class 'CRM_Admin_Form_Preferences_Event' and all classes that don't need special sauce would be removed & the xml would be altered to
```
<item>
<path>civicrm/admin/setting/preferences/event</path>
<title>CiviEvent Component Settings</title>
<page_callback>CRM_Admin_Form_Generic</page_callback>
</item>
```
This page would load settings based on filtering setting metadata - so any fields with a key in their metadata like this
```
settings_pages => [
'event' => ['weight' => 10]
]
```
would show up at the url above (note the last value on the url is the filter).
Extensions could use the existing alterSettingMetadata hook to add & remove fields from any pages that use the Generic form to choose their settings and extensions could add settings pages by just adding an xml entry & their metadata
We would convert simple forms & for more complex forms we would attempt to break the inheritance on the 2 existing forms (CRM_Admin_Form_Preferences & CRM_Admin_Form_Setting) in favour of using just the CRM_Admin_Form_SettingTrait in an attempt to grandfather them out.https://lab.civicrm.org/dev/core/-/issues/489Contribution reports don't show Custom Field Sets that extend Organizations o...2022-09-07T05:03:51ZguyiacContribution reports don't show Custom Field Sets that extend Organizations or HouseholdsNone of the contribution reports will show any custom field sets that are used explicitly for extending Organization or Household contact types. The same custom field set will show up if you change it in the database to extend All Contac...None of the contribution reports will show any custom field sets that are used explicitly for extending Organization or Household contact types. The same custom field set will show up if you change it in the database to extend All Contacts or Individuals.
I experienced this on a client site running CiviCRm 5.3.1 under WordPress, and tested it on the WordPress Civi master running 5.8.alpha1 at https://wpmaster.demo.civicrm.org/.https://lab.civicrm.org/dev/drupal/-/issues/35Drupal8: CiviCRM checks assume a single-database installation2020-10-26T15:25:58ZJonGoldDrupal8: CiviCRM checks assume a single-database installationI typically set up CiviCRM in a separate database, with a single MySQL user granted the minimum necessary permissions to change both CMS and CRM.
Drupal8 is incorporating CiviCRM checks into Drupal - but I get the error message (with th...I typically set up CiviCRM in a separate database, with a single MySQL user granted the minimum necessary permissions to change both CMS and CRM.
Drupal8 is incorporating CiviCRM checks into Drupal - but I get the error message (with the permissions below) that I don't have permission to create triggers on my database.
What's actually happening is I don't have permission to create triggers on the Drupal database. I can create triggers on the Civi db.
Below you can see the command I ran that bypassed the issue.
Since this blocks Drupal upgrades, it feels reasonably serious to resolve. I feel a little lost in D8 though - I was looking for `hook_requirement`, which is how I'd ordinarily add a status check in D7, but couldn't find it (except in the install file).
```
mysql> show grants for myorg_test@localhost;
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for myorg_test@localhost |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'myorg_test'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, TRIGGER ON `myorg_test_civi`.* TO 'myorg_test'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON `myorg_test_drupal`.* TO 'myorg_test'@'localhost' |
| GRANT EXECUTE, ALTER ROUTINE ON FUNCTION `myorg_test_civi`.`civicrm_strip_non_numeric` TO 'myorg_test'@'localhost' |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, TRIGGER ON `myorg_test_drupal`.* TO 'myorg_test'@'localhost';
Query OK, 0 rows affected (0.00 sec)```https://lab.civicrm.org/dev/core/-/issues/479Contribution Summary report throw DB error with custom data and soft credit f...2018-10-27T14:14:22ZyashodhaContribution Summary report throw DB error with custom data and soft credit fieldsSteps to replicate :
1. Go to Contribution Summary report, select column Soft Credit Amount Stats
2. Select filter criteria on any custom field, and search.
It throws DB error:
```
Database Error Code: Unknown column 'value_constituent...Steps to replicate :
1. Go to Contribution Summary report, select column Soft Credit Amount Stats
2. Select filter criteria on any custom field, and search.
It throws DB error:
```
Database Error Code: Unknown column 'value_constituent_information_1_civireport.most_important_issue_1' in 'where clause', 1054
Additional Details:
Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -19
[message] => DB Error: no such field
[mode] => 16
[debug_info] => SELECT SQL_CALC_FOUND_ROWS contact_civireport.id as civicrm_contact_id, DATE_SUB(contribution_civireport.receive_date, INTERVAL (DAYOFMONTH(contribution_civireport.receive_date)-1) DAY) as civicrm_contribution_receive_date_start, MONTH(contribution_civireport.receive_date) AS civicrm_contribution_receive_date_subtotal, MONTHNAME(contribution_civireport.receive_date) AS civicrm_contribution_receive_date_interval, contribution_civireport.currency as civicrm_contribution_currency, COUNT(contribution_civireport.total_amount) as civicrm_contribution_total_amount_count, SUM(contribution_civireport.total_amount) as civicrm_contribution_total_amount_sum, ROUND(AVG(contribution_civireport.total_amount),2) as civicrm_contribution_total_amount_avg, COUNT(contribution_soft_civireport.amount) as civicrm_contribution_soft_soft_amount_count, SUM(contribution_soft_civireport.amount) as civicrm_contribution_soft_soft_amount_sum, ROUND(AVG(contribution_soft_civireport.amount),2) as civicrm_contribution_soft_soft_amount_avg FROM civicrm_contact contact_civireport
INNER JOIN civicrm_contribution contribution_civireport
ON contact_civireport.id = contribution_civireport.contact_id AND
contribution_civireport.is_test = 0
LEFT JOIN civicrm_contribution_soft contribution_soft_civireport
ON contribution_soft_civireport.contribution_id = contribution_civireport.id AND contribution_soft_civireport.id = (SELECT MIN(id) FROM civicrm_contribution_soft cs WHERE cs.contribution_id = contribution_civireport.id)
LEFT JOIN civicrm_financial_type financial_type_civireport
ON contribution_civireport.financial_type_id =financial_type_civireport.id
WHERE ( contribution_civireport.contribution_status_id IN (1) ) AND ( ( value_constituent_information_1_civireport.most_important_issue_1 IN ( 'Edu') ) ) GROUP BY YEAR(contribution_civireport.receive_date), MONTH(contribution_civireport.receive_date) WITH ROLLUP LIMIT 0, 50 [nativecode=1054 ** Unknown column 'value_constituent_information_1_civireport.most_important_issue_1' in 'where clause']
[type] => DB_Error
[user_info] => SELECT SQL_CALC_FOUND_ROWS contact_civireport.id as civicrm_contact_id, DATE_SUB(contribution_civireport.receive_date, INTERVAL (DAYOFMONTH(contribution_civireport.receive_date)-1) DAY) as civicrm_contribution_receive_date_start, MONTH(contribution_civireport.receive_date) AS civicrm_contribution_receive_date_subtotal, MONTHNAME(contribution_civireport.receive_date) AS civicrm_contribution_receive_date_interval, contribution_civireport.currency as civicrm_contribution_currency, COUNT(contribution_civireport.total_amount) as civicrm_contribution_total_amount_count, SUM(contribution_civireport.total_amount) as civicrm_contribution_total_amount_sum, ROUND(AVG(contribution_civireport.total_amount),2) as civicrm_contribution_total_amount_avg, COUNT(contribution_soft_civireport.amount) as civicrm_contribution_soft_soft_amount_count, SUM(contribution_soft_civireport.amount) as civicrm_contribution_soft_soft_amount_sum, ROUND(AVG(contribution_soft_civireport.amount),2) as civicrm_contribution_soft_soft_amount_avg FROM civicrm_contact contact_civireport
INNER JOIN civicrm_contribution contribution_civireport
ON contact_civireport.id = contribution_civireport.contact_id AND
contribution_civireport.is_test = 0
LEFT JOIN civicrm_contribution_soft contribution_soft_civireport
ON contribution_soft_civireport.contribution_id = contribution_civireport.id AND contribution_soft_civireport.id = (SELECT MIN(id) FROM civicrm_contribution_soft cs WHERE cs.contribution_id = contribution_civireport.id)
LEFT JOIN civicrm_financial_type financial_type_civireport
ON contribution_civireport.financial_type_id =financial_type_civireport.id
WHERE ( contribution_civireport.contribution_status_id IN (1) ) AND ( ( value_constituent_information_1_civireport.most_important_issue_1 IN ( 'Edu') ) ) GROUP BY YEAR(contribution_civireport.receive_date), MONTH(contribution_civireport.receive_date) WITH ROLLUP LIMIT 0, 50 [nativecode=1054 ** Unknown column 'value_constituent_information_1_civireport.most_important_issue_1' in 'where clause']
[to_string] => [db_error: message="DB Error: no such field" code=-19 mode=callback callback=CRM_Core_Error::handle prefix="" info="SELECT SQL_CALC_FOUND_ROWS contact_civireport.id as civicrm_contact_id, DATE_SUB(contribution_civireport.receive_date, INTERVAL (DAYOFMONTH(contribution_civireport.receive_date)-1) DAY) as civicrm_contribution_receive_date_start, MONTH(contribution_civireport.receive_date) AS civicrm_contribution_receive_date_subtotal, MONTHNAME(contribution_civireport.receive_date) AS civicrm_contribution_receive_date_interval, contribution_civireport.currency as civicrm_contribution_currency, COUNT(contribution_civireport.total_amount) as civicrm_contribution_total_amount_count, SUM(contribution_civireport.total_amount) as civicrm_contribution_total_amount_sum, ROUND(AVG(contribution_civireport.total_amount),2) as civicrm_contribution_total_amount_avg, COUNT(contribution_soft_civireport.amount) as civicrm_contribution_soft_soft_amount_count, SUM(contribution_soft_civireport.amount) as civicrm_contribution_soft_soft_amount_sum, ROUND(AVG(contribution_soft_civireport.amount),2) as civicrm_contribution_soft_soft_amount_avg FROM civicrm_contact contact_civireport
INNER JOIN civicrm_contribution contribution_civireport
ON contact_civireport.id = contribution_civireport.contact_id AND
contribution_civireport.is_test = 0
LEFT JOIN civicrm_contribution_soft contribution_soft_civireport
ON contribution_soft_civireport.contribution_id = contribution_civireport.id AND contribution_soft_civireport.id = (SELECT MIN(id) FROM civicrm_contribution_soft cs WHERE cs.contribution_id = contribution_civireport.id)
LEFT JOIN civicrm_financial_type financial_type_civireport
ON contribution_civireport.financial_type_id =financial_type_civireport.id
WHERE ( contribution_civireport.contribution_status_id IN (1) ) AND ( ( value_constituent_information_1_civireport.most_important_issue_1 IN ( 'Edu') ) ) GROUP BY YEAR(contribution_civireport.receive_date), MONTH(contribution_civireport.receive_date) WITH ROLLUP LIMIT 0, 50 [nativecode=1054 ** Unknown column 'value_constituent_information_1_civireport.most_important_issue_1' in 'where clause']"]
)
```yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/477Print Summary is missing some contact info2018-10-29T20:49:47ZJonGoldPrint Summary is missing some contact infoFrom Stack Exchange: https://civicrm.stackexchange.com/q/27063/12
To replicate:
* Open any individual's contact.
* From the "Actions" button, select "Print Summary".
**Expected**
The contact's employer/job title should be in the print...From Stack Exchange: https://civicrm.stackexchange.com/q/27063/12
To replicate:
* Open any individual's contact.
* From the "Actions" button, select "Print Summary".
**Expected**
The contact's employer/job title should be in the print summary.
**Actual**
It's not.
The last line of `<civiroot>/templates/CRM/Contact/Page/View/Print.tpl` is:
```js
cj('#contact-summary' ).children(':first').remove();
```
The reason for this is lost to the ages, but I suspect this referred to some other DOM element that's long since been removed.
Personally I'd deprecate this whole functionality - but apparently folks are using it, so let's make it work.
If someone wants to mark this "concept: approved" I'll submit the PR.5.8https://lab.civicrm.org/dev/core/-/issues/468Missing transaction ids on reports2023-09-10T05:03:24ZfrancescbassasMissing transaction ids on reports**How to reproduce**
1. Create `contributionA` on `contactA` without assigning any *transaction_id*. A record on `civicrm_contribution` is created with `transaction_id = NULL`
2. Modify `contributionA` to assign a *transaction_id = aaaa...**How to reproduce**
1. Create `contributionA` on `contactA` without assigning any *transaction_id*. A record on `civicrm_contribution` is created with `transaction_id = NULL`
2. Modify `contributionA` to assign a *transaction_id = aaaaaa*. The record previously created on `civicrm_contribution` stills have `transaction_id = ǸULL`
3. Create `contributionB` on `contactA` with a *transaction_id = bbbbbb*
4. Visualize a *Contribution Details* report with column *transaction_id* enabled and filtering results for `contactA`
5. Note that *transaction_id* column for `contributionA` is *empty* instead of *aaaaaa* and *transaction_id* column for `contributionB` is *bbbbbb*
Same happens on *Event Participants List* report for event related contributions in which the *transaction_id* was edited a posteriori.https://lab.civicrm.org/dev/core/-/issues/465Multiselect for Event Type in Advanced Search2023-06-03T05:03:27ZfrancescbassasMultiselect for Event Type in Advanced SearchOriginal issue: https://issues.civicrm.org/jira/browse/CRM-20183
Affected versions: at least from 4.7.16
[Richard](https://issues.civicrm.org/jira/secure/ViewProfile.jspa?name=magnolia61) reports:
> Hello there, for creating a specifi...Original issue: https://issues.civicrm.org/jira/browse/CRM-20183
Affected versions: at least from 4.7.16
[Richard](https://issues.civicrm.org/jira/secure/ViewProfile.jspa?name=magnolia61) reports:
> Hello there, for creating a specific smartgroup I want to be able to select multiple event types from the advanced search page.
>
> The event type is currently a one value field. I would love to make it behave like the participant status or role so more than one can be selected.
>
> Who can point me in the right direction. When I know which files are involved and see some examples I think I can create the PR myself.
>
> This would definitely make our life easier, since the difference search options (the builder, participant search and advanced search are so different in behavior
![Screenshot_from_2017-02-26_17-02-54](/uploads/83d2cb5614dade321364c4fab597dc79/Screenshot_from_2017-02-26_17-02-54.png)https://lab.civicrm.org/dev/financial/-/issues/34Incorrect allocation of payment on an edited multi-line item event registration2019-10-29T19:27:12ZJoeMurrayIncorrect allocation of payment on an edited multi-line item event registrationOn default data set on dmaster, create new Financial Type Event Fees 2. At Administer > Financial Accounts, navigate to the Financial Account this creates also called Event Fees 2 and enter 4301 as the Accounting Code.
Create event wit...On default data set on dmaster, create new Financial Type Event Fees 2. At Administer > Financial Accounts, navigate to the Financial Account this creates also called Event Fees 2 and enter 4301 as the Accounting Code.
Create event with priceset with two fields, first with financial Type Event fees, second with FT of Event Fees 2. Register in event with payment of say $25 for first ticket (Event Fees) and $10 for second ticket (Event fees 2), total $35.
Edit Event registration. Click Change selections. Change quantity for second field from 1 to 5, line item total of $50, contribution total of $75, total paid $35. Save. Balance is $40. Click Record Payment.
Under Contributions > Accounting Batches > New Batch, create a batch, assign the relevant transactions of $35 (original payment), $40 (edit with implied purchase with pay later) and $40 (payment of outstanding balance) to the new batch and export to csv.
At Contributions > Accounting Batches > Open Batches, select the batch just created and export as csv, open and view the resulting transactions:
[Financial_Transactions_3_20180807210702.csv](/uploads/0cccae0ceba1707701f9cf699f52a3e3/Financial_Transactions_3_20180807210702.csv)
The initial purchase (first two lines) and the edit of the order to increase the number of event fees from $10 to $50 are (the third line) are all correct. However, the payment of the outstanding balance is incorrect. Instead of a single line with a $40 payment (Debit Bank Account 1150, Credit Accounts Receivable 1200), there are two lines:
Debit Bank Account 1150, Credit Accounts Receivable 1200: $16.67, Item description: Member
Debit Bank Account 1150, Credit Accounts Receivable 1200: $23.33, Item description: Guest
It seems the payment is being equally allocated to the two line items in proportion to their current line item total. If there had been a simple partial payment, this would be correct. The algorithm for determining the allocation should not be based on the line item totals (or more accurately, their corresponding financial_item.amount), but on the amount of each financial item that has been paid so far (entity_financial_trxn.amount for the entries linking financial_trxn records to these financial_item records.
We should first verify that the entity_financial_trxn.amount fields are being properly recorded. Then it will be apparent that sum(entity_financial_trxn.amount) pointing to first financial_item is $25, the same as its financial_item.amount, while sum(entity_financial_trxn.amount) pointing to second financial_item is $10, which is $40 less than the financial_item.amount. So all of the second payment would be allocated to a single new entity_financial_trxn.amount of $40 pointing to the second financial_item.
This is not a high priority since the two entries add up to the same as the proposed single entry from an accounting perspective. Having two general journal entries is confusing, and the item description of one is inaccurate, so a fix would be good.Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/462Export temporary tables cause Advanced Logging warning of missing log tables2018-12-12T22:29:36ZbgmExport temporary tables cause Advanced Logging warning of missing log tables`CRM/Utils/SQL/TempTable.php` was introduced around CiviCRM 5.3. It creates temp tables such as:
* `civicrm_tmp_d_{12}_{32}` (temporary tables, but created as ordinary tables)
* `civicrm_tmp_e_{12}_{32}` (ephemeral temp tables, automati...`CRM/Utils/SQL/TempTable.php` was introduced around CiviCRM 5.3. It creates temp tables such as:
* `civicrm_tmp_d_{12}_{32}` (temporary tables, but created as ordinary tables)
* `civicrm_tmp_e_{12}_{32}` (ephemeral temp tables, automatically deleted by mysql)
After a while, depending on cleanup, users of CiviCRM using Advanced Logging will see warnings that there are missing log tables.
cc @jackrabbithanna @totten5.7bgmbgmhttps://lab.civicrm.org/dev/core/-/issues/445Proposal - Custom Fields, Is this Field Searchable? option should be enabled ...2021-04-13T03:25:40Zjustinfreeman (Agileware)Proposal - Custom Fields, Is this Field Searchable? option should be enabled by default, currently it is disabled by defaultWhen creating Custom Fields the option **Is this Field Searchable?** is **disabled by default** and as a result any new Custom Field is not searchable. This is frustrating since there is rarely a case when you would not want a field to b...When creating Custom Fields the option **Is this Field Searchable?** is **disabled by default** and as a result any new Custom Field is not searchable. This is frustrating since there is rarely a case when you would not want a field to be available in search. For end users the experience of adding a Custom Field in CiviCRM is like this:
1. Add the Custom Field
1. Add some data to CiviCRM using the new Custom Field
1. Open Search and try to search using the new Custom Field, it is not shown
1. Confusion about why it is not shown in Search
1. Finally, navigate back to the Custom Field and enable the option, Is this Field Searchable?
1. Return to Search and bingo! There it is.
1. Repeat steps for every Custom Field created.
**Proposed Change**
The **Is this Field Searchable?** option should be **enabled by default**, making new Custom Fields available in Search when created - reducing potential confusion as noted above. The user would then have to explicitly disable this option to remove from search.
Agileware Ref: CIVICRM-964https://lab.civicrm.org/dev/core/-/issues/444Updated alterReportVars or new hook for reports2023-08-31T08:51:04ZJoeMurrayUpdated alterReportVars or new hook for reportsThere is no way to currently change a core report to get it to expose custom fields for a component if it does not do it already. It's not unusual an unusual use case to combine creating a custom field with exposing it in a core report....There is no way to currently change a core report to get it to expose custom fields for a component if it does not do it already. It's not unusual an unusual use case to combine creating a custom field with exposing it in a core report. What's needed is to be able to use a hook to add values to $_customGroupExtends. This would also allow extensions to define their own custom fields and add them to a report.
The alterReportVar hook is one place where this functionality could be added https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterReportVar/. The current three supported varTypes, columns, rows and sql, could be extended by a new one, customFields, or some similar name.
There has been criticism in the past of this hook. IIRC @eileen the concern was especially around how it was not well designed for the sql argument, but I don't recall the details. Perhaps it was that the hook was trying to do too many things and provided too broad a surface.
Rather than further complexifying this hook, an alternative approach would be to create a new one focussed exclusively on the issue of changing custom field exposed by a report. Perhaps it could be call alterReportCustomFields.
So we'd like feedback on
1. Should there be hook support for changing the custom fields exposed by reports?
2. If so, should we change alterReportVar or create a new hook, alterReportCustomFields?https://lab.civicrm.org/dev/core/-/issues/442Misc form issues2018-12-08T21:12:48ZAkA84Misc form issuesFound a handful of form-related issues that are pretty quick to fix, just wanted to have the green light on them before opening the PR. All screenshots are taken from https://dmaster.demo.civicrm.org (`v5.8.alpha1`)
## Wrong layout in "...Found a handful of form-related issues that are pretty quick to fix, just wanted to have the green light on them before opening the PR. All screenshots are taken from https://dmaster.demo.civicrm.org (`v5.8.alpha1`)
## Wrong layout in "Tags and Groups" accordion of "New Individual" form
The "Tag(s)" label+select group is missing a `<br>`
*Before*
![tags-before](/uploads/69da499d7792714de2dcf417981cfab7/tags-before.png)
*After*
![tags-after](/uploads/1fc640e4a276e0e0e6b7d70917d7337a/tags-after.png)
## Missing class on text fields in "Dedupe exceptions"
The input fields are missing the standard `crm-form-text class
*Before*
![dedupe-before](/uploads/0861f7c3c98f5b0a8a722b98a858fe92/dedupe-before.png)
*After*
![dedupe-after](/uploads/ca670378bf85ed8b3b8d8caba04764d4/dedupe-after.png)
## Wrong class on `<select>`s in "Submit Credit Card Contribution" modal
The <select> elements have the wrong class: `crm-form-date`
![contribute-select-before](/uploads/09ec405fac0bac56fe5c5cd10db1589f/contribute-select-before.png)
Applying the correct class, `crm-form-select` doesn't change much, but allows Shoreditch to style the selects correctly
![contribute-select-after](/uploads/3fd8125dcae0301d83381e329f543a3e/contribute-select-after.png)
## Textareas instead of text input in "Word Replacements" form
This one I'm not really sure is really a markup error, but it looks to me that instead of `<textarea>` elements, the form would benefit by using `input[type="text"]` fields instead (see how the checkboxes get a vertical alignment, for example)
*Before*
![replacement-before](/uploads/47d5a07307d2bb2d2a19850626ad8ee3/replacement-before.png)
*After*
![replacement-after](/uploads/362b5b8591a1171121562e31ca46dded/replacement-after.png)5.9https://lab.civicrm.org/dev/core/-/issues/434Scheduled Reminder Error On Using Absolute Date With Repeat2019-01-08T07:47:10ZvarshithScheduled Reminder Error On Using Absolute Date With RepeatOverview
--------
When adding a scheduled reminder with an 'absolute_date' initially and then enabling 'Repeat'and adding conditions results in an SQL error when executed.
Technical Details
-----------------
A function in RecipientBuild...Overview
--------
When adding a scheduled reminder with an 'absolute_date' initially and then enabling 'Repeat'and adding conditions results in an SQL error when executed.
Technical Details
-----------------
A function in RecipientBuilder.php, 'prepareRepetitionEndFilter' expects a date field which would be empty when using an 'absolute_date'. This causes the SQL query to be constructed with an empty string inside thus creating a syntax error.5.11https://lab.civicrm.org/dev/core/-/issues/427Let CiviCRM accept unix domain sockets for the database URL.2022-09-03T05:03:50ZatheiaLet CiviCRM accept unix domain sockets for the database URL.Currently the database address input of the onboarding page expects an address of the format of $host:$port number.
The issue is that some databases may be set up instead to communicate through a unix domain socket.
A solution would be...Currently the database address input of the onboarding page expects an address of the format of $host:$port number.
The issue is that some databases may be set up instead to communicate through a unix domain socket.
A solution would be to allow for additional address parsing that would recognise the use of a socket instead of a port number.
This address format is supported by mysqli_connect already, so we just need to adapt our handling of the input field. The solution would allow the user to specify the address something like unix:///var/run/mysql-socket.
Best wishes,
Alexhttps://lab.civicrm.org/dev/core/-/issues/425"Force Secure URLs" setting sometimes does not behave as expected, deprecate ...2022-08-30T05:03:32Zxurizaemon"Force Secure URLs" setting sometimes does not behave as expected, deprecate it ... Slowly :)Various issues have reported over time that the SSL enforcement doesn't work as expected.
* [CRM_Core_Invoke::runItem()](https://github.com/civicrm/civicrm-core/blob/ae3dbe533c627d8882a59f15502ebeb1a60376f8/CRM/Core/Invoke.php#L188) cal...Various issues have reported over time that the SSL enforcement doesn't work as expected.
* [CRM_Core_Invoke::runItem()](https://github.com/civicrm/civicrm-core/blob/ae3dbe533c627d8882a59f15502ebeb1a60376f8/CRM/Core/Invoke.php#L188) calls CRM_Utils_System::redirectToSSL()
* [CRM_Utils_System::redirectToSSL()](https://github.com/civicrm/civicrm-core/blob/7a47ff14f4553230ff12ae19337ba750a421a898/CRM/Utils/System.php#L1177) uses [CRM_Utils_System::isSSL()](https://github.com/civicrm/civicrm-core/blob/7a47ff14f4553230ff12ae19337ba750a421a898/CRM/Utils/System.php#L1164)
* The setting is named "enableSSL" but it kind of works like "enforce SSL" (you can enable SSL and have it set to false, and if it's true then it will try to *enforce* SSL)
For some hosting environments, this (in particular the method of detecting whether a request is SSL or not) leads to confusing behaviour where a site will reject attempts to visit particular pages (`civicrm/admin/*` but not `civicrm/*`?), and show "access denied" in Drupal logs, and serve circular 302 redirects.
What we have apparently may not work if you are behind an SSL terminator, and probably for other setups which aren't accounted for.
Previous issues / PRs / work on that setting:
* [GH#9452](https://github.com/civicrm/civicrm-core/pull/9452) (see here for me going :shrug: :angry: about how we verify SSL)
* [CRM-11160](https://issues.civicrm.org/jira/browse/CRM-11160), [GH#1098](https://github.com/civicrm/civicrm-core/pull/1098)
* [CRM-16639](https://issues.civicrm.org/jira/browse/CRM-16639)
* [CRM-20448](https://issues.civicrm.org/jira/browse/CRM-20448)
* [CRM-19609](https://issues.civicrm.org/jira/browse/CRM-19609)
My opinion is that it's tricky to work out in CiviCRM whether the request is being served via SSL or not and that this is best resolved at the most user-facing layer - it can be tricky to resolve in Drupal too if you're behind haproxy+varnish etc, and for @alexymik it seemed to be raising issues under Docker ([1](https://chat.civicrm.org/civicrm/pl/sbadqkybzjgh9biadb46776fbe), [2](https://chat.civicrm.org/civicrm/pl/8izphwoi9ifa7gs7br5y4k1tyo)).
### How @xurizaemon thinks you should ensure CiviCRM is SSL'd
* Enforce SSL at the client-facing proxy, if you have one. Terminating SSL here is fine.
* If clients talk directly to nginx / apache / what have you, try to enforce SSL here as part of canonical URL config.
* .htaccess is next best after webserver config if you're using a server that supports it. Fine for small sites.
* If you can't do that, enforce SSL in the CMS using a module like Drupal's Securepages.
* Last resort should be CiviCRM, but we should really encourage people to do any of the above (in that order).
* Since you aren't any more relying on CiviCRM to enforce SSL, you can now set "enableSSL" to NO as it's a poorly named setting which may have unfortunate side-effects. Visit CiviCRM > Settings > Resource URLs and set " Force Secure URLs (SSL)" to "No".
So - I get that people are using this setting, I don't want to break things for them (that'll reduce security), but I did want to write up my reasoning behind why we should not encourage relying on that setting.
I propose we start defaulting it to off and aim to hide / deprecate / remove the config over time.
As a first step, I'm going to PR a log message that would have saved @alexymik a few hours of painful debugging today :grin:5.7https://lab.civicrm.org/dev/core/-/issues/412Avoid truncated UTF-8 strings when using substr()2018-10-24T20:56:26ZjensschuppeAvoid truncated UTF-8 strings when using substr()[`CRM_Core_BAO_Mapping::getCustomGroupName()`](https://lab.civicrm.org/dev/core/blob/master/CRM/Core/BAO/Mapping.php#L1000-1002) truncates custom group names when longer than 10 characters using `substr()`, which causes multibyte charact...[`CRM_Core_BAO_Mapping::getCustomGroupName()`](https://lab.civicrm.org/dev/core/blob/master/CRM/Core/BAO/Mapping.php#L1000-1002) truncates custom group names when longer than 10 characters using `substr()`, which causes multibyte characters being cut in half when at the truncating position.
This should use `CRM_Utils_String::ellipsify()` instead, which utilises `mb_substr()`.
Maybe someone with more core code insight should inspect a `grep substr(` result for more places where that happens.
Steps to reproduce:
1. Create a custom field group with a name with a multibyte character at the 10th position, e.g. German umlaut `ö`
2. Add any custom field
3. Do a contact search, select some contacts, choose "export" action
4. Choose "Select fields to export"
5. Notice a JavaScript console error: "Uncaught syntax error: Unexpected token ,", inspect the source and notice the missing custom field name for the field in the custom field group
Edit: It should be noted that this causes the export field selection screen not working (no fields can be selected) anymore because of the JavaScript error
Patch: [avoid-truncated-utf-8-strings-when-using-substr.diff](/uploads/5af89995ffab165ccab95d8fed961a8e/avoid-truncated-utf-8-strings-when-using-substr.diff)5.8https://lab.civicrm.org/dev/core/-/issues/401Processing profiles during user registration ignores e-mail address2022-08-29T05:03:38ZjensschuppeProcessing profiles during user registration ignores e-mail addressWhen using a profile on the user registration form for mailing list subscription, the newly registered user/contact should then be going through the usual double-opt-in process. This is not happening.
The following code in `CRM_Profile_...When using a profile on the user registration form for mailing list subscription, the newly registered user/contact should then be going through the usual double-opt-in process. This is not happening.
The following code in `CRM_Profile_Form::buildQuickForm()` (line 747) causes this side effect:
```PHP
// since the CMS manages the email field, suppress the email display if in
// register mode which occur within the CMS form
if ($this->_mode == self::MODE_REGISTER && substr($name, 0, 5) == 'email') {
unset($this->_fields[$name]);
continue;
}
```
This removes any e-mail field from a profile when used on the user registration form (as the CMS already collects an e-mail address). That's fine. However, nothing takes care of passing the submitted e-mail address back into the profile processing cycle, which causes group memberships being registered as "Added (by admin)", which (as far as we recognized) does not trigger the double-opt-in process for this contact.
Within `CRM_Profile_Form::postProcess()` (lines starting 1156 and 1202), the profile submission is being excluded from double opt-in functionality because of the missing e-mail address.https://lab.civicrm.org/dev/core/-/issues/389When using custom fields for smart group criteria with relative dates the gro...2019-12-03T07:22:12ZjasonobrownWhen using custom fields for smart group criteria with relative dates the group does not respect the relative date over timeIf you create a smart group using the relative (dynamic, rolling, "this week", etc...) dates for a custom field, once you save the smart group the dates are no longer relative. It creates/updates the group with static dates that match yo...If you create a smart group using the relative (dynamic, rolling, "this week", etc...) dates for a custom field, once you save the smart group the dates are no longer relative. It creates/updates the group with static dates that match your relative dates at the time you save it.
https://issues.civicrm.org/jira/browse/CRM-20499e5.8https://lab.civicrm.org/dev/core/-/issues/373Custom field set behaving incorrectly in Contributions2022-09-16T05:03:38ZAndy ClarkCustom field set behaving incorrectly in ContributionsA custom field set that is flagged to appear only for 'Donations' correctly appears when a contribution is made. However if a field in that set isn't completed or is in error, an error message is correctly shown but the custom field set ...A custom field set that is flagged to appear only for 'Donations' correctly appears when a contribution is made. However if a field in that set isn't completed or is in error, an error message is correctly shown but the custom field set disappears and is replaced by 'Additional Details' which is opened up. To enter the custom field set you have to start again with the contribution. This only happens when the custom field set is **not ** set to 'Any'. The problem found in 5.4.1, and can be reproduced on the demo sites which today are at 5.6 alpha1. Problem is also present in 5.1.2 but not sure about 5.2 or 5.3.