action-provider issueshttps://lab.civicrm.org/extensions/action-provider/-/issues2024-03-20T07:28:34Zhttps://lab.civicrm.org/extensions/action-provider/-/issues/51(regression) version 1.140 breaks when Smarty3 is enabled2024-03-20T07:28:34ZJonGold(regression) version 1.140 breaks when Smarty3 is enabledThe change in 1.140 did a `civix upgrade`, but only to version 22.05.2. This causes a 500 error on systems with Smarty 3 defined (which is recommended by a system check on Civi 5.69+).
My guess is you ran `civix upgrade` but have an ou...The change in 1.140 did a `civix upgrade`, but only to version 22.05.2. This causes a 500 error on systems with Smarty 3 defined (which is recommended by a system check on Civi 5.69+).
My guess is you ran `civix upgrade` but have an outdated version of `civix`. Running `civix upgrade` with a version from February 2023 or later resolves the issue.https://lab.civicrm.org/extensions/action-provider/-/issues/50Membership Type Names are user editable and in our experience change from tim...2024-02-14T06:56:32Zjustinfreeman (Agileware)Membership Type Names are user editable and in our experience change from time to time, however any of the Actions that use the MembershipTypeSpecification to populate a Membership Type will save the NameMembership Type Names are user editable and in our experience change from time to time, however any of the Actions that use the MembershipTypeSpecification to populate a Membership Type will save the Name. This can then cause the Action ...Membership Type Names are user editable and in our experience change from time to time, however any of the Actions that use the MembershipTypeSpecification to populate a Membership Type will save the Name. This can then cause the Action to fail if the Membership Type Name is changed, since the stored name in the Action no longer matches the Membership Type Name in the system.
It would be more robust to store the Membership Type ID rather than the Membership Type Name. See https://lab.civicrm.org/extensions/action-provider/-/blob/master/Civi/ActionProvider/Action/Membership/Parameter/MembershipTypeSpecification.php#L37
I will be putting up a PR to add a new Parameter specification for MembershipType to allow the storing of Membership Type IDs.
@jaapjansma just a heads up and highlighting a future problem that people are yet to experience.
Agileware Ref: CVAP-58https://lab.civicrm.org/extensions/action-provider/-/issues/49Support for composer.json2024-01-16T08:37:57ZkenorbSupport for composer.jsonPlease add composer.json, so extension can be installed by Composer.Please add composer.json, so extension can be installed by Composer.https://lab.civicrm.org/extensions/action-provider/-/issues/481.60.2 is older than 1.1342023-12-08T22:36:46Zmattwiremjw@mjwconsult.co.uk1.60.2 is older than 1.134When using version_compare 1.60.2 is less than 1.134 so the extension gets downgraded.When using version_compare 1.60.2 is less than 1.134 so the extension gets downgraded.https://lab.civicrm.org/extensions/action-provider/-/issues/47Discussion - ValidateChecksum action should return FALSE instead of throwing ...2023-11-29T21:32:09Zjustinfreeman (Agileware)Discussion - ValidateChecksum action should return FALSE instead of throwing an exception, so that other actions can handle the missing Contact IDCurrently the ValidateChecksum action throws an exception, which causes processing to stop. Whereas if it returned FALSE then other actions could check if the Contact ID was empty and do something else.
```
public function validatePara...Currently the ValidateChecksum action throws an exception, which causes processing to stop. Whereas if it returned FALSE then other actions could check if the Contact ID was empty and do something else.
```
public function validateParameters(ParameterBagInterface $parameters) {
$contactId = $parameters->getParameter('cid');
$checksum = $parameters->getParameter('cs');
$valid = \CRM_Contact_BAO_Contact_Utils::validChecksum($contactId, $checksum);
if (!$valid) {
throw new InvalidParameterException(E::ts('Invalid checksum, can not access contact data.'));
}
return TRUE;
}
```https://lab.civicrm.org/extensions/action-provider/-/issues/46checkup and replacement for problematic characters in file name for action "C...2023-11-23T10:54:56ZMariaVcheckup and replacement for problematic characters in file name for action "Contact: Update Profile Photo"Currenty:
- There is no checkup and/or replacement for problematic characters in file name for action "Contact: Update Profile Photo" yet.
We've noticed that updating data via CalderaForm does not show any changes in CiviCRM and no FAIL...Currenty:
- There is no checkup and/or replacement for problematic characters in file name for action "Contact: Update Profile Photo" yet.
We've noticed that updating data via CalderaForm does not show any changes in CiviCRM and no FAIL in the CiviMRF Log when using the action "Contact: Update Profile Photo" (within the form processor) and the uploaded file has problematic characters in its name.
For example:
- File name is "2023_LastName, FirstName.jpg"
--> does not work
- File name is "2023_LastName_FirstName.jpg"
--> workshttps://lab.civicrm.org/extensions/action-provider/-/issues/45SendEmail and SendBdfByEmail: not primary email is used, but the latest email...2023-11-12T11:14:54ZDetlev SieberSendEmail and SendBdfByEmail: not primary email is used, but the latest email added to the contactCurrently:
When the functions SendEmail and SendBdfByEmail are sending out emails, they do not use the primary email of the contact, but instead the latest email added to the contact is used.
Should be:
The selection of the email that...Currently:
When the functions SendEmail and SendBdfByEmail are sending out emails, they do not use the primary email of the contact, but instead the latest email added to the contact is used.
Should be:
The selection of the email that is used as recipient address should default to the primary email of the contact.https://lab.civicrm.org/extensions/action-provider/-/issues/44Refactor Actions to use APIv42023-11-08T02:24:08Zjustinfreeman (Agileware)Refactor Actions to use APIv4Just putting this out there. Refactor Actions to use APIv4.
Haven't done any work at this stage, but it's something I'm interested in doing.Just putting this out there. Refactor Actions to use APIv4.
Haven't done any work at this stage, but it's something I'm interested in doing.https://lab.civicrm.org/extensions/action-provider/-/issues/43Apiwrapper doubts2023-11-23T22:12:46ZkainukApiwrapper doubtsI have a bug that is caused by the [APIWrapper](https://lab.civicrm.org/extensions/action-provider/-/blob/master/Civi/ActionProvider/APIWrapper.php)
The APIWrapper adds extra functionality to prevent the retrieval of deleted items. For ...I have a bug that is caused by the [APIWrapper](https://lab.civicrm.org/extensions/action-provider/-/blob/master/Civi/ActionProvider/APIWrapper.php)
The APIWrapper adds extra functionality to prevent the retrieval of deleted items. For Contact, Case and Activity it adds the `is_deleted`parameter to the API call, in the case a careless developer might forget this. And for linked entities it adds the same parameter with a foreign key lookup. It is, however, too optimistic about the capabilities of the CiviCRM API it uses.
I will give an example with relationship and case. In class `GetRelationshipByContactId`the following API call is made on line 92
`civicrm_api3('Relationship', 'getsingle', $relationshipFindParams)`
with for example the following values in $relationshipFindParams;
```
$relationshipFindParams = array (
'contact_id_a' => '33',
'relationship_type_id' => '22',
'is_active' => '1',
'options' =>
array (
'limit' => 1,
),
)
```
The `civicrm_relation_ship` table has a `case_id` column and the Apiwrapper adds the parameter `'case_id.is_deleted' => 0` to the call making the parameter set
```
$relationshipFindParams = array (
'contact_id_a' => '33',
'relationship_type_id' => '22',
'is_active' => '1',
'options' =>
array (
'limit' => 1,
),
'case_id.is_deleted' => 0
)
```
This parameter prevents the retrieval of a relationship that is connected to a deleted case. The side effect is that it also prevents the retrieval of all relationships that are not connected to a case, because the `case_id.is_deleted` is implemented with an inner join instead of a left join.
The effect is that the `GetRelationshipByContactId` cannot find any case that is not connected to a case.
I have no easy solution for this because it is generic that changes a lot of app-calls. In https://lab.civicrm.org/extensions/action-provider/-/tree/apiwrappernolinkedentities I have removed the linked entities functionality because that solves the acute need for customer I am now working for. The same project works also with expenses that have an case_id column that maybe filled. But maybe there is more clever fix. (for example an improvement for the 'case_id.is_deleted' in CiviCRM).https://lab.civicrm.org/extensions/action-provider/-/issues/42"Mailing Event: Subscribe to mailing list" action only possible for public gr...2023-10-19T13:43:45Zmplh"Mailing Event: Subscribe to mailing list" action only possible for public groupsIt seems to me that for the "Mailing Event: Subscribe to mailing list" action the group you to subscribe to needs to be visible publicly.
At the same the comment in the code of the "Mailing Event: Subscribe to mailing list" action sugge...It seems to me that for the "Mailing Event: Subscribe to mailing list" action the group you to subscribe to needs to be visible publicly.
At the same the comment in the code of the "Mailing Event: Subscribe to mailing list" action suggests that it should be possible even for non-public groups.
https://lab.civicrm.org/extensions/action-provider/-/blob/528dda8a350862ef2fb2dafbfb6c632618d2e313/Civi/ActionProvider/Action/MailingEvent/MailingEventSubscribe.php#L99-102
I'm running CiviCRM 5.59.2, and Action Provider: Version 1.124mplhmplhhttps://lab.civicrm.org/extensions/action-provider/-/issues/41Action to concatenate values2023-06-28T09:18:09ZJanecAction to concatenate valuesI was looking for an action to concatenate values. I could not find one directly do I created one based on the calculator action.I was looking for an action to concatenate values. I could not find one directly do I created one based on the calculator action.https://lab.civicrm.org/extensions/action-provider/-/issues/40FindByEmailOrCreateEmailName and FindOrCreateContactByEmailAndName2023-07-11T05:10:11ZCristinaPFindByEmailOrCreateEmailName and FindOrCreateContactByEmailAndNameThe actions **FindByEmailOrCreateEmailName** and **FindOrCreateContactByEmailAndName** are retrieving the contact_id that is deleted or deceased.
These two conditions should be added to the function **doAction**:
**$params['contact_id....The actions **FindByEmailOrCreateEmailName** and **FindOrCreateContactByEmailAndName** are retrieving the contact_id that is deleted or deceased.
These two conditions should be added to the function **doAction**:
**$params['contact_id.is_deleted'] = 0;**
**$params['contact_id.is_deceased'] = 0;**https://lab.civicrm.org/extensions/action-provider/-/issues/39Group.GetGroupSubscriptions does not return groupIds2023-05-22T11:05:54ZjmargrafGroup.GetGroupSubscriptions does not return groupIds## Problem:
The Formprocessor Action: Group.GetGroupSubscriptions does not seem to work as expected.
I created an minimal Formprocessor that looks up if a contact is in a certain group 'digiAbo'.
The group exists and the Contact is in t...## Problem:
The Formprocessor Action: Group.GetGroupSubscriptions does not seem to work as expected.
I created an minimal Formprocessor that looks up if a contact is in a certain group 'digiAbo'.
The group exists and the Contact is in the group.
But It Formprocessor Action does not return the group_id as expected. But instead returns: []
## Steps to reproduce
[test.json](/uploads/c08bcaa2963fc6f197a03be49f1f2e54/test.json)
```
$result = civicrm_api3('FormProcessor', 'test', [
'contact_id' => 53684,
]);
```
## Research in Code:
The problem seems to be here: https://lab.civicrm.org/extensions/action-provider/-/blame/master/Civi/ActionProvider/Action/Group/GetGroupSubscriptions.php#L34
`$groupsToCheck = explode(",", $this->configuration->getParameter('group_ids'));`
does return an empty array.
If i replace this with the following line things are working as expected:
`$groupsToCheck = $this->configuration->getParameter('group_ids');`
## Question:
Did the return value of `$this->configuration->getParameter(..)` change in the past?
Should I just create a Pull-Request with the given solution or do we need a solution that is backwards-compatible and can handle both kinds of return-values from `getParameter()` ?https://lab.civicrm.org/extensions/action-provider/-/issues/38Question - all the Get Contact and Get Activity actions do not filter deleted...2023-07-11T05:02:29Zjustinfreeman (Agileware)Question - all the Get Contact and Get Activity actions do not filter deleted records, is this intentional?This is a question, why do all the "Get" Contact and Activity actions **not** filter out contacts or activities that are deleted, is this intentional? If this is unintentional then all the "Get" Contact and Activity actions could have a ...This is a question, why do all the "Get" Contact and Activity actions **not** filter out contacts or activities that are deleted, is this intentional? If this is unintentional then all the "Get" Contact and Activity actions could have a API wrapper so that that deleted records are not returned.
Appreciate that the API doesn't have that as a default - which was an odd design decision to begin with.
Thoughts @jaapjansma ?
Agileware Ref: CVAP-33https://lab.civicrm.org/extensions/action-provider/-/issues/37Added phone type to update contact breaks old FormProcessors2023-04-27T01:33:31Zsimon.hermannAdded phone type to update contact breaks old FormProcessorsThe new added option to add a phone type in the commit 7439f6987d3cb54f14998d131491edc728a008c9 breaks old FormProcessors, as it is set as a required field.
Setting this setting to false, should fix the problem.The new added option to add a phone type in the commit 7439f6987d3cb54f14998d131491edc728a008c9 breaks old FormProcessors, as it is set as a required field.
Setting this setting to false, should fix the problem.https://lab.civicrm.org/extensions/action-provider/-/issues/36MapValue action now always multiple?2023-04-20T07:47:57ZBjörn EndresMapValue action now always multiple?A while ago, the "Map Value" action would only map a single string/number to another one.
However, with commit https://lab.civicrm.org/extensions/action-provider/-/commit/bffa7cb2481437952fb0e154a6f124b103fea428, which seems to aim at e...A while ago, the "Map Value" action would only map a single string/number to another one.
However, with commit https://lab.civicrm.org/extensions/action-provider/-/commit/bffa7cb2481437952fb0e154a6f124b103fea428, which seems to aim at enabling the mapping for multiple values, this isn't possible any more. Since the ``input_value`` specification is now ``multiple=true`` (see [here](https://lab.civicrm.org/extensions/action-provider/-/blob/ad95aab4e35bd51cf5f0f97939f88598327df59b/Civi/ActionProvider/Action/Generic/MapValue.php#L51)), the result is always an array. This breaks form processors based on the original implementation ("requires a single value a multiple value is given").
My questions are:
1. Was this change introduced on purpose, or was that a side effect that hasn't affected anyone else yet?
2. Could I get my old behaviour back by -for example- adding a "return first value" configuration option? Or maybe by splitting this into a "Map Value" and a "Map Values" action?
@jaapjansma Would you have an opinion on this?https://lab.civicrm.org/extensions/action-provider/-/issues/35Event: get by ID does not return the ID of a custom contact reference field2023-04-06T07:52:25Zsimon.hermannEvent: get by ID does not return the ID of a custom contact reference fieldHaving an event, with a custom field, which is a contact reference, I would expect to get back the civicrm ID of the contact, if I use the action 'Event: Get By ID'. Looking at the code of `AbstractGetSingleAction`, from which `GetEvent`...Having an event, with a custom field, which is a contact reference, I would expect to get back the civicrm ID of the contact, if I use the action 'Event: Get By ID'. Looking at the code of `AbstractGetSingleAction`, from which `GetEvent` derives, this seems to be taken care of by the function `normalizeCustomValues`.
However, if I set up a simple Formprocessor, which takes an event id and show me the results of GetEvent, I find that the contact name is returned instead of the id.
I am not sure, which part of `normalizeCustomValues` does not work. If anyone has an idea, I would be happy to provide a merge request myself.
I tested this on CiviCRM 5.58.1 and ActionProvider 1.121https://lab.civicrm.org/extensions/action-provider/-/issues/34Error when opening form processor list2023-03-10T13:45:43ZErikHommelError when opening form processor list`TypeError: Return value of Civi\ActionProvider\Condition\AbstractCondition::jsonSerialize() must be an instance of Civi\ActionProvider\Condition\mixed, array returned in Civi\ActionProvider\Condition\AbstractCondition->jsonSerialize() (...`TypeError: Return value of Civi\ActionProvider\Condition\AbstractCondition::jsonSerialize() must be an instance of Civi\ActionProvider\Condition\mixed, array returned in Civi\ActionProvider\Condition\AbstractCondition->jsonSerialize() (line 159 of /var/www/html/vwvdev/sites/default/files/civicrm/ext/action-provider/Civi/ActionProvider/Condition/AbstractCondition.php).`ErikHommelErikHommelhttps://lab.civicrm.org/extensions/action-provider/-/issues/33New action to format phone number2023-01-10T16:11:54ZErikHommelNew action to format phone numberAIVL needs and will fund an action to format a phone number string into numbers onlyAIVL needs and will fund an action to format a phone number string into numbers onlyErikHommelErikHommelhttps://lab.civicrm.org/extensions/action-provider/-/issues/32New action to format individual name2023-01-10T16:11:54ZErikHommelNew action to format individual nameAIVL needs and will fund the development of an action which gets first name and last name as inputs and return them formatted: first letter capital, rest lower case.AIVL needs and will fund the development of an action which gets first name and last name as inputs and return them formatted: first letter capital, rest lower case.ErikHommelErikHommel