CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2019-02-24T21:11:32Zhttps://lab.civicrm.org/dev/core/-/issues/157Do not delete indexes if they are needed for foreign keys2019-02-24T21:11:32ZMichael McAndrewDo not delete indexes if they are needed for foreign keysBefore
------
When changing a custom field from searchable to not searchable, CiviCRM tries to remove the index. This causes a fatal error when the column is also a foreign key to another table because the index is needed for the foreig...Before
------
When changing a custom field from searchable to not searchable, CiviCRM tries to remove the index. This causes a fatal error when the column is also a foreign key to another table because the index is needed for the foreign key.
After
-----
We ensure that the column is not an FK before removing the index
Technical details
-----------------
I added a test to CustomFieldTest which exercises this functionality5.3.0https://lab.civicrm.org/dev/core/-/issues/160Import Progress bar polls server too often2018-06-05T04:12:17ZseamusleeImport Progress bar polls server too oftenThe import progress bar polls the server every 5 milliseconds for progress rather 5 seconds which is what i think the expectation was meant to beThe import progress bar polls the server every 5 milliseconds for progress rather 5 seconds which is what i think the expectation was meant to be5.3.0seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/164scheduled reminders: form validations when repetition enabled2018-06-06T14:41:34Zlcdwebscheduled reminders: form validations when repetition enabledin the scheduled reminders interface, if you enable repetition, the every X until Y fields are required -- the job will fail with SQL errors if the fields are left empty. but currently, the fields are not required by the UI. we should ad...in the scheduled reminders interface, if you enable repetition, the every X until Y fields are required -- the job will fail with SQL errors if the fields are left empty. but currently, the fields are not required by the UI. we should add form validations to require values in those fields.lcdweblcdwebhttps://lab.civicrm.org/dev/core/-/issues/165Bad link in civicrm/case/activity/view breadcrumb2018-06-08T06:11:50ZmikantchapBad link in civicrm/case/activity/view breadcrumbDisable popups in display preferences.
Find a case eg civicrm/case/search?reset=1.
'Manage' the case to open it.
Click on the activity Subject, goes to eg civicrm/case/activity/view?cid=203&aid=642
The 'Case Activity' breadcrumb link...Disable popups in display preferences.
Find a case eg civicrm/case/search?reset=1.
'Manage' the case to open it.
Click on the activity Subject, goes to eg civicrm/case/activity/view?cid=203&aid=642
The 'Case Activity' breadcrumb links to civicrm/case/activity?reset=1 which gives an error when you try to use it:
Sorry, due to an error, we are unable to fulfill your request at the moment. You may want to contact your administrator or service provider with more details about what action you were performing when this occurred. required params missing.
Can reproduce this on http://dmaster.demo.civicrm.orghttps://lab.civicrm.org/dev/core/-/issues/168If scheduled jobs are run individually nothing is logged to civicrm job log2022-08-15T05:03:21ZlolcodeIf scheduled jobs are run individually nothing is logged to civicrm job logWhen running scheduled jobs individually to have greater control over the timing or parameters of those jobs then nothing is logged to the JobLog at least for certain jobs like process_mailing. This leaves the user to implement something...When running scheduled jobs individually to have greater control over the timing or parameters of those jobs then nothing is logged to the JobLog at least for certain jobs like process_mailing. This leaves the user to implement something else for logging.
I don't agree with this approach because it will push organisations to use custom solutions but it should at least be a documented limitation.
https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#specific-jobshttps://lab.civicrm.org/dev/core/-/issues/173Missing email on contribution thank you page when using pay later and a profi...2022-12-13T05:03:44ZAlanDixonMissing email on contribution thank you page when using pay later and a profile that includes an email addressAs per https://civicrm.stackexchange.com/questions/23034/email-address-is-missing-on-thank-you-page-where-it-says-an-email-confirmation reported by @petednz
1. It seems like the _emailExists property is setup to track when the email is...As per https://civicrm.stackexchange.com/questions/23034/email-address-is-missing-on-thank-you-page-where-it-says-an-email-confirmation reported by @petednz
1. It seems like the _emailExists property is setup to track when the email is included in a profile (and therefore not at it's usual key), and I notice that that property is handled on the Confirm page but not on the Thankyou page.
2. The email address does show up on the page within the profile display, so it's available.
So we just need to get it assigned to the email variable in the smarty, I think the preprocess method is where it should be done. I tried using some code similar to the stuff on the Confirm page, but it didn't work, I'm kind of making it up ...https://lab.civicrm.org/dev/core/-/issues/174Consistently use swappable cache interfaces2023-12-20T06:26:25ZtottenConsistently use swappable cache interfaces# Background
CiviCRM caches were originally (and are primarily) stored in the table `civicrm_cache`. This design is great for small sites (easy to deploy on server with less software to administer). However, for larger sites that get va...# Background
CiviCRM caches were originally (and are primarily) stored in the table `civicrm_cache`. This design is great for small sites (easy to deploy on server with less software to administer). However, for larger sites that get value from using multiple MySQL servers, it's not so great: cache data (by its nature) is frequently written+read, but it's expensive to write cache data when there are multiple MySQL servers... and the overhead doesn't give us much benefit because the data is fundamentally expendable. A lighter system (like Memcache/Redis) would be more generally appropriate.
You might recall that CiviCRM's cache subsystem can optionally incorporate Memcache/Redis (since roughly 4.3ish?). This appears as `CRM_Utils_Cache_*`, and it started some great improvements (e.g. using faster cache providers; and swapping cache providers). Notably, the functionality uses Memcache/Redis as an *extra cache tier* (i.e. when reading a cache, it first checks memcache; then it falls back to checking `civicrm_cache` in MySQL). This helps *read performance* (because your cache-hit usually returns faster), but it doesn't help *write performance* (because you need to propagate cache-writes to every tier). Using *only* Memcache/Redis (as a single tier -- without MySQL) would be even better for performance.
I don't believe that the status quo reflects a technical necessity. (If you can handle deployment/configuration of Memcache/Redis a front-tier... then you can probably handle it as the main tier.) Rather, it reflects a development practicality: *the app was originally written to only use `civicrm_cache`*. Consequently, there are a handful of oddball use-cases/code-paths which directly access `civicrm_cache` or `CRM_Core_BAO_Cache`, and it would've been harder to do anything if it had required finding+fixing all of them.
# Scope
The general scope of this ticket is to hunt down the oddball use-cases/code-paths which directly reference `civicrm_cache` or `CRM_Core_BAO_Cache`. I expect the project to produce a handful of distinct PRs. To avoid redundantly documenting this, I'm aiming for each PR to have a more concrete discussion about the use-cases/code-paths being cleaned up.
# PR List
* [12330 - CRM_Utils_Cache_Redis::flush() - Respect prefixes](https://github.com/civicrm/civicrm-core/pull/12330) (m)
* [12331 - CRM_Utils_Cache - Always use a prefix. Standardize delimiter](https://github.com/civicrm/civicrm-core/pull/12331) (m)
* [12336 - systemStatusCheckResult - Migrate from settings to cache](https://github.com/civicrm/civicrm-core/pull/12336) (m)
* [12342 - Caching - Comply with PSR-16 interfaces](https://github.com/civicrm/civicrm-core/pull/12342) (m)
* [215 - Import PSR-16 compliance test](https://github.com/civicrm/civicrm-packages/pull/215) (m)
* [12348 - Cache-keys for CRM_Utils_Cache_* should avoid reserved chars](https://github.com/civicrm/civicrm-core/pull/12348) (m)
* ~~[12350 - civicrm_cache - Allow storage of binary data](https://github.com/civicrm/civicrm-core/pull/12350)~~
* [12354 - civicrm_cache - Allow storage of binary data](https://github.com/civicrm/civicrm-core/pull/12354) (m)
* [~~12360~~ - Full PSR-16 compliance for ...](https://github.com/civicrm/civicrm-core/pull/12360) (*depends: ~~12342, 12348, 12354~~*). Cherry-picked to form smaller PRs:
* [12376 - Add various utilities to support PSR-16](https://github.com/civicrm/civicrm-core/pull/12376) (m)
* [12378 - ArrayCache, Redis](https://github.com/civicrm/civicrm-core/pull/12378) (m)
* [12379 - SqlGroup](https://github.com/civicrm/civicrm-core/pull/12379) (m)
* [12380 - Memcache(d)](https://github.com/civicrm/civicrm-core/pull/12380) (m)
* [12381 - APCcache](https://github.com/civicrm/civicrm-core/pull/12381) (m)
* [12389 - Add test to prevent hidden interactions among caches](https://github.com/civicrm/civicrm-core/pull/12389) (m)
* [12362 - Forms/Sessions - Store state via Civi::cache('session')](https://github.com/civicrm/civicrm-core/pull/12362) (*depends: 12360*)
* [12368 - ~~civicrm_cache - Finish transition from DATETIME to TIMESTAMP](https://github.com/civicrm/civicrm-core/pull/12368)~~ (m)
See also
--------
* dev/core#217 - Allow replacement of PrevNextCache implementation (for search screens)
* dev/core#284 - Aggressive cache clearing significantly increases test time5.9tottentottenhttps://lab.civicrm.org/dev/core/-/issues/175Smart group involving relationship type filter display incorrect results.2018-11-04T20:48:08ZjitendraSmart group involving relationship type filter display incorrect results.replicated on dmaster -
- Advanced Search -> Relationship tab -> type = `Employer of` (or any `b_a` reln type) -> Search (results all organization contacts).
- Proceed and add all of them to a smart group.
- When you click on `Done` aft...replicated on dmaster -
- Advanced Search -> Relationship tab -> type = `Employer of` (or any `b_a` reln type) -> Search (results all organization contacts).
- Proceed and add all of them to a smart group.
- When you click on `Done` after creating smart group, you are navigated to advanced search result with the contacts belonging to this group. All contacts are incorrectly displayed.
Another way to replicate -
- Advanced Search -> Relationship tab -> type = `Employer of` (or any `b_a` reln type) -> Search (results all organization contacts).
- Click on Search button again. All contacts are replaced with `Employee of` relationship5.4.0jitendrajitendrahttps://lab.civicrm.org/dev/core/-/issues/176Odd / Even street number sorting column missing from Reports2018-07-06T22:11:10Zjoels341Odd / Even street number sorting column missing from ReportsWhen trying to make a walk list in reports (odd/even street numbers), there is no option to sort by odd or even. I am using Civicrm in English on Joomla.
The French demo on Drupal has "Numéro de rue pair/impair" in the "column" dropdown...When trying to make a walk list in reports (odd/even street numbers), there is no option to sort by odd or even. I am using Civicrm in English on Joomla.
The French demo on Drupal has "Numéro de rue pair/impair" in the "column" dropdown, but I do not see it in the English version.![street-number](/uploads/f74556e4b99a646ee3aa1c9fdaacd96c/street-number.jpg)5.5.0Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/178Redis driver - Error messages are invisible2018-06-14T20:51:19ZtottenRedis driver - Error messages are invisibleIf the Redis server returns an error message (e.g. due to malformed requests or credentials), the substance of this message is invisible to the site administrator.If the Redis server returns an error message (e.g. due to malformed requests or credentials), the substance of this message is invisible to the site administrator.https://lab.civicrm.org/dev/core/-/issues/179Redis driver - Allow anonymous connections2018-06-15T21:04:39ZtottenRedis driver - Allow anonymous connectionsThe Redis driver *always* sends a password. That's well and good in production. However, if you're doing local development, the dev instance of redis may be configured to allow local-only, unauthenticated connections -- for which no pass...The Redis driver *always* sends a password. That's well and good in production. However, if you're doing local development, the dev instance of redis may be configured to allow local-only, unauthenticated connections -- for which no password is available.https://lab.civicrm.org/dev/core/-/issues/183Temporary tables should follow consistent naming convention2020-08-31T02:03:19ZtottenTemporary tables should follow consistent naming convention#tldr
- check https://lab.civicrm.org/dev/core/issues/183#note_5717 for how to use the new syntax
# Context
For `epic:ro-db`, we aim to allow CiviCRM PHP workers to connect to read-only MySQL slaves and run searches+reports. These of...#tldr
- check https://lab.civicrm.org/dev/core/issues/183#note_5717 for how to use the new syntax
# Context
For `epic:ro-db`, we aim to allow CiviCRM PHP workers to connect to read-only MySQL slaves and run searches+reports. These often require temporary tables.
By default, if you have replicated MySQL configuration, MySQL replicates TEMPORARY tables. However, there isn't much point in doing this because TEMPORARY tables are session-scoped. (If there's a fault, you can't recover access to them.) One can disable replication by setting an option like `--replicate-wild-ignore-table=<wildcard>`. See also:
https://dev.mysql.com/doc/refman/5.7/en/replication-features-temptables.html
> A recommended practice when using statement-based or mixed-format replication is to designate a prefix for exclusive use in naming temporary tables that you do not want replicated...
If you search the CiviCRM source tree for temp tables, you can find a variety of table name formats... such as `civicrm_temp_exampledata` or `civicrm_exampledata_temp_{$rand}` or `X_exampledata` or just `exampledata`. Fortunately, these are amenable to change: they’re easy to find with “grep”, and (by virtue of being temporary tables) they’re only referenced a couple times. However, there are a large number of them, and (after renaming a temp-table) you should `r-run` the affected code to ensure it works.
Note: The benefit of the change will likely accrue on systems which use a replicated master/slave topology on MySQL v5.6+. However, we don't need to test that specific configuration. Our focus here is just on the naming.
# Goal
Enforce a common naming convention for temporary tables:
* `civicrm_tmp_e_%` matches any true temp table (i.e. "temporary-during-this-connection"; CREATE TEMPORARY TABLE). The "e" stands for "ephemeral".
* `civicrm_tmp_d_%` matches any quasi-temp table (i.e. "temporary-for-a-few-minutes-or-hours"; CREATE TABLE). The "d" stands for "durable".
* `civicrm_tmp_%` matches any temp table, whether ephemeral or durable.
This arrangement will give the MySQL DBA some decent ways to scope their policies.
To generate a table name, one can hard-code the prefix or use a helper. Following [12311](https://github.com/civicrm/civicrm-core/pull/12311), you can use the helper `CRM_Utils_SQL_TempTable`, e.g.
![Screen_Shot_2018-06-15_at_10.24.08_AM](/uploads/c7b670a73c0d1eafd464a1e65ddde0bd/Screen_Shot_2018-06-15_at_10.24.08_AM.png)
The general goal is update calls to `createTempTableName()` (or to manually-constructed table-names) with the newer convention, and then re-test anything that have used it.
Changing the prefix on temp tables should usually be pretty safe/portable, provided that we do some basic searching/testing after each item is renamed, i.e.
* Search code-base for anything that might have used the temporary-table name.
* Run a use-case or two that involves actually creating the temporary table.
# Audit list
Just to help track progress, here's a list of files with tell-tale signs that they may be using temporary (ephemeral or durable) tables. Here's the process for auditing each file:
1. Search for the file for any references to the target phrase (`CREATE TEMPORARY TABLE` or `CREATE TABLE` or `createTempTableName`).
2. Determine if the file is creating a temporary (ephemeral or durable) table. Check if the table name matches either `civicrm_tmp_e_%` or `civicrm_tmp_d_%`.
1. If it doesn't really create a temp-table, we're done.
2. If it creates a compliant temp-table, we're done.
3. If it creates a non-compliant temp-table, then we need to patch.
3. Figure out use-case(s) which hit that temp-table.
1. To see if you've found a real use-case, it helps to hack the code in question and provoke an error. (eg `throw new Exception('Oooga booga')`)
2. (NB: we're being optimistic that if one use-case works for the table that they all will. We're expecting failures to come out in the wash.)
4. Change the temp-table name. Search+update anything that references the same temp table. Verify the use-case still works as before.
5. Submit the patch. (If it's a new PR, include the link.)
6. Check the item as done. (The PR doesn't have to be merged -- we just to ensure that this item isn't re-examined.)
Files:
(note some of these have been fixed without being checked off)
* Files matching `CREATE TEMPORARY TABLE`
* [x] `CRM/Activity/BAO/Activity.php`
* [x] `CRM/Campaign/BAO/Query.php`
* [x] `CRM/Campaign/Form/Task/Interview.php`
* [x] `CRM/Contact/BAO/GroupContactCache.php`
* [x] `CRM/Contact/BAO/Query.php`
* [x] `CRM/Contact/Form/Search/Custom/ContribSYBNT.php`
* [x] `CRM/Contact/Form/Search/Custom/DateAdded.php`
* [x] `CRM/Contact/Form/Search/Custom/FullText.php`
* [x] `CRM/Contact/Form/Search/Custom/Group.php`
* [x] `CRM/Contact/Form/Search/Custom/PriceSet.php`
* [x] `CRM/Contact/Form/Search/Custom/RandomSegment.php`
* [x] `CRM/Contact/Import/Form/DataSource.php`
* [x] `CRM/Contribute/BAO/Query.php`
* [x] `CRM/Dedupe/BAO/QueryBuilder/IndividualUnsupervised.php`
* [x] `CRM/Dedupe/BAO/RuleGroup.php`
* [x] `CRM/Logging/ReportSummary.php`
* [x] `CRM/Mailing/BAO/Mailing.php`
* [x] `CRM/Mailing/BAO/Recipients.php`
* [x] `CRM/Mailing/Event/BAO/Delivered.php`
* [x] `CRM/Report/Form/Activity.php`
* [x] `CRM/Report/Form/ActivitySummary.php`
* [x] `CRM/Report/Form/Contribute/Bookkeeping.php`
* [x] `CRM/Report/Form/Contribute/Detail.php`
* [x] `CRM/Report/Form/Contribute/Lybunt.php`
* [x] `CRM/Report/Form/Contribute/Repeat.php`
* [x] `CRM/Report/Form/Member/ContributionDetail.php`
* [x] `CRM/Report/Form.php`
* [x] `CRM/Upgrade/Incremental/php/FourThree.php`
* [x] `CRM/Upgrade/Incremental/php/FourTwo.php`
* [x] `CRM/Utils/SQL/TempTable.php`
* [x] `Civi/Install/Requirements.php`
* [x] `tests/phpunit/api/v3/MailingTest.php`
* [x] `install/index.php`
* Files matching `CREATE TABLE`
* [x] `CRM/Contact/Form/Task.php`
* [x] `CRM/Contact/Import/Form/DataSource.php`
* [x] `CRM/Contact/Import/ImportJob.php`
* [x] `CRM/Core/BAO/SchemaHandler.php`
* [x] `CRM/Core/DAO.php`
* [x] `CRM/Export/BAO/Export.php`
* [x] `CRM/Import/DataSource/CSV.php`
* [x] `CRM/Logging/Schema.php`
* [x] `CRM/Upgrade/Incremental/php/FourFour.php`
* [x] `CRM/Upgrade/Incremental/php/FourSeven.php`
* [x] `CRM/Upgrade/Incremental/sql/4.2.alpha1.mysql.tpl`
* [x] `CRM/Upgrade/Incremental/sql/4.2.beta1.mysql.tpl`
* [x] `CRM/Upgrade/Incremental/sql/4.2.beta6.mysql.tpl`
* [x] `CRM/Upgrade/Incremental/sql/4.3.alpha1.mysql.tpl`
* [x] `CRM/Upgrade/Incremental/sql/4.4.alpha1.mysql.tpl`
* [x] `CRM/Upgrade/Incremental/sql/4.5.alpha1.mysql.tpl`
* [x] `CRM/Upgrade/Incremental/sql/4.6.3.mysql.tpl`
* [x] `CRM/Upgrade/Incremental/sql/4.6.5.mysql.tpl`
* [x] `CRM/Upgrade/Incremental/sql/4.6.alpha1.mysql.tpl`
* [x] `CRM/Upgrade/Incremental/sql/4.7.alpha1.mysql.tpl`
* [x] `CRM/Utils/SQL/TempTable.php`
* [x] `CRM/Utils/String.php`
* [x] `Civi/Core/InstallationCanary.php`
* [x] `Civi/Install/Requirements.php`
* [x] `Civi/Test/CiviEnvBuilder.php`
* [x] `tests/phpunit/api/v3/CustomApiTest.php`
* [x] `tests/phpunit/api/v3/dataset/uf_group_contact_activity_26.xml`
* [x] `tests/phpunit/api/v3/LoggingTest.php`
* [x] `tests/phpunit/CRM/Contact/Import/Form/MapFieldTest.php`
* [x] `tests/phpunit/CRM/Core/BAO/SchemaHandlerTest.php`
* [x] `tests/phpunit/CRM/Core/DAOTest.php`
* [x] `tests/phpunit/CRM/Logging/LoggingTest.php`
* [x] `tests/phpunit/CRM/Logging/SchemaTest.php`
* [x] `tests/phpunit/CRM/Utils/QueryFormatterTest.php`
* [x] `install/index.php`
* Files matching `createTempTableName`
* [x] `CRM/Campaign/BAO/Query.php`
* [x] `CRM/Campaign/Form/Task/Interview.php`
* [x] `CRM/Contact/BAO/Query.php`
* [x] `CRM/Core/DAO.php`
* [x] `CRM/Report/Form/ActivitySummary.php`
* [x] `CRM/Report/Form/Contribute/Bookkeeping.php`
* [x] `CRM/Upgrade/Incremental/php/FourThree.php`
* [x] `CRM/Upgrade/Incremental/php/FourTwo.php`
* [x] `tests/phpunit/CRM/Core/DAOTest.php`
# Audit Mentality
The deliverables are patches -- hopefully mostly simple patches -- but this is a bit misleading. If we just wanted simple patches to some files, there are faster ways to edit the files. The main work in here is the audit -- ie when we look at a file, figure out how it's used. That's why we have to do searching+testing as part of the update.tottentottenhttps://lab.civicrm.org/dev/core/-/issues/185“Print selected rows” option missing in Event Participant listing dropdown ac...2018-10-30T09:51:44ZPradeep Nayakpradpnayak@gmail.com“Print selected rows” option missing in Event Participant listing dropdown actionshttps://civicrm.stackexchange.com/questions/25363/print-selected-rows-option-missing-in-event-participant-listing-dropdown-actio/25365#25365https://civicrm.stackexchange.com/questions/25363/print-selected-rows-option-missing-in-event-participant-listing-dropdown-actio/25365#25365https://lab.civicrm.org/dev/core/-/issues/187Fix typo in CRM_Grant_Form_Task that prevents retrieving session key from URL2018-06-21T21:41:15Zmattwiremjw@mjwconsult.co.ukFix typo in CRM_Grant_Form_Task that prevents retrieving session key from URLOverview
----------------------------------------
Identified during investigation for dev/core#158
Before
----------------------------------------
Cannot retrieve session key for Grant form task.
After
---------------------------------...Overview
----------------------------------------
Identified during investigation for dev/core#158
Before
----------------------------------------
Cannot retrieve session key for Grant form task.
After
----------------------------------------
Session key for Grant form task is retrieved just like all other tasks.
Technical Details
----------------------------------------
The wrong object was being used in static context ($this instead of $form).5.4.0https://lab.civicrm.org/dev/core/-/issues/188Fix Floating Point Precision Comparison Exception on Order Creation2018-07-15T23:12:07ZCamilo RodríguezFix Floating Point Precision Comparison Exception on Order Creation## Overview
When adding Orders, a check is done by CiviCRM core when the contribution is being created to make sure the sum of line item totals is equal to the contribution total amount. This comparison, however, is done comparing floati...## Overview
When adding Orders, a check is done by CiviCRM core when the contribution is being created to make sure the sum of line item totals is equal to the contribution total amount. This comparison, however, is done comparing floating point values, which may fail falsely, under some circumstances.
This is the line where the comparison is done:
https://github.com/civicrm/civicrm-core/blob/master/CRM/Contribute/BAO/Contribution.php#L5011
This problem is documented in PHP official documentation, and is actually related to the way floating point values are modeled in programming languages in general.
http://php.net/manual/en/language.types.float.php
http://floating-point-gui.de/basic/
This has to be taken into account to make sure the comparison doesn't fail when it shouldn't.
## How it Works Currently
1. Use API to try to create Order with given sample data.
2. Exception is thrown, saying "Line item total doesn't match with total amount".
## How it Should Work
1. Use API to try to create Order with given sample data.
2. Order is created without throwing exception.
## Sample Data
```
data ={
'contact_id': 1051,
'payment_instrument_id': 6,
'line_items': [{
'line_item': {
'0': {
'price_field_value_id': 56,
'price_field_id': 33,
'entity_id': 646,
'tax_amount': 0,
'line_total': 14.85,
'label': 4,
'entity_table': 'civicrm_membership',
'unit_price': 14.85,
'qty': 1}}}, {
'line_item': {
'1': {
'price_field_value_id': 55,
'price_field_id': 32,
'entity_id': 648,
'tax_amount': 0,
'line_total': 1.66,
'label': 50,
'entity_table': 'civicrm_membership',
'unit_price': 1.66,
'qty': 1}}}, {
'line_item': {
'2': {
'price_field_value_id': 49,
'price_field_id': 26,
'entity_id': 647,
'tax_amount': 0,
'line_total': 0.16,
'label': 47,
'entity_table': 'civicrm_membership',
'unit_price': 0.16,
'qty': 1}}}],
'total_amount': 16.67,
'financial_type_id': 2,
'fee_amount': 0,
'payment_processor_id': 5,
'receive_date': '2017-10-16',
'contribution_status_id': 1
}
```
## Failing API Call Example
Calling API using cv:
```
echo '{"contact_id":45,"payment_instrument_id":6,"line_items":[{"line_item":{"6":{"price_field_value_id":52,"price_field_id":29,"tax_amount":0,"line_total":14.85,"financial_type_id":2,"qty":1,"entity_table":"civicrm_membership","unit_price":14.85,"label":5}}},{"line_item":{"7":{"price_field_value_id":53,"price_field_id":30,"tax_amount":0,"line_total":1.66,"financial_type_id":2,"qty":1,"entity_table":"civicrm_membership","unit_price":1.66,"label":49}}},{"line_item":{"8":{"price_field_value_id":49,"price_field_id":26,"tax_amount":0,"line_total":0.16,"financial_type_id":2,"qty":1,"entity_table":"civicrm_membership","unit_price":0.16,"label":47}}}],"tax_amount":0,"total_amount":16.67,"contribution_recur_id":733,"financial_type_id":2,"fee_amount":0,"payment_processor_id":5,"receive_date":"2017-12-15","contribution_status_id":1}' | cv api Order.create --in=json
```5.5.0https://lab.civicrm.org/dev/core/-/issues/192Search builder fails for != smart group filter2018-12-17T20:07:12ZjitendraSearch builder fails for != smart group filter- Create a smart group.
- Open Search Builder and add this filter - Contacts -> Group -> !- -> Smart group
The != operator is ignored and the result will list all contacts belonging to the above smart group instead of excluding them.- Create a smart group.
- Open Search Builder and add this filter - Contacts -> Group -> !- -> Smart group
The != operator is ignored and the result will list all contacts belonging to the above smart group instead of excluding them.5.10Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/193Order API Throw an error when adding tax amount on line items2018-11-15T08:11:29Zomar_compucorpOrder API Throw an error when adding tax amount on line itemsOrder API not factoring in tax amounts when comparing against contribution total.
*Overview:*
When creating an Order using Order API a check is done to compare Contribution's total_amount against the sum of line item's line_total's. If ...Order API not factoring in tax amounts when comparing against contribution total.
*Overview:*
When creating an Order using Order API a check is done to compare Contribution's total_amount against the sum of line item's line_total's. If Contribution total amount and Line Items' total are not equal, Order creation will fail.
As we know:
1. The line item line_total *do not* include any tax. Tax will be recorded separately in line item tax_amount field.
2. The contribution total_amount *do* include tax. A separate contribution tax_amount field also records the amount of tax.
Since the validation only compares the sum of line_totals with contribution total_amount, whenever there is tax, the validation will fail.
For illustration consider following data set that should create 1 contribution with 2 line items for memberships.
```
order_data =
{
'is_pay_later': True,
'contact_id': 240L,
'payment_instrument_id': 6,
'line_items': [{
'line_item': {
'42': {
'price_field_value_id': 60L,
'price_field_id': 36L,
'entity_id': 1249L,
'tax_amount': 2.0,
'line_total': 10.0,
'financial_type_id': 2,
'label': 'General',
'entity_table': 'civicrm_membership',
'unit_price': 10,
'qty': '1'}}}, {
'line_item': {
'43': {
'price_field_value_id': 61L,
'price_field_id': 37L,
'entity_id': 1248L,
'tax_amount': 1.67,
'line_total': 8.33,
'financial_type_id': 2,
'label': 'Concession',
'entity_table': 'civicrm_membership',
'unit_price': '8.33',
'qty': '1'}}}],
'tax_amount': 3.67,
'total_amount': 22.0,
'contribution_recur_id': 605L,
'financial_type_id': 2,
'fee_amount': 0,
'payment_processor_id': 5L,
'receive_date': u'2019-08-01',
'contribution_status_id': 2}
```
*Current situation:*
Calling the Order API to create Order with given data results with "Line item total doesn't match with total amount". This is because total_amount (22.0) <> sum of line_totals (18.33)
*How should it be:*
The Line Items check should consider tax_amounts of line_items and order creation should succeed.https://lab.civicrm.org/dev/core/-/issues/194Search Builder greater than and lesser than operators for contribution total ...2018-12-09T21:15:34ZMatthias BärnthalerSearch Builder greater than and lesser than operators for contribution total amount omittedTo reproduce:
* Go to Search -> Search generator
* Choose Contribution -> Total Amount
* No greater than, lesser than, greater than equal, lesser than equal operators are present.
My guess is that the field gets treated as a String, th...To reproduce:
* Go to Search -> Search generator
* Choose Contribution -> Total Amount
* No greater than, lesser than, greater than equal, lesser than equal operators are present.
My guess is that the field gets treated as a String, therefore the operator is omitted in Builder.js
`// based on data type remove invalid operators e.g. IS EMPTY doesn't work with Boolean type column
if ((field in CRM.searchBuilder.fieldTypes) === true) {
if (CRM.searchBuilder.fieldTypes[field] == 'Boolean') {
CRM.searchBuilder.generalOperators = _.omit(CRM.searchBuilder.generalOperators, ['IS NOT EMPTY', 'IS EMPTY']);
}
else if (CRM.searchBuilder.fieldTypes[field] == 'String') {
CRM.searchBuilder.generalOperators = _.omit(CRM.searchBuilder.generalOperators, ['>', '<', '>=', '<=']);
}
}
buildOperator(operator, CRM.searchBuilder.generalOperators);`5.4.0https://lab.civicrm.org/dev/core/-/issues/195Add Contribution Counts to Sub-tabs2022-08-17T05:03:37ZCamilo RodríguezAdd Contribution Counts to Sub-tabs## Overview
It would be helpful to be able to see on each sub-tab a count of Contributions / Recurring Contributions, keeping the UX consistent with how the rest of tabs work on Contact's Detail View.
## How it Works Currently
1. Go to ...## Overview
It would be helpful to be able to see on each sub-tab a count of Contributions / Recurring Contributions, keeping the UX consistent with how the rest of tabs work on Contact's Detail View.
## How it Works Currently
1. Go to a Contact's detail view.
2. The **Contributions** tab shows also the count of contributions associated to the contact.
3. Clicking on the tab displays two sub-tabs, one for Contributions, the second one for Recurring Contributions.
4. Sub-tabs don't show number of contributions on each.
## How it Should Work
1. Go to a Contact's detail view.
2. The **Contributions** tab shows also the count of contributions associated to the contact.
3. Clicking on the tab displays two sub-tabs, one for Contributions, the second one for Recurring Contributions.
4. Sub-tabs show number of contributions on each. Count done for **Recurring Contributions** is done on active recurring contributions.https://lab.civicrm.org/dev/core/-/issues/196email signature not included in activity email2018-11-05T12:22:00Zlcdwebemail signature not included in activity emailto reproduce:
* go into your contact record and click the edit button
* below the email address click to expand the signature panel. enter a value and save the form.
* on the summary view you will now see "(signature)" in parens and can...to reproduce:
* go into your contact record and click the edit button
* below the email address click to expand the signature panel. enter a value and save the form.
* on the summary view you will now see "(signature)" in parens and can click to view the value
* click the actions button and select "send an email"
the signature should prepopulate in the email body field but does not.
this is a regression. the behavior works as expected in 4.6 but was lost somewhere in the 4.7/5.x cycle.lcdweblcdwebhttps://lab.civicrm.org/dev/core/-/issues/199Fix ACL on Group.get API2021-03-29T13:53:28ZMichael McAndrewFix ACL on Group.get APIBefore
------
ACL filtering was done after results were retrieved from the database, which in the majority of cases would lead to incorrect results being returned.
Consider the following scenario. 100 groups exist in the DB. A user has...Before
------
ACL filtering was done after results were retrieved from the database, which in the majority of cases would lead to incorrect results being returned.
Consider the following scenario. 100 groups exist in the DB. A user has access to the 100th group.
Group.get will return 'the first' 25 groups, filter them all, and return that no groups are available.
Aside from this being a problem in itself, it also causes paged API calls (e.g. the API call that populates the CiviMail recipients list of groups) to fail as they assume that there are no more records to return.
After
-----
If check permissions is checked and we do not have view all contacts, we add an extra where clause to `_civicrm_api3_basic_get`, ensuring that only visible groups are returned.https://lab.civicrm.org/dev/core/-/issues/204Add testcases to civicrm-core PR #112912021-09-13T00:08:27ZvarshithAdd testcases to civicrm-core PR #11291Ref. https://github.com/civicrm/civicrm-core/pull/11291
The above PR adds case tokens support to email activities.
We need test cases for the above PR to complete it.Ref. https://github.com/civicrm/civicrm-core/pull/11291
The above PR adds case tokens support to email activities.
We need test cases for the above PR to complete it.https://lab.civicrm.org/dev/core/-/issues/206Filter webform dropdown through relationship type2018-10-15T12:00:57ZshitijgFilter webform dropdown through relationship type**Overview:**
This ticket is targeted at improving the data filtering capabilities of the ‘Existing Contact’ field of the Webform CiviCRM.
With this new filtering - we will be able to filter the existing contact field with values deri...**Overview:**
This ticket is targeted at improving the data filtering capabilities of the ‘Existing Contact’ field of the Webform CiviCRM.
With this new filtering - we will be able to filter the existing contact field with values derived from a particular relation type that a contact has with another contact.
**How it works currently:**
Currently we have the ability to filter through Groups and Tags
We also currently have the ability for the existing contact field on the webform to autoload static value through a predefined relationship to another ‘existing contact’ field on the webform.
i.e.
If Contact 1 is the Case Client and has a relationship: ‘Employee of’ with Ashville School, we can add another contact field on the webform and enable the relationship fields on it to:
‘Employee of’.
![Screen_Shot_2018-06-25_at_18.39.01](/uploads/c00aa3024f6e72160d7f781b1778f302/Screen_Shot_2018-06-25_at_18.39.01.png)
We will also have to edit the ‘Existing Contact’ field and select it’s default value to load from a relationship.
![Screen_Shot_2018-06-25_at_18.40.02](/uploads/0b316d87ec5e6fb5055765411b4dea1e/Screen_Shot_2018-06-25_at_18.40.02.png)
This would mean that Contact 2 on the webform will be the value coming from the ‘Employee of’ relationship with Contact 1 (in this case - for our selected case client - it would be ‘Ashville School’)
In this way we are able to load the value from a relationship that 2 contacts have, however, we can not do this dynamically.
I.e.
Contact 3 (another contact on the webform) cannot be set to filter and give back a list of all the students at Ashville School (have a relationship ‘Student at’ with ‘Ashville School’, so that the user filling the form can select one of the students.
**How we would like to improve the functionality:**
With this new implementation, we will be able to filter values for an ‘Existing Contact’ field on the webform through specifying a relationship and relationship with.
Continuing from our previous example where:
Contact 1 - Joe Bloggs (Case Client)
Contact 2 - Ashville School (Has the relationship ‘Employer of’ with Joe Bloggs)
Contact 3 - We need a list of all students at Ashville School and be able to select this on the form
To achieve this - we will need the following configurations in the filters section of the ‘Existing Contact’ field:
![Screen_Shot_2018-06-25_at_18.36.55](/uploads/b5ab2bbe9d46659399bae4739b6010e3/Screen_Shot_2018-06-25_at_18.36.55.png)
In the above example, the user will be able to select:
Relationship Type - ‘Student at’
Contact - ‘Contact 2’
This would mean when the webform loads, it will populate all the students at Contact 2 (Ashville School) as option values for Contact 3.https://lab.civicrm.org/dev/core/-/issues/208Load case to webform with contactID, checksum and caseID in the URL2020-10-19T23:40:28ZshitijgLoad case to webform with contactID, checksum and caseID in the URL**Overview:**
This ticket is targeted at improving the case loading functionality for webforms.
We need to modify the webform to autoload the case onto a webform if contact id and checksum of the case manager (or anyone who has permiss...**Overview:**
This ticket is targeted at improving the case loading functionality for webforms.
We need to modify the webform to autoload the case onto a webform if contact id and checksum of the case manager (or anyone who has permission to see the case) and case id are present in the url.
**How it works currently:**
Case fields (except case roles) are currently loading on webforms. However, this is not the case when we use checksum of a user who has access to the case and send this case url to as that user in email.
This url has the contactID and checksum of the user who we are sending an email, and the caseID.
**How we would like to improve the functionality:**
By passing the contactID + checksum (of a user who has access to the case) and the case ID in the URL, the case will be accessible (preload in the webform) to the case manager (or anyone who has permission to see the case)https://lab.civicrm.org/dev/core/-/issues/209Case Scheduled Reminders2023-10-03T05:03:22ZshitijgCase Scheduled Reminders**User story:**
- As a CiviCRM administrator
- I would like to configure a scheduled reminder to be sent
- that will include the following tokens:
- All fields from table civicrm_case and associated case custom fields
- All contac...**User story:**
- As a CiviCRM administrator
- I would like to configure a scheduled reminder to be sent
- that will include the following tokens:
- All fields from table civicrm_case and associated case custom fields
- All contact tokens for the contact the scheduled reminder is being sent to as per normal scheduled reminders
- when a specific case type (or types) changes to a specific case status (or status’s)
- either immediately or after a desired period of time has passed from the change in status*
- to one or more case roles, groups of contacts or individual contacts
- so that I can have an email or sms sent to specific contacts when the case status changes to inform them about changes in the case.
**Wireframe:**
The wireframe in the original ticket is somewhat incomplete and doesn’t discuss
- The time period point and how it should work
- The case role’s filtering
As such I would suggest the following solution:
![8d2fca53-d8a0-4cfa-b208-4cc889ee09e0](/uploads/a292bb55efdea95398d0ca47e4b363d4/8d2fca53-d8a0-4cfa-b208-4cc889ee09e0.png)
**Notes:**
- If case type or case status is not selected then all case types and status should send the reminder.
- The “when” feature should operate such that if it is left blank then the reminder should be sent and only sent once but for cases meeting the criteria and the following when criteria:
- “After status change”
- Immediately after the status change takes place if that is the selected option and no other fields are filled in.
- Or the specified time after the status change takes place if a “number of hours or days after” is filled in
- Or on or after the “when” date if this is filled in
- If both the when and the “number of hours or days after” is filled in then the scheduled reminder should send only once on the earlier of those two dates. CiviCRM’s UX here is a bit nutty - 😳
- “Case start date”
- Immediately after the case start date for cases that meet that criteria if that is the selected option and no other fields are filled in.
- Or the specified time after the case start date if a “number of hours or days after” is filled in
- Or on or after the “when” date if this is filled in
- If both the when and the “number of hours or days after” is filled in then the scheduled reminder should send only once on the earlier of those two dates.
- “Case end date”
- Immediately after the case end date for cases that meet that criteria if that is the selected option and no other fields are filled in.
- Or the specified time after the case end date if a “number of hours or days after” is filled in
- Or on or after the “when” date if this is filled in
- If both the when and the “number of hours or days after” is filled in then the scheduled reminder should send only once on the earlier of those two dates.
- NICE TO HAVE: Can we also support any date type custom fields that are added to the case with the same logic and list those custom fields in the dropdown? i.e. create a case custom field “Court date” and then have that date in the scheduled reminder filters? Lower priority.
- Limit or add to case roles:
- Should allow user to select the case roles that the email will be sent to.https://lab.civicrm.org/dev/core/-/issues/212Contribution Details report fails when "Is not one of" condition is used for ...2018-07-05T23:11:11ZscardiniusContribution Details report fails when "Is not one of" condition is used for Groups field# how to reproduce
* run CiviCRM 5.1.2
* open Report > Contribution Reports > Contribution Details
* click on Filters tab
* scroll down to Groups field
* change condition to "Is not one of"
* choose at least one group
* click Refresh re...# how to reproduce
* run CiviCRM 5.1.2
* open Report > Contribution Reports > Contribution Details
* click on Filters tab
* scroll down to Groups field
* change condition to "Is not one of"
* choose at least one group
* click Refresh results
* result: DB Error: no such field
# sql
sql error `Unknown column 'group_temp_table.id' in 'where clause'`
```
[db_error: message="DB Error: no such field" code=-19 mode=callback callback=CRM_Core_Error::handle prefix="" info="
CREATE TEMPORARY TABLE civireport_contribution_detail_temp2 DEFAULT
CHARACTER SET utf8 COLLATE utf8_unicode_ci AS SELECT SQL_CALC_FOUND_ROWS contact_civireport.sort_name as civicrm_contact_sort_name, contact_civireport.id as civicrm_contact_id, email_civireport.email as c
ivicrm_email_email, phone_civireport.phone as civicrm_phone_phone, contribution_civireport.id as civicrm_contribution_contribution_id, contribution_civireport.financial_type_id as civicrm_contribution_fin
ancial_type_id, contribution_civireport.currency as civicrm_contribution_currency, contribution_civireport.receive_date as civicrm_contribution_receive_date, contribution_soft_civireport.amount as civicrm
_contribution_total_amount, 'Soft Credit' as civicrm_contribution_contribution_or_soft, address_civireport.country_id as civicrm_address_country_id
FROM civireport_contribution_detail_temp1 temp1_civireport
INNER JOIN civicrm_contribution contribution_civireport
ON temp1_civireport.civicrm_contribution_contribution_id = contribution_civireport.id
INNER JOIN civicrm_contribution_soft contribution_soft_civireport
ON contribution_soft_civireport.contribution_id = contribution_civireport.id
INNER JOIN civicrm_contact contact_civireport
ON contact_civireport.id = contribution_soft_civireport.contact_id
LEFT JOIN civicrm_phone phone_civireport
ON (contact_civireport.id =
phone_civireport.contact_id) AND
phone_civireport.is_primary = 1
LEFT JOIN civicrm_address address_civireport
ON (contact_civireport.id =
address_civireport.contact_id) AND
address_civireport.is_primary = 1
LEFT JOIN civicrm_email email_civireport
ON contact_civireport.id = email_civireport.contact_id AND
email_civireport.is_primary = 1
WHERE (1) AND ( contribution_civireport.contribution_status_id IN (1) )
AND group_temp_table.id IS NULL
GROUP BY contact_civireport.id, contribution_civireport.id
[nativecode=1054 ** Unknown column 'group_temp_table.id' in 'where clause']"
]
```5.5.0https://lab.civicrm.org/dev/core/-/issues/214Suppress inappropriate error when trying to schedule mailing for today2022-08-17T05:03:36ZJoeMurraySuppress inappropriate error when trying to schedule mailing for todayWhen trying to schedule a mailing, there are two fields: one for date and one for time. If you select today for date a popup error immediately says that 'Error
The scheduled date and time is in the past'. It would be better if this was d...When trying to schedule a mailing, there are two fields: one for date and one for time. If you select today for date a popup error immediately says that 'Error
The scheduled date and time is in the past'. It would be better if this was delayed somewhat, though there are many possibilities. User ends up thinking Civi doesn't know correct date.
How about if validation changed so that if date==today and time is null, then set time=now()+1 minute?Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/215Contact Dashboard Personal Campaign Pages section repeats Campaign rows for e...2022-08-18T05:03:48ZAllenShawContact Dashboard Personal Campaign Pages section repeats Campaign rows for each user-created PCPLooks to me like a regression of [CRM-11340](https://issues.civicrm.org/jira/browse/CRM-11340).
**PR Raised https://github.com/civicrm/civicrm-core/pull/12369**
To reproduce on dmaster.demo.civicrm.org:
1. Ensure exixstence of at leas...Looks to me like a regression of [CRM-11340](https://issues.civicrm.org/jira/browse/CRM-11340).
**PR Raised https://github.com/civicrm/civicrm-core/pull/12369**
To reproduce on dmaster.demo.civicrm.org:
1. Ensure exixstence of at least 2 1 contriubution page with Personal Campaign Pages enabled; this recipe is easier if you remove the admin approval requirement, but that's not relevant to the issue.
2. As anonymous user, visit the URL to create your own PCP page for this campaign and complete the process.
3. Repeat step 2 to create a second PCP page for this campaign.
4. As admin, visit http://dmaster.demo.civicrm.org/civicrm/admin/pcp?reset=1&action=browse and observe there are at least two PCP pages for this campaign. Also ensure neither of these two pages is owned by the account you're currently logged in with.
5. Visit the user dashboard at http://dmaster.demo.civicrm.org/civicrm/user?reset=1, and observe this campaign is listed twice under "create a Personal Campaign Page", ass in attached screenshot:
![dmaster](/uploads/45adace7953442815335acdff567dbf6/dmaster.png)
Preliminary testing shows the following patch fixes the issue, but unsure of possible side effects:
```
diff --git a/CRM/PCP/BAO/PCP.php b/CRM/PCP/BAO/PCP.php
index b21a3a2..65ef434 100644
--- a/CRM/PCP/BAO/PCP.php
+++ b/CRM/PCP/BAO/PCP.php
@@ -184,7 +184,7 @@ FROM civicrm_pcp_block block
LEFT JOIN civicrm_pcp pcp ON pcp.pcp_block_id = block.id
WHERE block.is_active = 1
{$clause}
-GROUP BY block.id, pcp.id
+GROUP BY block.id
ORDER BY target_entity_type, target_entity_id
";
$pcpBlockDao = CRM_Core_DAO::executeQuery($query);
```Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/221Inappropriate warning on preview page of empty custom data set2018-07-30T09:49:04ZmadhaviInappropriate warning on preview page of empty custom data setI'am using Civicrm version 5.2.2.
When a new empty custom data set is created and clicked on preview it gives following warning on the preview page:
![customDataPreview](/uploads/5c4116b36bdd37e3a090e70b3a31eb41/customDataPreview.png)
PR...I'am using Civicrm version 5.2.2.
When a new empty custom data set is created and clicked on preview it gives following warning on the preview page:
![customDataPreview](/uploads/5c4116b36bdd37e3a090e70b3a31eb41/customDataPreview.png)
PR here : https://github.com/civicrm/civicrm-core/pull/12392https://lab.civicrm.org/dev/core/-/issues/223Expose prefix and suffix in reports2018-07-24T00:24:18ZyashodhaExpose prefix and suffix in reportsAdd prefix and suffix to *getContactColumns* method.Add prefix and suffix to *getContactColumns* method.5.5.0yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/2275.3 beta - cannot update custom group of fields without backtrace2018-07-03T14:10:12Zjamie5.3 beta - cannot update custom group of fields without backtraceTo reproduce:
* Create a custom group that is used for Activities and don't pick any activity types.
* Don't add any fields
* Edit the settings for the custom group and select an activity type for it to apply to
Result is a back trace ...To reproduce:
* Create a custom group that is used for Activities and don't pick any activity types.
* Don't add any fields
* Edit the settings for the custom group and select an activity type for it to apply to
Result is a back trace (but the changes are saved).
This seems to be a regression from c746070e750af03108bc267ed3a583a5943c0f97.
In particular - `CRM_Core_BAO_SchemaHandler::changeUniqueToIndex` is called from line 207. is_multiple is false (I'm not entirely sure what that means) which causes CRM_Core_BAO_SchemaHandler::changeUniqueToIndex to pass $dropUnique as FALSE, which then tries to drop a foreign key that doesn't exist.
If $dropUnique is TRUE there is no backtrace.
Thanks to everyone for the amazing 5.3 work - our first bug after a week of roll outs!
jamie
```
#0 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/Error.php(190): CRM_Core_Error::backtrace()
#1 /var/www/powerbase/sites/all/modules/civicrm/packages/PEAR.php(921): CRM_Core_Error::handle(Object(DB_Error))
#2 /var/www/powerbase/sites/all/modules/civicrm/packages/DB.php(985): PEAR_Error->__construct("DB Error: not found", -4, 16, (Array:2), " ALTER TABLE civicrm_value_proposal_info_8\nDROP INDEX `FK_civicrm_value_prop...")
#3 /var/www/powerbase/sites/all/modules/civicrm/packages/PEAR.php(575): DB_Error->__construct(-4, 16, (Array:2), " ALTER TABLE civicrm_value_proposal_info_8\nDROP INDEX `FK_civicrm_value_prop...")
#4 /var/www/powerbase/sites/all/modules/civicrm/packages/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -4, 16, (Array:2), " ALTER TABLE civicrm_value_proposal_info_8\nDROP INDEX `FK_civicrm_value_prop...", "DB_Error", TRUE)
#5 /var/www/powerbase/sites/all/modules/civicrm/packages/DB/common.php(1905): PEAR->__call("raiseError", (Array:7))
#6 /var/www/powerbase/sites/all/modules/civicrm/packages/DB/mysqli.php(933): DB_common->raiseError(-4, NULL, NULL, " ALTER TABLE civicrm_value_proposal_info_8\nDROP INDEX `FK_civicrm_value_prop...", "1091 ** Can't DROP 'FK_civicrm_value_proposal_info_8_entity_id'; check that c...")
#7 /var/www/powerbase/sites/all/modules/civicrm/packages/DB/mysqli.php(403): DB_mysqli->mysqliRaiseError()
#8 /var/www/powerbase/sites/all/modules/civicrm/packages/DB/common.php(1216): DB_mysqli->simpleQuery(" ALTER TABLE civicrm_value_proposal_info_8\nDROP INDEX `FK_civicrm_value_prop...")
#9 /var/www/powerbase/sites/all/modules/civicrm/packages/DB/DataObject.php(2443): DB_common->query(" ALTER TABLE civicrm_value_proposal_info_8\nDROP INDEX `FK_civicrm_value_prop...")
#10 /var/www/powerbase/sites/all/modules/civicrm/packages/DB/DataObject.php(1635): DB_DataObject->_query(" ALTER TABLE civicrm_value_proposal_info_8\nDROP INDEX `FK_civicrm_value_prop...")
#11 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/DAO.php(415): DB_DataObject->query(" ALTER TABLE civicrm_value_proposal_info_8\nDROP INDEX `FK_civicrm_value_prop...")
#12 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/DAO.php(1371): CRM_Core_DAO->query(" ALTER TABLE civicrm_value_proposal_info_8\nDROP INDEX `FK_civicrm_value_prop...", TRUE)
#13 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/BAO/SchemaHandler.php(411): CRM_Core_DAO::executeQuery(" ALTER TABLE civicrm_value_proposal_info_8\nDROP INDEX `FK_civicrm_value_prop...")
#14 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/BAO/CustomGroup.php(207): CRM_Core_BAO_SchemaHandler::changeUniqueToIndex("civicrm_value_proposal_info_8", "")
#15 /var/www/powerbase/sites/all/modules/civicrm/CRM/Custom/Form/Group.php(458): CRM_Core_BAO_CustomGroup::create((Array:16))
#16 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/Form.php(466): CRM_Custom_Form_Group->postProcess()
#17 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/StateMachine.php(160): CRM_Core_Form->mainProcess()
#18 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/QuickForm/Action/Next.php(61): CRM_Core_StateMachine->perform(Object(CRM_Custom_Form_Group), "next", "Next")
#19 /var/www/powerbase/sites/all/modules/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Custom_Form_Group), "next")
#20 /var/www/powerbase/sites/all/modules/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Custom_Form_Group), "next")
#21 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/Controller.php(351): HTML_QuickForm_Page->handle("next")
#22 /var/www/powerbase/sites/all/modules/civicrm/CRM/Custom/Page/Group.php(172): CRM_Core_Controller->run()
#23 /var/www/powerbase/sites/all/modules/civicrm/CRM/Custom/Page/Group.php(139): CRM_Custom_Page_Group->edit("8", 2)
#24 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/Invoke.php(309): CRM_Custom_Page_Group->run((Array:4), NULL)
#25 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/Invoke.php(84): CRM_Core_Invoke::runItem((Array:16))
#26 /var/www/powerbase/sites/all/modules/civicrm/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke((Array:4))
#27 /var/www/powerbase/sites/all/modules/civicrm/drupal/civicrm.module(445): CRM_Core_Invoke::invoke((Array:4))
#28 /var/www/powerbase/includes/menu.inc(527): civicrm_invoke("admin", "custom", "group")
#29 /var/www/powerbase/index.php(21): menu_execute_active_handler()
#30 {main}
```5.3.0https://lab.civicrm.org/dev/core/-/issues/228Option group disabled on update2018-07-11T00:47:58ZajesamsonOption group disabled on updateWhen updating option group attributes (excluding `is_active`), the updated option group gets disabled. This is because option group was [defaulted](https://github.com/civicrm/civicrm-core/blob/master/CRM/Core/BAO/OptionGroup.php#L95) to ...When updating option group attributes (excluding `is_active`), the updated option group gets disabled. This is because option group was [defaulted](https://github.com/civicrm/civicrm-core/blob/master/CRM/Core/BAO/OptionGroup.php#L95) to `FALSE` when adding or updating record without specifying desired `is_active` status.
![option_group](/uploads/d8291f18e46149d5852335749ca473e3/option_group.gif)
The desired result would have been leaving the `is_active` status untouched, if not required to be updated during attributes update.5.5.0https://lab.civicrm.org/dev/core/-/issues/230Saved Search : Set Mapping id to null on mapping delete2018-11-18T20:56:51ZsunilSaved Search : Set Mapping id to null on mapping deletecivicrm_saved_search -> mapping_id is FOREIGN key REFERENCES of civicrm_mapping (id).
When mapping have reference with saved search table. while deleting the mapping get SQL Error.civicrm_saved_search -> mapping_id is FOREIGN key REFERENCES of civicrm_mapping (id).
When mapping have reference with saved search table. while deleting the mapping get SQL Error.5.5.0https://lab.civicrm.org/dev/core/-/issues/232Contact types with double hyphens in 'name' field : searches not returning an...2018-07-26T14:57:01ZPradeep Nayakpradpnayak@gmail.comContact types with double hyphens in 'name' field : searches not returning any contactshhttps://lab.civicrm.org/dev/core/-/issues/234Upgrade Steps in 5.3.alpha1 may not have been run2018-10-14T01:01:14ZseamusleeUpgrade Steps in 5.3.alpha1 may not have been runDue to a bug in the upgrade process the upgrade steps in 5.3.alhpa1 may not have been run. We need to copy them to 5.3.0 and re-runDue to a bug in the upgrade process the upgrade steps in 5.3.alhpa1 may not have been run. We need to copy them to 5.3.0 and re-run5.4.0seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/237Hide Drupal8 Administer Menu bar on CiviCRM pages2018-08-12T23:41:09ZMonish DebHide Drupal8 Administer Menu bar on CiviCRM pagesCurrently on Drupal8-Civi instance, when you visit any CiviCRM page you will find a Drupal8 Admin menu bar behind the CiviCRM menu bar:
![Screen_Shot_2018-07-06_at_2.01.21_PM](/uploads/ac5b9febff84a27b494d2d009aaf3910/Screen_Shot_2018-07...Currently on Drupal8-Civi instance, when you visit any CiviCRM page you will find a Drupal8 Admin menu bar behind the CiviCRM menu bar:
![Screen_Shot_2018-07-06_at_2.01.21_PM](/uploads/ac5b9febff84a27b494d2d009aaf3910/Screen_Shot_2018-07-06_at_2.01.21_PM.png)
Proposal
---------
It won't be a good idea to expand the CiviCRM menu bar to the width of Drupal8 menu bar, instead hide the Drupal8 menu bar when we are on Civi page. To restore the Drupal8 menu, you can use the existing CiviCRM actions to toggle CiviCRM menu on any Civi page.Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/241Fix Manage Premiums UI2018-07-12T23:12:09Zmattwiremjw@mjwconsult.co.ukFix Manage Premiums UIRef: https://github.com/civicrm/civicrm-core/pull/12436
Manage premiums UI was not displaying the financial type correctly (it was showing the ID). The PR does the following:
1. Enable pseudoconstant for financial_type_id.
2. Use pseud...Ref: https://github.com/civicrm/civicrm-core/pull/12436
Manage premiums UI was not displaying the financial type correctly (it was showing the ID). The PR does the following:
1. Enable pseudoconstant for financial_type_id.
2. Use pseudoconstant functions to get the financial_type label (name) for display.
3. Format the money fields using crmMoney.
4. Add the cost field to the UI (normally I'd do this as a separate PR but it would be more work to break out the template changes and given how flaky/old the premiums code seems to be I suspect it's not actually being used by very many people - also it's only affecting an admin screen by displaying existing information).5.5.0https://lab.civicrm.org/dev/core/-/issues/242Fix display of premiums on contribution pages2018-07-24T05:11:10Zmattwiremjw@mjwconsult.co.ukFix display of premiums on contribution pagesPR Ref: https://github.com/civicrm/civicrm-core/pull/12437
If a premium product is created with no financial type and then added to a contribution page it is not displayed because the contribution page is only selecting those with a fin...PR Ref: https://github.com/civicrm/civicrm-core/pull/12437
If a premium product is created with no financial type and then added to a contribution page it is not displayed because the contribution page is only selecting those with a financial type, but financial type is optional unless you have configured a cost for the product.
Furthermore, if you update the premium product to have a financial type that is not mirrored to the civicrm_premium_product table which contains the configuration for the premium products available on a contribution page.5.5.0https://lab.civicrm.org/dev/core/-/issues/245Duplicate activities shown on case tab2018-08-06T21:11:10Zmattwiremjw@mjwconsult.co.ukDuplicate activities shown on case tabWhen a case activity has multiple target/assignee contacts they appear as duplicates on the case activities tab.
Additionally, during investigation it was identified that the link to edit an activity which is only allowed once for a cas...When a case activity has multiple target/assignee contacts they appear as duplicates on the case activities tab.
Additionally, during investigation it was identified that the link to edit an activity which is only allowed once for a case contains the value "data" instead of the activity ID and hence does not work.
In this screenshot, this is the same activity (you can see the target contact is different):
![localhost_8000_civicrm_duplicatecases](/uploads/a1350fa7d94ea867acc4af7faeeca841/localhost_8000_civicrm_duplicatecases.png)
PR: https://github.com/civicrm/civicrm-core/pull/124445.6https://lab.civicrm.org/dev/core/-/issues/249Contact Export fails in 5.4 when trying to export using the All radio button2018-07-12T22:29:35ZseamusleeContact Export fails in 5.4 when trying to export using the All radio buttonAs per https://chat.civicrm.org/civicrm/pl/a8myronnftgt8mcehfa8ohcnbo when using the all contacts radio button to do an export the export fails in 5.4As per https://chat.civicrm.org/civicrm/pl/a8myronnftgt8mcehfa8ohcnbo when using the all contacts radio button to do an export the export fails in 5.45.4.0https://lab.civicrm.org/dev/core/-/issues/251Fix batch copy for membership type field2019-05-01T06:03:03ZyashodhaFix batch copy for membership type fieldSteps to replicate :
1. Create a profile with membership type field.
2. Click Find Memberships and select a few members and do Update multiple memberships with above profile.
3. Click on copy icon for membership type, it doesn't copy ov...Steps to replicate :
1. Create a profile with membership type field.
2. Click Find Memberships and select a few members and do Update multiple memberships with above profile.
3. Click on copy icon for membership type, it doesn't copy over 1st row to the restyashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/259OptionGroup Admin UI workflow improvements2018-12-18T12:16:03Zmattwiremjw@mjwconsult.co.ukOptionGroup Admin UI workflow improvementsVarious improvements to the "flow" of the option groups admin pages.
Before
----------------------------------------
* No option to edit option group settings (eg. change the label).
* When clicking "Done" editing options, redirect to t...Various improvements to the "flow" of the option groups admin pages.
Before
----------------------------------------
* No option to edit option group settings (eg. change the label).
* When clicking "Done" editing options, redirect to the option groups list instead of the default admin page.
After
----------------------------------------
* Add option to edit option group settings (the code was already in place, but not exposed in UI).
* Display "is_reserved" status on option group settings.
* Don't allow changing data type on reserved option groups.
* On update optiongroup don't touch is_reserved.
![localhost_8000_civicrm_admin_options_action browse reset 1 4](https://user-images.githubusercontent.com/2052161/42726000-43ca3642-8785-11e8-9ea3-d0228ceb558e.png)
![localhost_8000_civicrm_admin_options_action browse reset 1 5](https://user-images.githubusercontent.com/2052161/42726002-48fc8520-8785-11e8-9ebc-9267444e510f.png)
* When clicking "Done" editing options, redirect to the option groups list instead of the default admin page.
![localhost_8000_civicrm_admin_options_action browse reset 1 6](https://user-images.githubusercontent.com/2052161/42726010-6995ac9e-8785-11e8-8823-111f71f52d07.png)
Technical Details
----------------------------------------
UI only changes that enable editing option groups parameters.
Comments
----------------------------------------
If you are working with multiple option groups, the UI has always been a bit difficult to navigate and various functions are not possible via the UI (such as changing the label of an option group).
PR: https://github.com/civicrm/civicrm-core/pull/124735.5.0https://lab.civicrm.org/dev/core/-/issues/263Release candidate regression: Can't create contribution pages.2018-07-18T22:42:07ZJonGoldRelease candidate regression: Can't create contribution pages.I've replicated this locally on the rc, the master branch and on the demo site.
* Create a new contribution page, filling in only the two required fields.
* Press "Submit".
Get this:
```
backTrace
#0 /home/jon/local/civicrm-buildkit/b...I've replicated this locally on the rc, the master branch and on the demo site.
* Create a new contribution page, filling in only the two required fields.
* Press "Submit".
Get this:
```
backTrace
#0 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Core/Error.php(190): CRM_Core_Error::backtrace()
#1 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/PEAR.php(921): CRM_Core_Error::handle(Object(DB_Error))
#2 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/DB.php(985): PEAR_Error->__construct("DB Error: unknown error", -1, 16, (Array:2), "INSERT INTO civicrm_contribution_page (title , intro_text , financial_type_id...")
#3 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/PEAR.php(575): DB_Error->__construct(-1, 16, (Array:2), "INSERT INTO civicrm_contribution_page (title , intro_text , financial_type_id...")
#4 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -1, 16, (Array:2), "INSERT INTO civicrm_contribution_page (title , intro_text , financial_type_id...", "DB_Error", TRUE)
#5 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/DB/common.php(1907): PEAR->__call("raiseError", (Array:7))
#6 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/DB/mysqli.php(933): DB_common->raiseError(-1, NULL, NULL, "INSERT INTO civicrm_contribution_page (title , intro_text , financial_type_id...", "1292 ** Incorrect datetime value: '7' for column 'start_date' at row 1")
#7 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/DB/mysqli.php(403): DB_mysqli->mysqliRaiseError()
#8 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/DB/common.php(1216): DB_mysqli->simpleQuery("INSERT INTO civicrm_contribution_page (title , intro_text , financial_type_id...")
#9 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/DB/DataObject.php(2443): DB_common->query("INSERT INTO civicrm_contribution_page (title , intro_text , financial_type_id...")
#10 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/DB/DataObject.php(1068): DB_DataObject->_query("INSERT INTO civicrm_contribution_page (title , intro_text , financial_type_id...")
#11 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Core/DAO.php(571): DB_DataObject->insert()
#12 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Contribute/BAO/ContributionPage.php(59): CRM_Core_DAO->save()
#13 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php(344): CRM_Contribute_BAO_ContributionPage::create((Array:25))
#14 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Core/Form.php(489): CRM_Contribute_Form_ContributionPage_Settings->postProcess()
#15 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Core/StateMachine.php(160): CRM_Core_Form->mainProcess()
#16 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Core/QuickForm/Action/Next.php(61): CRM_Core_StateMachine->perform(Object(CRM_Contribute_Form_ContributionPage_Settings), "next", "Next")
#17 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Contribute_Form_ContributionPage_Settings), "next")
#18 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contribute_Form_ContributionPage_Settings), "next")
#19 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Core/Controller.php(351): HTML_QuickForm_Page->handle("next")
#20 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Core/Invoke.php(309): CRM_Core_Controller->run((Array:4), NULL)
#21 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Core/Invoke.php(84): CRM_Core_Invoke::runItem((Array:14))
#22 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke((Array:4))
#23 /home/jon/local/civicrm-buildkit/build/rc/sites/all/modules/civicrm/drupal/civicrm.module(445): CRM_Core_Invoke::invoke((Array:4))
#24 /home/jon/local/civicrm-buildkit/build/rc/includes/menu.inc(527): civicrm_invoke("admin", "contribute", "add")
#25 /home/jon/local/civicrm-buildkit/build/rc/index.php(21): menu_execute_active_handler()
#26 {main}
Sorry, due to an error, we are unable to fulfill your request at the moment. You may want to contact your administrator or service provider with more details about what action you were performing when this occurred.
DB Error: unknown error
Error Details
Database Error Code: Incorrect datetime value: '7' for column 'start_date' at row 1, 1292
Additional Details:
Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -1
[message] => DB Error: unknown error
[mode] => 16
[debug_info] => INSERT INTO civicrm_contribution_page (title , intro_text , financial_type_id , is_credit_card_only , is_confirm_enabled , goal_amount , is_active , footer_text , start_date , end_date , created_id , created_date , currency , is_share ) VALUES ('test' , NULL , 3 , 0 , 1 , NULL , 1 , NULL , 7 , NULL , 202 , 20180717100536 , 'USD' , 0 ) [nativecode=1292 ** Incorrect datetime value: '7' for column 'start_date' at row 1]
[type] => DB_Error
[user_info] => INSERT INTO civicrm_contribution_page (title , intro_text , financial_type_id , is_credit_card_only , is_confirm_enabled , goal_amount , is_active , footer_text , start_date , end_date , created_id , created_date , currency , is_share ) VALUES ('test' , NULL , 3 , 0 , 1 , NULL , 1 , NULL , 7 , NULL , 202 , 20180717100536 , 'USD' , 0 ) [nativecode=1292 ** Incorrect datetime value: '7' for column 'start_date' at row 1]
[to_string] => [db_error: message="DB Error: unknown error" code=-1 mode=callback callback=CRM_Core_Error::handle prefix="" info="INSERT INTO civicrm_contribution_page (title , intro_text , financial_type_id , is_credit_card_only , is_confirm_enabled , goal_amount , is_active , footer_text , start_date , end_date , created_id , created_date , currency , is_share ) VALUES ('test' , NULL , 3 , 0 , 1 , NULL , 1 , NULL , 7 , NULL , 202 , 20180717100536 , 'USD' , 0 ) [nativecode=1292 ** Incorrect datetime value: '7' for column 'start_date' at row 1]"]
)
```5.4.0https://lab.civicrm.org/dev/core/-/issues/264Fatal Error on editting Financial Transaction2019-03-15T20:08:39ZtommyboboFatal Error on editting Financial TransactionIn 5.3.0 tested on Dev site and civicrmfr.org demo
1. Create a completed contribution.
2. Edit contribution by increasing contribution amount and net amount.
This will create a new financial transaction with NO Payment Instrument.
3...In 5.3.0 tested on Dev site and civicrmfr.org demo
1. Create a completed contribution.
2. Edit contribution by increasing contribution amount and net amount.
This will create a new financial transaction with NO Payment Instrument.
3. Edit new Financial Transaction to add Payment Instrument. Click Update - Get Spinning Logo Error
ConfigAndLog Records this error.
```
$Fatal Error Details = array(3) {
["message"]=>
string(65) "Mandatory key(s) missing from params array: payment_instrument_id"
["code"]=>
NULL
["exception"]=>
object(CiviCRM_API3_Exception)#323 (8) {
["extraParams":"CiviCRM_API3_Exception":private]=>
array(6) {
["fields"]=>
array(1) {
[0]=>
string(21) "payment_instrument_id"
}
["error_code"]=>
string(17) "mandatory_missing"
["entity"]=>
string(13) "FinancialTrxn"
["action"]=>
string(6) "create"
["is_error"]=>
int(1)
["error_message"]=>
string(65) "Mandatory key(s) missing from params array: payment_instrument_id"
}
["message":protected]=>
string(65) "Mandatory key(s) missing from params array: payment_instrument_id"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(65) "/server/public_html/sites/all/modules/civicrm/api/api.php"
["line":protected]=>
int(45)
["trace":"Exception":private]=>
array(15) {
[0]=>
array(4) {
["file"]=>
string(88) "/server/public_html/sites/all/modules/civicrm/CRM/Financial/Form/PaymentEdit.php"
["line"]=>
int(207)
["function"]=>
string(12) "civicrm_api3"
["args"]=>
array(3) {
[0]=>
string(13) "FinancialTrxn"
[1]=>
string(6) "create"
[2]=>
array(9) {
["to_financial_account_id"]=>
string(2) "23"
["trxn_date"]=>
string(19) "2018-07-16 17:23:00"
["total_amount"]=>
float(-10)
["fee_amount"]=>
float(0)
["net_amount"]=>
float(-10)
["currency"]=>
string(3) "USD"
["is_payment"]=>
string(1) "1"
["status_id"]=>
string(1) "1"
["contribution_id"]=>
string(5) "30997"
}
}
}
[1]=>
array(6) {
["file"]=>
string(88) "/server/public_html/sites/all/modules/civicrm/CRM/Financial/Form/PaymentEdit.php"
["line"]=>
int(175)
["function"]=>
string(6) "submit"
["class"]=>
string(30) "CRM_Financial_Form_PaymentEdit"
["type"]=>
string(2) "->"
["args"]=>
array(1) {
[0]=>
array(4) {
["id"]=>
string(5) "39513"
["payment_instrument_id"]=>
string(1) "3"
["trxn_id"]=>
string(0) ""
["trxn_date"]=>
string(19) "2018-07-16 17:23:00"
}
}
}
```5.3.1https://lab.civicrm.org/dev/core/-/issues/267Proposal - remove net_amount from contribution edit form - at least in edit m...2018-11-16T06:59:41ZeileenProposal - remove net_amount from contribution edit form - at least in edit mode.When people edit the total_amount on a contribution they have to edit the net_amount to match - why? We can calculate it.
**What happens now?**
For new contributions with no fees it is enough for the user to enter total amount. Howeve...When people edit the total_amount on a contribution they have to edit the net_amount to match - why? We can calculate it.
**What happens now?**
For new contributions with no fees it is enough for the user to enter total amount. However, if there is a fee they need to enter the fee AND calculate net_amount and enter them. If they edit the amount they need to update the net amount to be the same as the total amount less the fee amount.
The current behaviour dates back to svn days - however since 2015 the BAO has handled the possibility
of it not being set.
**What issues are there with this**
1. It causes pain for users
1. In addition we have had code issues with the comparison around [currency & float comparison issues](https://github.com/civicrm/civicrm-core/pull/11485) and [sales tax](https://lab.civicrm.org/dev/core/issues/260). In both cases the user cannot enter the correct data.
1. It undermines our unit testing - in Mar 2017 [the unit tests were edited](https://github.com/civicrm/civicrm-core/pull/9948/files#diff-40e2e0f106ba620465acf3a9a81f2498L1535) to remove net_amount from the form submission values in our unit tests. New tests written since then have been based on these net_amountless tests.
**[Proposed change Remove the field altogether from the form]
(https://github.com/eileenmcnaughton/civicrm-core/commit/0bee3ce6fa18fa24d75c7bb9e86618ff0ac1f025)**
**Risks**
I would hope some people would commit to testing the rc - but as mentioned above our tests already expect it not to be set so we are already testing the proposed scenario.
there is a risk that some people really like the fact that when the edit the total_amount and not the fee_amount they get a validation error - IF that seems to be a real issue - not just me flailing around for reasons - then we could either move the fee_amount field or have some UI sugar mentioning the fee_amount next to total_amount.
Here is the BAO function that calculates it.
```
/**
* Calculate net_amount & fee_amount if they are not set.
*
* Net amount should be total - fee.
* This should only be called for new contributions.
*
* @param array $params
* Params for a new contribution before they are saved.
* @param int|null $contributionID
* Contribution ID if we are dealing with an update.
*
* @throws \CiviCRM_API3_Exception
*/
public static function calculateMissingAmountParams(&$params, $contributionID) {
if (!$contributionID && !isset($params['fee_amount'])) {
if (isset($params['total_amount']) && isset($params['net_amount'])) {
$params['fee_amount'] = $params['total_amount'] - $params['net_amount'];
}
else {
$params['fee_amount'] = 0;
}
}
if (!isset($params['net_amount'])) {
if (!$contributionID) {
$params['net_amount'] = $params['total_amount'] - $params['fee_amount'];
}
else {
if (isset($params['fee_amount']) || isset($params['total_amount'])) {
// We have an existing contribution and fee_amount or total_amount has been passed in but not net_amount.
// net_amount may need adjusting.
$contribution = civicrm_api3('Contribution', 'getsingle', array(
'id' => $contributionID,
'return' => array('total_amount', 'net_amount'),
));
$totalAmount = isset($params['total_amount']) ? $params['total_amount'] : CRM_Utils_Array::value('total_amount', $contribution);
$feeAmount = isset($params['fee_amount']) ? $params['fee_amount'] : CRM_Utils_Array::value('fee_amount', $contribution);
$params['net_amount'] = $totalAmount - $feeAmount;
}
}
}
}
```5.6https://lab.civicrm.org/dev/core/-/issues/268PHP Warnings when 'name' of relationship types are duplicated2023-02-10T05:03:35ZJKingsnorthPHP Warnings when 'name' of relationship types are duplicatedThis is a tenuous edge-case, but:
Steps to recreate:
- Administer relationship types: https://dmaster.demo.civicrm.org/civicrm/admin/reltype?reset=1
- Add a new relationship type
- Enter 'Foo of' for both a-b and b-a labels, save
- Edit...This is a tenuous edge-case, but:
Steps to recreate:
- Administer relationship types: https://dmaster.demo.civicrm.org/civicrm/admin/reltype?reset=1
- Add a new relationship type
- Enter 'Foo of' for both a-b and b-a labels, save
- Edit the relationship, change the label for a-b to 'Foo not of'
- Save
- View a contact record, flush caches:
Warning: array_combine(): Both parameters should have an equal number of elements in CRM_Contact_BAO_Relationship::buildRelationshipTypeOptions() (line 2239 of .../civicrm/CRM/Contact/BAO/Relationship.php).
This is because the removeRelationshipTypeDuplicates method is removing the duplicate 'names' but not the duplicate 'labels', which creates an imbalance for the array_combine()
I'm pretty confused about why these methods are going to so much trouble to build and dedupe and list of relationship types anyway?
But the issue is, this means that CRM_Contact_BAO_Relationship::buildRelationshipTypeOptions() actually returns FALSE, when we're not on a form, because it couldn't combine the array. I haven't seen where this is causing a breakage yet, but it gives me the heebie-jeebies.
Related to https://github.com/civicrm/civicrm-core/pull/11853https://lab.civicrm.org/dev/core/-/issues/867Expose line item name on search2023-04-30T05:03:21ZmaduraExpose line item name on search## Problem
On Advanced Search and Find Contributions there is currently no field to search for the line items. If an admin wants to be able to search for the contacts or contributions based on line items information there is no other se...## Problem
On Advanced Search and Find Contributions there is currently no field to search for the line items. If an admin wants to be able to search for the contacts or contributions based on line items information there is no other search parameters available.
## Proposed Solution
Introduce the "line item name" field in search.
Technical Steps:
- Add a new field to contribution search form and in postprocess, handle it and add suitable where clauses using existing fields as reference.
- Add a new textfield for line item search in CRM_Contribute_BAO_Query::buildSearchForm()
- In CRM_Contribute_BAO_Query::whereClauseSingle add logic for including condition for line item name.https://lab.civicrm.org/dev/core/-/issues/277Recurring contribution tab shouldn't count test transactions2018-07-31T22:12:11ZPradeep Nayakpradpnayak@gmail.comRecurring contribution tab shouldn't count test transactions![Screenshot_from_2018-07-24_13-27-48](/uploads/4ec1bca56c36f0c71cf2b7694662bde6/Screenshot_from_2018-07-24_13-27-48.png)
PR at https://github.com/civicrm/civicrm-core/pull/12553![Screenshot_from_2018-07-24_13-27-48](/uploads/4ec1bca56c36f0c71cf2b7694662bde6/Screenshot_from_2018-07-24_13-27-48.png)
PR at https://github.com/civicrm/civicrm-core/pull/125535.5.0https://lab.civicrm.org/dev/core/-/issues/280Deleting membership types do not remove price field values from online member...2022-09-09T05:03:27ZyashodhaDeleting membership types do not remove price field values from online membership formsSteps to replicate:
------------------
1. Create a price field with options(select/checkbox/radio).
2. Choose an option related to a membership type.
3. Delete the membership type and it sets NULL membership type for the price option wi...Steps to replicate:
------------------
1. Create a price field with options(select/checkbox/radio).
2. Choose an option related to a membership type.
3. Delete the membership type and it sets NULL membership type for the price option without any indications.
Desired behavior:
-----------------
**Delete membership**
I would like to get some input about the behavior-
1. When admin tries to delete a membership type, check for any related price fields and if yes, throw a form rule implying them to delete the price field first.
2. Or just show warning message with list of membership type used in price field and allow anyway.
**Disabled Membership Type**
I would like to get some input about the behavior-
1. Show warning Message on disable action and if yes, skip building price field option related to disabled membership type.
2. User can dismiss warning message but can't continue with disablement of membership typeyashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/284Aggressive cache clearing significantly increases test time2018-08-01T19:25:15ZtottenAggressive cache clearing significantly increases test timeThe test suites are significantly slower in Civi 5.4.beta1/5.5.alpha1 than in 5.3. (*Ballpark: +1hr*.) One might speculate that this stems from high contention for CI resources, additional tests, and/or generic changes in the framework/p...The test suites are significantly slower in Civi 5.4.beta1/5.5.alpha1 than in 5.3. (*Ballpark: +1hr*.) One might speculate that this stems from high contention for CI resources, additional tests, and/or generic changes in the framework/process. While the first two may also be factors, I've [run the test suites in isolation](https://github.com/totten/civi-test-bench-18) and found a clear [across-the-board slowdown (Jul 24 dataset)](https://docs.google.com/spreadsheets/d/1ktf5cd3LMrk_Keg4kgDIEr4-rL3ZIbDDzGHCI09-mOA/edit?usp=sharing) causing many test runtimes to grow by double (or more). For example, when running `api_v3_SyntaxConformanceTest` on an isolated system (no CPU/RAM contention), the time increased from 251s (v5.3) to 936s (v5.4.beta1) even while the #test-functions and #entities remained flat.
Focusing on one specific example (`api_v3_UtilsTest`; increased from ~1s to ~7s), I used `git bisect` to track the cause to 5aac553c8b88be9d7fb8ab568a923a3301fea4b2 from [12331](https://github.com/civicrm/civicrm-core/pull/12331) and dev/core#174 -- in particular, the biggest impact comes from adding `CRM_Extension_System::singleton()->getCache()->flush()` (+~5s), although there's also observable impact from `Civi::cache('settings')->flush();` (+~1s).
In discussing 12331, one of the major concerns was "How do we make `CRM_Utils_System::flushCache()` behave the same as before?" 5aac553 tried to do this, but it actually was a bit more aggressive. To see this, it helps to fully describe the behavior -- in each configuration, what's the impact on each cache?
* __(OLD) Behavior circa 5.3.x__ -- `CRM_Utils_System::flushCache()` calls `CRM_Utils_Cache::singleton()->flush()` which has a cascading effect on other caches.
* __(DEFAULT) Default configuration using ArrayCache+SQL table__
* `CRM_Utils_Cache` - Destroys the general `ArrayCache`, which is used as the front-cache for several others.
* `CRM_Core_BAO_Cache`: Due to `CRM_Utils_Cache` flush, the front-caches are flushed, but the underlying SQL caches are preserved.
* `settings`: Same as `CRM_Core_BAO_Cache`. (Flush ArrayCache at front, but keep underlying SQL cache.)
* `js_strings`: Same as `CRM_Core_BAO_Cache`. (Flush ArrayCache at front, but keep underlying SQL cache.)
* `community_messages`: Same as `CRM_Core_BAO_Cache`. (Flush ArrayCache at front, but keep underlying SQL cache.)
* `CRM_Extension_System::$cache`: Same as `CRM_Core_BAO_Cache`. (Flush ArrayCache at front, but keep underlying SQL cache.)
* `CiviCxnHttp`: Same as `CRM_Core_BAO_Cache`. (Flush ArrayCache at front, but keep underlying SQL.)
* __(MEM) Alternative Memcache/Redis configuration__
* `CRM_Utils_Cache` - Flushes *everything* in memory-backed cache.
* `CRM_Core_BAO_Cache`: Destroys the memory-backed front-cache but preserves the underlying SQL cache.
* `settings`: Completely flushed. (Due to `CRM_Utils_Cache` flush.)
* `js_strings`: Completely flushed. (Due to `CRM_Utils_Cache` flush.)
* `community_messages`: Completely flushed. (Due to `CRM_Utils_Cache` flush.)
* `CRM_Extension_System::$cache`: Completely flushed. (Due to `CRM_Utils_Cache` flush.)
* `CiviCxnHttp`: Same as `CRM_Core_BAO_Cache`. (Flush memory-backed front-cache, but keep underlying SQL cache.)
* __(NEW) Behavior circa 5.4.beta1/5.5.alpha1__ -- `CRM_Utils_System::flushCache()` calls several individual flush functions
* __(DEFAULT) Default configuration using ArrayCache+SQL table__
* `CRM_Core_BAO_Cache`: Due to `CRM_Utils_Cache` flush, the front-caches are flushed, but the underlying SQL caches are preserved.
* `settings`: Completely flushed. (Due to explicit call.)
* `js_strings`: Completely flushed. (Due to explicit call.)
* `community_messages`: Completely flushed. (Due to explicit call.)
* `CRM_Extension_System::$cache`: Completely flushed. (Due to explicit call.)
* `CiviCxnHttp`: Completely flushed. (Due to explicit call.)
* __(MEM) Alternative Memcache/Redis configuration__
* `CRM_Core_BAO_Cache`: Due to `CRM_Utils_Cache` flush, the front-caches are flushed, but the underlying SQL caches are preserved.
* `settings`: Completely flushed. (Due to explicit call.)
* `js_strings`: Completely flushed. (Due to explicit call.)
* `community_messages`: Completely flushed. (Due to explicit call.)
* `CRM_Extension_System::$cache`: Completely flushed. (Due to explicit call.)
* `CiviCxnHttp`: Completely flushed. (Due to explicit call.)
With that data, how we would describe both the original intent of 5aac553 ... and it's unintended consequence in this issue?
* During the development of 5.4.alpha1, we looked at the behavior of OLD-MEM and intended to keep the behavior the same. Thus, we have NEW-MEM which is basically the same as OLD-MEM.
* NEW-DEFAULT, NEW-MEM, and OLD-MEM are basically the same. But NEW-DEFAULT and OLD-DEFAULT are different.
* In running unit-tests, one flushes the caches frequently. The behavior of OLD-DEFAULT (where it *only* flushes front-caches... but generally preserves underlying caches) performs better for unit-tests. The behavior of NEW-DEFAULT/NEW-MEM/OLD-MEM does not perform as well.https://lab.civicrm.org/dev/core/-/issues/288Use the correct membership date for the notification that appear after comple...2019-04-01T21:27:31Zomar_compucorpUse the correct membership date for the notification that appear after completing the membership payment in case pre hook is usedSuppose you have an extension that implements **hook_civicrm_pre** on membership entity that add 1 year (or whatever amount of time) to the membership new end date whenever someone completed a pending payment for the membership, Based on...Suppose you have an extension that implements **hook_civicrm_pre** on membership entity that add 1 year (or whatever amount of time) to the membership new end date whenever someone completed a pending payment for the membership, Based on this assume the following example :
1- You created a pending membership starts today (27/7/2018) and ends in 1 year (26/7/2019).
2- You changed this membership payment (contribution) from "pending" to "completed".
Now without the hook implementation as explained above, the following message will appear :
```
the contribution record has been saved.
Membership for "CONTACT NAME" has been updated. The membership End Date is July 26th, 2019.
```
and the membership status will be change from Pending to New, And the end date of the membership will be similar to the one shown in the notification message which is 26/7/2019 which is all good.
But when you have the pre hook implemented as suggest above, the membership end date will be 26/7/2020 (since the hook add one year to the end date) but the notification message will still indicate the old end date which is 26/7/2019. This is wrong and the notification message should show the correct end date that reflects the membership actual end date.5.13.0https://lab.civicrm.org/dev/core/-/issues/290If locationType name/label are different, for non-billing locations, the cont...2022-09-10T05:03:24ZbgmIf locationType name/label are different, for non-billing locations, the contribution form will not pre-populate known fieldsHow to reproduce:
* Login on https://dmaster.demo.civicrm.org
* Go to the contact record of the demo user, and enter a "Home" address
* https://dmaster.demo.civicrm.org/civicrm/contact/view?reset=1&cid=203
* Configure this contrib for...How to reproduce:
* Login on https://dmaster.demo.civicrm.org
* Go to the contact record of the demo user, and enter a "Home" address
* https://dmaster.demo.civicrm.org/civicrm/contact/view?reset=1&cid=203
* Configure this contrib form, in Profiles, select the "Name and Address" profile (it includes the 'Home' address):
* https://dmaster.demo.civicrm.org/civicrm/admin/contribute/custom?reset=1&action=update&id=1
* Witness how it will correctly pre-populate the Home address on the contrib form:
* https://dmaster.demo.civicrm.org/civicrm/contribute/transact?reset=1&id=1
![Capture_d_écran_de_2018-07-27_17-50-57](/uploads/aa17899d9a177a0f4b1e482d2308d8fc/Capture_d_écran_de_2018-07-27_17-50-57.png)
That works because the name = label. Let's change the label of the Location Type:
* Change the Location Type label of "Home" to "Home2"
* https://dmaster.demo.civicrm.org/civicrm/admin/locationType?reset=1
* Go back to the contribution form and witness how it does not show the address anymore :-)
![civi-location-types](/uploads/8faf552cccd52706f6c782f72fd60ae8/civi-location-types.png)
![Capture_d_écran_de_2018-07-27_17-52-23](/uploads/97e1f638b9a92c80c06aa63526a58140/Capture_d_écran_de_2018-07-27_17-52-23.png)
:tada: :grimacing:https://lab.civicrm.org/dev/core/-/issues/297permission "access my cases and activities" is broken by CRM-214612018-08-28T01:29:10ZDaveDpermission "access my cases and activities" is broken by CRM-21461See https://civicrm.stackexchange.com/questions/25950/problem-with-civicase. CRM_Case_BAO_Case::getCases() used to return a list keyed on case_id. Now it returns a sequentially keyed list. I'm not sure if anything new is depending on the...See https://civicrm.stackexchange.com/questions/25950/problem-with-civicase. CRM_Case_BAO_Case::getCases() used to return a list keyed on case_id. Now it returns a sequentially keyed list. I'm not sure if anything new is depending on the new keys, but since that seems unlikely, replacing "$key" with "$case['case_id']" around line 680 and later instances would fix this?https://lab.civicrm.org/dev/core/-/issues/298API Explorer shows incorrect syntax for arrays via drush/cv2023-06-24T05:03:19ZJonGoldAPI Explorer shows incorrect syntax for arrays via drush/cvThe problem I'm seeing is displayed in the attached screenshot. When you create an API call with API Explorer that requires the use of an array, API Explorer adds the array, JSON-encoded, to the argument list. However, neither drush no...The problem I'm seeing is displayed in the attached screenshot. When you create an API call with API Explorer that requires the use of an array, API Explorer adds the array, JSON-encoded, to the argument list. However, neither drush nor cv (and I assume wp-cli) will parse the argument as an array. This has tripped up multiple folks on Stack Exchange ([1](https://civicrm.stackexchange.com/questions/10887/can-i-chain-api-calls-through-drush), [2](https://civicrm.stackexchange.com/questions/16423/passing-json-objects-to-drush-cvapi)).
As answers to those SE questions point out, it IS possible to use drush/cv and encode arrays. Instead of:
```
cv api Contact.create contact_type="Individual" first_name="Jon" options={"match":"first_name"}
```
We could do:
```
echo '{"contact_type":"Individual","first_name":"Jon","options":{"match":"first_name"}}' | cv api Contact.create --in=json
```
There are three solutions of increasing effort, depending on how important folks think this is. I'm willing to do the first one, and someone else can do 2 or 3 if they feel it's important.
1) Patch API Explorer so drush/cv/wp always show the (more complex) `echo foo | cv api bar.baz --in=json` syntax.
2) Patch API Explorer so drush/cv/wp show the more complex syntax when an array is present (I can do this if it's simple, I'd have to look).
3) Patch drush/wp/cv to match API Explorer.
![Selection_544](/uploads/1335415c85a5e6aaf9f185c023ce4c25/Selection_544.png)https://lab.civicrm.org/dev/core/-/issues/300Proposal - Attach cross-cms "page identifier" class to <body>2022-11-30T05:03:31ZAkA84Proposal - Attach cross-cms "page identifier" class to <body>## Problem
Currently there is no consistent way in Civi to tell which page you are on by querying the DOM. Usually this is done by having a class attached to the `<body>` tag that identifies the current page. Unfortunately each CMS use d...## Problem
Currently there is no consistent way in Civi to tell which page you are on by querying the DOM. Usually this is done by having a class attached to the `<body>` tag that identifies the current page. Unfortunately each CMS use different naming conventions, or attaches no class at all.
For example: this is the Contact Summary page's `<body>` tag on each CMS
```html
<!-- Drupal: .page-civicrm-contact-view -->
<body class="html not-front ... page-civicrm page-civicrm-contact page-civicrm-contact-view">
<!-- Joomla: .task-civicrmcontactview -->
<body class="admin com_civicrm ... task-civicrmcontactview">
<!-- Wordpress: none :( -->
<body class="wp-admin wp-core-ui ... customize-support svg”>
```
## Proposed solution
Civi should attach "proprietary" classes to `<body>`, independent from the underlying cms, so we would have something like
```html
<!-- Drupal -->
<body class="html not-front ... page-civicrm page-civicrm-contact page-civicrm-contact-view civi-page-contact-view">
<!-- Joomla -->
<body class="admin com_civicrm ... task-civicrmcontactview civi-page-contact-view">
<!-- Wordpress -->
<body class="wp-admin wp-core-ui ... customize-support svg civi-page-contact-view”>
```
## Why
It would open new cross-cms customization avenues for devs: styles applied only a specific page, JS plugins that use the body class to bootstrap itself or perform an action only on certain pages, etc.
Of course currently one can already inject a css/js file on specific pages by using `hook_civicrm_pageRun()`, but this approach lacks the flexibility that the proposed solution would instead provide.
## Technical challenges
I figured that there would be at least two:
1. Find a way in all 3 cms to alter the list of classes attached to `<body>` that _doesn't_ involve using a theme hook, given that this solution should be both cms and theme agnostic (you don't want those classes to disappear the moment an admin decides to change the administration theme)
2. Figure out how to programmatically generate the class name for each individual civi page
---
Before opening the issue I asked in the dev channel if there was already a way to identify a page that I wasn't aware of (https://chat.civicrm.org/civicrm/pl/of6xsr17sidujmm1tuasr8bupy), but apparently there isn't, at least not the in the way I'm proposing herehttps://lab.civicrm.org/dev/core/-/issues/302End of life plans for 5.x php versions & planning for 7.0 EOL2020-01-30T02:01:26ZeileenEnd of life plans for 5.x php versions & planning for 7.0 EOLWe have had some discussion about EOL on php 5.x versions. The text below is a proposed blog post:
**End of life plans for 5.x php versions & planning for 7.0 EOL **
This blog serves as advance notice of our intention to stop supportin...We have had some discussion about EOL on php 5.x versions. The text below is a proposed blog post:
**End of life plans for 5.x php versions & planning for 7.0 EOL **
This blog serves as advance notice of our intention to stop supporting php versions 5.5, 5.6 and our ongoing evaluation of 7.0.
For php 5.5 we intend to end support in January 2019. This is already unsupported by php and we strongly recommend you upgrade off it as soon as possible. The release in February 2019 will be the first release that does not support php 5.5
For php 5.6 our TARGET is to end support in September 2019 (Oct release would support php 7.0+). 5.6 and 7.0 will unsupported by php from the end of this year. Usage of these versions is still pretty high amongst CiviCRM users http://stats.civicrm.org/?tab=sites so we will review this target in the first quarter of next year & extend it if we feel it will cause undue pain. Supporting 5.6 has downsides in that it restricts the external packages and versions of those packages we can use. As time goes on the risk of it leaving us without a secure option increases, as well as reducing opportunities to use more modern packages and to improve our code and product.
For php 7.0 our TARGET is the end of 2019. We will be reviewing this in March as well to see how reasonable that is. There is less to gain from dropping 7.0 than 5.6 so we will take that into account.
**What version of php should you be using?**
In general you should aim to be on php 7.1 or 7.2. For drupal 7 users you may find that there are extensions that you rely on that do not yet support php 7.1 - although this will be less and less likely over time. See https://www.drupal.org/docs/7/system-requirements/drupal-7-php-requirements#php_required for more information.
Note that as of writing there are only a small number of sites on 7.2 http://stats.civicrm.org/?tab=technology so you may wish to check php 7.2 adoption stats before choosing php 7.1 over php 7.2 in case there are any remaining issues.https://lab.civicrm.org/dev/core/-/issues/303Print/Merge Document to HTML uses PHPWord to process the HTML - is this meant...2022-08-28T05:03:34ZAndrew WestPrint/Merge Document to HTML uses PHPWord to process the HTML - is this meant to happen?In 'Print/Merge Document' you can select to output to HTML. In practice, this processes the HTML via PHPWord. This seems to mangle it quite badly: div tags get converted into text (it literally says 'div'), styling gets removed, etc. I'm...In 'Print/Merge Document' you can select to output to HTML. In practice, this processes the HTML via PHPWord. This seems to mangle it quite badly: div tags get converted into text (it literally says 'div'), styling gets removed, etc. I'm not sure whether this is deliberate or not, but there's an easy alternative that seems to work well.
The conversion starts in CRM_Contact_Form_Task_PDFLetterCommon. If we want to export anything other than a PDF it's sent to CRM_Utils_PDF_Document::html2doc(), which uses PHPWord. But I'm wondering if it makes more sense to actually use the PDF route for HTML - this goes via CRM_Utils_PDF_Utils::html2pdf().
html2PDF works by generating HTML pages for the PDF processor. So it produces an elegant HTML document by itself anyway. It does some basic processing like removing header tags, applying the appropriate margins, and applying print.css. But other than that the HTML is untouched. It's very easy just to output the HTML before the final step of converting to PDF.
I have this working here, and I can make it into an extension easily enough (though it'd need to override core files). But as the HTML output functionality doesn't really seem to work like I'd expect, I thought I'd flag it here. I can put the changes into a PR if that'd help.https://lab.civicrm.org/dev/core/-/issues/310Incorrect allocation of payment on an edited multi-line item event registration2018-10-23T15:30:07ZJoeMurrayIncorrect 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.
1. Create event ...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.
1. Create event with priceset with two fields, first with financial Type Event fees, second with FT of Event Fees 2.
2. Register in event with payment of say $25 for first ticket (Event Fees) and $10 for second ticket (Event fees 2), total $35.
3. 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.
4. Click Record Payment.
To review the database records that would be sent to accounting applications, you can:
5. Navigation to 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.
6. 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/cd4c2989ca42cff4e7f6bba22b8ddfa1/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/311Upgrading multilingual site causes DB Error2018-10-22T19:13:55ZDon WijesooriyaUpgrading multilingual site causes DB ErrorUpgrading from CiviCRM 4.4.7 to 5.4.0 (Drupal), cause a DB error. Upgrade process works fine but when loading any civi page, JavaScript error is displayed on the language file (backtrace displayed after enabling).
![javascript](/upload...Upgrading from CiviCRM 4.4.7 to 5.4.0 (Drupal), cause a DB error. Upgrade process works fine but when loading any civi page, JavaScript error is displayed on the language file (backtrace displayed after enabling).
![javascript](/uploads/cc865f9f1870d12a4b79309623de8147/javascript.PNG)
Checking the error log, few fields relating to uf_group are not getting created during the upgrade.
![errorlog](/uploads/8424555a1c8f657bbab2d6f05d5f4c08/errorlog.PNG)
Further investigation showed that in CRM/Core/I18n, there have been schema changes between the latest SchemaStructure.php and SchemaStructure_4_7_alpha1.php thus we had to copy and rename the file as SchemaStructure_5_4_alpha1.php as mentioned [here.](https://docs.civicrm.org/dev/en/latest/translation/database/#localised-fields-schema-changes)
![schemastructure](/uploads/c05dd2b1213cad872366dc0b5f9a43be/schemastructure.PNG)5.6https://lab.civicrm.org/dev/core/-/issues/316Use cache keys which are compatible with supported backends (CiviCRM 5.4 vs M...2018-08-17T00:40:54ZxurizaemonUse cache keys which are compatible with supported backends (CiviCRM 5.4 vs Memcache)[Reported by @haystack in ~dev channel](https://chat.civicrm.org/civicrm/pl/yo7drhis3pgg3cemfzuctd6ixr), suggested that it's a result of #174 changes.
After upgrading to CiviCRM 5.4 when using Memcache:
> Memcached::get(/CiviCRM Sessio...[Reported by @haystack in ~dev channel](https://chat.civicrm.org/civicrm/pl/yo7drhis3pgg3cemfzuctd6ixr), suggested that it's a result of #174 changes.
After upgrading to CiviCRM 5.4 when using Memcache:
> Memcached::get(/CiviCRM Session//_CRM_Activity_Form_ActivityFilter_851ce9ce57b6137a76ba5239cc2b6a6d_3667_container) failed: A BAD KEY WAS PROVIDED/CHARACTERS OUT OF RANGE
> Memcached set (/CiviCRM Session//_CRM_Event_Form_Search_023fbd690622b4991938e06757805c3e_6468_container) failed
[memcached/doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt) has,
> the key must not include control characters or whitespace.
[Also noted on Stack Exchange](https://stackoverflow.com/questions/5826768/can-memcached-keys-contain-spaces).https://lab.civicrm.org/dev/core/-/issues/320Current Employer only allows you to filter by static groups, not all groups2022-08-30T15:42:55ZjamieCurrent Employer only allows you to filter by static groups, not all groupsI suspect this is just old code that has not been updated to use the _groupFilter property.I suspect this is just old code that has not been updated to use the _groupFilter property.https://lab.civicrm.org/dev/core/-/issues/326Fatal error 'DB Error: no such field' on Contribution detail report when sect...2018-11-09T22:11:38ZPradeep Nayakpradpnayak@gmail.comFatal error 'DB Error: no such field' on Contribution detail report when section header enabledError code : Database Error Code: Unknown column 'civicrm_contribution_total_amount' in 'field list', 1054
![Peek_2018-08-14_16-19](/uploads/519bfa9483886f0ef2df276e76d1eb80/Peek_2018-08-14_16-19.gif)
Issue filed on stackexchange : ht...Error code : Database Error Code: Unknown column 'civicrm_contribution_total_amount' in 'field list', 1054
![Peek_2018-08-14_16-19](/uploads/519bfa9483886f0ef2df276e76d1eb80/Peek_2018-08-14_16-19.gif)
Issue filed on stackexchange : https://civicrm.stackexchange.com/questions/26124/db-error-missing-field-in-contribution-reports-after-upgrade-to-5-4-0-drupal/261265.5.0https://lab.civicrm.org/dev/core/-/issues/327PHP Fatal error: Call to undefined method - Contribution Details report2018-08-15T02:17:06ZPradeep Nayakpradpnayak@gmail.comPHP Fatal error: Call to undefined method - Contribution Details reportSOD when performed search using 'Gender' Column field ticked.
Found in php error log
[Tue Aug 14 16:33:42.2381734 2018] [:error] [pid 7686] [client 127.0.0.1:576004] PHP Fatal error: Call to undefined method CRM_Report_Form_Contrib...SOD when performed search using 'Gender' Column field ticked.
Found in php error log
[Tue Aug 14 16:33:42.2381734 2018] [:error] [pid 7686] [client 127.0.0.1:576004] PHP Fatal error: Call to undefined method CRM_Report_Form_Contribute_Detail::alterGenderID() in /var/www/html/drupal7/sites/all/modules/civicrm/CRM/Report/Form.php on line 2332, referer: http://localhost/drupal7/civicrm/report/instance/8
PR: https://github.com/civicrm/civicrm-core/pull/12661
Introduced in : https://github.com/civicrm/civicrm-core/commit/d7e34fc63https://lab.civicrm.org/dev/core/-/issues/334Public contribution form and Checksums: billing information not loaded if usi...2020-09-30T22:47:07ZbgmPublic contribution form and Checksums: billing information not loaded if using multiple processorsHow to reproduce:
* Create a Contribution Page
* Associate multiple payment processors
* Create a contact
* Fill in a billing address for the contact
* Generate a contribution page link that includes the checksum (cs) and cid.
What hap...How to reproduce:
* Create a Contribution Page
* Associate multiple payment processors
* Create a contact
* Fill in a billing address for the contact
* Generate a contribution page link that includes the checksum (cs) and cid.
What happens:
* The payment block does not pre-populate the Billing Address
* Note that this only happens when there are multiple processors, because of the ajax request that loads the payment block. This request does not happen when there is only one PP.5.6https://lab.civicrm.org/dev/core/-/issues/337QuickForm Error on Contact Search Form when using select custom field of type...2021-01-06T22:42:24ZPradeep Nayakpradpnayak@gmail.comQuickForm Error on Contact Search Form when using select custom field of type IntegerTo Replicate:
Create a 'Select' custom field of type Integer or Number with 'Is this Field Searchable?' checked.
The Advance search form throws fatal error
```
Aug 17 10:16:57 [info] $Fatal Error Details = Array
(
[callback] => Ar...To Replicate:
Create a 'Select' custom field of type Integer or Number with 'Is this Field Searchable?' checked.
The Advance search form throws fatal error
```
Aug 17 10:16:57 [info] $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -3
[message] => QuickForm Error: nonexistent html element
[mode] => 16
[debug_info] => Element 'custom_8_from' does not exist in HTML_QuickForm::addRule()
[type] => HTML_QuickForm_Error
[user_info] => Element 'custom_8_from' does not exist in HTML_QuickForm::addRule()
[to_string] => [html_quickform_error: message="nonexistent html element" code=-3 mode=callback callback=CRM_Core_Error::handle prefix="QuickForm Error: " info="Element 'custom_8_from' does not exist in HTML_QuickForm::addRule()"]
)
Aug 17 10:16:57 [info] $backTrace = #0 /var/www/html/civicrm-master/sites/all/modules/civicrm/CRM/Core/Error.php(232): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 [internal function](): CRM_Core_Error::handle(Object(HTML_QuickForm_Error))
#2 /var/www/html/civicrm-master/sites/all/modules/civicrm/packages/PEAR.php(921): call_user_func((Array:2), Object(HTML_QuickForm_Error))
#3 /var/www/html/civicrm-master/sites/all/modules/civicrm/packages/HTML/QuickForm.php(2084): PEAR_Error->__construct("nonexistent html element", -3, 16, (Array:2), "Element 'custom_8_from' does not exist in HTML_QuickForm::addRule()")
#4 /var/www/html/civicrm-master/sites/all/modules/civicrm/packages/PEAR.php(575): HTML_QuickForm_Error->__construct(-3, 16, (Array:2), "Element 'custom_8_from' does not exist in HTML_QuickForm::addRule()")
#5 [internal function](): PEAR::_raiseError(NULL, NULL, -3, NULL, 512, "Element 'custom_8_from' does not exist in HTML_QuickForm::addRule()", "HTML_QuickForm_Error", TRUE)
#6 /var/www/html/civicrm-master/sites/all/modules/civicrm/packages/PEAR.php(237): call_user_func_array((Array:2), (Array:8))
#7 /var/www/html/civicrm-master/sites/all/modules/civicrm/packages/HTML/QuickForm.php(1076): PEAR::__callStatic("raiseError", (Array:7))
#8 /var/www/html/civicrm-master/sites/all/modules/civicrm/packages/HTML/QuickForm.php(1076): PEAR::raiseError(NULL, -3, NULL, 512, "Element 'custom_8_from' does not exist in HTML_QuickForm::addRule()", "HTML_QuickForm_Error", TRUE)
#9 /var/www/html/civicrm-master/sites/all/modules/civicrm/CRM/Core/BAO/CustomField.php(1103): HTML_QuickForm->addRule("custom_8_from", "number-select From must be a number (with or without decimal point).", "numeric")
#10 /var/www/html/civicrm-master/sites/all/modules/civicrm/CRM/Contact/Form/Search/Criteria.php(567): CRM_Core_BAO_CustomField::addQuickFormElement(Object(CRM_Contact_Form_Search_Advanced), "custom_8", "8", FALSE, TRUE)
#11 /var/www/html/civicrm-master/sites/all/modules/civicrm/CRM/Contact/Form/Search/Advanced.php(150): CRM_Contact_Form_Search_Criteria::custom(Object(CRM_Contact_Form_Search_Advanced))
#12 /var/www/html/civicrm-master/sites/all/modules/civicrm/CRM/Core/Form.php(606): CRM_Contact_Form_Search_Advanced->buildQuickForm()
#13 /var/www/html/civicrm-master/sites/all/modules/civicrm/CRM/Core/QuickForm/Action/Display.php(92): CRM_Core_Form->buildForm()
#14 /var/www/html/civicrm-master/sites/all/modules/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Display->perform(Object(CRM_Contact_Form_Search_Advanced), "display")
#15 /var/www/html/civicrm-master/sites/all/modules/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contact_Form_Search_Advanced), "display")
#16 /var/www/html/civicrm-master/sites/all/modules/civicrm/CRM/Core/Controller.php(351): HTML_QuickForm_Page->handle("display")
#17 /var/www/html/civicrm-master/sites/all/modules/civicrm/CRM/Core/Invoke.php(309): CRM_Core_Controller->run((Array:4), (Array:0))
#18 /var/www/html/civicrm-master/sites/all/modules/civicrm/CRM/Core/Invoke.php(84): CRM_Core_Invoke::runItem((Array:13))
#19 /var/www/html/civicrm-master/sites/all/modules/civicrm/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke((Array:4))
#20 /var/www/html/civicrm-master/sites/all/modules/civicrm/drupal/civicrm.module(445): CRM_Core_Invoke::invoke((Array:4))
#21 [internal function](): civicrm_invoke("contact", "search", "advanced")
#22 /var/www/html/civicrm-master/includes/menu.inc(527): call_user_func_array("civicrm_invoke", (Array:3))
#23 /var/www/html/civicrm-master/index.php(21): menu_execute_active_handler()
#24 {main}
```
When i checked the field through database i found that this field has 'is_search_range' set to TRUE which should be only incase of text or date field i believe.5.9https://lab.civicrm.org/dev/core/-/issues/348Custom Participant tokens not working in scheduled reminders2021-10-02T05:27:54Zmagnolia61Custom Participant tokens not working in scheduled remindersCustom Participant tokens do not work in scheduled reminders.<BR>
I believe the underlying code exists in CiviCRM but it is not possible to use participant tokens.
Work has been done to get these working in pdf creation though: https://...Custom Participant tokens do not work in scheduled reminders.<BR>
I believe the underlying code exists in CiviCRM but it is not possible to use participant tokens.
Work has been done to get these working in pdf creation though: https://issues.civicrm.org/jira/browse/CRM-16734
20200902 Coming back at this issue. I tested again and these are the results using CiviCRM 5.28.4<br>
Situation is an event registration and scheduled reminders being send based on that.
| Type of token | example | result |
| ------ | ------ | ------ |
| Only core event tokens | event.title | get correctly replaced |
| Custom event tokens | event.custom_123| Expected one Event but found 0 |
| Only core participant tokens | participant.role | No error, but do not get replaced |
| Custom participant tokens | participant.custom_123 | No error, but do not get replaced |5.43.0justinfreeman (Agileware)justinfreeman (Agileware)https://lab.civicrm.org/dev/core/-/issues/351ERROR: LoadForm Pop-up w/out Params in URL2018-08-28T21:41:11Zlee.goodingERROR: LoadForm Pop-up w/out Params in URLWhen the loadForm function is used to open a form in a pop-up it will throw an error if NO parameters are included in the URL. If I include a dummy parameter (such as dummy=1) then it will not give me the error.
The function should not...When the loadForm function is used to open a form in a pop-up it will throw an error if NO parameters are included in the URL. If I include a dummy parameter (such as dummy=1) then it will not give me the error.
The function should not require parameters in the URL.
Here is my full error:
`Uncaught TypeError: Cannot read property 'split' of undefined at $.(anonymous function).(anonymous function).isOriginalUrl (http://dev.civicrmdev/sites/all/modules/civicrm/js/crm.ajax.js?pd7a7l:167:34) at $.(anonymous function).(anonymous function).isOriginalUrl (http://dev.civicrmdev/sites/all/modules/civicrm/bower_components/jquery-ui/jquery-ui.js?pd7a7l:144:25) at HTMLDivElement.<anonymous> (http://dev.civicrmdev/sites/all/modules/civicrm/bower_components/jquery-ui/jquery-ui.js?pd7a7l:256:40) at Function.each (http://dev.civicrmdev/sites/all/modules/civicrm/bower_components/jquery/dist/jquery.js?pd7a7l:370:19) at jQuery.fn.init.each (http://dev.civicrmdev/sites/all/modules/civicrm/bower_components/jquery/dist/jquery.js?pd7a7l:137:17) at jQuery.fn.init.$.fn.(anonymous function) [as crmSnippet] (http://dev.civicrmdev/sites/all/modules/civicrm/bower_components/jquery-ui/jquery-ui.js?pd7a7l:236:10) at HTMLDivElement.<anonymous> (http://dev.civicrmdev/sites/all/modules/civicrm/js/crm.ajax.js?pd7a7l:441:34) at HTMLDivElement.dispatch (http://dev.civicrmdev/sites/all/modules/civicrm/bower_components/jquery/dist/jquery.js?pd7a7l:5226:27) at HTMLDivElement.elemData.handle (http://dev.civicrmdev/sites/all/modules/civicrm/bower_components/jquery/dist/jquery.js?pd7a7l:4878:28) at Object.trigger (http://dev.civicrmdev/sites/all/modules/civicrm/bower_components/jquery/dist/jquery.js?pd7a7l:5130:12) isOriginalUrl @ crm.ajax.js?pd7a7l:167 (anonymous) @ jquery-ui.js?pd7a7l:144 (anonymous) @ jquery-ui.js?pd7a7l:256 each @ jquery.js?pd7a7l:370 each @ jquery.js?pd7a7l:137 $.fn.(anonymous function) @ jquery-ui.js?pd7a7l:236 (anonymous) @ crm.ajax.js?pd7a7l:441 dispatch @ jquery.js?pd7a7l:5226 elemData.handle @ jquery.js?pd7a7l:4878 trigger @ jquery.js?pd7a7l:5130 (anonymous) @ jquery.js?pd7a7l:5860 each @ jquery.js?pd7a7l:370 each @ jquery.js?pd7a7l:137 trigger @ jquery.js?pd7a7l:5859 (anonymous) @ crm.ajax.js?pd7a7l:262 fire @ jquery.js?pd7a7l:3232 fireWith @ jquery.js?pd7a7l:3362 done @ jquery.js?pd7a7l:9840 callback @ jquery.js?pd7a7l:10311 XMLHttpRequest.send (async) send @ jquery.js?pd7a7l:10254 ajax @ jquery.js?pd7a7l:9738 jQuery.(anonymous function) @ jquery.js?pd7a7l:9890 getJSON @ jquery.js?pd7a7l:9871 refresh @ crm.ajax.js?pd7a7l:242 (anonymous) @ jquery-ui.js?pd7a7l:144 (anonymous) @ jquery-ui.js?pd7a7l:256 each @ jquery.js?pd7a7l:370 each @ jquery.js?pd7a7l:137 $.fn.(anonymous function) @ jquery-ui.js?pd7a7l:236 CRM.loadPage @ crm.ajax.js?pd7a7l:330 CRM.loadForm @ crm.ajax.js?pd7a7l:355 (anonymous) @ sgt_sgDcGroupManage.js?r=RMsXR:66 dispatch @ jquery.js?pd7a7l:5226 elemData.handle @ jquery.js?pd7a7l:4878`5.6https://lab.civicrm.org/dev/core/-/issues/353As of 5.4.0, Activity Search gives an empty result set2018-09-03T01:56:12ZPradeep Nayakpradpnayak@gmail.comAs of 5.4.0, Activity Search gives an empty result setFrom SE: https://civicrm.stackexchange.com/questions/26208/as-of-5-4-0-activity-search-gives-an-empty-result-set-confirmation-anyone
Probably this might have caused regression https://github.com/civicrm/civicrm-core/commit/fd95406da80
...From SE: https://civicrm.stackexchange.com/questions/26208/as-of-5-4-0-activity-search-gives-an-empty-result-set-confirmation-anyone
Probably this might have caused regression https://github.com/civicrm/civicrm-core/commit/fd95406da80
PR: https://github.com/civicrm/civicrm-core/pull/127135.5.0https://lab.civicrm.org/dev/core/-/issues/365Unwanted mail blast sent by Scheduled Reminders2021-06-10T07:04:39Zmagnolia61Unwanted mail blast sent by Scheduled Reminders**BUG 1:**<br>
I enabled a scheduled reminder which was configured to sent 12 week before the start date of an event.
The start date was a month ago on july 21st.
* Expected behavior: no mail is being sent.
* Actual behaviour: 500 famil...**BUG 1:**<br>
I enabled a scheduled reminder which was configured to sent 12 week before the start date of an event.
The start date was a month ago on july 21st.
* Expected behavior: no mail is being sent.
* Actual behaviour: 500 families got an email with the last details on the event (that already happened).
Over the last few years we have had more incidents like these and it really hurts our reputation, and within our organization it also hurts the reputation of CiviCRM.
The scheduled reminders should be way more clear in configuration and unintentional mail blast should really be prevented by good tests and more solid code.
For this particular issue I would suggest to NOT send a reminder that is configured BEFORE an event, AFTER the event. This could be configured in Civi/ActionSchedule/RecipientBuilder.php although I lack the skills to figure out how.
**BUG 2**<br>
Also what happened is that the reminder was configured for specific participant statuses and it ignored that and sent it anyway to participants with any status. Should be solved but also a test should be introduced for this.
**BUG 3**<br>
The limit to group function seems (sometimes) to be ignored when sending to participants (selected by event type). Should be solved but also a test should be introduced for this.
**CONCLUSION**<BR>
I will further test on clean install, but to me this seems to be critical bugs as they
1) have a reputation impact<br>
2) might impact spam ratings<br>
3) cause a lot of work to follow up (send rectifications, responding to responses by mail)...
....5.39.0https://lab.civicrm.org/dev/core/-/issues/367Fatal error / SQL timeout in A-Z pager for advanced search by relationship wi...2018-08-29T14:26:22ZAllenShawFatal error / SQL timeout in A-Z pager for advanced search by relationship with target group for reciprocal relationship typesPull request: https://github.com/civicrm/civicrm-core/pull/12740
Similar issue but not directly related: https://issues.civicrm.org/jira/browse/CRM-21811
On many sites, this is not an issue, but the more "spouse" relationships a site h...Pull request: https://github.com/civicrm/civicrm-core/pull/12740
Similar issue but not directly related: https://issues.civicrm.org/jira/browse/CRM-21811
On many sites, this is not an issue, but the more "spouse" relationships a site has, the more likely it happens (and not just spouse; this applies for "partner of" and any other reciprocally named relationship type).
**Steps to reproduce:**
1. Start with a site having:
1. Several thousand active relationships of a reciprocal type (where the name for both related positions is the same – e.g., "spouse of" <=> "spouse of"; "sibling of" <=> "sibling of"; "partner of" <=> "partner of"). This recipe uses "Spouse of".
1. At least one group (smart group or static group).
1. Perform an Advanced Search with these criteria:
1. Relationships > Relationship Type: "Spouse of"
1. Relationships > Target Contact(s) in Group: [any one or more groups]
1. Submit the search form and observe a very long page load; depending on the number of relationships, server configuration, and server resources, this search may end in a WSOD, or take dozens of minutes to complete.
**Analysis:**
* When this actually times out, you get a fatal error from MySQL: "Query execution was interrupted (max_statement_time exceeded)"
* Backtrace indicates that the long-running query is the one used to generate the A-Z pager controls in search results; this query includes as join to a temporary table which is created without indices.
**Proposed solution:**
Add indices and column definitions to the temporary table, so that the join can use the indices and run in a timely manner.5.6https://lab.civicrm.org/dev/core/-/issues/371Be environmentally friendly. Remove the sentence: "Please print this page for...2019-10-13T19:27:08Zjustinfreeman (Agileware)Be environmentally friendly. Remove the sentence: "Please print this page for your records." from the various CiviCRM tpls. We like trees!Be environmentally friendly. Remove the sentence: "Please print this page for your records." from the various CiviCRM tpls. We like trees!
A quick grep found this text in the following locations. There may be other similar on other tpls...Be environmentally friendly. Remove the sentence: "Please print this page for your records." from the various CiviCRM tpls. We like trees!
A quick grep found this text in the following locations. There may be other similar on other tpls/translations too.
templates/CRM/Contribute/Form/Contribution/ThankYou.tpl:66: <div>{ts 1=$paymentProcessor.name}Your contribution has been submitted to %1 for processing. Please print this page for your records.{/ts}</div>
templates/CRM/Contribute/Form/Contribution/ThankYou.tpl:77: <div>{ts}Your transaction has been processed successfully. Please print this page for your records.{/ts}</div>
templates/CRM/Event/Form/Registration/ThankYou.tpl:74: <p>{ts 1=$paymentProcessor.name}Your registration payment has been submitted to %1 for processing. Please print this page for your records.{/ts}</p>
templates/CRM/Event/Form/Registration/ThankYou.tpl:79: <p>{ts}Your registration has been processed successfully. Please print this page for your records.{/ts}</p>
ext/iatspayments/templates/CRM/iATS/ContributeThankYouExtra_UKDD.tpl:23: <p>Please print this page for your records.</p>
Binary file l10n/de_DE/LC_MESSAGES/civicrm.mo matches
Binary file l10n/uk_UA/LC_MESSAGES/civicrm.mo matches
Binary file l10n/fr_FR/LC_MESSAGES/civicrm.mo matches
Binary file l10n/ca_ES/LC_MESSAGES/civicrm.mo matches
Binary file l10n/es_MX/LC_MESSAGES/civicrm.mo matches
Binary file l10n/et_EE/LC_MESSAGES/civicrm.mo matches
Binary file l10n/pl_PL/LC_MESSAGES/civicrm.mo matches
Binary file l10n/zh_TW/LC_MESSAGES/civicrm.mo matches
Binary file l10n/cs_CZ/LC_MESSAGES/civicrm.mo matches
Binary file l10n/es_ES/LC_MESSAGES/civicrm.mo matches
Binary file l10n/nl_NL/LC_MESSAGES/civicrm.mo matches
Binary file l10n/hu_HU/LC_MESSAGES/civicrm.mo matches
Binary file l10n/ja_JP/LC_MESSAGES/civicrm.mo matches
Binary file l10n/en_AU/LC_MESSAGES/civicrm.mo matches
Binary file l10n/sl_SI/LC_MESSAGES/civicrm.mo matches
Binary file l10n/ru_RU/LC_MESSAGES/civicrm.mo matches
Binary file l10n/da_DK/LC_MESSAGES/civicrm.mo matches
Binary file l10n/el_GR/LC_MESSAGES/civicrm.mo matches
Binary file l10n/ar_EG/LC_MESSAGES/civicrm.mo matches
Binary file l10n/en_CA/LC_MESSAGES/civicrm.mo matches
Binary file l10n/de_CH/LC_MESSAGES/civicrm.mo matches
Binary file l10n/tr_TR/LC_MESSAGES/civicrm.mo matches
Binary file l10n/sv_SE/LC_MESSAGES/civicrm.mo matches
Binary file l10n/fr_CA/LC_MESSAGES/civicrm.mo matches
Binary file l10n/pt_BR/LC_MESSAGES/civicrm.mo matches
Binary file l10n/pt_PT/LC_MESSAGES/civicrm.mo matches
Binary file l10n/en_GB/LC_MESSAGES/civicrm.mo matches
Binary file l10n/zh_CN/LC_MESSAGES/civicrm.mo matches
Binary file l10n/nb_NO/LC_MESSAGES/civicrm.mo matches
Binary file l10n/hi_IN/LC_MESSAGES/civicrm.mo matches
Binary file l10n/lv_LV/LC_MESSAGES/civicrm.mo matches
Binary file l10n/it_IT/LC_MESSAGES/civicrm.mo matches
Agileware Reference: SUP-6032https://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.https://lab.civicrm.org/dev/core/-/issues/377{Membership.Fee} appears on Membership Renewal Reminder emails with 9 decimal...2019-08-15T20:09:19Zpaulorokonui{Membership.Fee} appears on Membership Renewal Reminder emails with 9 decimal placesSimilar to the previously reported issue.....
https://github.com/civicrm/civicrm-core/pull/12186
Screenshots and comments can be found on above thread
civiCRM 5.4.0 on Drupal 7Similar to the previously reported issue.....
https://github.com/civicrm/civicrm-core/pull/12186
Screenshots and comments can be found on above thread
civiCRM 5.4.0 on Drupal 75.18.0https://lab.civicrm.org/dev/core/-/issues/379View Activity: extraneous newlines by nl2br on HTML content2018-09-14T04:15:46ZbgmView Activity: extraneous newlines by nl2br on HTML contentThis a regression that was caused a while back by #2 (for I take responsibility, since I mentored/reviewed). We added a nl2br that was a bit too bread in scope, but should have only affected Inbound HTML activities.
How to reproduce on ...This a regression that was caused a while back by #2 (for I take responsibility, since I mentored/reviewed). We added a nl2br that was a bit too bread in scope, but should have only affected Inbound HTML activities.
How to reproduce on http://dcase.demo.civicrm.org :
* Go to a contact record
* Create an activity
* In the details field, add 3 separate lines (by hitting 'enter' once, to create a new paragraph).
![44817615-028c1d00-abb4-11e8-9eba-07b9eb96c029](/uploads/ccb4d0f8a636c37869d0d93455629967/44817615-028c1d00-abb4-11e8-9eba-07b9eb96c029.png)
In the above, you can see that "Line 1" and "Line 2" have a lot of space between them. Inspecting the HTML, it shows that some extra 'br' tags were added between the paragraphs.
If we edit the activity again, the HTML looks OK:
![44817687-3109f800-abb4-11e8-88a4-dccb3b1b957e](/uploads/f69ce244868ea5f50384aa2861f75a7b/44817687-3109f800-abb4-11e8-88a4-dccb3b1b957e.png)
(the newlines in the above screenshot are what made me assume this is a nl2br bug)
PS: this issue was initially reported here: https://github.com/civicrm/org.civicrm.civicase/issues/116 -- but it is not specific to civicase v5.
cc @Detlev5.7bgmbgmhttps://lab.civicrm.org/dev/core/-/issues/391Tags do not save with profile forms2018-11-09T22:11:39ZyalhTags do not save with profile formsSteps to reproduce:
Create a tagset
Create or select a profile used for search or view/edit account.
Add "Tag(s)" field to profile
Use profile to edit a contact.
Add tags via the tagset area.
Save profile.
Expec...Steps to reproduce:
Create a tagset
Create or select a profile used for search or view/edit account.
Add "Tag(s)" field to profile
Use profile to edit a contact.
Add tags via the tagset area.
Save profile.
Expected result:
Tags added via tagset field now present on contact.
Actual result:
Tags added via tagset field appear to be ignored.
Extra notes:
Tags successfully added via other means are not displayed in profile form either.
AJAX functions relating to adding tags to the tagset succeed - a child tag is created and can be referenced later.
There was that issue in previous version: https://issues.civicrm.org/jira/browse/CRM-12739
Issue seen in 5.4.15.5.1https://lab.civicrm.org/dev/core/-/issues/392Support MySQL 8.0 now that it is GA2021-04-01T01:52:03ZJoeMurraySupport MySQL 8.0 now that it is GA# Overview
MySQL 8.0 went General Availability on April 19, 2018. CiviCRM's aim is to support the latest GA for required infrastructure (MySQL, PHP) as soon as feasible.
In reviewing removed features that cause incompatibilities (htt...# Overview
MySQL 8.0 went General Availability on April 19, 2018. CiviCRM's aim is to support the latest GA for required infrastructure (MySQL, PHP) as soon as feasible.
In reviewing removed features that cause incompatibilities (https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html) I noticed a couple of issues that definitely require changes, one that might cause syntax errors that are easily fixed when found, and a fourth that we may want to change to improve our functionality and get current.
This is a meta issue for tracking what's needed for MySQL8. I have added a MySQL8 flag to lab for the moment to help in tracking. We can delete that flag after this issue is deemed complete.
# Related issue: Upgrade test infrastructure to enable testing against a version on the edge of being officially supported: https://lab.civicrm.org/dev/core/issues/1142
# Issue: Field Names now Reserved Words https://lab.civicrm.org/dev/core/issues/1143
# Testing issue: dependence on PHP version for MySQL authentication ~~https://lab.civicrm.org/dev/core/issues/1144~~
# Document dealing with changes to MySQL user password library https://lab.civicrm.org/dev/core/issues/1145
# Possible issue: Sort order on GROUP BY clauses
~~I don't think we have any code that tries to specify sort order on GROUP BY fields, but if so we will need to change to add an ORDER BY clause with the sort order. I think we should just try running tests on MySQL 8.0 and using it manually to determine locations in code with this issue, and play whack-a-mole on anything missed.~~
# Nice to have: Upgrade our text fields to support all utf8 characters https://lab.civicrm.org/dev/core/issues/339https://lab.civicrm.org/dev/core/-/issues/397Dedupe for Individual Birth Date Results in Error2019-02-13T20:28:31ZjasonobrownDedupe for Individual Birth Date Results in Error```
civicrm: $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -1
[message] => DB Error: unknown error
[mode] => 16
[debug_in...```
civicrm: $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -1
[message] => DB Error: unknown error
[mode] => 16
[debug_info] => INSERT INTO dedupe (id1, id2, weight) SELECT t1.id id1, t2.id id2, 5 weight FROM civicrm_contact t1 JOIN civicrm_contact t2 USING (birth_date) JOIN dedupe_copy ON dedupe_copy.id1 = t1.id AND dedupe_copy.id2 = t2.id WHERE t1.contact_type = 'Individual' AND t2.contact_type = 'Individual' AND t1.id < t2.id AND t1.birth_date IS NOT NULL AND t1.birth_date <> '' GROUP BY id1, id2, weight ON DUPLICATE KEY UPDATE weight = weight + VALUES(weight) [nativecode=1292 ** Incorrect date value: '' for column 'birth_date' at row 1]
[type] => DB_Error
[user_info] => INSERT INTO dedupe (id1, id2, weight) SELECT t1.id id1, t2.id id2, 5 weight FROM civicrm_contact t1 JOIN civicrm_contact t2 USING (birth_date) JOIN dedupe_copy ON dedupe_copy.id1 = t1.id AND dedupe_copy.id2 = t2.id WHERE t1.contact_type = 'Individual' AND t2.contact_type = 'Individual' AND t1.id < t2.id AND t1.birth_date IS NOT NULL AND t1.birth_date <> '' GROUP BY id1, id2, weight ON DUPLICATE KEY UPDATE weight = weight + VALUES(weight) [nativecode=1292 ** Incorrect date value: '' for column 'birth_date' at row 1]
[to_string] => [db_error: message="DB Error: unknown error" code=-1 mode=callback callback=CRM_Core_Error::handle prefix="" info="INSERT INTO dedupe (id1, id2, weight) SELECT t1.id id1, t2.id id2, 5 weight FROM civicrm_contact t1 JOIN civicrm_contact t2 USING (birth_date) JOIN dedupe_copy ON dedupe_copy.id1 = t1.id AND dedupe_copy.id2 = t2.id WHERE t1.contact_type = 'Individual' AND t2.contact_type = 'Individual' AND t1.id < t2.id AND t1.birth_date IS NOT NULL AND t1.birth_date <> '' GROUP BY id1, id2, weight ON DUPLICATE KEY UPDATE weight = weight + VALUES(weight) [nativecode=1292 ** Incorrect date value: '' for column 'birth_date' at row 1]"]
)
```5.12.0https://lab.civicrm.org/dev/core/-/issues/637Schedule Reminder re: event generates fatal mysql error2019-01-08T07:41:15ZUpperholmeSchedule Reminder re: event generates fatal mysql errorI have a schedule reminder set up for an event. The reminder is set up to send on a specific date, and then repeat every 14 days until 2 weeks prior to the event start date.
Here's the log entry when the scheduled job gets triggered:
J...I have a schedule reminder set up for an event. The reminder is set up to send on a specific date, and then repeat every 14 days until 2 weeks prior to the event start date.
Here's the log entry when the scheduled job gets triggered:
Jan 04 14:54:26 [info] $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => exceptionHandler
)
[code] => -2
[message] => DB Error: syntax error
[mode] => 16
[debug_info] =>
``SELECT e.contact_id as contact_id, e.id as entity_id, "civicrm_participant" as entity_table, 30 as action_schedule_id, MAX(reminder.action_date_time) as latest_log_time
FROM civicrm_participant e
INNER JOIN civicrm_event r ON e.event_id = r.id
INNER JOIN civicrm_contact c ON c.id = e.contact_id AND c.is_deleted = 0 AND c.is_deceased = 0
INNER JOIN civicrm_action_log reminder ON reminder.contact_id = e.contact_id AND
reminder.entity_id = e.id AND
reminder.entity_table = 'civicrm_participant' AND
reminder.action_schedule_id = 30
WHERE (r.id IN ("38")) AND (r.is_active = 1) AND (r.is_template = 0) AND (e.status_id IN (5)) AND ("20190104145426" <= DATE_SUB(, INTERVAL 2 week))
GROUP BY reminder.contact_id, reminder.entity_id, reminder.entity_table
HAVING (TIMESTAMPDIFF(HOUR, latest_log_time, CAST(20190104145426 AS datetime)) >= TIMESTAMPDIFF(HOUR, latest_log_time, DATE_ADD(latest_log_time, INTERVAL 1 MONTH)))``
[nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' INTERVAL 2 week))
GROUP BY reminder.contact_id, reminder.entity_id, reminder.en' at line 9]
[type] => DB_Error
[user_info] => ``SELECT e.contact_id as contact_id, e.id as entity_id, "civicrm_participant" as entity_table, 30 as action_schedule_id, MAX(reminder.action_date_time) as latest_log_time
FROM civicrm_participant e
INNER JOIN civicrm_event r ON e.event_id = r.id
INNER JOIN civicrm_contact c ON c.id = e.contact_id AND c.is_deleted = 0 AND c.is_deceased = 0
INNER JOIN civicrm_action_log reminder ON reminder.contact_id = e.contact_id AND
reminder.entity_id = e.id AND
reminder.entity_table = 'civicrm_participant' AND
reminder.action_schedule_id = 30
WHERE (r.id IN ("38")) AND (r.is_active = 1) AND (r.is_template = 0) AND (e.status_id IN (5)) AND ("20190104145426" <= DATE_SUB(, INTERVAL 2 week))
GROUP BY reminder.contact_id, reminder.entity_id, reminder.entity_table
HAVING (TIMESTAMPDIFF(HOUR, latest_log_time, CAST(20190104145426 AS datetime)) >= TIMESTAMPDIFF(HOUR, latest_log_time, DATE_ADD(latest_log_time, INTERVAL 1 MONTH)))``
[nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' INTERVAL 2 week))
GROUP BY reminder.contact_id, reminder.entity_id, reminder.en' at line 9]
[to_string] => [db_error: message="DB Error: syntax error" code=-2 mode=callback callback=CRM_Core_Error::exceptionHandler prefix="" info="``SELECT e.contact_id as contact_id, e.id as entity_id, "civicrm_participant" as entity_table, 30 as action_schedule_id, MAX(reminder.action_date_time) as latest_log_time
FROM civicrm_participant e
INNER JOIN civicrm_event r ON e.event_id = r.id
INNER JOIN civicrm_contact c ON c.id = e.contact_id AND c.is_deleted = 0 AND c.is_deceased = 0
INNER JOIN civicrm_action_log reminder ON reminder.contact_id = e.contact_id AND
reminder.entity_id = e.id AND
reminder.entity_table = 'civicrm_participant' AND
reminder.action_schedule_id = 30
WHERE (r.id IN ("38")) AND (r.is_active = 1) AND (r.is_template = 0) AND (e.status_id IN (5)) AND ("20190104145426" <= DATE_SUB(, INTERVAL 2 week))
GROUP BY reminder.contact_id, reminder.entity_id, reminder.entity_table
HAVING (TIMESTAMPDIFF(HOUR, latest_log_time, CAST(20190104145426 AS datetime)) >= TIMESTAMPDIFF(HOUR, latest_log_time, DATE_ADD(latest_log_time, INTERVAL 1 MONTH)))``
[nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' INTERVAL 2 week))
GROUP BY reminder.contact_id, reminder.entity_id, reminder.en' at line 9]"]
)5.11https://lab.civicrm.org/dev/core/-/issues/402Typo in templates/CRM/Tag/Page/Tag.tpl:2018-09-23T16:12:34Zr4zoliTypo in templates/CRM/Tag/Page/Tag.tpl:During the translation i transifex common-base: 4426 Duplicate ths tag
the "ths" should be "this"
[dmaster.png](/uploads/6a1176fa7baca711ed8657b35acde6bb/dmaster.png.jpg)"
templates/CRM/Tag/Page/Tag.tpl:During the translation i transifex common-base: 4426 Duplicate ths tag
the "ths" should be "this"
[dmaster.png](/uploads/6a1176fa7baca711ed8657b35acde6bb/dmaster.png.jpg)"
templates/CRM/Tag/Page/Tag.tpl:https://lab.civicrm.org/dev/core/-/issues/4065.5.2: Import is not happy on PHP-7.2 (Countable)2019-01-08T02:47:10ZDmitry Smirnov5.5.2: Import is not happy on PHP-7.2 (Countable)~~~~
2018/09/25 18:15:04 [error] 33#33: *451 FastCGI sent in stderr: "PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 375
P...~~~~
2018/09/25 18:15:04 [error] 33#33: *451 FastCGI sent in stderr: "PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 375
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 387
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 396
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 408
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 417
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 426
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 435
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 444
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 455
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 464
PHP message: PHP Warning: count(): Parameter must be an array or an object that implements Countable in /usr/share/civicrm/CRM/Contact/Import/Parser.php on line 476" while reading response header from upstream, client: 192.168.0.2, server: civicrm.local, request: "POST /wp-admin/admin.php?page=CiviCRM&q=civicrm/impor
~~~~5.8https://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/418Can't add relationship to group of search results if relationship type is any...2018-10-09T16:11:32ZjamieCan't add relationship to group of search results if relationship type is any to anyIf you create a relationship type that relates a contact of any type to a contact of any type, that relationship will not be available to select when adding a relationship to a group of search results.If you create a relationship type that relates a contact of any type to a contact of any type, that relationship will not be available to select when adding a relationship to a group of search results.5.8https://lab.civicrm.org/dev/core/-/issues/421Creating a new message template from within CiviMail interface requires both ...2018-11-09T22:11:46ZseamusleeCreating a new message template from within CiviMail interface requires both edit user workflow templates and edit system workflow templates as well as edit message templatesthis is a regression from dev/core#61this is a regression from dev/core#615.7https://lab.civicrm.org/dev/core/-/issues/422Can't use advanced search to find survey results by result code2018-10-06T10:07:32ZjamieCan't use advanced search to find survey results by result codeIf you try to use advanced search to find survey results by the result code, you get no records and the Quill shows a confusing message:
```
No matches found for:
Activity targeted to ...AND...
Survey - Test ...AND...
Activity Result - ...If you try to use advanced search to find survey results by the result code, you get no records and the Quill shows a confusing message:
```
No matches found for:
Activity targeted to ...AND...
Survey - Test ...AND...
Activity Result - 'activity_result' or 'IN' or '' or '0' or '0' ...AND...
Activity Status In Scheduled, Completed
```5.8https://lab.civicrm.org/dev/core/-/issues/424‘Send Scheduled Reminders’ task - Time Out and Scalability issues2018-11-09T22:25:03Zmarcusjwilson‘Send Scheduled Reminders’ task - Time Out and Scalability issuesWhen trying to run the ‘Send Scheduled Reminders’ task for lapsing members in CiviCRM, the user experiences Time Outs and the Scheduled Job fails to complete.
The query appears to be very complex, and joins the membership table to itsel...When trying to run the ‘Send Scheduled Reminders’ task for lapsing members in CiviCRM, the user experiences Time Outs and the Scheduled Job fails to complete.
The query appears to be very complex, and joins the membership table to itself as well as joins to the relationships table (which is around half the size of the membership table) so it is pulling a lot of data. It actually examines hundreds of millions of rows throughout the process of running.
This is the query:
```
# Time: 180626 19:22:29
# User@Host: CLIENT_wpcvusr[CLIENT_wpcvusr] @ localhost [] Id: 34616
# Schema: CLIENT_civicrm Last_errno: 1160 Killed: 0
# Query_time: 345.664393 Lock_time: 0.000161 Rows_sent: 9035 Rows_examined: 237398638 Rows_affected: 0
# Bytes_sent: 425984
SET timestamp=1530037349;
SELECT cm.id AS owner_id, cm.contact_id AS owner_contact, m.id AS slave_id, m.contact_id AS slave_contact, cmt.relationship_type_id AS relation_type, rel.contact_id_a, rel.contact_id_b, rel.is_permission_a_b, rel.is_permission_b_a
FROM civicrm_membership m
LEFT JOIN civicrm_membership cm ON cm.id = m.owner_membership_id
LEFT JOIN civicrm_membership_type cmt ON cmt.id = m.membership_type_id
LEFT JOIN civicrm_relationship rel ON ( ( rel.contact_id_a = m.contact_id AND rel.contact_id_b = cm.contact_id AND rel.relationship_type_id = cmt.relationship_type_id )
OR ( rel.contact_id_a = cm.contact_id AND rel.contact_id_b = m.contact_id AND rel.relationship_type_id = cmt.relationship_type_id ) )
WHERE m.owner_membership_id IS NOT NULL AND
( rel.is_permission_a_b = 0 OR rel.is_permission_b_a = 0);
```
We have increased resources and Time Out settings on our server, and our server engineers also increased max_allowed_packet variable of MySQL so the queries could run faster. However, the Time Out still occurs.
So, it seems that this CiviCRM Send Scheduled Reminder task is not scaling to the current size of our member database (~12,000 membership records).5.8https://lab.civicrm.org/dev/core/-/issues/428Fatal error in Activity Details report when Sorting uses Section Header2018-11-09T22:11:46ZAllenShawFatal error in Activity Details report when Sorting uses Section Header**Steps to reproduce on dmaster:**
1. Enable debug/backtrace options for better error reporting (this is not required to achieve the relevant fatal error).
1. Open the Activity Details report at http://drupal-demo.amp.l/civicrm/report...**Steps to reproduce on dmaster:**
1. Enable debug/backtrace options for better error reporting (this is not required to achieve the relevant fatal error).
1. Open the Activity Details report at http://drupal-demo.amp.l/civicrm/report/instance/3?reset=1&output=criteria
1. Open the Sort tab and enable the 'Section Header / group by' option for any sort-by column; click *Refresh results* to reload the report with this configuration change.
1. Observe a fatal error page with the following Error Details:
```
Database Error Code: Table 'dmasterciv_jqcej.Array' doesn't exist, 1146
Additional Details:
Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -18
[message] => DB Error: no such table
[mode] => 16
[debug_info] => SELECT ANY_VALUE(ifnull(civicrm_activity_activity_date_time_date, '')) as civicrm_activity_activity_date_time_date, ANY_VALUE(ifnull(civicrm_contact_contact_assignee, '')) as civicrm_contact_contact_assignee, ANY_VALUE(ifnull(civicrm_contact_contact_target, '')) as civicrm_contact_contact_target, ANY_VALUE(ifnull(civicrm_contact_contact_source_id, '')) as civicrm_contact_contact_source_id, ANY_VALUE(ifnull(civicrm_contact_contact_assignee_id, '')) as civicrm_contact_contact_assignee_id, ANY_VALUE(ifnull(civicrm_contact_contact_target_id, '')) as civicrm_contact_contact_target_id, ANY_VALUE(ifnull(civicrm_activity_id, '')) as civicrm_activity_id, ANY_VALUE(ifnull(civicrm_activity_source_record_id, '')) as civicrm_activity_source_record_id, ANY_VALUE(ifnull(civicrm_activity_activity_type_id, '')) as civicrm_activity_activity_type_id, ANY_VALUE(ifnull(civicrm_activity_activity_subject, '')) as civicrm_activity_activity_subject, ANY_VALUE(ifnull(civicrm_activity_activity_date_time, '')) as civicrm_activity_activity_date_time, ANY_VALUE(ifnull(civicrm_activity_status_id, '')) as civicrm_activity_status_id , count(DISTINCT civicrm_activity_id) as ct from Array group by civicrm_activity_activity_date_time_date [nativecode=1146 ** Table 'dmasterciv_jqcej.Array' doesn't exist]
[type] => DB_Error
[user_info] => SELECT ANY_VALUE(ifnull(civicrm_activity_activity_date_time_date, '')) as civicrm_activity_activity_date_time_date, ANY_VALUE(ifnull(civicrm_contact_contact_assignee, '')) as civicrm_contact_contact_assignee, ANY_VALUE(ifnull(civicrm_contact_contact_target, '')) as civicrm_contact_contact_target, ANY_VALUE(ifnull(civicrm_contact_contact_source_id, '')) as civicrm_contact_contact_source_id, ANY_VALUE(ifnull(civicrm_contact_contact_assignee_id, '')) as civicrm_contact_contact_assignee_id, ANY_VALUE(ifnull(civicrm_contact_contact_target_id, '')) as civicrm_contact_contact_target_id, ANY_VALUE(ifnull(civicrm_activity_id, '')) as civicrm_activity_id, ANY_VALUE(ifnull(civicrm_activity_source_record_id, '')) as civicrm_activity_source_record_id, ANY_VALUE(ifnull(civicrm_activity_activity_type_id, '')) as civicrm_activity_activity_type_id, ANY_VALUE(ifnull(civicrm_activity_activity_subject, '')) as civicrm_activity_activity_subject, ANY_VALUE(ifnull(civicrm_activity_activity_date_time, '')) as civicrm_activity_activity_date_time, ANY_VALUE(ifnull(civicrm_activity_status_id, '')) as civicrm_activity_status_id , count(DISTINCT civicrm_activity_id) as ct from Array group by civicrm_activity_activity_date_time_date [nativecode=1146 ** Table 'dmasterciv_jqcej.Array' doesn't exist]
[to_string] => [db_error: message="DB Error: no such table" code=-18 mode=callback callback=CRM_Core_Error::handle prefix="" info="SELECT ANY_VALUE(ifnull(civicrm_activity_activity_date_time_date, '')) as civicrm_activity_activity_date_time_date, ANY_VALUE(ifnull(civicrm_contact_contact_assignee, '')) as civicrm_contact_contact_assignee, ANY_VALUE(ifnull(civicrm_contact_contact_target, '')) as civicrm_contact_contact_target, ANY_VALUE(ifnull(civicrm_contact_contact_source_id, '')) as civicrm_contact_contact_source_id, ANY_VALUE(ifnull(civicrm_contact_contact_assignee_id, '')) as civicrm_contact_contact_assignee_id, ANY_VALUE(ifnull(civicrm_contact_contact_target_id, '')) as civicrm_contact_contact_target_id, ANY_VALUE(ifnull(civicrm_activity_id, '')) as civicrm_activity_id, ANY_VALUE(ifnull(civicrm_activity_source_record_id, '')) as civicrm_activity_source_record_id, ANY_VALUE(ifnull(civicrm_activity_activity_type_id, '')) as civicrm_activity_activity_type_id, ANY_VALUE(ifnull(civicrm_activity_activity_subject, '')) as civicrm_activity_activity_subject, ANY_VALUE(ifnull(civicrm_activity_activity_date_time, '')) as civicrm_activity_activity_date_time, ANY_VALUE(ifnull(civicrm_activity_status_id, '')) as civicrm_activity_status_id , count(DISTINCT civicrm_activity_id) as ct from Array group by civicrm_activity_activity_date_time_date [nativecode=1146 ** Table 'dmasterciv_jqcej.Array' doesn't exist]"]
)
```
5. Also observe this PHP Notice: `Array to string conversion in CRM_Report_Form_Activity->sectionTotals() (line 1083 of /srv/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Report/Form/Activity.php).`
**Best guess what's going on:**
The activity Details report assumes the name of a temporary table is stored in `$this->temporaryTables['activity_temp_table']`, but that's really an array. The table name is actually stored in `$this->temporaryTables['activity_temp_table']['name']`.5.7AllenShawAllenShawhttps://lab.civicrm.org/dev/core/-/issues/431notice errors on dmaster on create case2018-12-07T19:06:00ZJoeMurraynotice errors on dmaster on create caseCreated a Housing support case on dmaster just now and got:
Notice: Undefined variable: url in CRM_Activity_Selector_Activity::actionLinks() (line 225 of /srv/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Activity/Selector/Activit...Created a Housing support case on dmaster just now and got:
Notice: Undefined variable: url in CRM_Activity_Selector_Activity::actionLinks() (line 225 of /srv/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Activity/Selector/Activity.php).
Notice: Undefined variable: qsView in CRM_Activity_Selector_Activity::actionLinks() (line 226 of /srv/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Activity/Selector/Activity.php).
Notice: Undefined variable: url in CRM_Activity_Selector_Activity::actionLinks() (line 225 of /srv/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Activity/Selector/Activity.php).
Notice: Undefined variable: qsView in CRM_Activity_Selector_Activity::actionLinks() (line 226 of /srv/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Activity/Selector/Activity.php).
Notice: Undefined variable: url in CRM_Activity_Selector_Activity::actionLinks() (line 225 of /srv/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Activity/Selector/Activity.php).
Notice: Undefined variable: qsView in CRM_Activity_Selector_Activity::actionLinks() (line 226 of /srv/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Activity/Selector/Activity.php).https://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/561Replace jcalendar instances with datepicker2021-04-01T02:20:56ZeileenReplace jcalendar instances with datepickerWe have been phasing out jcalendar since ? 4.x? there are a handful of instances left to switch over.
Once they are all gone we should be able to remove some php handling - datepicker handles date format at the js layer meaning the php/...We have been phasing out jcalendar since ? 4.x? there are a handful of instances left to switch over.
Once they are all gone we should be able to remove some php handling - datepicker handles date format at the js layer meaning the php/ form layer only needs to handle one format of dates
Note that removing jcalendar will remove a number of points of fragility as the datepicker is more robusthttps://lab.civicrm.org/dev/core/-/issues/453Creating New Individual via quick add block fails if after adding you try to ...2022-09-04T05:03:41ZhfarooqCreating New Individual via quick add block fails if after adding you try to add a phone numberDrupal 7.59
CiviCRM 5.3.1
I was able to replicate on https://dmaster.demo.civicrm.org/ demo site. When contact is created through add individual contact block and at least one of the custom field is required, on the full individual crea...Drupal 7.59
CiviCRM 5.3.1
I was able to replicate on https://dmaster.demo.civicrm.org/ demo site. When contact is created through add individual contact block and at least one of the custom field is required, on the full individual create form if phone field is populated and form is submitted, it gives error saying "One Phone should be marked as primary".
There is already a JIRA issue created for this bug but no resolution yet.
Jira issue: https://issues.civicrm.org/jira/browse/CRM-5207
Thanks!https://lab.civicrm.org/dev/core/-/issues/454CiviCase access to activities permission discrepancy2019-02-21T04:59:48ZeileenCiviCase access to activities permission discrepancyI propose to alter the high level permissions for accessing case activities to always look for 'access my cases and activities' or 'access all cases and activities' (and not administer CiviCase which it inconsistently does at the moment....I propose to alter the high level permissions for accessing case activities to always look for 'access my cases and activities' or 'access all cases and activities' (and not administer CiviCase which it inconsistently does at the moment.).
There are 2 main functions affecting CiviCase access from the various activity functions
- CRM_Case_BAO_Case::accessCiviCase - returns true if user has any one of
access my cases and activities
access all cases and activities
- CRM_Activity_BAO_Activity::checkPermission - returns true if user has any one of
access my cases and activities
access all cases and activities
administer CiviCase
In practice this means that with administer CiviCase but not the other perms I can
- access the page to configure case statuses
- not access the page to configure case types
- access the page to configure case settings
- not access the CiviCase dashboard
- access activities attached to cases through the api (or at least get past that check)
- not access activities attached to cases through contact dashboard
My take on all this is that CRM_Activity_BAO_Activity::checkPermission should only look at access my cases and activities & access all cases and activities. It seems likely the administer option was only added because it was there for other components in that bit of code.
I also think the page to configure case types should be accessible with 'administer CiviCase' but that is out of scope for this issue.
My main motivation is to address some performance issues around activity retrieval - but I need to clarify this to fix up the relevant codehttps://lab.civicrm.org/dev/core/-/issues/455Contact Reports: Constituent Summary: fatal error when selecting the column "...2018-10-22T19:47:00ZPradeep Nayakpradpnayak@gmail.comContact Reports: Constituent Summary: fatal error when selecting the column "Location Type"Error: Call to undefined method CRM_Report_Form_Contact_Summary::getLocationTypeOptions() in CRM_Report_Form->alterLocationTypeID() (line 2452 of /Users/pradeep/Sites/civicrm/sites/all/modules/civicrm/CRM/Report/Form.php).
PR: https://...Error: Call to undefined method CRM_Report_Form_Contact_Summary::getLocationTypeOptions() in CRM_Report_Form->alterLocationTypeID() (line 2452 of /Users/pradeep/Sites/civicrm/sites/all/modules/civicrm/CRM/Report/Form.php).
PR: https://github.com/civicrm/civicrm-core/pull/129535.7https://lab.civicrm.org/dev/core/-/issues/456Improve UX of scheduling mass SMS (in progress)2018-11-29T11:38:32ZJKingsnorthImprove UX of scheduling mass SMS (in progress)As an electronic marketer I want to be able to schedule SMS mailings. However the interface can cause unexpected results.
If I leave 'send immediately' ticked, then the 'schedule sms' date is overridden, and 'now' is chosen instead. ie:...As an electronic marketer I want to be able to schedule SMS mailings. However the interface can cause unexpected results.
If I leave 'send immediately' ticked, then the 'schedule sms' date is overridden, and 'now' is chosen instead. ie:
![schedule-err-1](/uploads/f865996febcb0370503c997d293128ca/schedule-err-1.png)
![scheudle-err-2](/uploads/f1e653951c5a88cb74410b68a6242f71/scheudle-err-2.png)
This is very poor UX. As the options should be 'distinct'.
The desired solution would be to use a form the same as when scheduling an email in the, which makes this kind of error impossible. ie: usign radio buttons like the email scheduling tool does.https://lab.civicrm.org/dev/core/-/issues/459Fix `crmURL` parameters in various templates2018-11-29T10:02:12ZhaystackFix `crmURL` parameters in various templatesIn Smarty templates, when the `q` parameter is prefixed with an ampersand, for example:
`{crmButton p='civicrm/contact/view/delete' q="&reset=1&delete=1&cid=$contactId" class="delete" icon="trash"}`
the resulting URL contains `&&` like...In Smarty templates, when the `q` parameter is prefixed with an ampersand, for example:
`{crmButton p='civicrm/contact/view/delete' q="&reset=1&delete=1&cid=$contactId" class="delete" icon="trash"}`
the resulting URL contains `&&` like this:
`http://civicrm.local/wp-admin/admin.php?page=CiviCRM&q=civicrm/contact/view/delete&&reset=1&delete=1&cid=202`
This happens in a number template files. PR to follow.5.8https://lab.civicrm.org/dev/core/-/issues/460Fix malformed redirect URLs2018-11-09T01:01:30ZhaystackFix malformed redirect URLsThis is a bit of an edge case, but I have run into it once or twice. The `perform` method of `CRM_Core_QuickForm_Action_Jump` can produce invalid URLs. This happens when `$current->getAttribute('action')` is a URL ending in `?`. The resu...This is a bit of an edge case, but I have run into it once or twice. The `perform` method of `CRM_Core_QuickForm_Action_Jump` can produce invalid URLs. This happens when `$current->getAttribute('action')` is a URL ending in `?`. The resulting URL has `?&` in it, e.g.
`https://civicrm.latest/civicrm/event/register/?&_qf_ThankYou_display=true&qfKey=<some-key>`
This seems to cause Chrome to "fix" the URL and then redirect to the "fixed" URL:
`https://civicrm.latest/civicrm/event/register/?_qf_ThankYou_display=true&qfKey=<some-key>`
I'm not certain about this - particularly as I haven't tested in all browsers - but this redirect could be the cause of missing sessions in the Event Registration process. If the "fix" behaviour changed from browser to browser, this might also account for the slipperiness of repeating the issue.
Either way, the method shouldn't produce invalid URLs.5.8https://lab.civicrm.org/dev/core/-/issues/470Current employer dissapears when disabling expired relationships2024-03-15T18:12:06ZfrancescbassasCurrent employer dissapears when disabling expired relationshipsOriginal issue: https://issues.civicrm.org/jira/browse/CRM-21851
Affected versions: at least from 5.0.0
---
How to reproduce:
1) Create a current relationship on individual A as *employee of* organization B and mark as *current emplo...Original issue: https://issues.civicrm.org/jira/browse/CRM-21851
Affected versions: at least from 5.0.0
---
How to reproduce:
1) Create a current relationship on individual A as *employee of* organization B and mark as *current employer*
2) Create a past relationship on individual A as *employee of* organization B without marking as current employer
At this point on summary tab of individual A appears organization B as his Employer.
3) Run *Disable expired relationships* cron job
At this point on summary tab there is no organization at Employer field although there is one active employee relationship and past relationship was disabled.5.17.0https://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/481New Organization: There is no possible to uncheck in the field "Bulk Mailings?"2018-10-31T10:29:59ZPradeep Nayakpradpnayak@gmail.comNew Organization: There is no possible to uncheck in the field "Bulk Mailings?"1. Log in to CRM
2. Select menu item "Contacts"
3. Click submenu item "New Organization:"
4. Check in the field "Bulk Mailings?"
5. Try to uncheck in the field "Bulk Mailings?"
Result: There is no possible to uncheck in the field "Bulk...1. Log in to CRM
2. Select menu item "Contacts"
3. Click submenu item "New Organization:"
4. Check in the field "Bulk Mailings?"
5. Try to uncheck in the field "Bulk Mailings?"
Result: There is no possible to uncheck in the field "Bulk Mailings?"
![radiobutton](/uploads/c8ddaddbdaa180dc6a285585cef3021d/radiobutton.png)
Note: the same on New Individual. The same for editing (see edit_bulk.png).
![edit_bulk](/uploads/9bbc1bd9116817c6b6fb99af80bc8dec/edit_bulk.png)
Expected result: User should have a choice to check or uncheck in the field "Bulk Mailings?".
It may be a good idea to change the radio button on the check button in this field5.8https://lab.civicrm.org/dev/core/-/issues/482New Organization: There is no possible to add another website after deleting2019-01-05T13:47:00ZPradeep Nayakpradpnayak@gmail.comNew Organization: There is no possible to add another website after deleting1. Log in to CRM
2. Select menu item "Contacts"
3. Click submenu item "New Organization:"
4. Click "Delete" near the field "Website Type"
5. Click "Add another website"
Result: The link "Add another website" isn't work, fields for add...1. Log in to CRM
2. Select menu item "Contacts"
3. Click submenu item "New Organization:"
4. Click "Delete" near the field "Website Type"
5. Click "Add another website"
Result: The link "Add another website" isn't work, fields for adding new website isn't displayed (Link Website.png)
Note: the same on New Individual
Expected result: The link "Add another website" should adds fields for new website
![Link_Website](/uploads/1b48f4ccd156c0fd3de456b7dc00b021/Link_Website.png)https://lab.civicrm.org/dev/core/-/issues/483New Individual: Unfilled fields "Custom Email Greeting", "Custom Postal Greet...2023-11-07T05:03:22ZPradeep Nayakpradpnayak@gmail.comNew Individual: Unfilled fields "Custom Email Greeting", "Custom Postal Greeting", "Custom Addressee" are hiddenLog in to CRM
Select menu item "Contacts"
Click submenu item "New Individual"
Input the data to the fields "First Name" and "Last Name" : [Test @name__of__creator]
Open block "Communication Preferences"
Choose for fields "Email Greeting"...Log in to CRM
Select menu item "Contacts"
Click submenu item "New Individual"
Input the data to the fields "First Name" and "Last Name" : [Test @name__of__creator]
Open block "Communication Preferences"
Choose for fields "Email Greeting", "Postal Greeting" and "Addressee": Customized
Click the button "Save"
Result: The fields "Custom Email Greeting", "Custom Postal Greeting", "Custom Addressee" are hidden (see Custom.png). The fields are visible after choosing another data in the fields "Custom Email Greeting", "Custom Postal Greeting", "Custom Addressee" then choosing 'Customized'. (see custom1.png)
Note: The same for page "New Organization"
Expected result: This fields are required. The user should be warned that the fields are required.
![custom1](/uploads/8d7265787c9266bf152b82fb607fe1ee/custom1.png)
![Custom](/uploads/63f96c694e860d5bbe0188378112f973/Custom.png)