CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2023-01-31T04:22:10Zhttps://lab.civicrm.org/dev/core/-/issues/4063Pagination and counts for soft credits on contact contribution tab are broken2023-01-31T04:22:10ZlarsssandergreenPagination and counts for soft credits on contact contribution tab are broken![image](/uploads/bb821970b38d324542ed222f854986c7/image.png)
![image](/uploads/6f7546327ec73b18a8811048bcf59d92/image.png)
If the total number of soft credits on a contact's contribution tab exceeds the number set in Show N entries, th...![image](/uploads/bb821970b38d324542ed222f854986c7/image.png)
![image](/uploads/6f7546327ec73b18a8811048bcf59d92/image.png)
If the total number of soft credits on a contact's contribution tab exceeds the number set in Show N entries, then the count is broken as above and the Next and Last links are disabled. You can use the page numbers to get to other pages, but it will always show five pages no matter how many actual soft credits are found.
Is this something that's worth digging into or is it anticipated that this will be replaced with SearchKit relatively soon?
To reproduce, add soft credit for 11 contributions to one contact, then go to that contact's contributions tab and select Show 10 entries.https://lab.civicrm.org/dev/core/-/issues/4097CRM_Utils_Number::formatLocaleNumeric() method throws fatal error with empty ...2023-01-30T21:07:08ZbenmoreassyntCRM_Utils_Number::formatLocaleNumeric() method throws fatal error with empty string parameter.Overview
----------------------------------------
CRM_Utils_Number::formatLocaleNumeric() method throws fatal error due to string parameter.
Reproduction steps
----------------------------------------
1. Generate a report that uses cust...Overview
----------------------------------------
CRM_Utils_Number::formatLocaleNumeric() method throws fatal error due to string parameter.
Reproduction steps
----------------------------------------
1. Generate a report that uses custom fields with numeric values. In my case the custom fields were storing simple integer counts of family members.
1. The following fatal error is thrown: "Fatal error: Uncaught Error: NumberFormatter::format(): Argument #1 ($num) must be of type int|float, string given
in /path/to/civicrm/civicrm/CRM/Utils/Number.php on line 123"
Current behaviour
----------------------------------------
Fatal error is thrown. Error affects multiple reports. Full output follows.
```
Fatal error: Uncaught Error: NumberFormatter::format(): Argument #1 ($num) must be of type int|float, string given
in /path/to/wordpress/wp-content/plugins/civicrm/civicrm/CRM/Utils/Number.php on line 123
Call stack:
NumberFormatter::format()
wp-content/plugins/civicrm/civicrm/CRM/Utils/Number.php:123
CRM_Utils_Number::formatLocaleNumeric()
wp-content/plugins/civicrm/civicrm/CRM/Core/BAO/CustomField.php:1282
CRM_Core_BAO_CustomField::formatDisplayValue()
wp-content/plugins/civicrm/civicrm/CRM/Core/BAO/CustomField.php:1116
CRM_Core_BAO_CustomField::displayValue()
wp-content/plugins/civicrm/civicrm/CRM/Report/Form.php:2388
CRM_Report_Form::alterCustomDataDisplay()
wp-content/plugins/civicrm/civicrm/CRM/Report/Form.php:3293
CRM_Report_Form::sectionTotals()
wp-content/plugins/civicrm/civicrm/CRM/Report/Form.php:2578
CRM_Report_Form::formatDisplay()
wp-content/plugins/civicrm/civicrm/CRM/Report/Form/Contact/Summary.php:154
CRM_Report_Form_Contact_Summary::postProcess()
wp-content/plugins/civicrm/civicrm/CRM/Report/Form.php:956
CRM_Report_Form::preProcess()
wp-content/plugins/civicrm/civicrm/CRM/Report/Form/Contact/Summary.php:125
CRM_Report_Form_Contact_Summary::preProcess()
wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php:668
CRM_Core_Form::buildForm()
wp-content/plugins/civicrm/civicrm/CRM/Core/QuickForm/Action/Display.php:76
CRM_Core_QuickForm_Action_Display::perform()
wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Controller.php:203
HTML_QuickForm_Controller::handle()
wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Page.php:103
HTML_QuickForm_Page::handle()
wp-content/plugins/civicrm/civicrm/CRM/Core/Controller.php:355
CRM_Core_Controller::run()
wp-content/plugins/civicrm/civicrm/CRM/Utils/Wrapper.php:98
CRM_Utils_Wrapper::run()
wp-content/plugins/civicrm/civicrm/CRM/Report/Page/Instance.php:74
CRM_Report_Page_Instance::run()
wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php:319
CRM_Core_Invoke::runItem()
wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php:69
CRM_Core_Invoke::_invoke()
wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php:36
CRM_Core_Invoke::invoke()
wp-content/plugins/civicrm/civicrm.php:1199
CiviCRM_For_WordPress::invoke()
wp-includes/class-wp-hook.php:308
WP_Hook::apply_filters()
wp-includes/class-wp-hook.php:332
WP_Hook::do_action()
wp-includes/plugin.php:517
do_action()
wp-admin/admin.php:259
```
Expected behaviour
----------------------------------------
A CiviCRM report of custom fields and data should be shown.
Environment information
----------------------------------------
<!-- Some of the items below may not be relevant for every bug - if in doubt please include more information than you think is neccessary. -->
* __CiviCRM:__ 5.57.1
* __PHP:__ reproduced in 8.1 and 8.0
* __CMS:__ WordPress 6.6.1
* __Database:__ reproduced in MySQL 5.7 and MySQL 8.0
* __Web Server:__ Apache 2.4
Comments
----------------------------------------
Possible fix (submitted via pull request):
CRM/Utils/Number.php Insert the following after line 122.
```php
if ((int) $amount == $amount) {
$amount = intval($amount);
} else {
$amount = floatval($amount);
}
```5.59.0https://lab.civicrm.org/dev/core/-/issues/4081API v.3 Event.create used for update will change Event Template to ordinary E...2023-01-16T15:26:05Zniels_erik_andersenAPI v.3 Event.create used for update will change Event Template to ordinary EventWhen API v.3 Event.create is used for update event template, it will set is_template to false so that the template is changed to an ordinary event.
To reproduce:
cv api Event.create id=nnn template_title="New Title"
Where nnn is id for...When API v.3 Event.create is used for update event template, it will set is_template to false so that the template is changed to an ordinary event.
To reproduce:
cv api Event.create id=nnn template_title="New Title"
Where nnn is id for Event Template
To fix:
In
CRM_Event_BAO_Event::create(&$params) {
$transaction = new CRM_Core_Transaction();
if (empty($params['is_template'])) {
$params['is_template'] = 0;
}
Change
if (empty($params['is_template'])) {
to:
if (empty($params['id']) && empty($params['is_template'])) {5.59.0https://lab.civicrm.org/dev/core/-/issues/1448Upgrade - confirm navigation away from page2023-01-15T05:03:23ZarborrowUpgrade - confirm navigation away from pageSo yesterday, I had one of those moments where I just wanted to kick myself while upgrading CiviCRM. I had fired off the database upgrade (civicrm/upgrade?reset=1) and saw a bunch of notices related to templates which I copied for docume...So yesterday, I had one of those moments where I just wanted to kick myself while upgrading CiviCRM. I had fired off the database upgrade (civicrm/upgrade?reset=1) and saw a bunch of notices related to templates which I copied for documentation purposes while the database upgrade continued.
I intended to switch over to a new browser tab and paste the documentation into a document there when before I new it I had migrated away from the upgrade page abandoning the upgrade mid-process. Hoping against hope, I went back and thought perhaps it might be able to pickup where it left off. No such luck. The installation had been interrupted and it was suggested that I restore my backup (which of course I hadn't done because well I never have these sorts of troubles :p) and then try the upgrade process again.
I suspect I am not the first to do this but believe it would be a good idea to add some type of confirmation button on the database upgrade page to save me from myself and make it one step harder to interrupt the upgrade process with a "are you sure you want to continue to interrupt the database upgrade". It just seems a little too easy to interrupt this crucial process.
I was thinking something along the lines of: https://code-maven.com/prevent-leaving-the-page-using-plain-javascripthttps://lab.civicrm.org/dev/core/-/issues/822Quick Search: It isn't possible to find a contact by phone number with the "+...2023-01-14T05:03:31ZPradeep Nayakpradpnayak@gmail.comQuick Search: It isn't possible to find a contact by phone number with the "+" symbolThe system has a contact with e.g. this +55 98 98239 7434 phone number.
Steps:
* Open the Quick Search list
* Choose the Phone radio button
* Type the phone number (+55 98 98239 7434) from the precondition to the Quick Search field
* ...The system has a contact with e.g. this +55 98 98239 7434 phone number.
Steps:
* Open the Quick Search list
* Choose the Phone radio button
* Type the phone number (+55 98 98239 7434) from the precondition to the Quick Search field
* Try to type the phone number without "+"
**Actual result:** It isn't possible to find a contact by phone number with the "+" symbol.
**Expected result:** It is possible to find a contact by phone number with the "+" symbolhttps://lab.civicrm.org/dev/core/-/issues/4060On 5.57.0 Joomla3, cv fails with 'Failed to start application'2023-01-11T13:56:44Zaydunsaidan.saunders@squiffle.ukOn 5.57.0 Joomla3, cv fails with 'Failed to start application'Overview
----------------------------------------
On a 5.57.0 Joomla 3.10.9 system, the `cv` command fails with 'Failed to start application'
(Logging against core rather than cv since the problem appears to be here)
Reproduction steps...Overview
----------------------------------------
On a 5.57.0 Joomla 3.10.9 system, the `cv` command fails with 'Failed to start application'
(Logging against core rather than cv since the problem appears to be here)
Reproduction steps
----------------------------------------
1. Try running various commands such as `cv vars:show`, `cv api Contact.get`
Current behaviour
----------------------------------------
```
In Factory.php line 137:
Failed to start application
vars:show [--out OUT] [--flat [FLAT]] [--level LEVEL] [--hostname HOSTNAME] [-t|--test] [-U|--user USER]
```
Expected behaviour
----------------------------------------
No error!
Environment information
----------------------------------------
* __CiviCRM:__ _5.57.0_ <!-- If this problem relates to an upgrade, then specify both old and new versions -->
* __PHP:__ _7.3__
* __CMS:__ _Joomla 3.10.9._5.57.1aydunsaidan.saunders@squiffle.ukaydunsaidan.saunders@squiffle.ukhttps://lab.civicrm.org/dev/core/-/issues/711Google+ references should be removed as it phases out2023-01-10T18:40:34ZphilmorbruGoogle+ references should be removed as it phases outNot a big deal, but as Google phases out Google+, visible references to it should be removed, especially from non-configurable features such as the "Tell a Friend" block for events.Not a big deal, but as Google phases out Google+, visible references to it should be removed, especially from non-configurable features such as the "Tell a Friend" block for events.5.23.0https://lab.civicrm.org/dev/core/-/issues/4065Upgrade Error 5.56.1 to 5.57.0 duplicate Search Kit UI_name2023-01-10T12:26:09ZkcristianoUpgrade Error 5.56.1 to 5.57.0 duplicate Search Kit UI_nameEnviornment:
WP 6.1.1
php 7.4
apache 2.4
Search Kit has a search created in 2021 called 'Top Donors'
on upgrade I get the error:
`[nativecode=1062 ** Duplicate entry 'Top_Donors' for key 'UI_name']`
```
[Error: Finish core DB update...Enviornment:
WP 6.1.1
php 7.4
apache 2.4
Search Kit has a search created in 2021 called 'Top Donors'
on upgrade I get the error:
`[nativecode=1062 ** Duplicate entry 'Top_Donors' for key 'UI_name']`
```
[Error: Finish core DB updates 5.57.0]
Error Field Error Value
Type DB_Error
Code -5
Message DB Error: already exists
Mode 16
UserInfo INSERT INTO `civicrm_saved_search` (`name` , `label` , `form_values` , `mapping_id` , `search_custom_id` , `api_entity` , `api_params` , `created_id` , `modified_id` , `expires_date` , `description` ) VALUES ('Top_Donors' , 'Top Donors' , NULL , NULL , NULL , 'Contribution' , '{\"version\":4,\"select\":[\"GROUP_CONCAT(DISTINCT Contribution_Contact_contact_id_01.display_name) AS GROUP_CONCAT_Contribution_Contact_contact_id_01_display_name\",\"SUM(total_amount) AS SUM_total_amount\",\"COUNT(id) AS COUNT_id\",\"AVG(total_amount) AS AVG_total_amount\"],\"orderBy\":[],\"where\":[[\"contribution_status_id:name\",\"=\",\"Completed\"]],\"groupBy\":[\"contact_id.display_name\"],\"join\":[[\"Contact AS Contribution_Contact_contact_id_01\",\"LEFT\",[\"contact_id\",\"=\",\"Contribution_Contact_contact_id_01.id\"]]],\"having\":[]}' , 202 , 202 , NULL , NULL ) [nativecode=1062 ** Duplicate entry 'Top_Donors' for key 'UI_name']
DebugInfo INSERT INTO `civicrm_saved_search` (`name` , `label` , `form_values` , `mapping_id` , `search_custom_id` , `api_entity` , `api_params` , `created_id` , `modified_id` , `expires_date` , `description` ) VALUES ('Top_Donors' , 'Top Donors' , NULL , NULL , NULL , 'Contribution' , '{\"version\":4,\"select\":[\"GROUP_CONCAT(DISTINCT Contribution_Contact_contact_id_01.display_name) AS GROUP_CONCAT_Contribution_Contact_contact_id_01_display_name\",\"SUM(total_amount) AS SUM_total_amount\",\"COUNT(id) AS COUNT_id\",\"AVG(total_amount) AS AVG_total_amount\"],\"orderBy\":[],\"where\":[[\"contribution_status_id:name\",\"=\",\"Completed\"]],\"groupBy\":[\"contact_id.display_name\"],\"join\":[[\"Contact AS Contribution_Contact_contact_id_01\",\"LEFT\",[\"contact_id\",\"=\",\"Contribution_Contact_contact_id_01.id\"]]],\"having\":[]}' , 202 , 202 , NULL , NULL ) [nativecode=1062 ** Duplicate entry 'Top_Donors' for key 'UI_name']
PEAR_Exception: DB Error: already exists in /home/wpmaybe/public_html/wp-content/plugins/civicrm/civicrm/vendor/pear/pear-core-minimal/src/PEAR.php on line 945
DB_Error: DB Error: already exists in unknown on line unknown
```
I edited the label and name in DB and re-ran the upgrade:
Success
I also now have a packaged Search with the same label and name as one that was created previously. Perhaps we should have a more unique name (not label) to indicated it's a core/packaged search?
EDIT: The affected sites all have the extension 'SearchKit Reports' enabled.https://lab.civicrm.org/dev/core/-/issues/1379Status should be Pending Refund but stays at Completed2023-01-09T05:03:23Zmagnolia61Status should be Pending Refund but stays at CompletedTesting some more with price sets and recording refunds and payments I ran into the following issue, which is pretty specific but can be a symptom of something that should be changed.
STEPS:
1. Event registration with price set. Fee 50....Testing some more with price sets and recording refunds and payments I ran into the following issue, which is pretty specific but can be a symptom of something that should be changed.
STEPS:
1. Event registration with price set. Fee 50. Contribution status = pending
2. Record Payment of 50 euro. Contribution status = Completed
3. Change Event price set to Fee 25. Contribution status = Pending Refund
4. Record Refund of 25. Contribution status = Completed
All is well at this point. But check what happens next
5. Change Event price set to Fee 50. Contribution status should become: Partially Paid.
Instead it remains at completed. Event Balance = 25 (25 should still be paid).
Also the contribution amount should have become 50 again. But it remains to be 25.
Two observations:
a. When at step 5 a fee higher than the original 50 is selected (fi. 75 euro) then the contribution changes correctly to Partially Paid
b. Because the 'record payment' & 'record refund' buttons react to the contribution status rather than the Balance, they are not shown when the contribution has a false status of Completed.
As a sidenote I think the 'Record Payment' and 'Record Refund' buttons/links should always be available and other amounts than the full balance should be able to be refunded.
Tested this on the sandbox as shown below:
![Peek_2019-11-09_10-59](/uploads/7d6a80a12e83bf62c8fe30f534567399/Peek_2019-11-09_10-59.gif)https://lab.civicrm.org/dev/core/-/issues/4022PHP 7.4, 8+ TypeError: array_flip(): Argument #1 ($array) must be of type arr...2023-01-05T02:18:09ZeldonthianPHP 7.4, 8+ TypeError: array_flip(): Argument #1 ($array) must be of type array, string givenOverview
----------------------------------------
Fresh install seemed to work, after going through checklist and setting up preferences,
somehow the search preferences page now throws this error. not sure what the exact cause is.
http...Overview
----------------------------------------
Fresh install seemed to work, after going through checklist and setting up preferences,
somehow the search preferences page now throws this error. not sure what the exact cause is.
https://civicrm.stackexchange.com/q/43060/14046
Reproduction steps
----------------------------------------
This seems to come up whenever ANY of the options are changed and attempting to save on search preferences page. i.e., custom fields, search options or quick search fields selection/deselection, reorder, etc.
Current behaviour
----------------------------------------
upon saving any changes on the search preferences page.
go back to the page, all ordering gone, default fields only, and selections.. just click save, and things begin to work as first install. Can not select/deselect any field to be saved. new selections are not saved..
```
TypeError: array_flip(): Argument #1 ($array) must be of type array, string given in /code/vendor/civicrm/civicrm-core/CRM/Admin/Form/SettingTrait.php on line 380 #0 /code/vendor/civicrm/civicrm-core/CRM/Admin/Form/SettingTrait.php(380): array_flip('\x01sort_name\x01cont...')
#1 /code/vendor/civicrm/civicrm-core/CRM/Admin/Form/SettingTrait.php(224): CRM_Admin_Form_Setting::reorderSortableOptions('quicksearch_opt...', Array)
#2 /code/vendor/civicrm/civicrm-core/CRM/Admin/Form/Setting.php(66): CRM_Admin_Form_Setting->addFieldsDefinedInSettingsMetadata()
#3 /code/vendor/civicrm/civicrm-core/CRM/Admin/Form/Setting/Search.php(47): CRM_Admin_Form_Setting->buildQuickForm()
#4 /code/vendor/civicrm/civicrm-core/CRM/Core/Form.php(689): CRM_Admin_Form_Setting_Search->buildQuickForm()
#5 /code/vendor/civicrm/civicrm-core/CRM/Core/QuickForm/Action/Display.php(76): CRM_Core_Form->buildForm()
#6 /code/vendor/civicrm/civicrm-packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Display->perform(Object(CRM_Admin_Form_Setting_Search), 'display')
#7 /code/vendor/civicrm/civicrm-packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Admin_Form_Setting_Search), 'display')
#8 /code/vendor/civicrm/civicrm-core/CRM/Core/Controller.php(355): HTML_QuickForm_Page->handle('display')
#9 /code/vendor/civicrm/civicrm-core/CRM/Utils/Wrapper.php(98): CRM_Core_Controller->run()
#10 /code/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(292): CRM_Utils_Wrapper->run('CRM_Admin_Form_...', 'Search Preferen...', Array)
#11 /code/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem(Array)
#12 /code/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke(Array)
#13 /code/web/modules/contrib/civicrm/src/Civicrm.php(88): CRM_Core_Invoke::invoke(Array)
#14 /code/web/modules/contrib/civicrm/src/Controller/CivicrmController.php(80): Drupal\civicrm\Civicrm->invoke(Array)
#15 [internal function]: Drupal\civicrm\Controller\CivicrmController->main(Array, '')
#16 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array)
#17 /code/web/core/lib/Drupal/Core/Render/Renderer.php(564): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#18 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#19 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array)
#20 /code/vendor/symfony/http-kernel/HttpKernel.php(169): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#21 /code/vendor/symfony/http-kernel/HttpKernel.php(81): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#22 /code/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#23 /code/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#24 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#25 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#26 /code/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#27 /code/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#28 /code/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#29 /code/web/core/lib/Drupal/Core/DrupalKernel.php(709): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#30 /code/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#31 {main}
```
Expected behaviour
----------------------------------------
Search preferences should be able to be saved with changes.. and accessible at
civicrm/admin/setting/search?reset=1
Environment information
----------------------------------------
* __CiviCRM: 5.55.2, 5.56
* __PHP: 7.4, 8.0, 8.1
* __CMS: Drupal 9.4.8
* __Database: MariaDB 10.4.25
* __Web Server: nginx/1.21.65.57.0https://lab.civicrm.org/dev/core/-/issues/786Search Builder: Empty Operators create DB Errors; switching to NULL Operators...2023-01-03T05:03:33ZjoeglSearch Builder: Empty Operators create DB Errors; switching to NULL Operators fixesStackOverflow here: https://civicrm.stackexchange.com/questions/28802/search-builder-smart-group-with-latitute-street-address-criteria-1292-truncated
We have upgraded from 4.7.17 to 5.9.1. This was initially a Smart Group DB Error issue...StackOverflow here: https://civicrm.stackexchange.com/questions/28802/search-builder-smart-group-with-latitute-street-address-criteria-1292-truncated
We have upgraded from 4.7.17 to 5.9.1. This was initially a Smart Group DB Error issue, but I believe it has more to do with the Empty vs Null operators. The Smart Group/Contact Group in question is built on two simple search builder criteria:
Contacts Primary Street Address is NOT EMPTY
Contacts Primary Latitude IS EMPTY
The resulting error from trying to update this Smart Group is:
`[nativecode=1292 ** Truncated incorrect DOUBLE value: '']`
Additionally, when I attempt to create a new Search Builder with the same criteria, I wouldn't get a hard DB Error page fail, but I still saw this in the logs:
`Ignoring exception thrown by nullHandler: -1, DB Error: unknown error`
When I switched both the operators from EMPTY to NULL in the criteria, I had no problems with search and was able to successfully update the Smart Group.
One thing which I think is important/pertinent is when I initially loaded the "Edit Search Criteria" page for the existing Smart Group, the Search did not remember the operators and I had to re-select them -- this leads me to believe the field storage methodology for the operator lists changed at some point, and the options we had selected in this search were not carried over properly in an upgrade, but I am not certain.https://lab.civicrm.org/dev/core/-/issues/3936Import contributions (update existing) extremely slow2022-12-24T14:42:08ZDetlev SieberImport contributions (update existing) extremely slowOverview
----------------------------------------
On a large database, importing updates of existing contributions is extremely slow (about 10 times slower than inserting new contributions).
This is new with 5.53 or 5.54.
Reproduction ...Overview
----------------------------------------
On a large database, importing updates of existing contributions is extremely slow (about 10 times slower than inserting new contributions).
This is new with 5.53 or 5.54.
Reproduction steps
----------------------------------------
Reproducing requires large database with many contributions. Therefore not yet reproducible on sandbox.
Current behaviour
----------------------------------------
Inserting new contributions works on this specific production environment at a rate of 140 contributions per minute.
Updating existing contributions is at an average of only 13 contributions per minute.
Expected behaviour
----------------------------------------
Previously, updating existing contributions was slightly faster than inserting new contributions.
Environment information
----------------------------------------
<!-- Some of the items below may not be relevant for every bug - if in doubt please include more information than you think is neccessary. -->
* __Browser:__ _Firefox 105.0.3
* __CiviCRM:__ _5.54.0 (was working well with 5.52.x)
* __PHP:__ _7.4
* __CMS:__ _Drupal 7.52
* __Database:__ _MariaDB 10.5.15_
Comments
----------------------------------------
_none_https://lab.civicrm.org/dev/core/-/issues/1298Add Email and Phone as Entities that Custom Fields can be assigned to2022-12-23T05:03:31ZguyiacAdd Email and Phone as Entities that Custom Fields can be assigned toPatrick working on this at BCN SprintPatrick working on this at BCN SprintPatrick Figelpfigel@greenpeace.orgPatrick Figelpfigel@greenpeace.orghttps://lab.civicrm.org/dev/core/-/issues/1299Fix Changelog Reports2022-12-22T05:03:22ZguyiacFix Changelog ReportsCorrect anomalies in the change log reporting (for example the representation when of changes made in batch).
Patrick working on at BCN Sprint.Correct anomalies in the change log reporting (for example the representation when of changes made in batch).
Patrick working on at BCN Sprint.Patrick Figelpfigel@greenpeace.orgPatrick Figelpfigel@greenpeace.orghttps://lab.civicrm.org/dev/core/-/issues/569Advanced Search: DB Error: no such field when the user tries to search by the...2022-12-21T05:03:17ZPradeep Nayakpradpnayak@gmail.comAdvanced Search: DB Error: no such field when the user tries to search by the 'Address Location' fieldTo Replicate:
![SearchViewError](/uploads/79aacb28527281d2c12b77ca16cdf7c2/SearchViewError.gif)To Replicate:
![SearchViewError](/uploads/79aacb28527281d2c12b77ca16cdf7c2/SearchViewError.gif)https://lab.civicrm.org/dev/core/-/issues/4012Contribution Page credit card expiry months are incorrectly offset when the t...2022-12-17T23:11:48ZbgmContribution Page credit card expiry months are incorrectly offset when the timezone is WhitehorseFound an interesting bug that only happens with users who have chose the America/Whitehorse timezone (-0700). It does not happen if we chose another similar timezone (America/Vancouver, America/Yellowknife, etc).
To reproduce on dmaster...Found an interesting bug that only happens with users who have chose the America/Whitehorse timezone (-0700). It does not happen if we chose another similar timezone (America/Vancouver, America/Yellowknife, etc).
To reproduce on dmaster / drupal7:
- login as the demo user
- change the user's timezone to America/Whitehorse
Then go to a contribution page:
https://dmaster.demo.civicrm.org/civicrm/contribute/transact?reset=1&id=2
![image](/uploads/ea61f948003f258501391a3c90e2a6e3/image.png)5.58.0https://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/1177Add system check for deprecated ARCHIVE log tables2022-12-06T05:03:34ZPatrick Figelpfigel@greenpeace.orgAdd system check for deprecated ARCHIVE log tablesIn #663, we changed the default engine for log tables from `ARCHIVE` to `InnoDB` and shipped this with 5.16. While new installations (and tables first created on 5.16+) will use the `InnoDB` engine by default, existing log tables are not...In #663, we changed the default engine for log tables from `ARCHIVE` to `InnoDB` and shipped this with 5.16. While new installations (and tables first created on 5.16+) will use the `InnoDB` engine by default, existing log tables are not migrated automatically. This needs to be done using the `System.updatelogtables` API with `forceEngineMigration` set to "1".
Once the change has seen some production usage (i.e. a couple of releases from now), we should add a system check to warn admins if any of their log tables use the `ARCHIVE` engine and prompt them to migrate affected tables using the API.https://lab.civicrm.org/dev/core/-/issues/3935PHP Notice: Undefined offset in _civicrm_member_roles_sync()2022-12-01T02:47:03ZAndrew WassonPHP Notice: Undefined offset in _civicrm_member_roles_sync()Overview
----------------------------------------
This is an issue that I have noticed in several Drupal 7 / CiviCRM websites. When the CiviCRM Member Roles Synch activity takes place, my recent log messages get inundated with PHP Notice...Overview
----------------------------------------
This is an issue that I have noticed in several Drupal 7 / CiviCRM websites. When the CiviCRM Member Roles Synch activity takes place, my recent log messages get inundated with PHP Notices:
> Notice: Undefined offset: x in _civicrm_member_roles_sync() (line 607 of /civicrm/drupal/modules/civicrm_member_roles/civicrm_member_roles.module).
Reproduction steps
----------------------------------------
1. Enable civicrm member roles sync.
1. Add a rule to synch some member type to a role.
1. Configure to run at Drupal Cron
1. Run Cron and observe as Reports -> Recent Log Messages get filled with notices.
Steps to Resolve
----------------------------------------
line 607 of /civicrm/drupal/modules/civicrm_member_roles/civicrm_member_roles.module contains the following statement:
`if (is_array($memberroles[$membership['membership_type_id']])) {`
If the array is not set then the notice will be raised so if we check it first as follows, the notice goes away:
`if (isset($memberroles[$membership['membership_type_id']]) && is_array($memberroles[$membership['membership_type_id']])) {`
Environment information
----------------------------------------
* __CiviCRM:__ _5.54.0_
* __PHP:__ _7.4/8.1__
* __CMS:__ _Drupal 7.92_
* __Database:__ _MySQL 5.7.4_
* __Web Server:__ _Apache 2.x_5.57.0https://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 here