Development issueshttps://lab.civicrm.org/groups/dev/-/issues2023-04-28T01:39:33Zhttps://lab.civicrm.org/dev/core/-/issues/34Split edit/view access on permissioned relationships2023-04-28T01:39:33Zaydunsaidan.saunders@squiffle.ukSplit edit/view access on permissioned relationshipsCurrently, relationships can be 'permissioned' such that one contact in the relationship can access the other. This access is both view and edit. It is not possible to provide 'view-only' access via a relationship.
The proposed approa...Currently, relationships can be 'permissioned' such that one contact in the relationship can access the other. This access is both view and edit. It is not possible to provide 'view-only' access via a relationship.
The proposed approach is to create an 'edit related contacts' permission that works in conjunction with the existing permissioning:
- for users with the 'edit related contacts' permission, behaviour is unchanged
- for users without the 'edit related contacts' permission, contacts that they have access to via permissioned relationships will be viewable (as now), but not editable (change).5.5.0aydunsaidan.saunders@squiffle.ukaydunsaidan.saunders@squiffle.ukhttps://lab.civicrm.org/dev/core/-/issues/3629Extraneous space in From address causes on-hold set on all recipients2022-06-11T14:57:32ZBobSExtraneous space in From address causes on-hold set on all recipientsIf a CiviMail email is sent with a From address having the form<br>
`"Name" <me@example.com>` (note two spaces before '<')<br>
then:
1. No emails are sent
2. **All recipients are marked On-Hold!**
Occurs on CiviCRM 4.7.26.
*Edit*: Al...If a CiviMail email is sent with a From address having the form<br>
`"Name" <me@example.com>` (note two spaces before '<')<br>
then:
1. No emails are sent
2. **All recipients are marked On-Hold!**
Occurs on CiviCRM 4.7.26.
*Edit*: Also occurs on 5.2.1
Could not reproduce on demo site as sending email is not enabled there.
The following three CMS log entries are created for each recipient:
1:<pre>Ignoring exception thrown by nullHandler: , Validation failed for: "(INVALID)" <(INVALID)></pre>
2:<pre>$backTrace = #0 /var/www/clients/client1/web3/web/drupal/sites/all/modules/civicrm/CRM/Core/Error.php(959): CRM_Core_Error::backtrace("backTrace", TRUE) #1 /var/www/clients/client1/web3/web/drupal/sites/all/modules/civicrm/packages/PEAR.php(921): CRM_Core_Error::nullHandler(Object(PEAR_Error)) #2 /var/www/clients/client1/web3/web/drupal/sites/all/modules/civicrm/packages/PEAR.php(577): PEAR_Error->__construct("Validation failed for: \"(INVALID)\" <(INVALID)>", NULL, 16, (Array:2), NULL) #3 /var/www/clients/client1/web3/web/drupal/sites/all/modules/civicrm/packages/PEAR.php(236): PEAR::_raiseError(NULL, "Validation failed for: \"(INVALID)\" <(INVALID)>") #4 /var/www/clients/client1/web3/web/drupal/sites/all/modules/civicrm/packages/Mail/RFC822.php(209): PEAR::__callStatic("raiseError", (Array:1)) #5 /var/www/clients/client1/web3/web/drupal/sites/all/modules/civicrm/packages/Mail.php(191): Mail_RFC822->parseAddressList((Array:2), "localhost", FALSE) #6 /var/www/clients/client1/web3/web/drupal/sites/all/modules/civicrm/packages/Mail/mail.php(151): Mail->prepareHeaders((Array:10)) #7 ...</pre>
3:<pre>
Notice: Only variables should be passed by reference in CRM_Mailing_BAO_MailingJob->deliverGroup() (line 721 of /var/www/clients/client1/web3/web/drupal/sites/all/modules/civicrm/CRM/Mailing/BAO/MailingJob.php).
</pre>5.5.0https://lab.civicrm.org/dev/drupal/-/issues/9Problem: Easily allow 'vendor' directory not under the webroot2020-09-30T12:35:40ZtottenProblem: Easily allow 'vendor' directory not under the webrootThis is currently possible, but requires some patches and a build process.
**Here's the patches and process currently used by myDropWizard for Roundearth.io:**
*Patches:*
1. Find CKEditor relative to the resource URL: https://github.c...This is currently possible, but requires some patches and a build process.
**Here's the patches and process currently used by myDropWizard for Roundearth.io:**
*Patches:*
1. Find CKEditor relative to the resource URL: https://github.com/mydropwizard/civicrm-core/commit/9fc3877e2eb14e2829b530445c5e5491afc4bbe
2. Look for vendor directory above web root: https://github.com/mydropwizard/civicrm-core/commit/f57954392f8026d17b7f19f7c01ceeb65e703384
Both of those could probably be merged upstream?
*Process:*
1. Build process to copy web assets to `WEBROOT/libraries/civicrm` so they are web accessible. Here's the version from [roundearth's build process](https://gitlab.com/mydropwizard/roundearth-drops-8/blob/master/rebuild.sh#L74):
```
# Copy CiviCRM assets
asset_source=./vendor/civicrm/civicrm-core
asset_dest=./web/libraries/civicrm
mkdir -p $asset_dest
rsync -mr --include='*.'{html,js,css,svg,png,jpg,jpeg,ico,gif,woff,woff2,ttf,eot} --include='*/' --exclude='*' $asset_source/ $asset_dest/
rm -rf $asset_dest/tests
cp -r $asset_source/extern $asset_dest/
cp $asset_source/civicrm.config.php $asset_dest/
cat << EOF > $asset_dest/settings_location.php
<?php
define('CIVICRM_CONFDIR', '../../../sites');
EOF
```
2. Set the "Resource URL" to `[cms.root]/libraries/civicrm/`
**Getting support for this upstream:**
1. I think the patches might be good to just commit upstream? They don't seem controversial
2. The build process could be put in a PHP class in civicrm-corm which could be referred to as a script in a sites composer.json
3. We should be able to detect that we're using the vendor outside the webroot - could we somehow make the necessary "Resource URL" the default?5.5.0https://lab.civicrm.org/dev/drupal/-/issues/27Custom fields with duplicate labels are not displayed correctly in views2020-07-16T17:23:38ZJKingsnorthCustom fields with duplicate labels are not displayed correctly in viewsSteps to recreate:
- Create a custom field group associated with organisations, add a field with the label 'Role' (eg: ID 1)
- Create a custom field group associated with individuals, add a field with the label 'Role' (eg: ID 2)
- Create...Steps to recreate:
- Create a custom field group associated with organisations, add a field with the label 'Role' (eg: ID 1)
- Create a custom field group associated with individuals, add a field with the label 'Role' (eg: ID 2)
- Create a view which exposes the second 'role' field on a contact record
- The field is always empty
Reason:
- The custom field handler is searching for the field ID based on the label of the field, which is a loose search
Remedy:
- Tighten the custom field handler to search for the ID of the field based on the unique column name5.5.0https://lab.civicrm.org/dev/translation/-/issues/5Cannot export member addresses if the location_type display name has an accent2019-02-24T21:10:49ZbgmCannot export member addresses if the location_type display name has an accentHow to reproduce:
* Add a location type "Expédition", where name = `expedition` and display_name = `expédition`.
* Go to the member dashboard, click to list all active members
* Edit one of the contacts, so that they have an address of ...How to reproduce:
* Add a location type "Expédition", where name = `expedition` and display_name = `expédition`.
* Go to the member dashboard, click to list all active members
* Edit one of the contacts, so that they have an address of type "expédition"
* Back in the search results, export all results
* Select a custom mapping:
* Display name
* City, location type = Expédition
Result: the city is empty (for that contact that was edited).
If we remove the accent from the display name, it works fine. Also, it doesn't seem to be a mismatch issue between the name / display_name, because if it's "Expedition123" it works fine.5.5.0https://lab.civicrm.org/dev/core/-/issues/336Cannot activate extension on Memcache+WP configuration2019-02-12T14:49:37ZtottenCannot activate extension on Memcache+WP configurationThis issue was originally reported by @haystack on Mattermost and described further in the comments for a PR for #316. It is similar to #316 in that both involve a Memcache configuration, but otherwise it appears different. (I have not p...This issue was originally reported by @haystack on Mattermost and described further in the comments for a PR for #316. It is similar to #316 in that both involve a Memcache configuration, but otherwise it appears different. (I have not personally been able to reproduce it yet, and the solution for #316 doesn't address this.) Below, I'm copying over the details from Christian's previous report.
## Excerpt 1
(*From Christian*)
One further issue I've run into is that Extensions cannot be installed while Memcached is being used:
```
$Fatal Error Details = array(3) {
["message"]=>
string(19) "Unknown extension: "
["code"]=>
NULL
["exception"]=>
object(CRM_Extension_Exception_MissingException)#6982 (10) {
["errorData":"CRM_Core_Exception":private]=>
array(1) {
["error_code"]=>
int(0)
}
... lots more debugging ...
```
As you can see, `$key` is empty in `CRM_Extension_Container_Collection::getContainer()` - I presume this is as a result of `CRM_Extension_Container_Collection::getKeysToContainer()` grabbing the containers with:
```
$k2c = $this->cache->get($this->cacheKey);
```
FWIW, turning Memcached _off_ allows me to install Extensions.
## Excerpt 2
(From Christian)
Apologies in advance if there's too much debugging info below - I've tried to debug the Install Extension process but I get lost in the intricacies of `HTML_QuickForm` so I thought dumping everything I can see might help. The problem in `CRM_Extension_Container_Collection::getContainer()` is that `$key` is not defined:
```
Array
(
[method] => CRM_Extension_Container_Collection::getContainer
[key] =>
[k2c] => Array
(
[com.iatspayments.civicrm] => civiroot
[org.civicrm.shoreditch] => default
)
[backtrace] => #0 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Extension/Container/Collection.php(111): CRM_Extension_Container_Collection->getContainer(NULL)
#1 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Extension/Mapper.php(185): CRM_Extension_Container_Collection->getPath(NULL)
#2 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Admin/Form/Extensions.php(85): CRM_Extension_Mapper->keyToInfo(NULL)
#3 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php(585): CRM_Admin_Form_Extensions->preProcess()
#4 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/StateMachine.php(136): CRM_Core_Form->buildForm()
#5 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/QuickForm/Action/Next.php(61): CRM_Core_StateMachine->perform(Object(CRM_Admin_Form_Extensions), 'next', 'Next')
#6 /path/to/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Admin_Form_Extensions), 'next')
#7 /path/to/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Admin_Form_Extensions), 'next')
#8 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Controller.php(351): HTML_QuickForm_Page->handle('next')
#9 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Page/Basic.php(398): CRM_Core_Controller->run()
#10 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Page/Basic.php(156): CRM_Core_Page_Basic->edit(1, NULL)
#11 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Admin/Page/Extensions.php(121): CRM_Core_Page_Basic->run()
#12 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(309): CRM_Admin_Page_Extensions->run(Array, NULL)
#13 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(84): CRM_Core_Invoke::runItem(Array)
#14 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke(Array)
#15 /path/to/wp-content/plugins/civicrm/civicrm.php(1246): CRM_Core_Invoke::invoke(Array)
#16 [internal function]: CiviCRM_For_WordPress->invoke('')
#17 /path/to/wp-includes/class-wp-hook.php(286): call_user_func_array(Array, Array)
#18 /path/to/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array)
#19 /path/to/wp-includes/plugin.php(453): WP_Hook->do_action(Array)
#20 /path/to/wp-admin/admin.php(224): do_action('toplevel_page_C...')
#21 {main}
)
```
Debugging further up the line in `CRM_Admin_Form_Extensions::preProcess()` shows the context, though it still doesn't show me exactly why `$key` is undefined:
```
Array
(
[method] => CRM_Admin_Form_Extensions::preProcess
[key] =>
[id] =>
[GET] => Array
(
[page] => CiviCRM
[q] => civicrm/admin/extensions
[noheader] => 1
)
[POST] => Array
(
[qfKey] => 926b1c386f5b9c64184e995104741f62_6496
[_qf_default] => Extensions:next
[_qf_Extensions_next] => Install
)
[REQUEST] => Array
(
[page] => CiviCRM
[q] => civicrm/admin/extensions
[noheader] => 1
[qfKey] => 926b1c386f5b9c64184e995104741f62_6496
[_qf_default] => Extensions:next
[_qf_Extensions_next] => Install
)
[backtrace] => #0 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php(585): CRM_Admin_Form_Extensions->preProcess()
#1 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/StateMachine.php(136): CRM_Core_Form->buildForm()
#2 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/QuickForm/Action/Next.php(61): CRM_Core_StateMachine->perform(Object(CRM_Admin_Form_Extensions), 'next', 'Next')
#3 /path/to/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Admin_Form_Extensions), 'next')
#4 /path/to/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Admin_Form_Extensions), 'next')
#5 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Controller.php(351): HTML_QuickForm_Page->handle('next')
#6 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Page/Basic.php(398): CRM_Core_Controller->run()
#7 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Page/Basic.php(156): CRM_Core_Page_Basic->edit(1, NULL)
#8 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Admin/Page/Extensions.php(121): CRM_Core_Page_Basic->run()
#9 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(309): CRM_Admin_Page_Extensions->run(Array, NULL)
#10 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(84): CRM_Core_Invoke::runItem(Array)
#11 /path/to/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke(Array)
#12 /path/to/wp-content/plugins/civicrm/civicrm.php(1246): CRM_Core_Invoke::invoke(Array)
#13 [internal function]: CiviCRM_For_WordPress->invoke('')
#14 /path/to/wp-includes/class-wp-hook.php(286): call_user_func_array(Array, Array)
#15 /path/to/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array)
#16 /path/to/wp-includes/plugin.php(453): WP_Hook->do_action(Array)
#17 /path/to/wp-admin/admin.php(224): do_action('toplevel_page_C...')
#18 {main}
)
```
Here's what `CRM_Admin_Form_Extensions` looks like at the above moment:
```
[this] => CRM_Admin_Form_Extensions Object
(
[_id:protected] =>
[_values:protected] => Array
(
)
[_BAOName:protected] => CRM_Core_BAO_Extension
[_state:protected] =>
[_name:protected] => Extensions
[_title:protected] =>
[_defaults] => Array
(
)
[_options] =>
[_action] => 1
[_paymentProcessors:protected] =>
[_paymentProcessorIDs] =>
[_paymentProcessorID:protected] =>
[_is_pay_later_enabled:protected] =>
[_renderer:protected] =>
[_dateFields:protected] => Array
(
)
[unsavedChangesWarn:protected] =>
[ajaxResponse] => Array
(
)
[urlPath] => Array
(
[0] => civicrm
[1] => admin
[2] => extensions
)
[context:protected] =>
[controller] => CRM_Core_Controller_Simple Object
(
[_title:protected] => CRM_Admin_Form_Extensions
[_key] => 926b1c386f5b9c64184e995104741f62_6496
[_scope:protected] => CRM_Admin_Form_Extensions_926b1c386f5b9c64184e995104741f62_6496
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
[_embedded:protected] => 1
[_skipRedirection:protected] =>
[_print] => 0
[_generateQFKey] => 1
[_QFResponseType] => html
[_parent:protected] =>
[_destination] =>
[_entryURL] =>
[_pages] => Array
(
[Extensions] => CRM_Admin_Form_Extensions Object
*RECURSION*
)
[_actions] => Array
(
[Extensions] => HTML_QuickForm_Action_Direct Object
(
)
[display] => CRM_Core_QuickForm_Action_Display Object
(
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
[next] => CRM_Core_QuickForm_Action_Next Object
(
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
[back] => CRM_Core_QuickForm_Action_Back Object
(
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
[process] => CRM_Core_QuickForm_Action_Process Object
(
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
[cancel] => CRM_Core_QuickForm_Action_Cancel Object
(
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
[refresh] => CRM_Core_QuickForm_Action_Refresh Object
(
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
[reload] => CRM_Core_QuickForm_Action_Reload Object
(
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
[done] => CRM_Core_QuickForm_Action_Done Object
(
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
[jump] => CRM_Core_QuickForm_Action_Jump Object
(
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
[submit] => CRM_Core_QuickForm_Action_Submit Object
(
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
[upload] => CRM_Core_QuickForm_Action_Upload Object
(
[_uploadNames:protected] => Array
(
[0] => attachFile_1
[1] => attachFile_2
[2] => attachFile_3
[3] => uploadFile
)
[_uploadDir:protected] => /path/to/wp-content/plugins/files/civicrm/upload/
[_stateMachine:protected] => CRM_Core_StateMachine Object
(
[_controller:protected] => CRM_Core_Controller_Simple Object
*RECURSION*
[_states:protected] => Array
(
[Extensions] => CRM_Core_State Object
(
[_name:protected] => Extensions
[_type:protected] => 3
[_back:protected] =>
[_next:protected] =>
[_stateMachine:protected] => CRM_Core_StateMachine Object
*RECURSION*
)
)
[_pages:protected] => Array
(
[CRM_Admin_Form_Extensions] =>
)
[_pageNames:protected] => Array
(
[0] => Extensions
)
[_action:protected] => 0
[_name:protected] =>
)
)
)
[_name] => CRM_Admin_Form_Extensions_926b1c386f5b9c64184e995104741f62_6496
[_modal] => 1
[_actionName] => Array
(
[0] => Extensions
[1] => next
)
)
[_chainSelectFields:CRM_Core_Form:private] => Array
(
)
[_actions] => Array
(
)
[_formBuilt] => 1
[_elements] => Array
(
)
[_elementIndex] => Array
(
)
[_duplicateIndex] => Array
(
)
[_required] => Array
(
)
[_jsPrefix] => Invalid information entered.
[_jsPostfix] => Please correct these fields.
[_datasource] =>
[_defaultValues] => Array
(
)
[_constantValues] => Array
(
)
[_submitValues] => Array
(
[qfKey] => 926b1c386f5b9c64184e995104741f62_6496
[_qf_default] => Extensions:next
[_qf_Extensions_next] => Install
)
[_submitFiles] => Array
(
)
[_maxFileSize] => 41943040
[_freezeAll] =>
[_rules] => Array
(
)
[_formRules] => Array
(
)
[_errors] => Array
(
)
[_requiredNote] => <span style="font-size:80%; color:#ff0000;">*</span><span style="font-size:80%;"> denotes required field</span>
[_flagSubmitted] => 1
[_attributes] => Array
(
[action] => https://domain.org/wp-admin/admin.php?page=CiviCRM&q=civicrm/admin/extensions
[method] => post
[name] => Extensions
[id] => Extensions
[class] => CRM_Admin_Form_Extensions
)
[_tabOffset] => 0
[_tab] =>
[_lineEnd] =>
[_comment] =>
[_key] =>
)
```
So, somewhere at some point, the `_key` property is not being set.
@totten Can you suggest how I might be able to pinpoint what's going on?
## Excerpt 3
(*From Christian*)
@totten A little more info: when Memcached is *not* being used, the URL sequence is as follows:
* The "Install" page is: https://domain.org/wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fadmin%2Fextensions&action=add&id=org.civicrm.shoreditch&key=org.civicrm.shoreditch
* The resulting location is: https://domain.org/wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fadmin%2Fextensions&reset=1&action=browse
When Memcached *is* being used:
* The "Install" page is: https://domain.org/wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fadmin%2Fextensions&action=add&id=org.civicrm.shoreditch&key=org.civicrm.shoreditch
* The resulting location is: https://domain.org/wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fadmin%2Fextensions
As I said, I'll happily test further given pointers as to where to keep digging.
------
## Excerpt 4
(*From totten via Mattermost*)
@haystack on a brief skim, it seems like the target extension-key should be passed through page arguments, but the pageflow there is a little tricky (so brief skim may be miselading). Maybe a quirk in session-mgmt could be the issue? (Ex: memcache prematurely purges session-state). Would be interesting to see:
1. With memcache active -- do the extensions install via CLI? (e.g. `wp civicrm-api extension.install key=org.civicrm.shoreditch` or `cv en shoreditch`)
2. With memcache active -- does the gui installer work when [if sessions are stored in sql - but otherwise the system uses memcache](https://gist.github.com/totten/1e90a48da78f518931f34c709df83c13) ?
If #2 works, I'd take that as a signal that memcache isn't reliably storing session state.
If #2 doesn't make a difference, then #1 might be interesting.5.5.0https://lab.civicrm.org/dev/core/-/issues/292Search builder stops working after 5.3.1 (due accents on custom set fields ti...2019-02-05T22:12:59ZfrancescbassasSearch builder stops working after 5.3.1 (due accents on custom set fields titles)After 5.3.1 upgrade Search Builder jQuery interaction stops working. I could find the reason, seems that custom set title with accents break the Search Builder form.
How to test?
On dmaster go to https://dmaster.demo.civicrm.org/civicrm...After 5.3.1 upgrade Search Builder jQuery interaction stops working. I could find the reason, seems that custom set title with accents break the Search Builder form.
How to test?
On dmaster go to https://dmaster.demo.civicrm.org/civicrm/admin/custom/group?reset=1 and edit a custom set title for example with "Cancelación Suscripción" and save it. Then go to https://dmaster.demo.civicrm.org/civicrm/contact/search/builder?reset=1 and select some -record type- you will notice that no type of operator related to the selected type is suggested.
On the browser console appears this error:
![search-builder-break](/uploads/705047a221ee4fce997ade35a44e645d/search-builder-break.png)5.5.0https://lab.civicrm.org/dev/core/-/issues/255Changes to copied event location reflects in original event location2019-02-05T04:25:52ZyashodhaChanges to copied event location reflects in original event locationSteps to replicate:
1. Create an event X with location A.
2. Create copy of event X say Y and go to location tab for event Y (which will now show location A).
3. Click *Create new location* radio and then click *Use existing location*, ...Steps to replicate:
1. Create an event X with location A.
2. Create copy of event X say Y and go to location tab for event Y (which will now show location A).
3. Click *Create new location* radio and then click *Use existing location*, choose option B.
4. Check event X also has location B.5.5.0yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/259OptionGroup Admin UI workflow improvements2018-12-18T12:16:03Zmattwiremjw@mjwconsult.co.ukOptionGroup Admin UI workflow improvementsVarious improvements to the "flow" of the option groups admin pages.
Before
----------------------------------------
* No option to edit option group settings (eg. change the label).
* When clicking "Done" editing options, redirect to t...Various improvements to the "flow" of the option groups admin pages.
Before
----------------------------------------
* No option to edit option group settings (eg. change the label).
* When clicking "Done" editing options, redirect to the option groups list instead of the default admin page.
After
----------------------------------------
* Add option to edit option group settings (the code was already in place, but not exposed in UI).
* Display "is_reserved" status on option group settings.
* Don't allow changing data type on reserved option groups.
* On update optiongroup don't touch is_reserved.
![localhost_8000_civicrm_admin_options_action browse reset 1 4](https://user-images.githubusercontent.com/2052161/42726000-43ca3642-8785-11e8-9ea3-d0228ceb558e.png)
![localhost_8000_civicrm_admin_options_action browse reset 1 5](https://user-images.githubusercontent.com/2052161/42726002-48fc8520-8785-11e8-9ebc-9267444e510f.png)
* When clicking "Done" editing options, redirect to the option groups list instead of the default admin page.
![localhost_8000_civicrm_admin_options_action browse reset 1 6](https://user-images.githubusercontent.com/2052161/42726010-6995ac9e-8785-11e8-8823-111f71f52d07.png)
Technical Details
----------------------------------------
UI only changes that enable editing option groups parameters.
Comments
----------------------------------------
If you are working with multiple option groups, the UI has always been a bit difficult to navigate and various functions are not possible via the UI (such as changing the label of an option group).
PR: https://github.com/civicrm/civicrm-core/pull/124735.5.0https://lab.civicrm.org/dev/core/-/issues/155Improvements and bugfixes to Option Groups UI2018-12-15T23:10:58Zmattwiremjw@mjwconsult.co.ukImprovements and bugfixes to Option Groups UI**Bugfix:**
Allow saving of new option value with value = 0.
PR (**MERGED**): https://github.com/civicrm/civicrm-core/pull/12229
**Additional fields on OptionGroup list**
This adds Enabled/Reserved columns to list and puts buttons at t...**Bugfix:**
Allow saving of new option value with value = 0.
PR (**MERGED**): https://github.com/civicrm/civicrm-core/pull/12229
**Additional fields on OptionGroup list**
This adds Enabled/Reserved columns to list and puts buttons at the top as well.
PR: https://github.com/civicrm/civicrm-core/pull/12233
![localhost_8000_civicrm_admin_options_reset_1](/uploads/e742132345fd2c7119f1fe3996a6a1d9/localhost_8000_civicrm_admin_options_reset_1.png)
**Resolve issues with use of "is_reserved" database field**
As the is_reserved flag is not being shown in the UI, and is not editable from the UI it has not been used for anything in core even though it is there.
A common use-case is adding an option group and then adding a set of custom fields that use that option group (eg. for surveys) but that is currently not possible via the UI because the query that looks for available option groups is looking ONLY for option groups that are already linked to custom fields - a catch 22!
PR: https://github.com/civicrm/civicrm-core/pull/12235
![customfieldoptiongroup](/uploads/85ef8c8ecf9826f94acedda058a7aa14/customfieldoptiongroup.png)5.5.0https://lab.civicrm.org/dev/core/-/issues/230Saved Search : Set Mapping id to null on mapping delete2018-11-18T20:56:51ZsunilSaved Search : Set Mapping id to null on mapping deletecivicrm_saved_search -> mapping_id is FOREIGN key REFERENCES of civicrm_mapping (id).
When mapping have reference with saved search table. while deleting the mapping get SQL Error.civicrm_saved_search -> mapping_id is FOREIGN key REFERENCES of civicrm_mapping (id).
When mapping have reference with saved search table. while deleting the mapping get SQL Error.5.5.0https://lab.civicrm.org/dev/core/-/issues/93Update CRM_Utils_Rule::mysqlOrderBy() to accommodate more than 2 joins2018-11-10T00:41:10ZDon WijesooriyaUpdate CRM_Utils_Rule::mysqlOrderBy() to accommodate more than 2 joinsCurrently sorting only allows up to 2 joins: "membership_id.contact_id". If we go up a further level like "membership_id.contact_id.contact_type" it throws an error.
I suggest changing the regex:
```foreach ($parts as $part) {
...Currently sorting only allows up to 2 joins: "membership_id.contact_id". If we go up a further level like "membership_id.contact_id.contact_type" it throws an error.
I suggest changing the regex:
```foreach ($parts as $part) {
if (!preg_match('/^((`[\w-]{1,64}`|[\w-]{1,64})\.)?(`[\w-]{1,64}`|[\w-]{1,64})( (asc|desc))?$/i', trim($part))) {
return FALSE;
}
}```
to:
```/^((`[\w-]{1,64}`|[\w-]{1,64})\.)```{+ + +}```?(`[\w-]{1,64}`|[\w-]{1,64})( (asc|desc))?$/i```5.5.0https://lab.civicrm.org/dev/core/-/issues/383Edit Form of custom field does not load2018-11-09T22:11:39ZjitendraEdit Form of custom field does not loadTo replicate - navigate to https://dmaster.demo.civicrm.org/civicrm/admin/custom/group/field?reset=1&action=browse&gid=1 and edit on a custom field which is not linked to an option group. Eg Marriage date.To replicate - navigate to https://dmaster.demo.civicrm.org/civicrm/admin/custom/group/field?reset=1&action=browse&gid=1 and edit on a custom field which is not linked to an option group. Eg Marriage date.5.5.0jitendrajitendrahttps://lab.civicrm.org/dev/core/-/issues/326Fatal error 'DB Error: no such field' on Contribution detail report when sect...2018-11-09T22:11:38ZPradeep Nayakpradpnayak@gmail.comFatal error 'DB Error: no such field' on Contribution detail report when section header enabledError code : Database Error Code: Unknown column 'civicrm_contribution_total_amount' in 'field list', 1054
![Peek_2018-08-14_16-19](/uploads/519bfa9483886f0ef2df276e76d1eb80/Peek_2018-08-14_16-19.gif)
Issue filed on stackexchange : ht...Error code : Database Error Code: Unknown column 'civicrm_contribution_total_amount' in 'field list', 1054
![Peek_2018-08-14_16-19](/uploads/519bfa9483886f0ef2df276e76d1eb80/Peek_2018-08-14_16-19.gif)
Issue filed on stackexchange : https://civicrm.stackexchange.com/questions/26124/db-error-missing-field-in-contribution-reports-after-upgrade-to-5-4-0-drupal/261265.5.0https://lab.civicrm.org/dev/core/-/issues/289CiviCase Dashboard link to edit an activity status broken2018-11-09T20:25:39ZGMCVO DatabasesCiviCase Dashboard link to edit an activity status brokenThere is a bug with the CiviCase dashboard
When you click to edit the case activity pencil it crashes with 'required params missing'
Also replicated on the demo site https://dmaster.demo.civicrm.org/civicrm/case?reset=1There is a bug with the CiviCase dashboard
When you click to edit the case activity pencil it crashes with 'required params missing'
Also replicated on the demo site https://dmaster.demo.civicrm.org/civicrm/case?reset=15.5.0https://lab.civicrm.org/dev/core/-/issues/353As of 5.4.0, Activity Search gives an empty result set2018-09-03T01:56:12ZPradeep Nayakpradpnayak@gmail.comAs of 5.4.0, Activity Search gives an empty result setFrom SE: https://civicrm.stackexchange.com/questions/26208/as-of-5-4-0-activity-search-gives-an-empty-result-set-confirmation-anyone
Probably this might have caused regression https://github.com/civicrm/civicrm-core/commit/fd95406da80
...From SE: https://civicrm.stackexchange.com/questions/26208/as-of-5-4-0-activity-search-gives-an-empty-result-set-confirmation-anyone
Probably this might have caused regression https://github.com/civicrm/civicrm-core/commit/fd95406da80
PR: https://github.com/civicrm/civicrm-core/pull/127135.5.0https://lab.civicrm.org/dev/core/-/issues/368Scheduled Reminder edit form does not populate date criteria correctly when e...2018-09-03T00:42:54ZandrewcormickdockeryScheduled Reminder edit form does not populate date criteria correctly when editing old remindersWhen editing an old scheduled reminder as shown here (note, to be sent 30 days before membership end date):
![image](/uploads/186749b711bc60889055e8a84994584e/image.png)
the edit form populates incorrectly as shown:
![image](/uploads/24...When editing an old scheduled reminder as shown here (note, to be sent 30 days before membership end date):
![image](/uploads/186749b711bc60889055e8a84994584e/image.png)
the edit form populates incorrectly as shown:
![image](/uploads/24c30ad7f8b8004032b8de5f06aded6a/image.png)
This has caused our users to inadvertently render their reminder ineffective when editing unrelated items on the reminder (for example, the email text).
The log tables show what's happened here (extract from log_civicrm_action_schedule):
![image](/uploads/ae7d5c9d851d81bd7626317c87d1e908/image.png)
Apparently at some point, the coding for membership end date changed from "membership_end_date" to "end_date" but there was no accompanying database update performed to retrospectively change legacy reminders.
I should note that the reminders are actually still sent, but this bug with the edit form has caused grief for some users.5.5.0https://lab.civicrm.org/dev/core/-/issues/350SMS immediate send not working in 5.4.02018-08-28T11:48:01ZAndy ClarkSMS immediate send not working in 5.4.0In 5.4.0 (Drupal) users couldn't send immediate SMS messages (using Twilio), with a message something like "recipients phone number invalid or they do not want to receive SMS delivery" BUT they could still send SMSs via batch. Similar pr...In 5.4.0 (Drupal) users couldn't send immediate SMS messages (using Twilio), with a message something like "recipients phone number invalid or they do not want to receive SMS delivery" BUT they could still send SMSs via batch. Similar problem was raised on Stackexchange at https://civicrm.stackexchange.com/questions/25478/clickatell-sms-recipient-phone-number-is-invalid-or-recipient-does-not-want-to but seems to be discussed as a Clickatell problem - but we're using Twilio. Problem is at line 1829 of activity.php where $doNotSms = TRUE; Changing this to $doNotSms = NULL; does temporarily fix the problem but ignores user preferences (I think). From discussions at https://github.com/veda-consulting/org.civicrm.sms.clickatell/issues/20 it also affects 5.3.0 and 5.3.15.5.0https://lab.civicrm.org/dev/core/-/issues/319Advanced search export: when location types' display names are different from...2018-08-27T01:41:01ZnoahAdvanced search export: when location types' display names are different from their machine names, empty columns are exportedEDITED to be more accurate following further investigation into the symptoms.
This is a regression in the last couple versions of Civi (I see it on 5.3.1 and 5.4.0, as well as 5.5-rc and master).
**Summary:** When exporting from advanc...EDITED to be more accurate following further investigation into the symptoms.
This is a regression in the last couple versions of Civi (I see it on 5.3.1 and 5.4.0, as well as 5.5-rc and master).
**Summary:** When exporting from advanced search, if you select email/phone/address fields to export _where the location type's display name is different from its machine name_, the headers for those columns will be included in the export, but the cells in those columns will be blank.
**To reproduce:**
1. Create a location type called "Field Office" with machine name "FieldOffice" or "FO"
1. Create a contact with a "Field Office" email.
1. Find that contact using advanced search and select the "export" task.
1. Select "Individual - Email - Field Office" as a field to export.
1. In the resulting CSV, there's a blank cell where the email address should be.
**Notes:** I also notice:
* the columns in the export are not in the same order as on the export column selection screen.
* exporting from Search Builder has a similar-but-different problem: if two location types are selected for export, only one of the columns will successfully be exported.
I see that quite a bit of work has gone into the Export code in recent releases and I suspect this regression happened as a result.
I'm interested in creating tests for this but I'd need someone to hold my hand through the process, as I have no recent experience doing that.5.5.0https://lab.civicrm.org/dev/core/-/issues/273"Recipient phone number is invalid or recipient does not want to receive SMS"...2018-08-18T21:44:11Zjyothi"Recipient phone number is invalid or recipient does not want to receive SMS" error and Contacts with DoNotSms preference failing to filter out during Mass Sms in 5.x"Recipient phone number is invalid or recipient does not want to receive SMS" error occurs during individual SMS. https://civicrm.stackexchange.com/questions/25478/clickatell-sms-recipient-phone-number-is-invalid-or-recipient-does-not-wa..."Recipient phone number is invalid or recipient does not want to receive SMS" error occurs during individual SMS. https://civicrm.stackexchange.com/questions/25478/clickatell-sms-recipient-phone-number-is-invalid-or-recipient-does-not-want-to.
Contacts marked as 'donotsms' is not filtered out during mass SMS.5.5.0