Extensions issueshttps://lab.civicrm.org/groups/extensions/-/issues2022-08-27T05:28:13Zhttps://lab.civicrm.org/extensions/anonymize/-/issues/17Remove `composer.lock`?2022-08-27T05:28:13ZxurizaemonRemove `composer.lock`?This extension has gone unmaintained for several years! And it ships with a `composer.lock`, which will be outdated I'm sure.
Do CiviCRM extensions usually ship their own composer.lock or leave it for CiviCRM / the host site to sort out?This extension has gone unmaintained for several years! And it ships with a `composer.lock`, which will be outdated I'm sure.
Do CiviCRM extensions usually ship their own composer.lock or leave it for CiviCRM / the host site to sort out?https://lab.civicrm.org/extensions/mjwshared/-/issues/17Separation of concerns concern (!) in IPN Trait2022-08-26T13:32:26ZRichSeparation of concerns concern (!) in IPN TraitYou may not want to fix this @mattwire but I'm noting it here because it's something that stops me chosing to use this trait, and thought it might be helpful to log why.
The IPN class is a request controller that takes whatever the PP t...You may not want to fix this @mattwire but I'm noting it here because it's something that stops me chosing to use this trait, and thought it might be helpful to log why.
The IPN class is a request controller that takes whatever the PP throws its way, and is responsible for parsing and processing that data and producing some sort of output suitable to the external PP's needs.
If all PPs sent one event per IPN, then this trait would be fine. However it's very common for an IPN to bundle a few events in one IPN call, which is where things get knotty.
e.g. Most of the properties added by the IPN trait belong to a **single event**, not to the **IPN**. e.g. [contributionRecurID](https://lab.civicrm.org/extensions/mjwshared/-/blob/707b262724729ba6a163d3f6a955dde73cd61159/CRM/Core/Payment/MJWIPNTrait.php#L37) - and the associated getter/setter methods.
This means that the same instance of this IPN class holds data that belongs to different events. I think it's better separation of concerns to have a separate event processing class to encapsulate all the data to do with a single event.
e.g. the following error becomes easy to make, and it becomes easier the more event-level properties you add to the IPN trait:
```php
class myIPN {
use CRM_Core_Payment_MJWIPNTrait;
public function processTheIPN(array $events) {
foreach ($events as $event) {
if (!empty($event->thirdPartyRefToContributionRecurID)) {
$this->setContributionRecurID($event->thirdPartyRefToContributionRecurID);
}
// ...
$this->carryOnProcessingEvent($event);
}
}
```
The error here being that if event 1 has a recur ID, but event 2 doesn't, event 2 inherits the recur of event 1.
Of course you can solve this by verbose code that resets all these at the end of the event loop, but it's a foot-gun. I prefer a pattern like:
```php
class myIPN {
use CRM_Core_Payment_MJWIPNTrait;
public function processTheIPN(array $events) {
foreach ($events as $event) {
$eventProcessor = new \Civi\MyProcessor\EventProcessor($event);
$eventProcessor->doYourThing();
}
}
}
```
then
```php
class Civi\MyProcessor\EventProcessor {
protected ?int $contributionRecurID = NULL;
public function __construct($event) {
if (!empty($event->thirdPartyRefToContributionRecurID)) {
$this->contributionRecurID = $event->thirdPartyRefToContributionRecurID;
}
// ...
$this->carryOnProcessingEvent($event);
}
}
```
Obviously the constructor might sensibly need extra data (like the payment processor, which *does* belong to the IPN data, typically), but the point is that this code:
- has good separation of concerns: the event processor class does just that.
- saves us from ourselves; as the object is not reused between events, we don't need to worry about remembering to reset all the vars.
Anyway, I realise nobody *has* to use mjwshared, and nobody *has* to use the ipn trait, but I thought I'd pen this rather than silently moving away.https://lab.civicrm.org/extensions/ukgiftaid/-/issues/33Civicrm Gift Aid Extension Doesn't provide for single donation2022-08-24T17:04:31ZRichardACivicrm Gift Aid Extension Doesn't provide for single donationWhen using the Gift Aid extension for civicrm, there are currently three options for a user to choose from on the Gift Aid Declaration - Yes, today and in future, yes, today and last four years, and No. There is no option for the user to...When using the Gift Aid extension for civicrm, there are currently three options for a user to choose from on the Gift Aid Declaration - Yes, today and in future, yes, today and last four years, and No. There is no option for the user to just choose 'this donation only', which is a valid option under HMRC rules. Please update the code to provide this option, along with the appropriate behaviour for this option.
Using Civicrm version 5.52.2 and Gift Aid Extension version 3.5.1 (Wordpress)https://lab.civicrm.org/extensions/stripe/-/issues/383Webform won't allow user to submit if total is zero2023-05-19T04:39:54ZUpperholmeWebform won't allow user to submit if total is zeroI have a Drupal 7 webform that enables users to register for up to two optional events. I've configured the conditional logic on the webform to support a discount code that can be entered into a field, which then sets the registration fe...I have a Drupal 7 webform that enables users to register for up to two optional events. I've configured the conditional logic on the webform to support a discount code that can be entered into a field, which then sets the registration fee for one of the events to zero. If the user chooses not to register for the second event, then the total amount is zero.
When Stripe is selected as the payment processor, the form submit button does nothing, and the user is stranded having entered all their data.
Expected behaviour: The user should be able to submit the form regardless of whether the total is zero.https://lab.civicrm.org/extensions/caldera-civicrm/caldera-forms/-/issues/3Incompatibly with PHP8+2024-01-14T08:55:12ZJonGoldIncompatibly with PHP8+On PHP 8.0, I received this error:
```
PHP Fatal error: Uncaught Error: Failed opening required '/home/jon/local/mysite/web/wp-content/plugins/caldera-forms/vendor/symfony/polyfill-mbstring/bootstrap80.php' (include_path='.:/usr/share/p...On PHP 8.0, I received this error:
```
PHP Fatal error: Uncaught Error: Failed opening required '/home/jon/local/mysite/web/wp-content/plugins/caldera-forms/vendor/symfony/polyfill-mbstring/bootstrap80.php' (include_path='.:/usr/share/php') in /home/jon/local/mysite/web/wp-content/plugins/caldera-forms/vendor/symfony/polyfill-mbstring/bootstrap.php:15"
```
The problem is `polyfill-mbstring` is pinned to version 1.20, and we're packing 1.20-dev. I assume that was a mistake, and we should be specifying version `^1.20` instead of exactly `1.20`.
1.20-dev is fundamentally broken in that it tries to include a file on PHP 8 that isn't part of the package until version 1.22. Updating the package should resolve this. I'd submit a PR but I don't have a Caldera Form build environment.https://lab.civicrm.org/extensions/grantapplications/-/issues/189Grants is missing as an option for a new profile field2023-07-05T23:19:04ZAlanDixonGrants is missing as an option for a new profile fieldAs described here: https://civicrm.stackexchange.com/questions/42365/profile-with-civigrant-custom-field-not
Short version: grant fields (of any kind) are unavailable to select into a profile. Existing grant fields in profiles are unaff...As described here: https://civicrm.stackexchange.com/questions/42365/profile-with-civigrant-custom-field-not
Short version: grant fields (of any kind) are unavailable to select into a profile. Existing grant fields in profiles are unaffected and work.
I notice that a new install does not have this issue, but my existing one does (which was created a few versions ago and got upgraded).
I suspect if I was smarter I'd know where this configuration lives, but I don't. Any hints?AlanDixonAlanDixonhttps://lab.civicrm.org/extensions/civimobileapi/-/issues/72Clicking on Agenda tab in Events with civimobileapi extension causes fatal DB...2022-07-24T14:14:25ZTOCM_MMatthewsClicking on Agenda tab in Events with civimobileapi extension causes fatal DB errorRunning CiviCRM 5.51.1, CiviMobileAPI 6.0.1. Searched for this as an existing issue, did not find it.
A user tried to click on the Agenda tab when creating a new event (which is only there with the CiviMobileAPI extension enabled) and g...Running CiviCRM 5.51.1, CiviMobileAPI 6.0.1. Searched for this as an existing issue, did not find it.
A user tried to click on the Agenda tab when creating a new event (which is only there with the CiviMobileAPI extension enabled) and gets a network disconnection. The log file shows:
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => exceptionHandler
)
[code] => -1
[message] => DB Error: unknown error
[mode] => 16
[debug_info] => SELECT
esspeaker.id,
esspeaker.event_session_id,
esspeaker.speaker_id
, participant.id as participant_id,
contact.first_name,
contact.last_name,
contact.organization_name,
contact.job_title,
contact.image_URL,
contact.employer_id,
contact.display_name
FROM civicrm_civimobile_event_session_speaker esspeaker
INNER join civicrm_participant participant ON participant.id = esspeaker.speaker_id
LEFT join civicrm_contact contact ON contact.id = participant.contact_id
WHERE (event_session_id IN (SELECT id FROM civicrm_civimobile_event_session WHERE event_id=194))
GROUP BY esspeaker.speaker_id
LIMIT 25
OFFSET 0
[nativecode=1055 ** Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'civicrm_members.esspeaker.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by]
[type] => DB_Error
[user_info] => SELECT
esspeaker.id,
esspeaker.event_session_id,
esspeaker.speaker_id
, participant.id as participant_id,
contact.first_name,
contact.last_name,
contact.organization_name,
contact.job_title,
contact.image_URL,
contact.employer_id,
contact.display_name
FROM civicrm_civimobile_event_session_speaker esspeaker
INNER join civicrm_participant participant ON participant.id = esspeaker.speaker_id
LEFT join civicrm_contact contact ON contact.id = participant.contact_id
WHERE (event_session_id IN (SELECT id FROM civicrm_civimobile_event_session WHERE event_id=194))
GROUP BY esspeaker.speaker_id
LIMIT 25
OFFSET 0
[nativecode=1055 ** Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'civicrm_members.esspeaker.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by]
[to_string] => [db_error: message="DB Error: unknown error" code=-1 mode=callback callback=CRM_Core_Error::exceptionHandler prefix="" info="SELECT
esspeaker.id,
esspeaker.event_session_id,
esspeaker.speaker_id
, participant.id as participant_id,
contact.first_name,
contact.last_name,
contact.organization_name,
contact.job_title,
contact.image_URL,
contact.employer_id,
contact.display_name
FROM civicrm_civimobile_event_session_speaker esspeaker
INNER join civicrm_participant participant ON participant.id = esspeaker.speaker_id
LEFT join civicrm_contact contact ON contact.id = participant.contact_id
WHERE (event_session_id IN (SELECT id FROM civicrm_civimobile_event_session WHERE event_id=194))
GROUP BY esspeaker.speaker_id
LIMIT 25
OFFSET 0
[nativecode=1055 ** Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'civicrm_members.esspeaker.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by]"]
)
I know one workaround is to disable the only_full_group_by sql_mode but would rather not do that. The current workaround is telling users to not click the Agenda tab.
Hopefully this is a relatively easy fix.
Michaelhttps://lab.civicrm.org/extensions/haystacktheme/-/issues/9Missing styling for SearchKit2023-10-04T22:48:12ZrbaughMissing styling for SearchKitWhen using this theme, the searchkit page is missing a lot of styling. The tabs for the different types of saved searches are stacked on top of each other. The pagination at the bottom is off.
![Screen_Shot_2022-07-22_at_10.04.47_AM](/u...When using this theme, the searchkit page is missing a lot of styling. The tabs for the different types of saved searches are stacked on top of each other. The pagination at the bottom is off.
![Screen_Shot_2022-07-22_at_10.04.47_AM](/uploads/bfaf8a7547a56888c037653985b396f0/Screen_Shot_2022-07-22_at_10.04.47_AM.png)
Other action buttons/menus need some styling as well:
![Screen_Shot_2022-07-22_at_10.21.18_AM](/uploads/f98e66a67a3d37446ac3799fd7c0c8d2/Screen_Shot_2022-07-22_at_10.21.18_AM.png)
I assume this is all because SearchKit wasn't as far along when this last release was made? When using a theme with a framework, Greenwich (Bootstrap), most of this is already styled out.https://lab.civicrm.org/extensions/ckeditor5/-/issues/10Posting emoticons2022-07-22T02:05:38ZDevAppPosting emoticonsIs it possible to copy and paste emoticons into the CKEditor 5. When doing so it either freezes with a block of text, or as its own comes out blank. There are no configuration options.Is it possible to copy and paste emoticons into the CKEditor 5. When doing so it either freezes with a block of text, or as its own comes out blank. There are no configuration options.https://lab.civicrm.org/extensions/lineitemedit/-/issues/66Random participant added when adding line item2022-07-21T07:22:15Zaiden_gRandom participant added when adding line itemWhen adding a line item to a contribution that contains a participant line item, the new line item uses "civicrm_participant" as the entity type but the contribution ID as the entity ID, resulting in a random participant being added to t...When adding a line item to a contribution that contains a participant line item, the new line item uses "civicrm_participant" as the entity type but the contribution ID as the entity ID, resulting in a random participant being added to the contribution.
In addEntity() in Util.php where the entity type is set as "civicrm_participant" the correct ID is assigned to $entityId, but $entityID (difference in capitalisation) is what the function returns.
Even when the correct participant ID is used it results in the same participant being listed twice under "associated participants" which isn't ideal...https://lab.civicrm.org/extensions/multisite/-/issues/4Feature: Multisite parent domain membership types behavior2022-10-06T15:31:04ZandyburnsFeature: Multisite parent domain membership types behavior## Feature
Membership types are partially domain aware, but for parent-child based affiliate organizations, add the ability to add an exception for parent domain ID 1 memberships so that other child domains (chapters) can easily search ...## Feature
Membership types are partially domain aware, but for parent-child based affiliate organizations, add the ability to add an exception for parent domain ID 1 memberships so that other child domains (chapters) can easily search for these membership types.
## Before
Parent domain memberships cannot be searched on domains other than domain ID 1.
In search Kit, these memberships do not show. If you use the "empty placeholder function" you can get them to be linked and do a popup modal for instance, which then shows the membership OK. Note: I am using civicampaign in 3rd column as a workaround and identifier of what organization these membership belong to.
![image](/uploads/1143218f056ceee49abea1bf9b9b2ed5/image.png)
## After
Parent domain memberships can be searched on domains other than domain ID 1.
## Technical details
Allow an exception for parent domain ID 1 membership types to show in any place where membership type dropdown exists.
- Advanced Search
- Find Memberships
- Search Kit
- Form Builder
I'm logging here, as it could be rolled into this extension as an this optional feature to enable. Certainly many multi-level membership orgs with a parent structure would be using this extension already. Generally, I think rolling multisite tweaks into this extension could be a good direction to go akin to how CiviCRM Admin Utilities does tweaks to WordPress installs. @eileen thoughts?
Add a setting on parent domain ID 1 only with a checkbox to enable this?
[ ] Enable membership on all domains
![image](/uploads/0d824cc937194430a0b6cbaec75f0440/image.png)
Looking to fund this improvement.
## Notes
Showing all memberships a contact has regardless of domain organization on the contact summary screen is expected and wanted.https://lab.civicrm.org/extensions/dataprocessor/-/issues/113Using CSV file as datasource2022-07-19T13:14:15ZclementUsing CSV file as datasourceI was trying to use the CSV file as a datasource but couldn't find documentation on how to form the URI. Having the CSV file hosted and using the URL https://... to refer to the csv doesn't work as the field names remain empty. Also, if...I was trying to use the CSV file as a datasource but couldn't find documentation on how to form the URI. Having the CSV file hosted and using the URL https://... to refer to the csv doesn't work as the field names remain empty. Also, if I were to host the CSV file on the CIVICRM server itself, how should the URI be formed ? Thanks.https://lab.civicrm.org/extensions/dataprocessor-vega-graphs/-/issues/1Data Processor, Vega Graphs 1.1 not compatible with Data Process 1.51 - cause...2022-09-24T19:13:23Zjustinfreeman (Agileware)Data Processor, Vega Graphs 1.1 not compatible with Data Process 1.51 - causes PHP Fatal ErrorData Processor, Vega Graphs 1.1 not compatible with Data Process 1.51 - causes PHP Fatal Error
`Fatal error: Class Civi\DataProcessorVegaGraphs\Output\VegaGraphPage contains 2 abstract methods and must therefore be declared abstract or ...Data Processor, Vega Graphs 1.1 not compatible with Data Process 1.51 - causes PHP Fatal Error
`Fatal error: Class Civi\DataProcessorVegaGraphs\Output\VegaGraphPage contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods (Civi\DataProcessor\Output\UIFormOutputInterface::getDataProcessorNameFromUrl, Civi\DataProcessor\Output\UIFormOutputInterface::getContactIdFieldNameFromConfig) in org.civicoop.dataprocessor-vega-graphs/Civi/DataProcessorVegaGraphs/Output/VegaGraphPage.php on line 16`
Agileware Ref: CIVICRM-2013https://lab.civicrm.org/extensions/ckeditor5/-/issues/9Editor UI won't render on Joomla2022-07-16T15:59:35ZmtnpavlasEditor UI won't render on JoomlaHello, I installed the extension via the CiviCRM installation web UI, and set it as the editor of choice in Display Preferences.
The editor won't load the UI, however (displays raw HTML code). I see the following error and warning in the...Hello, I installed the extension via the CiviCRM installation web UI, and set it as the editor of choice in Display Preferences.
The editor won't load the UI, however (displays raw HTML code). I see the following error and warning in the Chrome console:
![image](/uploads/2782729675f418baac8158fa9e6d4597/image.png)
CiviCRM 5.50.3 with Joomla 3.10.10. I cleared CiviCRM cache.
Anything I could check/do to remedy this please? Thank you!https://lab.civicrm.org/extensions/activitytypeacl/-/issues/27Deprecated function PHP 7.4 compatible?2022-07-21T12:02:29ZfrancescbassasDeprecated function PHP 7.4 compatible?I get this warning:
`Deprecated function: Array and string offset access syntax with curly braces is deprecated a require_once() (línia 3 de /var/www/html/sites/all/civicrm_custom_ext/activitytypeacl/activitytypeacl.php).`
I think it's...I get this warning:
`Deprecated function: Array and string offset access syntax with curly braces is deprecated a require_once() (línia 3 de /var/www/html/sites/all/civicrm_custom_ext/activitytypeacl/activitytypeacl.php).`
I think it's necessary to rerun civix generate:module to make extension compatible to PHP-7.4https://lab.civicrm.org/extensions/gdpr/-/issues/311Mailing Subscribe Page: missing check if user exists2022-07-15T13:18:19ZmasettoMailing Subscribe Page: missing check if user existsIf I check `Check to use the Communications Preferences page instead of the default Mailing Subscribe page.` when a user registers to
`/civicrm/gdpr/comms-prefs/update` page, no check is made on the existance of the contact and **a ne...If I check `Check to use the Communications Preferences page instead of the default Mailing Subscribe page.` when a user registers to
`/civicrm/gdpr/comms-prefs/update` page, no check is made on the existance of the contact and **a new one is always created**.
https://lab.civicrm.org/extensions/gdpr/-/issues/310Add "Terms & Condition" in a profile2022-07-15T12:29:43ZmasettoAdd "Terms & Condition" in a profileThe original question of @robbrandt was:
> Is it possible to add a GDPR Terms & Conditions checkbox to any profile?
@tapashdatta, the checkbox "Use as the mailing subscribe page" add Communication preferences but does not add Terms &...The original question of @robbrandt was:
> Is it possible to add a GDPR Terms & Conditions checkbox to any profile?
@tapashdatta, the checkbox "Use as the mailing subscribe page" add Communication preferences but does not add Terms & Conditions checkbox which is used instead in contribution and event pages.
How can I add "Terms & Condition" in a profile? (for example "Become a volunteer", signup form...)
_Originally posted by @masetto in https://github.com/veda-consulting-company/uk.co.vedaconsulting.gdpr/issues/126#issuecomment-1138612663_https://lab.civicrm.org/extensions/stripe/-/issues/379Add support for Stripe Terminal (physical smart-readers, with the JavaScript ...2022-07-11T19:24:07ZbgmAdd support for Stripe Terminal (physical smart-readers, with the JavaScript SDK support)I'm testing Stripe physical terminals. Here is what I think is required to make it work in the Stripe CiviCRM extension:
- [x] ~~Admin setting for selecting the terminal's Location (a Location being a Stripe object, that can be defined ...I'm testing Stripe physical terminals. Here is what I think is required to make it work in the Stripe CiviCRM extension:
- [x] ~~Admin setting for selecting the terminal's Location (a Location being a Stripe object, that can be defined either via API, or by the Stripe Terminal admin interface; simpler for now to ask admins to to do initial Location setup in the Stripe UI)~~ Not necessary, this can be done from the Stripe Dashboard: go to the Readers, then Location, then you can add a terminal.
- [ ] Code for connecting to the terminal using a New Contribution backend form (make sure the device is available, list devices)
- [ ] Code for doing the [Payment Intent](https://stripe.com/docs/terminal/payments/collect-payment), and processing the transaction
- [ ] Make sure that CiviCRM stores whatever relevant information
- [ ] Make sure that Credit Cards and Debit Cards both work
Note that:
- This would only support the "smart" readers, such as the BBPOS WisePad 3 (which I'm testing) or maybe the Verifone P400. The cheaper US-only Stripe T2 would not work, because it is bluetooth-only and requires developing a mobile app (or using a third-party app). The smart-readers are basically stripped-down Android devices, with wifi and bluetooth, so they connect over the Internet to talk to Stripe, and CiviCRM talks to Stripe. It does not really talk directly to the reader.
- This work is unfunded. I mostly wanted to do a quick proof of concept. If this could be useful to your organisation, please consider funding the work).https://lab.civicrm.org/extensions/certifications/-/issues/14Form Builder: required fields not handled correctly2022-07-08T17:46:06Zaydunsaidan.saunders@squiffle.ukForm Builder: required fields not handled correctlySee https://lab.civicrm.org/dev/core/-/issues/3728
This means trying to create a Certification without a date does not produce errors but fails.See https://lab.civicrm.org/dev/core/-/issues/3728
This means trying to create a Certification without a date does not produce errors but fails.https://lab.civicrm.org/extensions/contributiontransactlegacy/-/issues/3Authorize.net 'checkDupe' blocks incomplete transactions as 'duplicate'2022-07-05T15:09:51ZpikeAuthorize.net 'checkDupe' blocks incomplete transactions as 'duplicate'I seem to have a problem with, CiviCRM 5.50.3, webform_civicrm 7.x-5.8 and this extension. See
https://civicrm.stackexchange.com/questions/42236/payment-forms-fail-with-unknown-api-version/42238
https://www.drupal.org/project/webform_c...I seem to have a problem with, CiviCRM 5.50.3, webform_civicrm 7.x-5.8 and this extension. See
https://civicrm.stackexchange.com/questions/42236/payment-forms-fail-with-unknown-api-version/42238
https://www.drupal.org/project/webform_civicrm/issues/3294171
With this extension on, all transactions end in
>It appears that this transaction is a duplicate.
I am using Authorize.net, so the error likely comes from
> civicrm/CRM/Core/Payment/AuthorizeNet.php:172
```
// Authorize.Net will not refuse duplicates, so we should check if the user already submitted this transaction
if ($this->checkDupe($authorizeNetFields['x_invoice_num'], $params['contributionID'] ?? NULL)) {
throw new PaymentProcessorException('It appears that this transaction is a duplicate.
```
the data there looks fine when vardumped.
checkDupe (civicrm/CRM/Core/Payment.php:1702) checks for a `CRM_Contribute_DAO_Contribution` with the same $invoiceId and $contributionID and when checking manually, that contribution indeed does exist in the table. It looks ok and has contribution_status_id 4 (after the error occured).
I notice in release 1.5 you fixed a bug mentioning
> Check the payment completed before creating payment record.
https://lab.civicrm.org/extensions/contributiontransactlegacy/-/commit/ffc497df0350f4b6cfb1c0ddca28213f310a328e
Is this related ?