Development issueshttps://lab.civicrm.org/groups/dev/-/issues2023-03-18T02:26:52Zhttps://lab.civicrm.org/dev/core/-/issues/2632Apiv4 Entity.get - no caching2023-03-18T02:26:52ZeileenApiv4 Entity.get - no cachingIf you call
```
Entity::get(FALSE)->addWhere('name', '=', 'xyx')->execute());
```
Mote that once it will do expensive file scans more than once from the looks @colemanw
```
protected function getRecords() {
$entities = [];
$...If you call
```
Entity::get(FALSE)->addWhere('name', '=', 'xyx')->execute());
```
Mote that once it will do expensive file scans more than once from the looks @colemanw
```
protected function getRecords() {
$entities = [];
$toGet = $this->_itemsToGet('name');
$locations = array_merge([\Civi::paths()->getPath('[civicrm.root]/Civi.php')],
array_column(\CRM_Extension_System::singleton()->getMapper()->getActiveModuleFiles(), 'filePath')
);
$enabledComponents = array_keys(\CRM_Core_Component::getEnabledComponents());
foreach ($locations as $location) {
$dir = \CRM_Utils_File::addTrailingSlash(dirname($location)) . 'Civi/Api4';
if (is_dir($dir)) {
foreach (glob("$dir/*.php") as $file) {
$matches = [];
preg_match('/(\w*)\.php$/', $file, $matches);
$className = '\Civi\Api4\\' . $matches[1];
if (is_a($className, '\Civi\Api4\Generic\AbstractEntity', TRUE)) {
$info = $className::getInfo();
$entityName = $info['name'];
$daoName = $info['dao'] ?? NULL;
// Only include DAO entities from enabled components
if ((!$toGet || in_array($entityName, $toGet)) &&
(!$daoName || !defined("{$daoName}::COMPONENT") || in_array($daoName::COMPONENT, $enabledComponents))
) {
$entities[$info['name']] = $info;
}
}
}
}
}
// Fetch custom entities unless we've already fetched everything requested
if ($this->includeCustom && (!$toGet || array_diff($toGet, array_keys($entities)))) {
$this->addCustomEntities($entities);
}
ksort($entities);
return $entities;
}
```https://lab.civicrm.org/dev/core/-/issues/4002API4 throws an exception when using `IN` and pseudoconstants aren't resolved2023-03-15T15:13:48ZJonGoldAPI4 throws an exception when using `IN` and pseudoconstants aren't resolvedConsider this API call in `mjwshared` (pinging @mattwire since he'll be interested):
```php
$paymentProcessorIDs = \Civi\Api4\PaymentProcessor::get(FALSE)
->addWhere('payment_processor_type_id:name', 'IN', ['Stripe', 'Globalpayments']...Consider this API call in `mjwshared` (pinging @mattwire since he'll be interested):
```php
$paymentProcessorIDs = \Civi\Api4\PaymentProcessor::get(FALSE)
->addWhere('payment_processor_type_id:name', 'IN', ['Stripe', 'Globalpayments'])
->execute()
```
This throws a fatal error when run if you don't have Stripe or Globalpayments installed. However, this seems inconsistent:
* If your operator is `=` not `IN`, you just get an empty set (e.g. `cv api4 PaymentProcessor.get +w 'payment_processor_type_id:name = "fake processor"'`).
* If your operator is `IN` but you're not using pseudoconstant lookup, you get an empty set, e.g. `cv api4 PaymentProcessor.get +w 'payment_processor_type_id IN [123456,234567]'`.
From a DX perspective, I think the correct result on the code in `mjwshared` is to return an empty set.JonGoldJonGoldhttps://lab.civicrm.org/dev/financial/-/issues/34Incorrect allocation of payment on an edited multi-line item event registration2019-10-29T19:27:12ZJoeMurrayIncorrect allocation of payment on an edited multi-line item event registrationOn default data set on dmaster, create new Financial Type Event Fees 2. At Administer > Financial Accounts, navigate to the Financial Account this creates also called Event Fees 2 and enter 4301 as the Accounting Code.
Create event wit...On default data set on dmaster, create new Financial Type Event Fees 2. At Administer > Financial Accounts, navigate to the Financial Account this creates also called Event Fees 2 and enter 4301 as the Accounting Code.
Create event with priceset with two fields, first with financial Type Event fees, second with FT of Event Fees 2. Register in event with payment of say $25 for first ticket (Event Fees) and $10 for second ticket (Event fees 2), total $35.
Edit Event registration. Click Change selections. Change quantity for second field from 1 to 5, line item total of $50, contribution total of $75, total paid $35. Save. Balance is $40. Click Record Payment.
Under Contributions > Accounting Batches > New Batch, create a batch, assign the relevant transactions of $35 (original payment), $40 (edit with implied purchase with pay later) and $40 (payment of outstanding balance) to the new batch and export to csv.
At Contributions > Accounting Batches > Open Batches, select the batch just created and export as csv, open and view the resulting transactions:
[Financial_Transactions_3_20180807210702.csv](/uploads/0cccae0ceba1707701f9cf699f52a3e3/Financial_Transactions_3_20180807210702.csv)
The initial purchase (first two lines) and the edit of the order to increase the number of event fees from $10 to $50 are (the third line) are all correct. However, the payment of the outstanding balance is incorrect. Instead of a single line with a $40 payment (Debit Bank Account 1150, Credit Accounts Receivable 1200), there are two lines:
Debit Bank Account 1150, Credit Accounts Receivable 1200: $16.67, Item description: Member
Debit Bank Account 1150, Credit Accounts Receivable 1200: $23.33, Item description: Guest
It seems the payment is being equally allocated to the two line items in proportion to their current line item total. If there had been a simple partial payment, this would be correct. The algorithm for determining the allocation should not be based on the line item totals (or more accurately, their corresponding financial_item.amount), but on the amount of each financial item that has been paid so far (entity_financial_trxn.amount for the entries linking financial_trxn records to these financial_item records.
We should first verify that the entity_financial_trxn.amount fields are being properly recorded. Then it will be apparent that sum(entity_financial_trxn.amount) pointing to first financial_item is $25, the same as its financial_item.amount, while sum(entity_financial_trxn.amount) pointing to second financial_item is $10, which is $40 less than the financial_item.amount. So all of the second payment would be allocated to a single new entity_financial_trxn.amount of $40 pointing to the second financial_item.
This is not a high priority since the two entries add up to the same as the proposed single entry from an accounting perspective. Having two general journal entries is confusing, and the item description of one is inaccurate, so a fix would be good.Monish DebMonish Debhttps://lab.civicrm.org/dev/financial/-/issues/94Incorrect Allocation of refunded line items on Multi Event Registrations2019-11-11T12:49:53ZkcristianoIncorrect Allocation of refunded line items on Multi Event RegistrationsFollow up to https://lab.civicrm.org/dev/financial/issues/34
See https://github.com/civicrm/civicrm-core/pull/14763
PR 14763 moves the issue forward, adds tests and fixes (for the most part) adding additional items to event registratio...Follow up to https://lab.civicrm.org/dev/financial/issues/34
See https://github.com/civicrm/civicrm-core/pull/14763
PR 14763 moves the issue forward, adds tests and fixes (for the most part) adding additional items to event registrations.
This issue is to track what work needs to be done to correct refunds and other issues we have uncovered.
After PR 14763 is merged the gaps expected are:
- receive date is updated for all line items not just the affected line items
- refunds still need to be handled
- ~~null accounts in bookkeeping report~~
- test with taxes
- test with live Payment processor to reflect fees
This is a ample bookig report that shows the issue with Null Accounts:
![bkkeeping-patch-34-null](/uploads/9bbe92aa8d0130fb096af946f55e84ef/bkkeeping-patch-34-null.jpg)
I have exported and reviewed the data in this spreadsheet:
[Report_20191029-1047.ods](/uploads/250b04c4a3ad6b8eb9fc09ced7c0ecfe/Report_20191029-1047.ods)
I ran an number of sql select statements to review the data after editing the transaction:
[14763-contrb-line-ietems.txt](/uploads/f3829452c0e0adc7152acfd7649a4d5e/14763-contrb-line-ietems.txt)
@eileen Please edit and add any comments.https://lab.civicrm.org/dev/financial/-/issues/100Membership form permits creating invalid transactions2019-11-17T19:31:19ZeileenMembership form permits creating invalid transactionsI discovered you can do this... ie choose to add a 'partially paid contribution'
![Screen_Shot_2019-11-07_at_9.21.34_AM](/uploads/a7c343da47e0a01e8c1308a95ba0fc44/Screen_Shot_2019-11-07_at_9.21.34_AM.png)
& all bets are off if you do -...I discovered you can do this... ie choose to add a 'partially paid contribution'
![Screen_Shot_2019-11-07_at_9.21.34_AM](/uploads/a7c343da47e0a01e8c1308a95ba0fc44/Screen_Shot_2019-11-07_at_9.21.34_AM.png)
& all bets are off if you do - certainly in terms of data integrity as no financial_trxn record is created.
We should remove that status - probably the entire field from that screen & just accept 'amount' & maaaayyyybe payment status....5.21.0https://lab.civicrm.org/dev/financial/-/issues/102CRM_Event_BAO_AdditionalPaymentTest::testAddPartialPayment should have status...2020-02-18T02:14:42ZeileenCRM_Event_BAO_AdditionalPaymentTest::testAddPartialPayment should have status transition checks fixed & enabledI've commented out the lines because what they tested wasn't valid but they should be fixed & re-enabledI've commented out the lines because what they tested wasn't valid but they should be fixed & re-enabled5.24.0https://lab.civicrm.org/dev/core/-/issues/752Add cid parameter in custom group form url & set it for Activity form2019-10-28T13:47:29ZeileenAdd cid parameter in custom group form url & set it for Activity formOverview
----------------------------------------
Custom group forms are usually loaded by AJAX, in the parent entities forms they extend from.
The class `CRM_Custom_Form_CustomDataByType` is the one that manages custom group form, but ...Overview
----------------------------------------
Custom group forms are usually loaded by AJAX, in the parent entities forms they extend from.
The class `CRM_Custom_Form_CustomDataByType` is the one that manages custom group form, but doesn't contain the **contact_id** attribute which is essential for performing tasks such as set a default value based on Contact's data, validate values against Contact's data, etc.
Now a days, theses tasks are hard to code, and most of them must rely on JQuery scripts or too complex workarounds to be achieved
From https://github.com/civicrm/civicrm-core/pull/13191
Before
----------------------------------------
class `CRM_Custom_Form_CustomDataByType` doesn't store **contact_id** value
After
----------------------------------------
class `CRM_Custom_Form_CustomDataByType` stores **contact_id** value, which is sent by the parent Entity through url parameter **cid** (when is available)
Technical Details
----------------------------------------
The url is called from this function:
https://github.com/civicrm/civicrm-core/blob/master/templates/CRM/common/customData.tpl#L29
```js
CRM.buildCustomData = function (type, subType, subName, cgCount, groupID, isMultiple, onlySubtype) {
var dataUrl = CRM.url('civicrm/custom', {type: type}),
prevCount = 1,
fname = '#customData',
storage = {};
. . . .
```
then there are **42 php/tpls** files that use this function and must be adapted to send the **cid** when is available
List of 42 files [here](https://gist.github.com/sluc23/a83cb45c05c784747b4d8b0c16a19af7)
Comments
----------------------------------------
This is the first iteration of an incremental change that must be performed to adapt every Entity in CiviCRM.
MM discussion [here](https://chat.civicrm.org/civicrm/pl/gcfhwf9g77fstcbupq3ynwhgce)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/drupal/-/issues/19Drupal8: Implement set UF locale/language (affects mailing tokens)2020-07-16T17:23:38ZbgmDrupal8: Implement set UF locale/language (affects mailing tokens)This is a follow-up to dev/drupal#17.
How to reproduce:
* Create a bilingual Drupal site, with the locale module, with URL-prefix language detection (example.org/fr/civicrm)
* Enable multi-lingual CiviCRM, with two languages (ex: FR/EN...This is a follow-up to dev/drupal#17.
How to reproduce:
* Create a bilingual Drupal site, with the locale module, with URL-prefix language detection (example.org/fr/civicrm)
* Enable multi-lingual CiviCRM, with two languages (ex: FR/EN)
* Send a mailing in French, with the unsubscribe URL token
Expected result: the token should link to the page in French.
Related JIRA issue for Drupal7: https://issues.civicrm.org/jira/browse/CRM-16352
cc @monish.deb @samuelsov5.15.0bgmbgmhttps://lab.civicrm.org/dev/core/-/issues/926Searching for removed contacts in a smart group doesn't work2019-06-27T05:05:12ZeileenSearching for removed contacts in a smart group doesn't workFrom the code this seems like a 'never worked' or not for a long time
Prelminary clean up & test to prevent breakage
https://github.com/civicrm/civicrm-core/pull/14181 - actual fix to come
![Screenshot_2019-05-02_17.12.39](/uploads/7...From the code this seems like a 'never worked' or not for a long time
Prelminary clean up & test to prevent breakage
https://github.com/civicrm/civicrm-core/pull/14181 - actual fix to come
![Screenshot_2019-05-02_17.12.39](/uploads/7214af45b746a26abac2592a52ff8251/Screenshot_2019-05-02_17.12.39.png)5.15.0https://lab.civicrm.org/dev/financial/-/issues/2Payment processor names: separate internal and external usage2019-11-01T21:01:36ZAndie HuntPayment processor names: separate internal and external usageThe Name field on payment processors leads to a lot of surprises for users. The name currently appears in four places:
1. Obviously, when managing the payment processors on the site.
2. When configuring a contribution page or event,...The Name field on payment processors leads to a lot of surprises for users. The name currently appears in four places:
1. Obviously, when managing the payment processors on the site.
2. When configuring a contribution page or event, you can choose the processor(s) available.
3. If more than one payment processor and/or pay later is available on an event or contribution page, the options are labeled with the processor names.
4. After completing a contribution or event registration with certain types of processors, the thank you page says it has been submitted to the processor, using the payment processor name.
These four situations are very different in what should display. Moreover, none of these consequences are apparent to the site admin who is deciding on a name for a payment processor.
Many people give the payment processor the name of the bank and/or payment processor, such as "Stripe". This is reasonable in case 4, when donors are told:
> Your contribution has been submitted to Stripe for processing. Please print this page for your records.
However, it's a little confusing in case 3 unless it's obvious that it's a name of a payment processor. A donor might be offered a choice between "Authorize" and "Pay Later", and it's not clear to the layperson that the former is going to charge your credit card.
(It's also not obvious to site admins that this is the case. Someone could have a single payment processor on the site, give it a silly name, and be just fine so long as Pay Later is never an option. However, they could add Pay Later on an event or contribution page at a later point and not realize that donors must select "New SunTrust Authorize.net" in order to pay by credit card.)
We usually suggest calling a payment processor "Credit Card", but this is a problem when organizations need to have multiple payment processors in order to support separate bank accounts and/or organizational entities.
It also looks silly to say,
> Your contribution has been submitted to Credit Card for processing. Please print this page for your records.
I propose two changes:
1. Add a new field for the publicly visible payment processor label. This would allow an admin to know they have "Action Fund Stripe" enabled for a contribution page but call it "Credit Card" on the frontend.
2. Fix those "submitted for processing" pieces to say something either generic or defined by payment processor type.5.20.0https://lab.civicrm.org/dev/release/-/issues/15.x - Update version-numbering pattern2018-08-17T00:17:24Zcolemanw5.x - Update version-numbering pattern## Tasks
* [x] `civicrm.org` - Update extension validation to accept 4.7 as synonym for 5.x
* [x] `civicrm.org` - Update extension validation to allow forward compatibility within 5.x series
* [x] *Upgrader* and `set-version` - Allow on...## Tasks
* [x] `civicrm.org` - Update extension validation to accept 4.7 as synonym for 5.x
* [x] `civicrm.org` - Update extension validation to allow forward compatibility within 5.x series
* [x] *Upgrader* and `set-version` - Allow one to easily increment middle digit
* [ ] [doc](https://lab.civicrm.org/development-team/Release-Management/tree/master/doc) - Update RM docs
* [x] `5.x-rc.md`
* [x] `5.x-final.md`
* [x] `5.x-patch.md`
* [x] `test.civicrm.org` - Assess/update CI:
* [x] `civi-test-run`
* [x] `civibuild upgrade-test`
* [x] https://test.civicrm.org/job/CiviCRM-Core-Matrix/
* [x] https://test.civicrm.org/job/CiviCRM-Ext-Matrix/
* [x] https://test.civicrm.org/job/CiviCRM-WebTest-Matrix/
* [x] https://test.civicrm.org/job/CiviCRM-Core-PR/
* [x] https://test.civicrm.org/job/CiviCRM-Backdrop-PR/
* [x] https://test.civicrm.org/job/CiviCRM-Drupal-PR/
* [x] https://test.civicrm.org/job/CiviCRM-Packages-PR/
* [x] https://test.civicrm.org/job/CiviCRM-Publish/
* [x] https://test.civicrm.org/job/CiviCRM-Publish-Watch-Core/
* [x] http://download.civicrm.org/latest - Display multiple autobuilds/pre-releases simultaneously
* [x] `civicrm-core` - Trial run, using installer/upgrader/distmaker/test-suite on v5.0
* [x] `civicrm-core` - Update various copyright headers from "4.7" to "5.x".
* [ ] `civicrm-drupal` - SPECME: The *.info files are set to 4.7 and twiddled on release. For git-based deployments, should we do anything to maintain these?
* [ ] `civicrm-wordpress` - SPECME: The `civicrm.php` file is set to 4.7 and twiddled on release. For git-based deployments, should we do anything to maintain these?
* [ ] *Extension author outreach* - Grep universe for READMEs/docs. Send mail-blast with suggested updates.
* [ ] `civicrm-core` - The file `js/crm.angular.js` has a function with a "remove me" notice
* [x] `docs-publisher` - https://lab.civicrm.org/documentation/docs-publisher/merge_requests/87
* [x] `civicrm-sysadmin-guide` - https://github.com/civicrm/civicrm-sysadmin-guide/pull/75
## FAQ
__Q: Would it be better to say `v4.8.0` vs `v5.0.0` vs `v5.1803.0` vs `v18.3.0` vs `v33.0.0`?__
They're all basically the same. All of these options will give *someone* the heebeegeebees -- because we've been doing 4.7.x for two years, and anything that looks different will look different, and different is scary.
The fundamental message should be this:
* The change in number is superficial.
* The substantive editorial/QA regime for `v5.{$Y}.0` is (initially) the same as the previous `v4.7.{$Z}`.
* The new numbering makes it to easier to administer minor patch updates, enabling us to consider more fine-tuned maintenance regimes.
There are bikesheddy reasons to favor one or another.
__Q: But I think there should be substantive change!__
Grand! Please head over to #2 to weigh-in on proposals or add new ones! (Or, if you want to focus-in on the [main review criteria](https://docs.civicrm.org/dev/en/latest/standards/review/), feel free to open a pull-request in [civicrm-dev-docs](https://github.com/civicrm/civicrm-dev-docs).)
__Q: Does this mean you're going to start making more, bigger, scarier changes more often?__
No. This is strictly a superficial realignment of the numbers. In fact, the general tenor of editorial policy has been toward tightening rather than loosening standards.
https://lab.civicrm.org/dev/financial/-/issues/1On new contribution, when priceset chosen remove 'Alternatively, you can use ...2020-05-27T13:21:37ZJoeMurrayOn new contribution, when priceset chosen remove 'Alternatively, you can use a price set.'On backoffice new contribution screen, there is on screen help text under Total Amount field saying 'Alternatively, you can use a price set.' Clicking button to choose a price set incorrectly leaves the text there after the price set is ...On backoffice new contribution screen, there is on screen help text under Total Amount field saying 'Alternatively, you can use a price set.' Clicking button to choose a price set incorrectly leaves the text there after the price set is displayed. Clicking the Price Set field toggles to make it disappear even if the selection is 'Choose price set' which removes price set.
Fix to display this text when price set is not (yet) selected, and to hide it when a price set is selected.Monish DebMonish Deb2018-02-07https://lab.civicrm.org/dev/wordpress/-/issues/1CiviCRM-WordPress - Gutrenberg Compatibility: Do not parse shortcodes in REST...2023-01-25T14:59:08ZkcristianoCiviCRM-WordPress - Gutrenberg Compatibility: Do not parse shortcodes in REST contextWordPress 5.0 will introduce a new default editing experience. The code name is 'Gutenberg' . Gutenberg is built on blocks and the method of handling modals in the editing experience is changing.
The existing modal for inserting shor...WordPress 5.0 will introduce a new default editing experience. The code name is 'Gutenberg' . Gutenberg is built on blocks and the method of handling modals in the editing experience is changing.
The existing modal for inserting shortcodes will not work with Gutenberg. We will need to rework inserting the shortcode to a new block for the new release. Expected Merge Request for Gutenberg will be April 2018 and the release will be sometime thereafter.
However, this week WP 4.9.5 will ship and in this release will be a call to action to all users to install the Gutenberg plugin to test.
Currently if a CiviCRM shortcode is put into the 'Shortcode Block' there will be an error and the post will not save properly. As [bastienho](https://github.com/bastienho) points out in [PR 126](https://github.com/civicrm/civicrm-wordpress/pull/126) the following error is thrown: ``Notice: Trying to get property of non-object in civicrm/civicrm/CRM/Utils/System/WordPress.php on line 221``
For now we should fix this error and then work on full Gutenberg Compatibility once the official merge request is approved to WP.https://lab.civicrm.org/dev/joomla/-/issues/1CiviEvent menu listing showing old events2018-07-03T22:53:01Zaydunsaidan.saunders@squiffle.ukCiviEvent menu listing showing old eventsCiviCRM 5.1.2 on Joomla 3.8.10.
Problem as reported: Trying to create a menu item for an event info page, and the drop-down in the Joomla menu manager is only displaying past events. The drop-down for the Event Registration Page shows ...CiviCRM 5.1.2 on Joomla 3.8.10.
Problem as reported: Trying to create a menu item for an event info page, and the drop-down in the Joomla menu manager is only displaying past events. The drop-down for the Event Registration Page shows the currently active and upcoming events - there are only 2 of them.
(From https://civicrm.stackexchange.com/questions/25555/civievent-menu-listing-not-finding-active-event)
Investigation: the selector for showing events filters by 'active' and shows at most 100 events, but it does not filter by date - so when there are more than 100 events, new ones are not shown.5.4.0https://lab.civicrm.org/dev/core/-/issues/3534Simplify the settings for filesystem paths2022-06-11T16:35:32ZxurizaemonSimplify the settings for filesystem paths* [Hosting environments like WPEngine don't permit (extra) .php files located in the webroot (apparently)](https://civicrm.stackexchange.com/questions/15942/is-it-possible-in-civicrm-to-change-extension-of-cached-php-files-from-php-to-s)...* [Hosting environments like WPEngine don't permit (extra) .php files located in the webroot (apparently)](https://civicrm.stackexchange.com/questions/15942/is-it-possible-in-civicrm-to-change-extension-of-cached-php-files-from-php-to-s)
* Caching generated content there means potential for info leakage or execution via input variables
* Filesystem caching can be inefficient compared to other caches
* Herb has done work to get Smarty caching via Redis?
* https://www.drupal.org/node/2570335
* https://forum.civicrm.org/index.php?topic=35125.0;nowap
* https://issues.civicrm.org/jira/browse/CRM-17401
* https://github.com/freeform/civicrm-drupal-pantheon/blob/4.6.x/patches/smarty-redis-civi-cache.patch
* would Smarty 2 choke if we just set the path to redis:// ?
* .php extension is [tacked on here](https://github.com/civicrm/civicrm-packages/blob/master/Smarty/Smarty.class.php#L1512), may be other places to change thishttps://lab.civicrm.org/dev/drupal/-/issues/72confirmation screen shows internal profile name not public title (reg screen ...2019-08-07T18:07:13ZDLaurysconfirmation screen shows internal profile name not public title (reg screen shows public title)The profile names that appear on the screen when registering for an event don't match between the register screen and the confirmation screen. The register screen uses the 'public title' of the profile, which is great! But then the confi...The profile names that appear on the screen when registering for an event don't match between the register screen and the confirmation screen. The register screen uses the 'public title' of the profile, which is great! But then the confirmation screen shows the internal profile name.5.17.0https://lab.civicrm.org/dev/core/-/issues/723File custom fields cause a fatal error when trying to merge2019-05-30T21:47:13ZtommyboboFile custom fields cause a fatal error when trying to mergeIf you are trying to merge a contact with a custom field that is a file, if the contact that will be deleted is passing a file to the remain contact, the merge will fail, generate a fatal error, and lose all the custom data in the set in...If you are trying to merge a contact with a custom field that is a file, if the contact that will be deleted is passing a file to the remain contact, the merge will fail, generate a fatal error, and lose all the custom data in the set including the file.
To recreate:
1. Create a contact custom field that accepts a file.
2. Add files to one or two contact records.
3. Merge a contact with a file into another contact
4. Fatal Error occurs. All files are no longer attached to the custom fields. The contact to be deleted loses all the custom fields. While the remaining contact looses only the file.
If the contact that is to remain has no image the error message is
> **No record found for given file ID - 0 and entity ID - 203**
The Entity ID is the Contact ID of the remaining contact
> Feb 13 16:13:23 [info] $backTrace = #0 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Error.php(381): CRM_Core_Error::backtrace("backTrace", TRUE)
> #1 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/BAO/File.php(234): CRM_Core_Error::fatal("No record found for given file ID - 0 and entity ID - 203")
> #2 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Dedupe/Merger.php(1723): CRM_Core_BAO_File::deleteFileReferences(NULL, "203", 9)
> #3 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Contact/Form/Merge.php(289): CRM_Dedupe_Merger::moveAllBelongings("203", "204", (Array:11))
> #4 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php(489): CRM_Contact_Form_Merge->postProcess()
> #5 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/StateMachine.php(160): CRM_Core_Form->mainProcess()
> #6 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/QuickForm/Action/Next.php(61): CRM_Core_StateMachine->perform(Object(CRM_Contact_Form_Merge), "next", "Next")
> #7 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Contact_Form_Merge), "next")
> #8 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contact_Form_Merge), "next")
> #9 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Controller.php(351): HTML_QuickForm_Page->handle("next")
> #10 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Utils/Wrapper.php(113): CRM_Core_Controller->run()
> #11 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(282): CRM_Utils_Wrapper->run("CRM_Contact_Form_Merge", "Merge Contact", (Array:0))
> #12 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(84): CRM_Core_Invoke::runItem((Array:13))
> #13 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke((Array:3))
> #14 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm.php(1240): CRM_Core_Invoke::invoke((Array:3))
> #15 /srv/www/demo19/public_html/wp-includes/class-wp-hook.php(298): CiviCRM_For_WordPress->invoke("")
> #16 /srv/www/demo19/public_html/wp-includes/class-wp-hook.php(323): WP_Hook->apply_filters("", (Array:1))
> #17 /srv/www/demo19/public_html/wp-includes/plugin.php(453): WP_Hook->do_action((Array:1))
> #18 /srv/www/demo19/public_html/wp-admin/admin.php(222): do_action("toplevel_page_CiviCRM")
> #19 {main}
If the remaining contact has a file that will be overwritten.
>** DB Error: syntax error**
> [code] => -2
> [message] => DB Error: syntax error
> [mode] => 16
> [debug_info] => UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE entity_id = 203' at line 1]
> [type] => DB_Error
> [user_info] => UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE entity_id = 203' at line 1]
> [to_string] => [db_error: message="DB Error: syntax error" code=-2 mode=callback callback=CRM_Core_Error::handle prefix="" info="UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE entity_id = 203' at line 1]"]
> )
> #1 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(921): CRM_Core_Error::handle(Object(DB_Error))
> #2 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB.php(985): PEAR_Error->__construct("DB Error: syntax error", -2, 16, (Array:2), "UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [native...")
> #3 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(575): DB_Error->__construct(-2, 16, (Array:2), "UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [native...")
> #4 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -2, 16, (Array:2), "UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [native...", "DB_Error", TRUE)
> #5 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/common.php(1907): PEAR->__call("raiseError", (Array:7))
> #6 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/mysqli.php(933): DB_common->raiseError(-2, NULL, NULL, "UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [native...", "1064 ** You have an error in your SQL syntax; check the manual that correspon...")
> #7 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/mysqli.php(403): DB_mysqli->mysqliRaiseError()
> #8 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/common.php(1216): DB_mysqli->simpleQuery("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203")
> #9 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/DataObject.php(2415): DB_common->query("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203")
> #10 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/DataObject.php(1607): DB_DataObject->_query("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203")
> #11 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/DAO.php(438): DB_DataObject->query("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203")
> #12 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/DAO.php(1413): CRM_Core_DAO->query("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203", TRUE)
> #13 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Dedupe/Merger.php(1736): CRM_Core_DAO::executeQuery("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203")
> #14 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Contact/Form/Merge.php(289): CRM_Dedupe_Merger::moveAllBelongings("203", "204", (Array:10))
> #15 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php(489): CRM_Contact_Form_Merge->postProcess()
> #16 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/StateMachine.php(160): CRM_Core_Form->mainProcess()
> #17 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/QuickForm/Action/Next.php(61): CRM_Core_StateMachine->perform(Object(CRM_Contact_Form_Merge), "next", "Next")
> #18 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Contact_Form_Merge), "next")
> #19 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contact_Form_Merge), "next")
> #20 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Controller.php(351): HTML_QuickForm_Page->handle("next")
> #21 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Utils/Wrapper.php(113): CRM_Core_Controller->run()
> #22 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(282): CRM_Utils_Wrapper->run("CRM_Contact_Form_Merge", "Merge Contact", (Array:0))
> #23 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(84): CRM_Core_Invoke::runItem((Array:13))
> #24 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke((Array:3))
> #25 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm.php(1240): CRM_Core_Invoke::invoke((Array:3))
> #26 /srv/www/demo19/public_html/wp-includes/class-wp-hook.php(298): CiviCRM_For_WordPress->invoke("")
> #27 /srv/www/demo19/public_html/wp-includes/class-wp-hook.php(323): WP_Hook->apply_filters("", (Array:1))
> #28 /srv/www/demo19/public_html/wp-includes/plugin.php(453): WP_Hook->do_action((Array:1))
> #29 /srv/www/demo19/public_html/wp-admin/admin.php(222): do_action("toplevel_page_CiviCRM")5.15.0https://lab.civicrm.org/dev/core/-/issues/2Display Inbound Email: linefeed suppressed2024-03-26T10:22:28ZDetlev SieberDisplay Inbound Email: linefeed suppressedWhen viewing an activity of type inbound email, the text is displayed in "details". However, althought the database contains it in plain text and html, it is displayed as plain text without LFs, what makes it hardly readable.When viewing an activity of type inbound email, the text is displayed in "details". However, althought the database contains it in plain text and html, it is displayed as plain text without LFs, what makes it hardly readable.4.7.31https://lab.civicrm.org/dev/drupal/-/issues/2Implement D8 initialization for civicrm-setup2020-07-16T17:23:36ZtottenImplement D8 initialization for civicrm-setup__Background__: When installing on Drupal 8, settings such as DSN and locale should be autodetected.
__Task__:
* Copy `plugins/init/Drupal.civi-setup.php` or `plugins/init/WordPress.civi-setup.php`
* Create `Drupal8.civi-setup.php`
* A...__Background__: When installing on Drupal 8, settings such as DSN and locale should be autodetected.
__Task__:
* Copy `plugins/init/Drupal.civi-setup.php` or `plugins/init/WordPress.civi-setup.php`
* Create `Drupal8.civi-setup.php`
* Adapt for D8. For source material on how to detect things like DSN, look at `civicrm-drupal@8.x-master` in `civicrm.install` / `drush.civicrm.inc`.D8 General AvailabilityMonish DebMonish Deb