CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2022-06-15T11:19:25Zhttps://lab.civicrm.org/dev/core/-/issues/3628Add pre/post hook for CRM_Mailing_BAO_MailingJob2022-06-15T11:19:25ZMonish DebAdd pre/post hook for CRM_Mailing_BAO_MailingJobThis ticket is about adding pre, post hook to MailingJob and it involve:
1. Call the pre/post hook inside `CRM_Mailing_BAO_MailingJob::create()`
2. Add `CRM_Mailing_BAO_MailingJob::deleteMailingJob` to delete Mailing Jobs and add pre/pos...This ticket is about adding pre, post hook to MailingJob and it involve:
1. Call the pre/post hook inside `CRM_Mailing_BAO_MailingJob::create()`
2. Add `CRM_Mailing_BAO_MailingJob::deleteMailingJob` to delete Mailing Jobs and add pre/post delete hook
3. Replace all the DAO call with corresponding create and delete fn in the codebase.Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/3608getRecipients() appears to use a WHERE clause as an ORDER BY clause2022-06-11T14:55:55ZkengetRecipients() appears to use a WHERE clause as an ORDER BY clauseSee https://github.com/civicrm/civicrm-core/commit/906298d3f63825adbee0e85963d89354edf8acf1#r30370554See https://github.com/civicrm/civicrm-core/commit/906298d3f63825adbee0e85963d89354edf8acf1#r303705545.8https://lab.civicrm.org/dev/core/-/issues/3600Bounce processing fails for 4-byte unicode characters2022-06-11T14:55:27ZtschuettlerBounce processing fails for 4-byte unicode charactersWhen the bounced message contains any 4-byte unicode character, it cannot be saved to the database due to the currently missing support for utf8mb4 in CiviCRM.
Error Log:
```
[info] $backTrace = #0 /opt/buildkit/build/dmaster/sites/all...When the bounced message contains any 4-byte unicode character, it cannot be saved to the database due to the currently missing support for utf8mb4 in CiviCRM.
Error Log:
```
[info] $backTrace = #0 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Core/Error.php(948): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/PEAR.php(921): CRM_Core_Error::exceptionHandler(Object(DB_Error))
#2 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB.php(985): PEAR_Error->__construct("DB Error: unknown error", -1, 16, (Array:2), "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#3 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/PEAR.php(575): DB_Error->__construct(-1, 16, (Array:2), "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#4 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -1, 16, (Array:2), "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...", "DB_Error", TRUE)
#5 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/common.php(1907): PEAR->__call("raiseError", (Array:7))
#6 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/mysqli.php(933): DB_common->raiseError(-1, NULL, NULL, "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...", "1366 ** Incorrect string value: '\xF0\x9F\x8C\xB4' for column 'bounce_reason'...")
#7 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/mysqli.php(403): DB_mysqli->mysqliRaiseError()
#8 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/common.php(1216): DB_mysqli->simpleQuery("INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#9 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/DataObject.php(2415): DB_common->query("INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#10 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/DataObject.php(1040): DB_DataObject->_query("INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#11 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Core/DAO.php(571): DB_DataObject->insert()
#12 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Mailing/Event/BAO/Bounce.php(87): CRM_Core_DAO->save()
#13 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/api/v3/Mailing.php(349): CRM_Mailing_Event_BAO_Bounce::create((Array:7))
#14 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Provider/MagicFunctionProvider.php(100): civicrm_api3_mailing_event_bounce((Array:7))
#15 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Kernel.php(169): Civi\API\Provider\MagicFunctionProvider->invoke((Array:9))
#16 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Kernel.php(100): Civi\API\Kernel->runRequest((Array:9))
#17 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/api/api.php(23): Civi\API\Kernel->runSafe("Mailing", "event_bounce", (Array:6), NULL)
#18 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Utils/Mail/EmailProcessor.php(341): civicrm_api("Mailing", "event_bounce", (Array:6))
#19 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Utils/Mail/EmailProcessor.php(59): CRM_Utils_Mail_EmailProcessor::_process(TRUE, Object(CRM_Core_DAO_MailSettings), 0)
#20 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/api/v3/Job.php(403): CRM_Utils_Mail_EmailProcessor::processBounces(0)
#21 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Provider/MagicFunctionProvider.php(100): civicrm_api3_job_fetch_bounces((Array:3))
#22 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Kernel.php(169): Civi\API\Provider\MagicFunctionProvider->invoke((Array:9))
#23 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Kernel.php(100): Civi\API\Kernel->runRequest((Array:9))
#24 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/api/api.php(23): Civi\API\Kernel->runSafe("job", "fetch_bounces", (Array:2), NULL)
#25 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/Test/Api3TestTrait.php(262): civicrm_api("job", "fetch_bounces", (Array:2))
#26 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/Test/Api3TestTrait.php(151): CiviUnitTestCase->civicrm_api("job", "fetch_bounces", (Array:2))
#27 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/tests/phpunit/CRM/Utils/Mail/EmailProcessorTest.php(78): CiviUnitTestCase->callAPISuccess("job", "fetch_bounces", (Array:2))
#28 [internal function](): CRM_Utils_Mail_EmailProcessorTest->testBounceProcessingUTF8mb4()
#29 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/Framework/TestCase.php(1062): ReflectionMethod->invokeArgs(Object(CRM_Utils_Mail_EmailProcessorTest), (Array:0))
#30 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/tests/phpunit/CiviTest/CiviUnitTestCase.php(196): PHPUnit_Framework_TestCase->runTest()
#31 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/Framework/TestCase.php(913): CiviUnitTestCase->runTest()
#32 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/Framework/TestResult.php(686): PHPUnit_Framework_TestCase->runBare()
#33 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/Framework/TestCase.php(868): PHPUnit_Framework_TestResult->run(Object(CRM_Utils_Mail_EmailProcessorTest))
#34 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/Framework/TestSuite.php(733): PHPUnit_Framework_TestCase->run(Object(PHPUnit_Framework_TestResult))
#35 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/TextUI/TestRunner.php(517): PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult))
#36 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/TextUI/Command.php(186): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), (Array:54), TRUE)
#37 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/TextUI/Command.php(116): PHPUnit_TextUI_Command->run((Array:11), TRUE)
#38 /opt/buildkit/extern/phpunit5/phpunit5.phar(598): PHPUnit_TextUI_Command::main()
#39 {main}
```5.11https://lab.civicrm.org/dev/core/-/issues/3599Test mailings create new contacts even when "Add Contacts" permission is not ...2022-06-11T14:55:17ZJonGoldTest mailings create new contacts even when "Add Contacts" permission is not present.### Overview
When sending a test mail, CiviCRM will check if the email matches an existing contact in the database. If it does, it uses that contact ID; if not, it creates a contact. However, it creates a contact without regard for wh...### Overview
When sending a test mail, CiviCRM will check if the email matches an existing contact in the database. If it does, it uses that contact ID; if not, it creates a contact. However, it creates a contact without regard for whether a user has permission to add contacts.
### Steps to replicate
* Create a user that does not have the "Add Contacts" permission.
* With that user, create a new mailing (traditional or Mosaico, doesn't matter).
* Send a test ("draft") mail to an email address that doesn't exist in the database.
### Expected behavior
No new contact is created.
### Actual behavior
A new contact is created.5.29.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3589Report on scheduled mailing fails with Notice: Undefined property: CRM_Mailin...2022-06-11T14:55:03ZspalmstromReport on scheduled mailing fails with Notice: Undefined property: CRM_Mailing_BAO_Mailing::$mailing_job_start_date in <joomla_root>/administrator/components/com_civicrm/civicrm/CRM/Mailing/BAO/Mailing.php on line 2031This occurs in Joomla after upgrading to CiviCRM 5.19.0. Line 175 in /administrator/components/com_civicrm/civicrm/CRM/Mailing/DAO/MailingJob.php should read:
'start_date' => [
not
'mailing_job_start_date' => [This occurs in Joomla after upgrading to CiviCRM 5.19.0. Line 175 in /administrator/components/com_civicrm/civicrm/CRM/Mailing/DAO/MailingJob.php should read:
'start_date' => [
not
'mailing_job_start_date' => [5.19.1https://lab.civicrm.org/dev/core/-/issues/3581Email to activity processing: New feature to skip emails which do not have a ...2022-06-11T14:54:48ZJamie Novick - CompucoEmail to activity processing: New feature to skip emails which do not have a Case ID or Case token- As a CiviCRM administrator
- I would like to configure whether CiviCRM will process emails without a case ID (or case “token”) in the subject line
- so that I can ensure that emails which do not have a case ID are not filed on the con...- As a CiviCRM administrator
- I would like to configure whether CiviCRM will process emails without a case ID (or case “token”) in the subject line
- so that I can ensure that emails which do not have a case ID are not filed on the contact record outside the case by accident.
**How it works currently**
For those a little less familiar with email to activity processing:
CiviCRM will connect to a users MS exchange mailbox and create the following folder structure:
- Inbox
- /CiviCRM
- //CiviMail
- ///ignored
- ///processed
Notes:
- Users simply copy or move emails into the /civicrm folder in their inbox. CiviCRM has a scheduled job that can be configured to run periodically (say every hour) and poll the mailbox folder (Civimail) by IMAP in order to read and process the emails.
- By default CiviCRM will match any email from, to, cc fields to contacts in the CRM and file the email as an activity against those contacts (including recording any attachments as files).
- If however there is a case ID in the subject line (or a case ID "token"*) then CiviCRM will instead file the email straight onto the case itself. The format is: [case #1234] (see: https://issues.civicrm.org/jira/browse/CRM-21446)
- If the email is processed successfully it will be moved to the processed folder.
- If for any reason CiviCRM cannot file the email it will be moved to the ignored folder. This normally happens if the email address is invalid for some reason (please note: emails that are sent internally between staff on exchange server can sometimes have this problem as exchange doesn't always use the external email address but instead uses some local username/domain combination - this maybe something to test and see if it maybe a problem for NEU).
- Note: *When sending out emails from CiviCRM from CiviCase it appends a case ID token - which is a string of characters and not the exact Case ID. This is done to obscure the case ID number in the email. In effect you can have either this token or the case id in the subject line and CiviCRM will file the email correctly.
- More background: https://docs.civicrm.org/sysadmin/en/latest/setup/civimail/inbound/#autofiling-email-activities-via-emailprocessor
**Problem**
For multiple clients they want to use email to activity processing for their casework teams. However sometimes they forget to add the case ID to the subject line of the email and the system incorrectly files the email outside the case - which is a "security" risk as the emails can be sensitive.
As such they would like to be able to specify that the emails being filed from the casework team inbox will only be filed if there is a valid Case ID in the subject line and are skipped if not, and hence there is no risk of the email being filed outside of the case.
**Proposed improvement**
Approach:
When "Used For?" = Email to activity processing
Show an additional option:
- Skip emails which do not have a Case ID or Case token:
- Checkbox
- Help text:
- CiviCRM has functionality to file emails which contain the Case ID or Case Hash in the subject line in the format [case #1234] against a case record.
- Where the Case ID or Case Hash is not included CiviCRM will file the email against the contact record, by matching the email addresses on the email with any email addresses of Contact records in CiviCRM.
- Enabling this option will have CiviCRM skip any emails that do not have the Case ID or Case Hash so that the system will only process emails that can be placed on case records.
- Any emails that are not processed will be moved the ignored folder.
- Default null
- If checked:
- Emails which do not have a valid case ID or case token should be moved into the “ignored” folder. (See folders above) after processing and no Activity should be created.
Would be great to know if we can get the magical "concept approved" flag.
We need to work on this quite urgently so if there are no great concerns that would be much appreciated...5.31.0https://lab.civicrm.org/dev/core/-/issues/3579Add pause/resume functionality to civicrm bulk mailing.2022-06-11T14:54:43ZjitendraAdd pause/resume functionality to civicrm bulk mailing.Scenario
Site admin is sending out a big blast but want to send out a press release without waiting for first job to end.Scenario
Site admin is sending out a big blast but want to send out a press release without waiting for first job to end.5.4.0https://lab.civicrm.org/dev/core/-/issues/3572Deduping test email is case sensitive2022-06-11T14:54:27ZMartinDeduping test email is case sensitiveTested on 4.6.38 and 5.6.1.
When composing a mailing, the email address used in the "send test email to" field at the bottom is deduped. This is case sensitive, so fails to match emails that are the same but have different upper/lower c...Tested on 4.6.38 and 5.6.1.
When composing a mailing, the email address used in the "send test email to" field at the bottom is deduped. This is case sensitive, so fails to match emails that are the same but have different upper/lower case combinations. In this case, it will create a new contact with this interesting property: the value in the "email" field shows with the email address flattened to all lowercase, but the display name for the contact shows with the upper/lower case mix used when it was entered to test the mailing.
The upshot of all this is that if I'm putting together a mailing and send 6 test to the same email address (with an uppercase letter), I get 6 new duplicate contacts because it fails to match it each time.
Request to make the dedupe test for this mailing field case insensitive, since in general civi seems to want email addresses to be lowercase when they're used.
I can potentially make this change if someone can point me in the right direction.
Thanks!5.11https://lab.civicrm.org/dev/core/-/issues/3566Public View link does not show from Scheduled and Sent screen2022-06-11T14:54:15ZseamusleePublic View link does not show from Scheduled and Sent screenWhen you view a list of scheduled and sent mailings you cannot access the Public View url link even tho the code suggests it should be availableWhen you view a list of scheduled and sent mailings you cannot access the Public View url link even tho the code suggests it should be available5.10https://lab.civicrm.org/dev/core/-/issues/3557Preview screen doesn't open until recipients list is built on mail compose sc...2022-06-11T14:51:02ZMonish DebPreview screen doesn't open until recipients list is built on mail compose screenTo replicate the issue:
1. Create a new mailing and fill out everything but not the Recipients field.
2. Now select a recipients group that is either very large or is based on a complex smart group. after selecting it -- click preview...To replicate the issue:
1. Create a new mailing and fill out everything but not the Recipients field.
2. Now select a recipients group that is either very large or is based on a complex smart group. after selecting it -- click preview HTML/Text.
The preview window will not open until the recipient count query has completed. This can also be replicated by setting up a mailing with a large/complex group, saving it, then continuing it and immediately clicking preview. the window will not open until the query completes.Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/3553Preview as HTML doesn't open window at all2022-06-11T14:50:54ZscardiniusPreview as HTML doesn't open window at allCRM_Mailing_BAO_TrackableURL::getTrackerURL() requires id of mailing but after https://lab.civicrm.org/dev/mail/issues/20 mailing_id is removed from params to Mailing.preview
https://github.com/civicrm/civicrm-core/commit/0075b0cb75e542...CRM_Mailing_BAO_TrackableURL::getTrackerURL() requires id of mailing but after https://lab.civicrm.org/dev/mail/issues/20 mailing_id is removed from params to Mailing.preview
https://github.com/civicrm/civicrm-core/commit/0075b0cb75e5422660366acf280538167369d8ba#diff-d08e5d3ceca1972df6d467b2824ffab5R279
errors from api rest
```
{"error_code":"unknown error","sql":"INSERT INTO civicrm_mailing_trackable_url (url ) VALUES ('https:\/\/onet.pl' )
[nativecode=1364 ** Field 'mailing_id' doesn't have a default value]",
"tip":"add debug=1 to your API call to have more info about the error",
"is_error":1,
"error_message":"DB Error: unknown error",
"debug_information":"INSERT INTO civicrm_mailing_trackable_url (url ) VALUES ('https:\/\/onet.pl' ) [nativecode=1364 ** Field 'mailing_id' doesn't have a default value]"}
```5.12.3https://lab.civicrm.org/dev/core/-/issues/3550Email to activity processing: New feature to make the creation of new contact...2022-06-11T14:50:44ZJamie Novick - CompucoEmail to activity processing: New feature to make the creation of new contacts "optional"**User story:**
- As an administrator
- When filing inbound emails
- I would like to configure whether CiviCRM will create a new contact where a contact does not already exist within the system
- So that I can ensure that new contacts a...**User story:**
- As an administrator
- When filing inbound emails
- I would like to configure whether CiviCRM will create a new contact where a contact does not already exist within the system
- So that I can ensure that new contacts are not created in the system when filing an email.
- In the situation of a case email where the email has a valid Case ID or Case token in the subject line the email should still be filed to a case, even if no contacts are matched.
**How it works currently:**
Currently, when CiviCRM performs email to activity processing, Civi will search CiviCRM for a contact with the relevant email address in the From / To / CC fields and then assign the created activity accordingly.
When CiviCRM cannot find a contact with a relevant email address, it simply creates a new "stub" contact with the email address.
**The problem**
For multiple reasons this is might not be desirable behaviour:
This is a security risk, as in most cases CiviCRM email-activity processing works off a mailbox, that might need to be public. As such it is possible that an unscrupulous third party may chose to spam your mailbox and thus spam your CRM with unwanted emails and content. Whilst this can be mitigated by having your automated filing on a separate mailbox, it might be preferable to simply only file the emails for contacts who already exist in your system, and to selectively add the rest.
Also, from a GDPR perspective it may not be desirable to hold the details of the persons who sent an email, whilst the contents of the email might be important (i.e. the attachments) especially in a casework context.
**Proposed solution:**
Add an additional option to the email to activity processing configurations (civicrm/admin/mailSettings?action=add&reset=1)
- When "Used For?" = Email to activity processing
- Show an additional option:
- "Do not create new contacts when filing emails"
- Checkbox
- Default null
- Help:
- If this option is enabled, CiviCRM will not create new contacts when filing emails.
- The email should also always be filed as an activity.
If checked:
- When CiviCRM checks for a matching contact, if no matching contact is found it will not create one and the email is skipped
- unless the email has a valid Case ID or Case token in the subject line, in which it will still be filed against the case, but no contacts will be linked to the email.5.31.0https://lab.civicrm.org/dev/core/-/issues/3544Bounce processing doesn't catch pattern "user doesn't exist"2022-06-11T14:50:31ZDetlev SieberBounce processing doesn't catch pattern "user doesn't exist"CiviCRM bounce processing analyzes the bounce text patterns, and decides what kind of bounce type it is. This is a fragile process, but there seems to be no better solution, since there is no general standardization of bounce patterns.
...CiviCRM bounce processing analyzes the bounce text patterns, and decides what kind of bounce type it is. This is a fragile process, but there seems to be no better solution, since there is no general standardization of bounce patterns.
Some email providers throw the bounce pattern "user doesn't exist", which is not found, and therefore results in bounce_type "syntax". However, this bounce pattern should result in immediately switching the email address to "inactive".
Solution is:
> insert into civicrm_mailing_bounce_pattern (bounce_type_id, pattern) values (6, 'user doesn\'t exist');
5.9Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/3542Move the cache for `CRM_Extension_Browser` out of the filesystem and use a `S...2022-06-16T02:21:42ZtiotsopMove the cache for `CRM_Extension_Browser` out of the filesystem and use a `SqlGroup` insteadThe current code in `CRM_Extension_Browser` is coded specifically for an adhoc, file-based caching logic. The recommendation standard is basically to change the backing/storage from a JSON file to the civicrm_cachetable (at least, for th...The current code in `CRM_Extension_Browser` is coded specifically for an adhoc, file-based caching logic. The recommendation standard is basically to change the backing/storage from a JSON file to the civicrm_cachetable (at least, for the typical usage).
Ref [#2](https://lab.civicrm.org/dev/cloud-native/issues/2#note_4790)5.52.0tiotsoptiotsophttps://lab.civicrm.org/dev/core/-/issues/3522Soften messages for read-only extensionsDir2022-06-11T14:41:07ZtiotsopSoften messages for read-only extensionsDirImprove messaging when someone has a different policy for managing `extensionsDir`.This a continuation of this [PR](https://github.com/civicrm/civicrm-core/pull/11895). Most of the messaging update has already been done. There is only on...Improve messaging when someone has a different policy for managing `extensionsDir`.This a continuation of this [PR](https://github.com/civicrm/civicrm-core/pull/11895). Most of the messaging update has already been done. There is only one message ("Read-Only Extensions"). It still encourages web-writable policy, but it lowers the severity and presents it a choice ("if you want X, do Y").
Probably, changing the `warning` into a `notice` is the only thing to update:- a `warning` implies something is wrong, while a `notice` says it's merely out of the ordinary.5.9tiotsoptiotsophttps://lab.civicrm.org/dev/core/-/issues/3404Should back-end users be able to add event registration selections for sold o...2024-01-15T05:03:37ZlarsssandergreenShould back-end users be able to add event registration selections for sold out price set items?Currently, if a price set selection is sold out, back-end users can add this selection on Events - Register Event Participant or from search, but if they edit a existing registration (e.g. from the Contact record, Events, View, Change Se...Currently, if a price set selection is sold out, back-end users can add this selection on Events - Register Event Participant or from search, but if they edit a existing registration (e.g. from the Contact record, Events, View, Change Selections) they cannot either add or subtract from sold out selections as these are disabled/frozen.
Obviously, back-end users should be able to remove registrants from sold out selections and both of these forms should work in the same way for adding registrations (i.e. either you should or shouldn't be able to add registrants to sold out items on both).
I think back-end users should also be able to add registrants to sold out price set selections. There could be many reasons for orgs to want to enabled their staff to add event registrants to selections (special treatment for VIPs, entering paper registrations, etc). I propose to unfreeze these fields on the Change Selections form, but keep the "Sold out" text so that back-end users can see these selections are sold out, at the same time adding "Sold out" text on the Events - Register Event Participant form.
With this change, staff will be able to see a selection is sold out, but make the choice to add a registrant nonetheless. The work around we use currently is to temporarily increase the price set selection limit and then decrease it again after adding the selection, but this is awkward and not obvious.
I think this could be accomplished by moving the [check here from the registration form](https://github.com/civicrm/civicrm-core/blob/5db0bc3c1f54eaca4307f103a73bda596ae914d6/CRM/Event/Form/Registration/Register.php#L764) to [here in the price field](https://github.com/civicrm/civicrm-core/blob/35093fbff08842016c1ef01042e225b9cb5ffec2/CRM/Price/BAO/PriceField.php#L353). I will submit a PR if supported.https://lab.civicrm.org/dev/core/-/issues/3390API different from Form when setting contrib status to failed for event reg2024-01-12T05:03:26ZJoeMurrayAPI different from Form when setting contrib status to failed for event regUsing the API to set a Contribution's status to "Failed" does not also update its related Participant to "Cancelled", unlike when you edit via the UI.
Move business logic from Form
https://github.com/civicrm/civicrm-core/blob/master/CR...Using the API to set a Contribution's status to "Failed" does not also update its related Participant to "Cancelled", unlike when you edit via the UI.
Move business logic from Form
https://github.com/civicrm/civicrm-core/blob/master/CRM/Contribute/BAO/Contribution.php#L1938
to BAO as per discussion at https://chat.civicrm.org/civicrm/pl/gms1or8wyfni3q3boj8cx1ktxamattwiremjw@mjwconsult.co.ukmattwiremjw@mjwconsult.co.ukhttps://lab.civicrm.org/dev/core/-/issues/3389Implement tests for Event Registration pages2024-01-11T05:03:25Zmattwiremjw@mjwconsult.co.ukImplement tests for Event Registration pages`CRM/Event/Form/Registration/Register.php` needs to be refactored like `CRM/Contribute/Form/Contribution.php` so that we can implement tests on submit.
`CRM_Event_Form_Registration_Register::postProcess()` needs splitting up to call a n...`CRM/Event/Form/Registration/Register.php` needs to be refactored like `CRM/Contribute/Form/Contribution.php` so that we can implement tests on submit.
`CRM_Event_Form_Registration_Register::postProcess()` needs splitting up to call a new function `CRM_Event_Form_Registration_Register::submit()`.
Then we need to add `CRM_Event_Form_Registration_Register::testSubmit()` and write some tests to call this function.https://lab.civicrm.org/dev/core/-/issues/3338Add 'membership start date' as an option when creating Scheduled Reminder bas...2022-04-22T16:17:42ZjitendraAdd 'membership start date' as an option when creating Scheduled Reminder based on MembershipThis is what we get as options
![image](/uploads/022c3bd1a4f8dbb12a4b6f034de33c55/image.png)
This ticket aims to add membership start date to the option list.
@eileen @totten I don't see any logical reason for not including it before....This is what we get as options
![image](/uploads/022c3bd1a4f8dbb12a4b6f034de33c55/image.png)
This ticket aims to add membership start date to the option list.
@eileen @totten I don't see any logical reason for not including it before. Have I missed something? Do you see any downsides on adding start date as an option?jitendrajitendrahttps://lab.civicrm.org/dev/core/-/issues/3320Admin Membership type is displayed on Public contribution page.2022-04-22T16:17:02ZjitendraAdmin Membership type is displayed on Public contribution page.When visibility of membership type is updated to `Admin`, it is still displayed on front-end contribution pages. Steps to replicate -
- Create a membership type.
- Add it to a contribution page.
- Set visibility of the type to `Admin`.
...When visibility of membership type is updated to `Admin`, it is still displayed on front-end contribution pages. Steps to replicate -
- Create a membership type.
- Add it to a contribution page.
- Set visibility of the type to `Admin`.
- Navigate to contribution page - the membership type is still displayed on the page.jitendrajitendra