CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2024-03-29T07:36:10Zhttps://lab.civicrm.org/dev/core/-/issues/5073Standalone default folder structure2024-03-29T07:36:10ZufundoStandalone default folder structureSome wise suggestions from @artfulrobot for clearer folder naming / out-of-the-box security:
> ```
> - civicrm-standalone-X.Y.Z.zip
> - index.php
> - .htaccess
> - robots.txt ➌
> - data/
> - data/ext/....Some wise suggestions from @artfulrobot for clearer folder naming / out-of-the-box security:
> ```
> - civicrm-standalone-X.Y.Z.zip
> - index.php
> - .htaccess
> - robots.txt ➌
> - data/
> - data/ext/.htaccess
> - data/public/.htaccess ➊
> - data/.private/.htaccess ➋
> - core/<ALL-THE-CODES>
> ```
>
> 1. use 'public' not 'upload'. It partners well with 'private', and 'upload' is such a daft relative-to-what? term (not everything you upload through a browser ought to be in a public dir). I think the whole 'persist' 'contribute' etc. is a right mess - or at least I don't understand the logic if there is logic, though last time I looked at it the logic was that at some point in history the first thing to allow uploads was civi contribute so ...
>
> 2. use a dot before _private/_. It's very common, and easy, to ban http access to all 'dot files'. So this gives an extra _likely_ shield against the "oh, I didn't realise nginx ignored .htaccess files" users. Just feels safer, if we're focussing on making this easy.
>
> 3. In terms of sensible defaults, I feel we should have a robots.txt that does its best to ban crawlers, especially AI ones, on everything except specific paths (e.g. event pages). It's one thing to have someone tell you you've accidentally exposed data and someone saw it, it's another to find that your [exposed data now lives in an LLM](https://arstechnica.com/information-technology/2022/09/artist-finds-private-medical-record-photos-in-popular-ai-training-data-set/) training set, ready to be given to anyone with a particular prompt.
Maybe to the nginx point, we could add `nginx-civicrm-site.conf.sample` in the root?
I think the principles for the public / private upload folder names apply to the composer template and the tarball.ufundoufundohttps://lab.civicrm.org/dev/core/-/issues/4985Custom radio/checkbox fields - maximum options per line - alignment lost2024-03-29T00:28:52ZsamuelsovCustom radio/checkbox fields - maximum options per line - alignment lostRegression following on #1821.
This is what we used to have (html table so everything is aligned):
![screen1](/uploads/afc5f71950f200da120187746e43f222/screen1.png)
This is what we have now:
![screen2](/uploads/c202f5aa0fccf732d96090...Regression following on #1821.
This is what we used to have (html table so everything is aligned):
![screen1](/uploads/afc5f71950f200da120187746e43f222/screen1.png)
This is what we have now:
![screen2](/uploads/c202f5aa0fccf732d96090fd2d385138/screen2.png)
Currently, it's almost impossible to fix it using css.https://lab.civicrm.org/dev/core/-/issues/5082CiviCRM 5.70.0, 5.71.0 - With URL tracking enabled, a personalised "View in y...2024-03-28T23:33:13Zjustinfreeman (Agileware)CiviCRM 5.70.0, 5.71.0 - With URL tracking enabled, a personalised "View in your browser" link incorrectly replaces ? with & which causes CiviCRM to respond with error: "You do not have permission to access this page"CiviCRM 5.70.0, 5.71.0 - With URL tracking enabled, a personalised "View in your browser" link incorrectly replaces ? with & which causes CiviCRM to respond with error: "You do not have permission to access this page".
This happens when...CiviCRM 5.70.0, 5.71.0 - With URL tracking enabled, a personalised "View in your browser" link incorrectly replaces ? with & which causes CiviCRM to respond with error: "You do not have permission to access this page".
This happens when using a personalised "View in your browser" URL like this in the mailing, note the use of tokens:
https://goodcause.org.au/civicrm/mailing/view?id={mailing.key}&{contact.checksum}&cid={contact.contact_id}
Which is then incorrectly converted to - this only happens with URL tracking enabled. When URL tracking is disabled, no problems at all.
https://goodcause.org.au/civicrm/mailing/view&id=38&cs=838eae033aa8c2edb56f25b54a1edde5_1709775006_2880&cid=389
And then CiviCRM to respond with error: "You do not have permission to access this page"
The fix and workaround for this issue is to instead just use this token as the URL, which will render correctly.
{mailing.viewUrl}
It's not unreasonable to expect the personalised "View in your browser" URL will work, the first URL parameter should not be converted in this way. This may have implications for other types of URLs too.
Agileware Ref: CIVICRM-2230https://lab.civicrm.org/dev/core/-/issues/5116Scheduled Reminders: with multi-lingual, the language filters are empty2024-03-28T21:51:08ZbgmScheduled Reminders: with multi-lingual, the language filters are emptyTo reproduce:
- Enable multi-lingual from Administer > Localization > Languages, the checkbox at the bottom of the screen
- Then go to Administer > Communications > Scheduled Reminders
- Add a new Reminder
Ignore everything, scroll dow...To reproduce:
- Enable multi-lingual from Administer > Localization > Languages, the checkbox at the bottom of the screen
- Then go to Administer > Communications > Scheduled Reminders
- Add a new Reminder
Ignore everything, scroll down to the "Recipients language", and notice that the list is empty:
![image](/uploads/1f83b3ccfd0c755f0609509c4172594a/image.png)
The regression was caused by: https://github.com/civicrm/civicrm-core/commit/de00a2b14f60a7f6fef59b5b3331c17fc1e3e061 - part of CiviCRM 5.66 (Symbiotic was on 5.65 and didn't see this until 5.70).
I don't know what's the best way of fixing it:
- The DAO correctly defines the callback for the `filter_contact_language` field
- QuickForm uses `addField()` to add the field using metadata
- `addField()` calls `ActionSchedule.getfields`, which fetches the metadata from the DAO
- `civicrm_api3_generic_getfields()` has code like this:
```
if (function_exists($helper)) {
// alter
$helper($metadata, $apiRequest);
}
```
which basically calls `_civicrm_api3_action_schedule_create_spec()`, and that then NULLs the callbacks, so the options are hidden in the UI.
@colemanw Any thoughts?
Bug found by @mmyriamcolemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/5115a11y errors2024-03-28T20:43:12ZJoeMurraya11y errorsRunning a very vanilla setup we get the following accessibility errors (D10.2.3 / Civi 5.70.2 site, Finsbury Park theme enabled and Backend theme set to Finsbury Park and Aah disabled/alternating with Finsbury Park theme disabled and Aah...Running a very vanilla setup we get the following accessibility errors (D10.2.3 / Civi 5.70.2 site, Finsbury Park theme enabled and Backend theme set to Finsbury Park and Aah disabled/alternating with Finsbury Park theme disabled and Aah enabled and Backend theme set to Aah, Frontend Theme to Automatic. Using WAVE Web Accessibility Evaluation Tool 3.2.5.3 in Chrome browser 123.0.6312.86 on macOS Sonoma 14.4.1).
CiviCRM Home Page Errors:
- [ ] Missing form label on the QuickSearch element (Finsbury Park, Aah)
`<input type="text" id="crm-qsearch-input" name="sort_name" placeholder=" Name/Email" accesskey="q" class="ui-autocomplete-input" autocomplete="off">`
- [ ] Missing form label on Find menu item... (Finsbury Park, Aah)
`<input type="text" id="crm-menubar-drilldown" placeholder="Find menu item...">`
- [ ] Empty link (Finsbury Park, Aah)
```
<a href="#" class="has-submenu" id="sm-17116551805997053-1" aria-haspopup="true" aria-controls="sm-17116551805997053-2" aria-expanded="false">
<form action="/civicrm/contact/search/advanced" name="search_block" method="post">
<div>
AccesskeyMissing form label
<input type="text" id="crm-qsearch-input" name="sort_name" placeholder=" Name/Email" accesskey="q" class="ui-autocomplete-input" autocomplete="off">
<input type="hidden" name="hidden_location" value="1">
<input type="hidden" name="hidden_custom" value="1">
<input type="hidden" name="qfKey" value="CRMContactControllerSearch1nrj4735k2cgk8kgcos44c4800cwc800o8gk00w8so0gko004s_8998">
<input type="hidden" name="_qf_Advanced_refresh" value="Search">
</div>
</form>
<span class="sub-arrow"></span>
</a>
```
- [ ] Empty link (Finsbury Park, Aah)
```
<a accesskey="m" href="#" class="has-submenu" id="sm-17116551805997053-3" aria-haspopup="true" aria-controls="sm-17116551805997053-4" aria-expanded="false">
<i class="crm-logo-sm"></i>
<span class="sub-arrow"></span>
</a>
```
- [ ] Empty link (Finsbury Park, Aah)
```
<a href="#" class="has-submenu" id="sm-17116551805997053-5" aria-haspopup="true" aria-controls="sm-17116551805997053-6" aria-expanded="false">
Missing form label
<input type="text" id="crm-menubar-drilldown" placeholder="Find menu item...">
<span class="sub-arrow"></span>
</a>
```
- [ ] Very low contrast (Aah)
```
<button class="trigger visually-hidden focusable" type="button" aria-pressed="false">
Open configuration options
</button>
```
- [ ] Very low contrast (Finsbury Park, Aah)
```
<label class="crm-menubar-toggle-btn" for="crm-menubar-state">
<span class="crm-menu-logo"></span>
<span class="crm-menubar-toggle-btn-icon"></span>
Toggle main menu
</label>
```
- [ ] Very low contrast (Finsbury Park, Aah)
```
<div id="drupal-live-announce" class="visually-hidden" aria-live="polite" aria-busy="false">
Tray opened.
</div>
```
Simple Search (Search > Find Contacts) Errors not present above:
- [ ] Missing form label
```
<select placeholder="- any group -" multiple="multiple" class="big big crm-select2 crm-form-multiselect" name="group[]" id="group" tabindex="-1" style="display: none;">
<option value="1">
My site group 1
</option>
<option value="2">
My site group 2
</option>
</select>
```
- [ ] Empty form label (see next task for Empty link that contains this)
`<label for="s2id_autogen2" class="select2-offscreen"></label>`
- [ ] Empty link
```
<a href="#" class="has-submenu" id="sm-17116579339791917-1" aria-haspopup="true" aria-controls="sm-17116579339791917-2" aria-expanded="false">
<form action="/civicrm/contact/search/advanced" name="search_block" method="post">
<div>
<input type="text" id="crm-qsearch-input" name="sort_name" placeholder=" Name/Email" accesskey="q" class="ui-autocomplete-input" autocomplete="off">
<input type="hidden" name="hidden_location" value="1">
<input type="hidden" name="hidden_custom" value="1">
<input type="hidden" name="qfKey" value="CRMContactControllerSearch1nrj4735k2cgk8kgcos44c4800cwc800o8gk00w8so0gko004s_4570">
<input type="hidden" name="_qf_Advanced_refresh" value="Search">
</div>
</form>
<span class="sub-arrow"></span>
</a>
```
- [ ] Empty link
```
<a accesskey="m" href="#" class="has-submenu" id="sm-17116579339791917-3" aria-haspopup="true" aria-controls="sm-17116579339791917-4" aria-expanded="false">
<i class="crm-logo-sm"></i>
<span class="sub-arrow"></span>
</a>
```
- [ ] Empty link
```
<a href="#" class="has-submenu" id="sm-17116579339791917-5" aria-haspopup="true" aria-controls="sm-17116579339791917-6" aria-expanded="false">
<input type="text" id="crm-menubar-drilldown" placeholder="Find menu item...">
<span class="sub-arrow"></span>
</a>
```
- [ ] Very low contrast
```
<span class="select2-chosen" id="select2-chosen-1">
- any contact type -
</span>
```
- [ ] Very low contrast
```
<button class="crm-form-submit default validate crm-button crm-button-type-refresh crm-button_qf_Basic_refresh" value="1" type="submit" name="_qf_Basic_refresh" id="_qf_Basic_refresh-bottom">
<i aria-hidden="true" class="crm-i fa-check"></i>
Search
</button>
```Monish DebMonish Deb2024-03-29https://lab.civicrm.org/dev/core/-/issues/902KAM keyboard shortcuts2024-03-28T15:46:04ZJoeMurrayKAM keyboard shortcutsAlthough there had been extensive testing of the KAM extension keyboard shortcuts (https://lab.civicrm.org/dev/accessibility/issues/1#note_11279), I'm not sure how extensive it was of the integration into core. This is a list of items th...Although there had been extensive testing of the KAM extension keyboard shortcuts (https://lab.civicrm.org/dev/accessibility/issues/1#note_11279), I'm not sure how extensive it was of the integration into core. This is a list of items that are needed to make the menu accessible according to WCAG 2.0 AA, so far as I can determine from various sites that provide suggestions on implementations for compliant menus, mainklyt WAI tutorials.
* [ ] The menu should receive the tab focus first, before other page elements. Currently, one has to tab through other page elements before entering the menu. On wpmaster, it takes 4 tabs, on dmaster it takes 24 tabs in order to get to QuickSearch.
* [ ] When focus is in QuickSearch, tab incorrectly moves next to browser address line. It should move forward to the menu item represented by the CiviCRM icon (I don't know its name).
Previous notes from when tabbing worked in the menu:
* [ ] When on a menu item with submenu open, space and return as well as escape should close it. Not a priority, but behaviour seems to be non-standard.
* [ ] When on an open sub-submenu (eg Contributions > Accounting Batches with Open Batches with focus), using left arrow correctly moved focus to Accounting Batches, but it did not close the sub-submenu. Not a huge priority for usability.https://lab.civicrm.org/dev/core/-/issues/5114Managed domain-aware entities with multisite configuration2024-03-28T12:37:16ZJKingsnorthManaged domain-aware entities with multisite configurationWe've come across an edge-case in a multi-site setup.
In our setup, we have a master domain which does not have 'Enable Multi Site Configuration' enabled. And subdomains which do.
This is allowed configuration according to the docs: ht...We've come across an edge-case in a multi-site setup.
In our setup, we have a master domain which does not have 'Enable Multi Site Configuration' enabled. And subdomains which do.
This is allowed configuration according to the docs: https://docs.civicrm.org/installation/en/latest/multisite/drupal/#:~:text=It%20is%20not,or%20website%20administrators.
We also have a managed 'job' entity (provided by https://lab.civicrm.org/extensions/mjwshared/-/blob/master/managed/ProcessPaymentprocessorWebhooks.mgd.php?ref_type=heads)
The managed entity is set to 'always' update.
---
1) We run Managed->Reconcile on domain ID 1 (multisite not enabled)
- The job row is created
- An entry in civicrm_managed is created
```
# id, module, name, entity_type, entity_id, cleanup, entity_modified_date
'1796', 'mjwshared', 'ProcessPaymentProcessorWebhooks', 'Job', '116', 'always', NULL
```
- The job in civicrm_job is created
```
# id, domain_id, run_frequency, last_run, scheduled_run_date, name, description, api_entity, api_action, parameters, is_active
'116', '1', 'Always', NULL, NULL, 'Process PaymentProcessor Webhooks', 'Process incomplete payment processor webhooks', 'Job', 'process_paymentprocessor_webhooks', 'delete_old=-3 month', '1'
```
2) Managed->Reconcile run on domain ID 43 (multisite enabled)
- The entries in civicrm_managed are converted into 'domain-aware' entries:
```
# id, module, name, entity_type, entity_id, cleanup, entity_modified_date
'1803', 'mjwshared', 'ProcessPaymentProcessorWebhooks_32', 'Job', '116', 'always', NULL
'1804', 'mjwshared', 'ProcessPaymentProcessorWebhooks_42', 'Job', '116', 'always', NULL
'1805', 'mjwshared', 'ProcessPaymentProcessorWebhooks_43', 'Job', '116', 'always', NULL
```
- The job in civicrm_job is 'moved' to another domain:
```
# id, domain_id, run_frequency, last_run, scheduled_run_date, name, description, api_entity, api_action, parameters, is_active
'116', '43', 'Always', NULL, NULL, 'Process PaymentProcessor Webhooks', 'Process incomplete payment processor webhooks', 'Job', 'process_paymentprocessor_webhooks', 'delete_old=-3 month', '1'
```
3) Managed->Reconcile run on domain ID 1 again (not multisite enabled)
- The entry in civicrm_job has been deleted - no more essential scheduled job!
- The entry in civicrm_managed changes back to not domain aware, and references a deleted row
```
# id, module, name, entity_type, entity_id, cleanup, entity_modified_date
'1796', 'mjwshared', 'ProcessPaymentProcessorWebhooks', 'Job', '116', 'always', NULL
```
---
So we need to either:
- Update the docs to say that the 'master' domain _does_ need to be multisite aware
- Update the handling of domain-aware managed entities to work correctly when reconciled in either domainhttps://lab.civicrm.org/dev/core/-/issues/5113Change Start Date link broken on open case activity edit2024-03-28T00:59:58ZDaveDChange Start Date link broken on open case activity editThere's a warning Undefined array key "changeStartURL" and clicking the link just reloads the page.There's a warning Undefined array key "changeStartURL" and clicking the link just reloads the page.https://lab.civicrm.org/dev/core/-/issues/3807Download invoice button on contribution fails to attach it to activity on win...2024-03-28T00:43:35ZDaveDDownload invoice button on contribution fails to attach it to activity on windowsEverything else works, but the attachment doesn't get attached to the activity.
In https://github.com/civicrm/civicrm-core/blob/2aaf9d423288b5acb322379eb135324f380faca4/CRM/Core/BAO/File.php#L117-L130, it uses DIRECTORY_SEPARATOR when i...Everything else works, but the attachment doesn't get attached to the activity.
In https://github.com/civicrm/civicrm-core/blob/2aaf9d423288b5acb322379eb135324f380faca4/CRM/Core/BAO/File.php#L117-L130, it uses DIRECTORY_SEPARATOR when it should just always use '/', and in the one place it does need to use DIRECTORY_SEPARATOR it only checks '/':
```php
$path = explode('/', $data); // <--- THIS IS WRONG
$filename = $path[count($path) - 1];
// rename this file to go into the secure directory
if ($entitySubtype) {
$directoryName = $config->customFileUploadDir . $entitySubtype . DIRECTORY_SEPARATOR . $entityID;
}
else {
$directoryName = $config->customFileUploadDir;
}
CRM_Utils_File::createDir($directoryName);
if (!rename($data, $directoryName . DIRECTORY_SEPARATOR . $filename)) {
```https://lab.civicrm.org/dev/core/-/issues/3809[ext:message_admin] It's not obvious there's a preview function, and even whe...2024-03-28T00:43:21ZDaveD[ext:message_admin] It's not obvious there's a preview function, and even when told you might have trouble finding itIt should be a button on the message template edit page, down with the other buttons, where preview buttons normally are.It should be a button on the message template edit page, down with the other buttons, where preview buttons normally are.https://lab.civicrm.org/dev/core/-/issues/5078Formbuilder: updates not saved when a populated field of type "file" is prese...2024-03-27T21:07:26ZNadaillacFormbuilder: updates not saved when a populated field of type "file" is present in the formOverview
----------------------------------------
When a field of type "file" is present in the form, then updates in this form when submitted, are not saved.
https://chat.civicrm.org/civicrm/pl/jq8ei9pxa3r58nr13rsgzqy9tr
Reproduction s...Overview
----------------------------------------
When a field of type "file" is present in the form, then updates in this form when submitted, are not saved.
https://chat.civicrm.org/civicrm/pl/jq8ei9pxa3r58nr13rsgzqy9tr
Reproduction steps in WP master
----------------------------------------
Create a customized field "file" for contact. Ex: Resume
Create a basic form with an individual: first name, last name marital status, and the field Resume
![Civi_f0](/uploads/e49a4fcd969f61914d9782981032f5b0/Civi_f0.png)
view as logged in (as a user "demo")
Update first name, last name (but not the file)
![Civi_f1](/uploads/6628ffadd5479d87a71792710920ef53/Civi_f1.png)
The data are correctly saved
Update a field and upload a file
![Civi_f2](/uploads/c818403e6c530a6625340099b37d8734/Civi_f2.png)
The data are correctly saved
![Civi_f3](/uploads/4b0091e52e64f5460fce384695ba0536/Civi_f3.png)
view again and update marital status, first name
![Civi_f4](/uploads/a3cf5991f8a55938ad2207f09a743206/Civi_f4.png)
Updates re not saved
![Civi_f5](/uploads/61c9669dfafa7db3c783b103933da511/Civi_f5.png)
I remove the file and change the marital status
![Civi_f6](/uploads/1a71cdcf72f0dec27e29d36861d8d94e/Civi_f6.png)
The marital status has been updated but the file has not been removed
![Civi_F7](/uploads/1c4bb33e3446bdef76b48111a2809436/Civi_F7.png)
Environment information
----------------------------------------
Wpmaster 5.72
The bug is also in 5.70.2
I'm OK to fund the fix !! I need it for a client :-)colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/5094Formbuilder: Individual 1 fields are refreshed to their initial values (updat...2024-03-27T20:12:19ZNadaillacFormbuilder: Individual 1 fields are refreshed to their initial values (updates are lost) as soon as a Individual 2 contact is chosen in an existing contact fieldOverview
----------------------------------------
I have a form with an existing contact
![Civi_form_1](/uploads/e815efe6b8d3be57f2706e58ea31abe8/Civi_form_1.png)
And the screen
![Civi_form_2](/uploads/0b0b6c2db6c36fa935886a4b0d243d5...Overview
----------------------------------------
I have a form with an existing contact
![Civi_form_1](/uploads/e815efe6b8d3be57f2706e58ea31abe8/Civi_form_1.png)
And the screen
![Civi_form_2](/uploads/0b0b6c2db6c36fa935886a4b0d243d53/Civi_form_2.png)
https://chat.civicrm.org/civicrm/pl/7qss36x3mi8x5dmnnc5s4tjr4o
Reproduction steps
----------------------------------------
- Update the contact fields (for example the marital status from married - initial value- to Domestic partner - updated value-)
- Input something in the details field of the activity
- Choose a contact in the field "existing contact"
- As soon as the contact is chosen, the contact fields that were updated returned to their initial values , for example, for marital status -> married
- Activity field keep the updated value -> correct
Current behaviour
----------------------------------------
Expected behaviour
----------------------------------------
The contact fields updates by the user in te screen should not be refreshed to their initial values
Environment information
----------------------------------------
Tested in Wpmaster.
Comments
----------------------------------------
I am ok to fund the fix as i need it for a client :-)colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/5104Formbuilder: when updating a relationship or an individual, a default value s...2024-03-27T20:10:34ZNadaillacFormbuilder: when updating a relationship or an individual, a default value set to "now" in a field (custom or not) does not appearOverview
----------------------------------------
Reproduction steps on Wpmaster
----------------------------------------
Create a form with
- individual1 (update, and URL) with fields name, marriage date (with default value set to now...Overview
----------------------------------------
Reproduction steps on Wpmaster
----------------------------------------
Create a form with
- individual1 (update, and URL) with fields name, marriage date (with default value set to now)
- relationship1 (update, and URL) with field relationship end date (with default value set to now)
![Civi_bug_2](/uploads/c274601cbe1e98140982c36d809fffe5/Civi_bug_2.png)
![Civi_bug_3](/uploads/3e926e8907b49c9c559123cf4bb04f6d/Civi_bug_3.png)
Create a relationship for example Employee (Julian Bachman=36) Employer (Bay ...). Let us say that the relationshipid=218
Call the form #?Individual1=36&Relationship1=218
Results
- The information (Name first name) are retrieved,
- Marriage date and relationship end date ("now" date) appears less that 1 second and then are left blank
![Civi_bug_1](/uploads/d050063465cd95d255ce402664ea11e9/Civi_bug_1.png)
This behavior appears only if the relationship (or individual) exists (it is an update). In case of creation, the "now" information is OK
Environment information
----------------------------------------
Wpmaster and also 5.70
Comments
----------------------------------------
I m ok to fund the fix:-). I need it for a client.colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/5106Admin UI extension breaks contact summary if CiviMember extension is disabled2024-03-27T15:25:42ZKurund JalmiAdmin UI extension breaks contact summary if CiviMember extension is disabledContact summary results in fatal error if Admin UI extension is enabled and CiviMember extension is disabled.
```bash
Civi\API\Exception\NotImplementedException: API (Membership, get) does not exist (or the extension it belongs to is no...Contact summary results in fatal error if Admin UI extension is enabled and CiviMember extension is disabled.
```bash
Civi\API\Exception\NotImplementedException: API (Membership, get) does not exist (or the extension it belongs to is not enabled). in Civi\API\Request::create() (line 51 of /var/www/html/sites/all/modules/civicrm/Civi/API/Request.php).
```https://lab.civicrm.org/dev/core/-/issues/5105Extend FormBuilder conditional logic2024-03-27T12:31:45ZGuillaumeSorelExtend FormBuilder conditional logicI think the visibility condition could be improved with these new functions.
- allow to set if logic applies to show or hide element (until now it's a show per default, but it's useful to be able to hide some elements according to other ...I think the visibility condition could be improved with these new functions.
- allow to set if logic applies to show or hide element (until now it's a show per default, but it's useful to be able to hide some elements according to other values) a simple toggle or radio for `o show if | o hide if`
- add the maximum of options for the validity controls in the drodpwon like in SearchKit: contains, is empty/not empty, is between, regex... and not only maths operatorscolemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/5111PHP8.1 Deprecated function: fseek():2024-03-26T21:44:23ZbobisHDPHP8.1 Deprecated function: fseek():Overview
----------------------------------------
On php8.1 the below error will appear:
```Deprecated function: fseek(): Passing null to parameter #2 ($offset) of type int is deprecated in FileReader->seekto() (line 125 of /opt/bitnam...Overview
----------------------------------------
On php8.1 the below error will appear:
```Deprecated function: fseek(): Passing null to parameter #2 ($offset) of type int is deprecated in FileReader->seekto() (line 125 of /opt/bitnami/apps/civicrm/htdocs/sites/all/modules/civicrm/packages/PHPgettext/streams.php)```
The code in this file that causes the error is:
```php
function seekto($pos) {
fseek($this->_fd, $pos);
$this->_pos = ftell($this->_fd);
return $this->_pos;
}
```
After changing this to
```php
function seekto($pos) {
fseek($this->_fd, $this->_pos);
$this->_pos = ftell($this->_fd);
return $this->_pos;
}
```
It seems to make the error go away.
If you have already posted on:
- https://civicrm.stackexchange.com
- https://chat.civicrm.org/civicrm/pl/yfx7e3un4f8nifxq1iknj5amjw
Environment information
----------------------------------------
* __Browser:__ Firefox
* __CiviCRM:__ 5.71.0
* __PHP:__ 8.1
* __CMS:__ Drupal 7.100
* __Database:__ MariaDB 10.6.16
* __Web Server:__ Apache/2.4.52https://lab.civicrm.org/dev/core/-/issues/3808[ext:message_admin] Available preview choices should be based on the site's c...2024-03-26T18:25:12ZDaveD[ext:message_admin] Available preview choices should be based on the site's configIt has fixed choices. And formatting like the comma/dot separators it uses may or may not make sense for the selected preview.It has fixed choices. And formatting like the comma/dot separators it uses may or may not make sense for the selected preview.https://lab.civicrm.org/dev/core/-/issues/5069standalone: permanent "session already active" errors2024-03-26T14:20:29ZRichstandalone: permanent "session already active" errorsEvery page, including the login form has:
* session_set_save_handler(): Session save handler cannot be changed when a session is active [2]
/var/www/standalone.localhost/web/core/CRM/Utils/System/Standalone.php line 567
* sessi...Every page, including the login form has:
* session_set_save_handler(): Session save handler cannot be changed when a session is active [2]
/var/www/standalone.localhost/web/core/CRM/Utils/System/Standalone.php line 567
* session_start(): Ignoring session_start() because a session is already active [8]
/var/www/standalone.localhost/web/core/CRM/Utils/System/Standalone.php line 580
I first encountered this while reviewing https://github.com/civicrm/civicrm-core/pull/29352 but after experiencing it once, I could not get it to repeat, so thought it was a random local thing. But now it's back.
I have some installs that don't have it, and others that do; I'm trying to figure out how to reproduce/what makes the difference.https://lab.civicrm.org/dev/core/-/issues/4994Standalone - issues with haveibeenpwned on password setting screen?2024-03-26T11:33:19ZufundoStandalone - issues with haveibeenpwned on password setting screen?RichRichhttps://lab.civicrm.org/dev/core/-/issues/5061New structure for getFields array in `.entityType.php`2024-03-25T20:55:29ZcolemanwNew structure for getFields array in `.entityType.php`Currently getFields reads from a `schema/xml` file with some wonky formatting. The plan in #4999 is to migrate those `.xml` files to `.entityType.php` files. So now we have a clean slate to decide how those files should be formatted.
No...Currently getFields reads from a `schema/xml` file with some wonky formatting. The plan in #4999 is to migrate those `.xml` files to `.entityType.php` files. So now we have a clean slate to decide how those files should be formatted.
Note: This will not affect the output of `DAO::fields()` or `APIv(3|4).getFields`, as we'll add a compatibility layer and tests to ensure those remain unchanged. But since we're replacing the underlying source of the data with something new, we get to clean that up.
Here are all the current keys in the schema/xml files, and what we plan to do with it in the new file. Many of the proposed changes would improve consistency with APIv4.getFields.
| Old key from `xml` | What to do | New key in `php` | Notes |
| ------ | ------ | ------ | ------ |
| `<name>` | ⚠️ index by | | Use name as array key, omit from array values |
| `<title>` | ✅ keep | `title` | |
| `<required>` | ✅ keep | `required` | |
| `<add>` | ✅ keep | `add` | |
| `<pseudoconstant>` | ✅ keep | `pseudoconstant` | snake_case all values in array |
| `<default>` | ✅ keep | `default` | |
| `<contactType>` | ✅ keep | `contact_type` | |
| `<deprecated>` | ✅ keep | `deprecated` | |
| `<readonly>` | ✅ keep | `readonly` | |
| `<serialize>` | ✅ keep | `serialize` | |
| `<localizable>` | ✅ keep | `localizable` | |
| `<usage>` | ✅ keep | `usage` | |
| `<component>` | ✅ keep | `component` | Ok, but it smells bad to have columns belonging to one component in another component's table :nose: (fixme for another day) |
| `<localize_context>` | ✅ keep | `localize_context` | Obscure property only used by 3 fields, but it's easier to keep it. |
| `<type>` | ⚠️ rename | `sql_type` | |
| `<crmType>` | ⚠️ rename | `data_type` | Historically this was inferred by `<type>` but a few fields explicitly declare `<crmType>` |
| `<uniqueName>` | ⚠️ deprecate | `unique_name` | We can't get rid of it yet but we can discourage it & stop indexing by it at every layer except `DAO::fields()` |
| `<uniqueTitle>` | ⚠️ deprecate | `unique_title` | Are title & attributes[label] not enough? |
| `<comment>` | ⚠️ rename | `description` | |
| `<html>` | ⚠️ rename/reorganize | `attributes` | `type` gets moved out (see `<html><type>` below), while `length` gets moved in as `maxlength` |
| `<html><type>` | ⚠️ move/rename | `input_type` | |
| `<length>` | ⚠️ rename | `attributes[maxlength]` | That seems better. |
| `<import>` | ⚠️ move | `usage[import]` | |
| `<export>` | ⚠️ move | `usage[export]` | |
| `<foreignKey>` | ⚠️ move+reformat | `entity_reference` | This tag is outside of `<fields>` in the xml but doesn't need to be. Let's move it into the getFields array. |
| `<dynamicForeignKey>` | ⚠️ move+reformat | `entity_reference` | Conceptually the same as above so can share the same name. |
| `<permission>` | ⚠️ reformat | `permission` | Convert `<or>` tags to nested array format used by `CRM_Core_Permisison::check()`. |
| `<drop>` | ❌ remove | | `<drop>` designates a field has been dropped, but in that case let's just [remove it](https://github.com/civicrm/civicrm-core/pull/18244) from the array as nothing else was being done with it. |
| `<rule>` | ❌ remove | | Unused as of [PR#29611](https://github.com/civicrm/civicrm-core/pull/29611). |
| `<headerPattern>` | ❌ remove | | Unused as of [PR#29612](https://github.com/civicrm/civicrm-core/pull/29612). |
| `<dataPattern>` | ❌ remove | | Appears to be unused in `universe`. |
| `<fulltext/>` | ❌ remove | | Apparently unused. Ignored by GenCode when writing DAOs. |