CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2020-03-05T10:13:32Zhttps://lab.civicrm.org/dev/core/-/issues/1628Fix display of administrator permissions in WordPress Multisite2020-03-05T10:13:32ZhaystackFix display of administrator permissions in WordPress MultisiteOverview
----------------------------------------
In WordPress Multisite, roles function somewhat differently to Single Site: in Multisite there is a "Network Administrator" with greater capabilities than a "Site Administrator". At prese...Overview
----------------------------------------
In WordPress Multisite, roles function somewhat differently to Single Site: in Multisite there is a "Network Administrator" with greater capabilities than a "Site Administrator". At present, the "WordPress Permissions" screen does not take this into account.
Example use-case
----------------------------------------
1. In WordPress Multisite, visit the "WordPress Permissions" screen as a "Network Administrator"
1. Notice that there is no column for modifying the permissions for a "Site Administrator"
Current behaviour
----------------------------------------
A "Network Administrator" cannot limit the permissions for a "Site Administrator"
Proposed behaviour
----------------------------------------
A "Network Administrator" should be able to limit the permissions for a "Site Administrator"
Comments
----------------------------------------
PR to follow.haystackhaystackhttps://lab.civicrm.org/dev/core/-/issues/1625IDN-Domain Emails - dont pass email check.2022-09-29T14:42:46ZRar9IDN-Domain Emails - dont pass email check.See Issue https://issues.civicrm.org/jira/browse/CRM-15975 and
Email validation is too restrictive (rejects IDN addresses) https://issues.civicrm.org/jira/browse/CRM-16313
Emails with these Characters should pass
https://www.denic.de/...See Issue https://issues.civicrm.org/jira/browse/CRM-15975 and
Email validation is too restrictive (rejects IDN addresses) https://issues.civicrm.org/jira/browse/CRM-16313
Emails with these Characters should pass
https://www.denic.de/en/know-how/idn-domains/idn-character-list/
Last tested with Civicrm 5.22.1 + Drupal 7
Php 7.2x Intl enabled.https://lab.civicrm.org/dev/core/-/issues/1621cascade delete of civicrm_financial_type to civicrm_entity_financial_account2023-02-20T05:04:09ZJoeMurraycascade delete of civicrm_financial_type to civicrm_entity_financial_account1. Background
The civicrm_entity_financial_account table stores, amongst other things, the relationships between civicrm_financial_type and civicrm_financial_account records.
2. Current situation
When financial types are deleted, the...1. Background
The civicrm_entity_financial_account table stores, amongst other things, the relationships between civicrm_financial_type and civicrm_financial_account records.
2. Current situation
When financial types are deleted, there are stranded records in civicrm_entity_financial_account with no referent for their financial_type_id.
3. Proposed change
When a financial type with id=n is going to be deleted, first
```sql
DELETE FROM civicrm_entity_financial_account WHERE financial_type_id=n;
```
On upgrade, run something like
```sql
DELETE efa.* FROM civicrm_entity_financial_account efa LEFT JOIN civicrm_financial_type ft ON efa.financial_type_id=ft.id WHERE ft.id IS NULL;
```seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/1620Extend content array of hook_civicrm_alterMailContent2023-03-18T05:03:32ZscardiniusExtend content array of hook_civicrm_alterMailContentOverview
----------------------------------------
Extend `$content` array of alterMailContent hook
Example use-case
----------------------------------------
More fields improve possibilities durign processing the hook.
Current behavio...Overview
----------------------------------------
Extend `$content` array of alterMailContent hook
Example use-case
----------------------------------------
More fields improve possibilities durign processing the hook.
Current behaviour
----------------------------------------
According to doc https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterMailContent/ the `$content` array should have mailing_id field/index. However during sending mailings there are only 'html', 'text' and 'subject' indexes.
Proposed behaviour
----------------------------------------
The `$content` is generated by CRM_Mailing_BAO_Mailing->getTemplates() method. This method should always adds more fields, like 'mailing_id' or 'campaign_id' which can be used during processing the hook.
Comments
----------------------------------------
This modification is used for altering urls with utm params, see https://github.com/WeMoveEU/utmaltorhttps://lab.civicrm.org/dev/core/-/issues/1616Activity Search doesn't display activities with no "With Contact"2023-02-16T15:15:35ZJonGoldActivity Search doesn't display activities with no "With Contact"To replicate:
* Create a new activity without anyone listed as "With Contact".
* Search for the activity from **Find Activities**.
I hadn't considered the use case of an activity with no "With Contact", but apparently my client has - an...To replicate:
* Create a new activity without anyone listed as "With Contact".
* Search for the activity from **Find Activities**.
I hadn't considered the use case of an activity with no "With Contact", but apparently my client has - and it's not a required field. So it seems that these activities should show up in search.https://lab.civicrm.org/dev/core/-/issues/1615Migrate installers to "setup" API2024-02-07T01:05:15ZtottenMigrate installers to "setup" APIOverview
----------------------------------------
The aim of this filing is to do a round of consolidation/reconciliation in the Civi installer code: get rid of `install/*.php` and instead use `civicrm-setup`. The latter offers:
* Bett...Overview
----------------------------------------
The aim of this filing is to do a round of consolidation/reconciliation in the Civi installer code: get rid of `install/*.php` and instead use `civicrm-setup`. The latter offers:
* Better APIs and better organization - e.g. you can drill-down on most installation tasks by browsing the [plugins](https://github.com/civicrm/civicrm-setup/tree/master/plugins/) (esp `installFiles` and `installDatabase`); inspect the list of event-listeners; and [programmatically manage plugins](https://github.com/civicrm/civicrm-setup/blob/master/docs/plugins.md).
* More sensible UX - the list of options is more useful for a new admin initializing the system.
![Screen_Shot_2020-02-14_at_6.03.12_PM](/uploads/f107602f3ebd5f60b6870322711629a5/Screen_Shot_2020-02-14_at_6.03.12_PM.png)
Some background: https://civicrm.org/blog/totten/developers-revising-the-civicrm-installer-library-cli-wordpress
Use-cases
----------------------------------------
There are several different use-cases for performing installation; most permutations of the following variables are fair:
1. __UF/CMS__: Civi can be installed on top of Backdrop, Drupal 6/7/8, Joomla, WordPress.
2. __Medium__: Civi can be installed through:
* Web installation screens (e.g. `civicrm/install/index.php` and the Joomla installer)
* CLI installers (e.g. `cv core:install`)
* Scripts/packagers (e.g. Drupal "profiles", `civibuild`, `docker`)
3. __Options__: Civi can be configured with:
* CMS DB or separate DB
* Empty data or demo data
* "Components" (enabled/disabled)
* "Extensions" (enabled/disabled)
* "Settings" (defaults/overrides)
* Path/URL definitions (defaults/overrides)
Current behavior
----------------------------------------
There are separate installers. There are number of arbitrary differences and un-DRY things.
Proposed behavior
----------------------------------------
All installers use a PHP API for Civi installation.
Process
----------------------------------------
There are several things to consolidate here; it's not just one commit or PR. Suggested tasks (in approximate order):
* [x] __Move code from `civicrm-setup.git` into `civicrm-core.git`__ (*done, [#16618](https://github.com/civicrm/civicrm-core/pull/16618)*):
* `civicrm-setup` started as a separate repo so that I could iterate quickly in the early stages. However, as this gets rolled into more use-cases, it's likely to get referenced in more places (e.g. `civicrm-drupal-8.git`, `civicrm-drupal.git`, `civicrm-wordpress.git`, `civicrm-backdrop.git`), and it is also reasonable to expect a few small patches. Unfortunately, juggling small patches in that arrangement would be mentally draining. Migrating the code into `civicrm-core.git` will remove one layer of complexity.
* Like the API framework or DB framework, the *installer* is sufficiently important to `civicrm-core` go into the main repo.
* [x] __Move docs from `civicrm-setup.git` into `civicrm-dev-docs.git`__ (*done, see [Dev Guide: Setup Reference](https://docs.civicrm.org/dev/en/latest/framework/setup/)*)
* [ ] __Update Civi-WordPress__:
* [x] (Phase 1) Switch the default from `install/` UI to `civicrm-setup` UI. (*It's currently available opt-in. Switch to opt-out.*)
* [x] (Phase 2) Update `wp-cli/civicrm.php` so that WP-CLI uses `civicrm-setup` API.
* [ ] (Phase 3) Ensure that all tasks (e.g. registering base-pages or permissions) are called in WP-oriented `*.civi-setup.php` plugin.
* [ ] __Update Civi-D8/D9__
* [x] (Phase 1) Update `civicrm.install` to call `civicrm-setup` APIs (related: https://github.com/civicrm/civicrm-drupal-8/pull/37)
* [ ] (Phase 2) Update `civicrm.drush.inc` so that D7/BD use `civicrm-setup` API.
* [ ] __Update Civi-D7/BD__
* [x] (Phase 1) Update `install/index.php` so that D7/BD default to loading the `civicrm-setup` UI. The sysadmin docs may continue pointing admins to `install/index.php`. Optionally, allow one to use a parameter to opt-out and get the old UI.
* [ ] (Phase 2) Update `civicrm.drush.inc` so that D7/BD use `civicrm-setup` API.
* [x] __Update Civi-Joomla__
* [x] (Phase 2) Update to use `civicrm-setup` API
* [x] __Ignore Civi-D6__
* [ ] __Update civibuild__
* [ ] (Phase 2) Switch implementation from `civicrm_install()` to `civicrm_install_cv()` (related WIP: https://github.com/civicrm/civicrm-buildkit/pull/673)
* [ ] (Phase 3) Remove old implementation
* [ ] (Phase ??) Convert `civicrm_make_test_settings_php()` to a `civicrm-setup` plugin. Document an installer-option to initialize test/dev-harness.
* [ ] __Remove all opt-outs. Final pass to double-check/remove all remaining logic from `install/` folder__
* (*This is the last step, after all the others.*)https://lab.civicrm.org/dev/core/-/issues/1614META Token improvements (TokenProcessor)2023-03-18T06:38:34Zmattwiremjw@mjwconsult.co.ukMETA Token improvements (TokenProcessor)For quite a long time there has been a newer "TokenProcessor" in CiviCRM core, but it was only implemented for scheduled reminders initially. It can be used with this branch of the emailapi extension: https://lab.civicrm.org/mattwire/em...For quite a long time there has been a newer "TokenProcessor" in CiviCRM core, but it was only implemented for scheduled reminders initially. It can be used with this branch of the emailapi extension: https://lab.civicrm.org/mattwire/emailapi/tree/newtokenprocessor
Basically it is a more flexible token processor. @ayduns did a big chunk of work to implement activity tokens:
* https://github.com/civicrm/civicrm-core/pull/12012 - Add functionality to create PDF/Word docs from Activity searches
* https://github.com/civicrm/civicrm-core/pull/14662 - Add PDF letter functionality for Activities using new token processor
This part allows for more advanced "keyed" tokens so you can (for example) select a specific contact when there are multiple on an activity and supports activity PDFs:
* https://github.com/mattwire/civicrm-core/tree/activity_pdf_71_rebased
It would be good to extend to all token entities and we have a trait to help with that:
* ~~https://github.com/civicrm/civicrm-core/pull/16468 - REF Refactor ActivityTokens to use a trait that can be shared with other entities~~ merged
Draft PR for adding tokenprocessor support to contributions:
* https://github.com/civicrm/civicrm-core/pull/16612 - WIP Support contribution tokens using TokenProcessor
Support for Case tokens using tokenProcessor:
* https://github.com/mattwire/civicrm-core/tree/casetokenprocessor
There is some work that needs to be done to improve consistency and make development of the TokenProcessor easier. Reviewers are needed for:
* https://github.com/civicrm/civicrm-core/pull/16983 - Standardise what we pass to tokenProcessor so we don't have to add specific handling in each class for actionSchedule
* https://github.com/civicrm/civicrm-core/pull/18612 - Simplify TokenProcessor codehttps://lab.civicrm.org/dev/core/-/issues/1613updating misleading labels on buttons to confirmation pages2023-06-20T23:09:15Zyosefromanoupdating misleading labels on buttons to confirmation pagesOn contribution forms, the button leading to the confirmation page (if enabled) says 'confirm payment' which in many cases makes the user think that clicking the button submits the contribution.
On event forms, the button leading to th...On contribution forms, the button leading to the confirmation page (if enabled) says 'confirm payment' which in many cases makes the user think that clicking the button submits the contribution.
On event forms, the button leading to the confirmation page (if enabled) says 'continue' which again in many cases is misconstrued to mean 'continue and complete'
I get constant feedback from at least 50 different sites that their constituents are leaving the form before submitting it because they assume it was submitted leading to loss of revenue.
From looking at all shopping websites the industry standard with buttons leading to confirmation pages seems to be to use the word 'review'
The proposed solution in both cases is that the button label should simply say 'Review'.5.25.0https://lab.civicrm.org/dev/core/-/issues/1612Extension life-cycle bug for managed entities of a type declared in the exten...2023-02-22T05:03:55ZMichael McAndrewExtension life-cycle bug for managed entities of a type declared in the extensionLets say I have an extension that defines a new **entity type** Ocean.
And also declares some Oceans as **managed entities** (Atlantic, Pacific).
When I install it, everything works nicely. The managed oceans are created.
But when I d...Lets say I have an extension that defines a new **entity type** Ocean.
And also declares some Oceans as **managed entities** (Atlantic, Pacific).
When I install it, everything works nicely. The managed oceans are created.
But when I disable it, I start to experience problems because (I presume) attempts to manage the oceans are happening after CiviCRM no longer knows what an ocean is.
Proposed solution: ensure that entity types defined by disabled extensions are always available during attempts to manage entities.https://lab.civicrm.org/dev/core/-/issues/1607QuickSearch should search any details rather than primary details only2023-02-18T05:03:18ZmfbQuickSearch should search any details rather than primary details onlyOverview
----------------------------------------
QuickSearch currently searches primary details only. However, in all use cases I have encountered, users actually want to search any details (e.g. when searching by email address, see a l...Overview
----------------------------------------
QuickSearch currently searches primary details only. However, in all use cases I have encountered, users actually want to search any details (e.g. when searching by email address, see a list of contacts with that primary or non-primary email address).
If in fact there exists a use case where Civi users need to search primary details only, we could add a toggle to the QuickSearch form itself (which affects only that form interaction, and will not have side effects on exports, other users, etc.)
Example use-case
----------------------------------------
1. Use QuickSearch form to search by email, phone, address, etc.
1. Observe the autocomplete search results which appear below the QuickSearch box.
Current behaviour
----------------------------------------
Autocomplete shows results for primary details only.
Proposed behaviour
----------------------------------------
Autocomplete shows results for both primary and non-primary details.
Comments
----------------------------------------
In addition, it would be useful if QuickSearch could pass on the "search primary details only" preference to the advanced search page it leads to, so that the autocomplete results match the results obtained by hitting "enter".https://lab.civicrm.org/dev/core/-/issues/1599Deceased Contact via Inline doesn't update the Membership's status to Deceased2024-03-15T14:45:54ZGhost UserDeceased Contact via Inline doesn't update the Membership's status to DeceasedOverview
----------------------------------------
Editing a Contact via Inline to update it to Deceased doesn't update the status of the Membership automatically to Deceased.<br />
Checked in dmaster.
![Inline](/uploads/45fb6021711d8f2e...Overview
----------------------------------------
Editing a Contact via Inline to update it to Deceased doesn't update the status of the Membership automatically to Deceased.<br />
Checked in dmaster.
![Inline](/uploads/45fb6021711d8f2e15535832dbc4e888/Inline.png)
Reproduction steps
----------------------------------------
1. Create a new Contact.
2. Create a Membership in that Contact.
3. Edit the demographics of the contact via Inline and put it deceased.
Current behaviour
----------------------------------------
If you edit the Contact **via Inline**, the Membership **is not updated** to Deceased.
If instead of Inline you edit the Contact, the Membership **is updated** to Deceased.
Expected behaviour
----------------------------------------
The Membership status should be **updated automatically** to Deceased when editing the Contact **via Inline**.https://lab.civicrm.org/dev/core/-/issues/1590Scheduled reminder: "Additional recipients" receive reminders under circumsta...2023-12-01T05:03:19ZJonGoldScheduled reminder: "Additional recipients" receive reminders under circumstances where they ought not toThis is a superset of event#28. The issue seems to be more generalized than I'd realized.
"Additional recipients" will receive reminders on events (and presumably other entities) that have been deleted. To test:
* Create a scheduled r...This is a superset of event#28. The issue seems to be more generalized than I'd realized.
"Additional recipients" will receive reminders on events (and presumably other entities) that have been deleted. To test:
* Create a scheduled reminder for an existing event.
* Under *Limit or Add Recipients*, select **Also Include** and add a group or contact(s).
* Delete the event.
* Run the scheduled reminders job.
**Expected result**
No scheduled reminder.
**Actual result**
Scheduled reminder to the "additional recipients".
### Why it happens
Scheduled reminder recipients are decided in two passes. First, whomever qualifies by the "normal" criteria (e.g. event participants) and a second pass for anyone in "Additional Participants".
The first pass is specific to the type of reminder (event, membership, contribution); the second is the same code regardless. This caused event#28; the "additional recipients" pass, by virtue of not being event/membership/etc-specific, wasn't aware that events have the special case of templates, which other entities don't. It also doesn't check for deleted entities.
The solution is to add a new method to the `Civi\ActionSchedule\MappingInterface` interface - a `sendToAdditional` method that returns a boolean. Then, each class that implements this interface can abort the "additional recipients" pass in an entity-specific way. Besides deleted entities and event templates, contributions have templates as well now, so we should check for that.https://lab.civicrm.org/dev/core/-/issues/1586Add ? option? to NOT log to civicrm_log when logging is enabled2023-11-30T05:03:16ZeileenAdd ? option? to NOT log to civicrm_log when logging is enabledI was under the impression that we didn't use the civicrm_log table when we enable logging - certainly it becomes inaccessible through the UI. However, I have discovered that the table has swollen to 32 GB and that new entries are regula...I was under the impression that we didn't use the civicrm_log table when we enable logging - certainly it becomes inaccessible through the UI. However, I have discovered that the table has swollen to 32 GB and that new entries are regularly logged.
I feel like this duplicates the function of logging / is kind of 'logging-lite' and I thought for that reason we didn't do it. However, I realise changing it might cause issues. All I can think of is a setting to not log o civicrm_log if logging is enabled.
@seamuslee @pfigel @jitendra any thoughts?https://lab.civicrm.org/dev/core/-/issues/1582Display preferences settings "Do not notify assignees for" and "Include ICal ...2023-02-25T05:03:39ZDaveDDisplay preferences settings "Do not notify assignees for" and "Include ICal Invite to Activity Assignees" are only implemented in the form layerI'm unlikely to work on this but logging that these two display preferences are tied to the form layer and only referenced (either directly or indirectly) via CRM/Activity/Form/Activity.php, and so are ignored when using the api.
This i...I'm unlikely to work on this but logging that these two display preferences are tied to the form layer and only referenced (either directly or indirectly) via CRM/Activity/Form/Activity.php, and so are ignored when using the api.
This is not recent. I'm sure it has always been this way.https://lab.civicrm.org/dev/core/-/issues/1580Allow to search on contribution id2023-03-10T06:17:56ZyashodhaAllow to search on contribution idAllow to search on contribution idAllow to search on contribution id5.28.1yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/1569Need to Increase Data Size for `form_values` column on civicrm_report_instanc...2020-03-19T21:27:11Ztunbola@compucorp.co.ukNeed to Increase Data Size for `form_values` column on civicrm_report_instance tableOverview
----------------------------------------
Currently form_values column of the civicrm_report_instance table is of data type TEXT. This is sufficient for saving most report instances. However we have a couple of custom reports bas...Overview
----------------------------------------
Currently form_values column of the civicrm_report_instance table is of data type TEXT. This is sufficient for saving most report instances. However we have a couple of custom reports based on the Core Civi report functionality with some dynamic filters that may vary based on some conditions in the system. As such some of the reports have a lot of custom form filters fields and when these reports are saved in the database, the serialized data in the `form_values` column of the civicrm_report_instance table gets truncated and this renders the saved report unusable.
Proposed behaviour
----------------------------------------
The Proposal is to change the data type of the form_values column of the civicrm_report_instance table to MEDIUMTEXT which can hold much more data (~16MB) as compared with TEXT (64KB). With this change, the data will not be truncated and any custom report form with much form fields will not having any issue getting saved at all.5.25.0https://lab.civicrm.org/dev/core/-/issues/1565Failing to copy file when creating new attachment with APIv32020-02-10T03:07:09ZalbionbrownFailing to copy file when creating new attachment with APIv3In this block of code in civicrm/api/v3/Attachment.php:
```
$path = $config->customFileUploadDir . DIRECTORY_SEPARATOR . $fileDao->uri;
if (is_string($content)) {
file_put_contents($path, $content);
}
elseif (is_string($moveF...In this block of code in civicrm/api/v3/Attachment.php:
```
$path = $config->customFileUploadDir . DIRECTORY_SEPARATOR . $fileDao->uri;
if (is_string($content)) {
file_put_contents($path, $content);
}
elseif (is_string($moveFile)) {
// CRM-17432 Do not use rename() since it will break file permissions.
// Also avoid move_uplaoded_file() because the API can use options.move-file.
copy($moveFile, $path);
unlink($moveFile);
}
```
Is there a reason why we can't check if the copy failed and throw an API_Exception if it did?
The reason being, is that I've had some issues with the new Catalina MacOS update and the NFS mounting option lately. I couldn't figure out why my file upload wasn't working. Ultimately it came down to directory permissions as a result of the Catalina update.
Is it possible we could change this to:
```
$path = $config->customFileUploadDir . DIRECTORY_SEPARATOR . $fileDao->uri;
if (is_string($content)) {
file_put_contents($path, $content);
}
elseif (is_string($moveFile)) {
// CRM-17432 Do not use rename() since it will break file permissions.
// Also avoid move_uploaded_file() because the API can use options.move-file.
if (!copy($moveFile, $path)) {
throw new API_Exception("Cannot copy uploaded file ".$moveFile." to ".$path);
}
unlink($moveFile);
}
```
So we know when the move has failed?5.24.0https://lab.civicrm.org/dev/core/-/issues/1549Regen.sh/setup.sh would be nice if the output for civicrm_generated.mysql had...2021-06-07T14:49:56ZDaveDRegen.sh/setup.sh would be nice if the output for civicrm_generated.mysql had long lines broken upRelated mysql feature request: https://bugs.mysql.com/bug.php?id=65465
i.e. having super-long lines in a git-controlled file is awkward for file conflicts, and just generally awkward.
In particular the civicrm_option_value table.
I ha...Related mysql feature request: https://bugs.mysql.com/bug.php?id=65465
i.e. having super-long lines in a git-controlled file is awkward for file conflicts, and just generally awkward.
In particular the civicrm_option_value table.
I haven't looked how hard this is to do yet. TBD. Even if there's no mysql command line arg to do it maybe it can be done with a regex that runs right after mysqldump.5.39.0https://lab.civicrm.org/dev/core/-/issues/1545Civicrm uses outdated Smarty library2024-03-15T19:29:38ZjptillmanCivicrm uses outdated Smarty libraryThis issue from the old Jira tracker seems to have gotten lost along the way (can't find it in this issue queue):
https://issues.civicrm.org/jira/browse/CRM-16428
It would be great to have the Smarty template library upgraded to v3.This issue from the old Jira tracker seems to have gotten lost along the way (can't find it in this issue queue):
https://issues.civicrm.org/jira/browse/CRM-16428
It would be great to have the Smarty template library upgraded to v3.https://lab.civicrm.org/dev/core/-/issues/1536Develop unit tests that catch red warning boxes on common forms2023-08-17T05:03:27ZDaveDDevelop unit tests that catch red warning boxes on common formsMaking myself a rainy day todo.
* Forms are not well covered by unit tests. In general that's not what pure unit tests are supposed to do, but I'm thinking there could be something minimal.
* Since the addition of popup forms, warnings ...Making myself a rainy day todo.
* Forms are not well covered by unit tests. In general that's not what pure unit tests are supposed to do, but I'm thinking there could be something minimal.
* Since the addition of popup forms, warnings and notices don't get seen when testing because they get snippet'd out.
* It's happening often enough where changes introduce some type of "missing XXX" from forms.
So it might be as simple as a test that runs through some common forms and sets up some vars and calls preprocess and buildform and when run as tests that should show notices. It won't catch everything, but might reduce the problem.