civicrm-core.git
2 years agoMerge pull request #23713 from colemanw/globFix
Seamus Lee [Tue, 7 Jun 2022 21:20:48 +0000 (07:20 +1000)]
Merge pull request #23713 from colemanw/globFix

PHP8.1 - Fix deprecated passing null to glob

2 years agoMerge pull request #23704 from eileenmcnaughton/try
colemanw [Tue, 7 Jun 2022 19:49:18 +0000 (15:49 -0400)]
Merge pull request #23704 from eileenmcnaughton/try

Expand try-catch to whole function

2 years agoPHP8.1 - Fix deprecated passing null to glob
Coleman Watts [Tue, 7 Jun 2022 18:56:08 +0000 (14:56 -0400)]
PHP8.1 - Fix deprecated passing null to glob

2 years agoMerge pull request #23710 from eileenmcnaughton/civi_import
Yashodha Chaku [Tue, 7 Jun 2022 16:25:17 +0000 (21:55 +0530)]
Merge pull request #23710 from eileenmcnaughton/civi_import

Minor simplification - use `$self->getContactType(),`

2 years agoMerge pull request #23620 from bugfolder/8_move_session_start
demeritcowboy [Tue, 7 Jun 2022 12:59:00 +0000 (08:59 -0400)]
Merge pull request #23620 from bugfolder/8_move_session_start

dev/backdrop#8 - Move session start into CMS-specific classes.

2 years agoMerge pull request #23708 from eileenmcnaughton/date
Monish Deb [Tue, 7 Jun 2022 11:58:41 +0000 (17:28 +0530)]
Merge pull request #23708 from eileenmcnaughton/date

dev/core#2325 Fix handling of seconds on import

2 years agoMinor simplification - use
Eileen McNaughton [Tue, 7 Jun 2022 10:00:51 +0000 (22:00 +1200)]
Minor simplification - use

2 years agodev/core#2325 Fix handling of seconds on import
Eileen McNaughton [Tue, 7 Jun 2022 07:51:29 +0000 (19:51 +1200)]
dev/core#2325 Fix handling of seconds on import

This addresses an issue where the following date time has the time component
stripped

2012-12-12 07:12:56

Without the seconds - ie

2012-12-12 07:12

Note that I do have a test in a PR for the import where

2 years agoMerge pull request #23692 from eileenmcnaughton/contact_out
Eileen McNaughton [Tue, 7 Jun 2022 02:57:59 +0000 (14:57 +1200)]
Merge pull request #23692 from eileenmcnaughton/contact_out

Import - make tracking fields import-specific

2 years agoExpand try-catch to whole function
Eileen McNaughton [Tue, 7 Jun 2022 02:57:22 +0000 (14:57 +1200)]
Expand try-catch to whole function

2 years agoMerge pull request #23701 from eileenmcnaughton/unused
Seamus Lee [Tue, 7 Jun 2022 02:39:53 +0000 (12:39 +1000)]
Merge pull request #23701 from eileenmcnaughton/unused

Remove unused properties

2 years agoFix merge resolution issue
Eileen McNaughton [Tue, 7 Jun 2022 01:11:32 +0000 (13:11 +1200)]
Fix merge resolution issue

2 years agoMerge pull request #23700 from eileenmcnaughton/import_cont_err
colemanw [Tue, 7 Jun 2022 00:32:03 +0000 (20:32 -0400)]
Merge pull request #23700 from eileenmcnaughton/import_cont_err

Make try-catch more catchy

2 years agoMerge pull request #23702 from colemanw/loadingPlaceholders
Eileen McNaughton [Tue, 7 Jun 2022 00:23:53 +0000 (12:23 +1200)]
Merge pull request #23702 from colemanw/loadingPlaceholders

SearchKit - Make loading placeholders configurable

2 years agoFix merge resolution mistake
Eileen McNaughton [Mon, 6 Jun 2022 02:47:11 +0000 (14:47 +1200)]
Fix merge resolution mistake

2 years agoImprove codes & testing
Darrick Servis [Mon, 6 Jun 2022 00:32:24 +0000 (12:32 +1200)]
Improve codes & testing

2 years agoMove validateValues to parent as now generic
Eileen McNaughton [Mon, 6 Jun 2022 00:04:23 +0000 (12:04 +1200)]
Move validateValues to parent as now generic

2 years agoFix Record duplicates multiple contacts contact import exception.
Darrick Servis [Sun, 5 Jun 2022 19:36:15 +0000 (12:36 -0700)]
Fix Record duplicates multiple contacts contact import exception.

Add csv file required for test.

2 years agoAdd import-specific tracking fields
Eileen McNaughton [Sun, 5 Jun 2022 00:43:41 +0000 (12:43 +1200)]
Add import-specific tracking fields

2 years agoSimplify try-catch to a single block
Eileen McNaughton [Sat, 4 Jun 2022 23:39:13 +0000 (11:39 +1200)]
Simplify try-catch to a single block

2 years agoRemove extra validation - per the comments it is a duplicate
Eileen McNaughton [Sat, 4 Jun 2022 23:22:03 +0000 (11:22 +1200)]
Remove extra validation - per the comments it is a duplicate

2 years agoMerge pull request #23689 from eileenmcnaughton/member_really_labels
Monish Deb [Mon, 6 Jun 2022 16:48:04 +0000 (22:18 +0530)]
Merge pull request #23689 from eileenmcnaughton/member_really_labels

[Import] [Membership] Cleanup, fix form breakage (unreleased regression)

2 years agoSearchKit - Make loading placeholders configurable
Coleman Watts [Mon, 6 Jun 2022 14:26:28 +0000 (10:26 -0400)]
SearchKit - Make loading placeholders configurable

This allows the admin to control how many (if any) skeleton results are shown
during ajax loading.

It also lightens the colors to make the flashing a bit more subtle.

2 years agoMerge pull request #23648 from colemanw/afformUndo
Monish Deb [Mon, 6 Jun 2022 13:47:51 +0000 (19:17 +0530)]
Merge pull request #23648 from colemanw/afformUndo

Afform - Add undo/redo buttons to the Admin UI

2 years agoRemove unused properties
Eileen McNaughton [Mon, 6 Jun 2022 12:08:02 +0000 (00:08 +1200)]
Remove unused properties

2 years agoMake try-catch more catchy
Eileen McNaughton [Mon, 6 Jun 2022 11:59:30 +0000 (23:59 +1200)]
Make try-catch more catchy

2 years agoUpdates to reflect changes made for QA for import_queue, test to fix validate now...
Eileen McNaughton [Mon, 6 Jun 2022 04:41:42 +0000 (16:41 +1200)]
Updates to reflect changes made for QA for import_queue, test to fix validate now as that is where it fails

2 years agoAdd test to check update-with-id works and date handling works
Eileen McNaughton [Sat, 4 Jun 2022 12:04:53 +0000 (00:04 +1200)]
Add test to check update-with-id works and date handling works

Fix test to test the matching csv (changed by mistake)

2 years agoFix field mapping not loading
Eileen McNaughton [Sat, 4 Jun 2022 11:41:33 +0000 (23:41 +1200)]
Fix field mapping not loading

2 years agoRemove unused variables.
Eileen McNaughton [Sat, 4 Jun 2022 11:24:43 +0000 (23:24 +1200)]
Remove unused variables.

2 years agoEnotice fix
Eileen McNaughton [Sat, 4 Jun 2022 09:15:34 +0000 (21:15 +1200)]
Enotice fix

Enotice fix

2 years agoAdd test for tab-separated file
Eileen McNaughton [Sat, 4 Jun 2022 09:13:05 +0000 (21:13 +1200)]
Add test for tab-separated file

Missed out the csv files

2 years agoMembership form flow tidy-up
Eileen McNaughton [Fri, 3 Jun 2022 23:27:54 +0000 (11:27 +1200)]
Membership form flow tidy-up

2 years agoMember import cleanup - use datasource
Eileen McNaughton [Fri, 3 Jun 2022 23:02:59 +0000 (11:02 +1200)]
Member import cleanup - use datasource

2 years agoUpdate Member import to use labels not names in mapping
Eileen McNaughton [Thu, 26 May 2022 05:37:55 +0000 (17:37 +1200)]
Update Member import to use labels not names in mapping

2 years ago[Import] [Ref] Minor extraction on membership metadata
Eileen McNaughton [Thu, 26 May 2022 07:33:18 +0000 (19:33 +1200)]
[Import] [Ref] Minor extraction on membership metadata

2 years agoAdd extra shared import functions
Eileen McNaughton [Mon, 6 Jun 2022 03:18:53 +0000 (15:18 +1200)]
Add extra shared import functions

This is an attempt to get away from fixing known breakage
being blocked by
https://github.com/civicrm/civicrm-core/pull/23689

These functions should be mostly as-yet-unused, or only minorly changed
but required to fix the known issues

2 years agoMerge pull request #23669 from eileenmcnaughton/import_queue
Eileen McNaughton [Mon, 6 Jun 2022 04:27:14 +0000 (16:27 +1200)]
Merge pull request #23669 from eileenmcnaughton/import_queue

Use UI Queue runner for import

2 years agoFix tests to the updated function signature
Eileen McNaughton [Mon, 6 Jun 2022 02:07:35 +0000 (14:07 +1200)]
Fix tests to the updated function signature

2 years agoMerge pull request #23698 from seamuslee001/fix_price_set_entity_since
Eileen McNaughton [Mon, 6 Jun 2022 00:24:17 +0000 (12:24 +1200)]
Merge pull request #23698 from seamuslee001/fix_price_set_entity_since

[NFC] Fix Since version in Price Set Entity APIv4

2 years agoAlso remove contactFields from createContact signature
Eileen McNaughton [Mon, 6 Jun 2022 00:23:35 +0000 (12:23 +1200)]
Also remove contactFields from createContact signature

2 years agoRemove remaining refs to onDuplicate
Eileen McNaughton [Mon, 6 Jun 2022 00:17:10 +0000 (12:17 +1200)]
Remove remaining refs to onDuplicate

2 years agoMerge pull request #23687 from colemanw/adminAfformPerm
Eileen McNaughton [Sun, 5 Jun 2022 23:29:22 +0000 (11:29 +1200)]
Merge pull request #23687 from colemanw/adminAfformPerm

Afform - Add 'administer afform' permission

2 years agoUse UI Queue runner for import
Eileen McNaughton [Thu, 2 Jun 2022 14:14:34 +0000 (02:14 +1200)]
Use UI Queue runner for import

Additional minor code simplification

Tear down fix

Maybe the var name needs to match in the CI php version

2 years agoMerge pull request #23691 from eileenmcnaughton/contact_type
Seamus Lee [Sun, 5 Jun 2022 22:52:02 +0000 (08:52 +1000)]
Merge pull request #23691 from eileenmcnaughton/contact_type

Add not-yet-used function to allow the import to run in static (queue) context

2 years agoMerge pull request #23688 from eileenmcnaughton/import_cont_tests
Seamus Lee [Sun, 5 Jun 2022 22:51:45 +0000 (08:51 +1000)]
Merge pull request #23688 from eileenmcnaughton/import_cont_tests

Contribution import - tests & fixes on dates, amount

2 years ago[NFC] Fix Since version in Price Set Entity APIv4
Seamus Lee [Sun, 5 Jun 2022 22:42:03 +0000 (08:42 +1000)]
[NFC] Fix Since version in Price Set Entity APIv4

2 years agoMerge pull request #23693 from pradpnayak/pricesetid1
Eileen McNaughton [Sun, 5 Jun 2022 22:24:07 +0000 (10:24 +1200)]
Merge pull request #23693 from pradpnayak/pricesetid1

Typo fix for Entity Id

2 years agoMerge pull request #23694 from pradpnayak/pricesetid2
Eileen McNaughton [Sun, 5 Jun 2022 22:23:44 +0000 (10:23 +1200)]
Merge pull request #23694 from pradpnayak/pricesetid2

Add price set entity api4 support

2 years agoMerge pull request #23696 from mlutfy/mailingSubCancel
Eileen McNaughton [Sun, 5 Jun 2022 22:13:23 +0000 (10:13 +1200)]
Merge pull request #23696 from mlutfy/mailingSubCancel

Mailing List Subscription: remove the cancel button

2 years agoMailing List Subscription: remove the cancel button
Mathieu Lutfy [Sun, 5 Jun 2022 20:20:01 +0000 (16:20 -0400)]
Mailing List Subscription: remove the cancel button

2 years agoAdd price set entity api4 support
Pradeep Nayak [Sun, 5 Jun 2022 18:58:27 +0000 (19:58 +0100)]
Add price set entity api4 support

2 years agoTypo fix for Entity Id
Pradeep Nayak [Sun, 5 Jun 2022 18:55:44 +0000 (19:55 +0100)]
Typo fix for Entity Id

2 years agoAdd runImport function
Eileen McNaughton [Sat, 4 Jun 2022 22:32:43 +0000 (10:32 +1200)]
Add runImport function

This is required both for the queue fix and for QA fixes on the import classes.

2 years agoSave different type_id per import
Eileen McNaughton [Sat, 4 Jun 2022 22:27:28 +0000 (10:27 +1200)]
Save different type_id per import

I left it as just contact to start with - but as I've gone further it's clear
we need a type for each import - best done now

2 years agoContribution import - tests & fixes on dates, amount
Eileen McNaughton [Sat, 4 Jun 2022 03:32:08 +0000 (15:32 +1200)]
Contribution import - tests & fixes on dates, amount

Fixes inconsistent  amount handling - these
are issues that I found through writing unit tests to cover them
The money handling was permitting amounts where the
decimal separator was before the thousand. On the dates
there was a format being handled for some fields
but not others

2 years agoExtract saveFieldMapping
Eileen McNaughton [Fri, 3 Jun 2022 23:27:30 +0000 (11:27 +1200)]
Extract saveFieldMapping

2 years agoMerge pull request #23690 from totten/master-queue-visibility
Eileen McNaughton [Sat, 4 Jun 2022 11:17:35 +0000 (23:17 +1200)]
Merge pull request #23690 from totten/master-queue-visibility

APIv4 - Allow creator to read `UserJob` and `Queue` records

2 years agoAPIv4 - Allow creator to read `UserJob` and `Queue` records
Tim Otten [Sat, 4 Jun 2022 08:02:06 +0000 (01:02 -0700)]
APIv4 - Allow creator to read `UserJob` and `Queue` records

Before
------

* `Queue.get` requires permission `administer queues`
* `UserJob.*` requires permission `access CiviCRM`, but it only
   returns records if where the `created_id` matches current-user

After
-----

* `Queue.get` and `UserJob.*` follow similar rules
* Users with permission `administer queues` can view all
* Users with permission `access CiviCRM` can view items where `created_id` matches current-user

2 years agoMerge pull request #23670 from colemanw/searchKitAddPerm
Eileen McNaughton [Sat, 4 Jun 2022 04:00:04 +0000 (16:00 +1200)]
Merge pull request #23670 from colemanw/searchKitAddPerm

SearchKit - Add "administer search_kit" permission

2 years agoMerge pull request #23684 from colemanw/relationshipCachePermissions
Eileen McNaughton [Sat, 4 Jun 2022 02:30:41 +0000 (14:30 +1200)]
Merge pull request #23684 from colemanw/relationshipCachePermissions

RelationshipCache - Set 'get' permissions

2 years agoAfform - Add 'administer afform' permission
Coleman Watts [Sat, 4 Jun 2022 01:39:22 +0000 (21:39 -0400)]
Afform - Add 'administer afform' permission

This permission allow non-admins to compose forms and view submission results.

2 years agoAPIv4 - Use api kernel to validate entity permissions
Coleman Watts [Fri, 3 Jun 2022 03:29:30 +0000 (23:29 -0400)]
APIv4 - Use api kernel to validate entity permissions

This allows extensions to expand permissions via the civi.api.authorize event,
instead of assuming that all permissions are hard-coded in the core entity.

2 years agoSearchKit - Switch nav menu to mgd.php with new permission
Coleman Watts [Thu, 2 Jun 2022 15:06:10 +0000 (11:06 -0400)]
SearchKit - Switch nav menu to mgd.php with new permission

2 years agoMerge pull request #23683 from eileenmcnaughton/import_cont
colemanw [Sat, 4 Jun 2022 01:23:59 +0000 (21:23 -0400)]
Merge pull request #23683 from eileenmcnaughton/import_cont

[Import] [Contribution] Cleanup templates & form variables, following contact pattern

2 years agoMerge pull request #23685 from colemanw/mixinUpdate
Eileen McNaughton [Fri, 3 Jun 2022 23:50:25 +0000 (11:50 +1200)]
Merge pull request #23685 from colemanw/mixinUpdate

[NFC] Mixin - update version tags and add comment for new version of mgd-php

2 years agoUse getTransformedValue more & really old code less
Eileen McNaughton [Fri, 3 Jun 2022 06:34:50 +0000 (18:34 +1200)]
Use getTransformedValue more & really old code less

2 years agoCleanup templates & form variables, following contact pattern
Eileen McNaughton [Fri, 3 Jun 2022 05:12:05 +0000 (17:12 +1200)]
Cleanup templates & form variables, following contact pattern

2 years agoFix fatal when going back from MapField due to no dataSource
Eileen McNaughton [Fri, 3 Jun 2022 03:24:14 +0000 (15:24 +1200)]
Fix fatal when going back from MapField due to no dataSource

2 years agoAdd import labels fixes that I figured out doing memberhsip
Eileen McNaughton [Fri, 3 Jun 2022 03:23:29 +0000 (15:23 +1200)]
Add import labels fixes that I figured out doing memberhsip

Importantly do_not_import should be added

2 years agoMerge pull request #23686 from demeritcowboy/primary-ts
colemanw [Fri, 3 Jun 2022 20:54:26 +0000 (16:54 -0400)]
Merge pull request #23686 from demeritcowboy/primary-ts

dev/core#3481 - Don't translate css classes

2 years agodon't translate css classes
demeritcowboy [Fri, 3 Jun 2022 18:48:30 +0000 (14:48 -0400)]
don't translate css classes

2 years agoMixin - update version tags and add comment for new version of mgd-php
Coleman Watts [Fri, 3 Jun 2022 18:19:05 +0000 (14:19 -0400)]
Mixin - update version tags and add comment for new version of mgd-php

2 years agoMerge pull request #23680 from eileenmcnaughton/contact_map
colemanw [Fri, 3 Jun 2022 16:54:39 +0000 (12:54 -0400)]
Merge pull request #23680 from eileenmcnaughton/contact_map

Contact import - extract common code, make tags & groups queue-friendly

2 years agoRelationshipCache - Set 'get' permissions to be the same as for 'Relationship' entity
Coleman Watts [Fri, 3 Jun 2022 16:47:08 +0000 (12:47 -0400)]
RelationshipCache - Set 'get' permissions to be the same as for 'Relationship' entity

This gives lesser-permissioned users access to the RelationshipCache entity, for Search Kit.

2 years agoMerge pull request #23283 from eileenmcnaughton/import_saved_map
Tim Otten [Fri, 3 Jun 2022 07:11:04 +0000 (00:11 -0700)]
Merge pull request #23283 from eileenmcnaughton/import_saved_map

[REF] Remove handling for non-existent 'savedMapping' field

2 years agoAdd generic PreProcess
Eileen McNaughton [Fri, 3 Jun 2022 06:46:19 +0000 (18:46 +1200)]
Add generic PreProcess

2 years agoMove setImportStatus to parent
Eileen McNaughton [Fri, 3 Jun 2022 06:44:33 +0000 (18:44 +1200)]
Move setImportStatus to parent

m

2 years agoAdd generic label get function - not used yet
Eileen McNaughton [Fri, 3 Jun 2022 06:42:23 +0000 (18:42 +1200)]
Add generic label get function - not used yet

2 years agoFix flow for groups & tags
Eileen McNaughton [Thu, 2 Jun 2022 09:13:27 +0000 (21:13 +1200)]
Fix flow for groups & tags

The new way is
- create the tags & groups at the form layer & only the ids
go to the parser - which adds them

This patch should be a nullop in terms of the efficiency of these

2 years agoContact import - extract assignments to be used by other forms
Eileen McNaughton [Fri, 3 Jun 2022 04:33:40 +0000 (16:33 +1200)]
Contact import - extract assignments to be used by other forms

2 years agoExtract common part of MapTable.tpl
Eileen McNaughton [Fri, 3 Jun 2022 03:06:37 +0000 (15:06 +1200)]
Extract common part of MapTable.tpl

2 years agoSearchKit - Add "administer SearchKit" permission
Coleman Watts [Thu, 2 Jun 2022 14:26:30 +0000 (10:26 -0400)]
SearchKit - Add "administer SearchKit" permission

This permission allows non-admins to use search kit.
Previously the user needed 'administer CiviCRM data' permission.

Fixes dev/core#3457

2 years agoMerge pull request #23675 from demeritcowboy/test-sequential
Eileen McNaughton [Fri, 3 Jun 2022 01:40:11 +0000 (13:40 +1200)]
Merge pull request #23675 from demeritcowboy/test-sequential

[NFC] Failing test for api chain using sequential

2 years agoMerge pull request #23676 from eileenmcnaughton/white
Eileen McNaughton [Fri, 3 Jun 2022 01:37:16 +0000 (13:37 +1200)]
Merge pull request #23676 from eileenmcnaughton/white

Reformat whitespace

2 years agoMerge pull request #22762 from totten/master-queue-api4-alt
Eileen McNaughton [Fri, 3 Jun 2022 01:21:56 +0000 (13:21 +1200)]
Merge pull request #22762 from totten/master-queue-api4-alt

(dev/core#1304) Queues - Allow background worker to drive tasks via APIv4

2 years agoMerge pull request #23520 from eileenmcnaughton/old_code
Tim Otten [Fri, 3 Jun 2022 00:54:36 +0000 (17:54 -0700)]
Merge pull request #23520 from eileenmcnaughton/old_code

Deprecate stuff getting super deep into the BAO unformatted

2 years agofailing test for api chain with sequential
demeritcowboy [Thu, 2 Jun 2022 23:47:19 +0000 (19:47 -0400)]
failing test for api chain with sequential

2 years agoMerge pull request #23666 from eileenmcnaughton/import_combo
Mathieu Lu [Thu, 2 Jun 2022 23:56:31 +0000 (19:56 -0400)]
Merge pull request #23666 from eileenmcnaughton/import_combo

Contact Import cleanup - includes fixes to contact matchine

2 years agoReformat whitespace
Eileen McNaughton [Thu, 2 Jun 2022 23:51:04 +0000 (11:51 +1200)]
Reformat whitespace

2 years agoMerge pull request #23672 from seamuslee001/fix_sequential_enforcement
Seamus Lee [Thu, 2 Jun 2022 23:39:36 +0000 (09:39 +1000)]
Merge pull request #23672 from seamuslee001/fix_sequential_enforcement

APIv3 - Fix regression in handling chained calls with `sequential`

2 years agoMerge pull request #23671 from seamuslee001/master
Seamus Lee [Thu, 2 Jun 2022 21:20:49 +0000 (07:20 +1000)]
Merge pull request #23671 from seamuslee001/master

Fix issue #116 api3 chain check_permissions

2 years ago[REF] Fix issue where forceing sequential broke webform API chained usage
Seamus Lee [Thu, 2 Jun 2022 21:18:21 +0000 (07:18 +1000)]
[REF] Fix issue where forceing sequential broke webform API chained usage

2 years agoFix issue #116 api3 chain check_permissions
Rich [Tue, 31 May 2022 22:58:34 +0000 (22:58 +0000)]
Fix issue #116 api3 chain check_permissions

2 years agoCivi\Api4\Queue - Add APIs for claiming and running enqueued tasks
Tim Otten [Wed, 2 Feb 2022 08:41:03 +0000 (00:41 -0800)]
Civi\Api4\Queue - Add APIs for claiming and running enqueued tasks

2 years agoCRM_Queue_TaskRunner - Add background-friendly handler for `CRM_Queue_Task`s
Tim Otten [Wed, 2 Feb 2022 08:29:13 +0000 (00:29 -0800)]
CRM_Queue_TaskRunner - Add background-friendly handler for `CRM_Queue_Task`s

2 years agoSqlParallel - Implement BatchQueueInterface
Tim Otten [Fri, 11 Feb 2022 09:07:25 +0000 (01:07 -0800)]
SqlParallel - Implement BatchQueueInterface

Before
------

Each of the `CRM_Queue_Queue_*` drivers supports a set of methods for
claiming/releasing one queue-item at a time (eg `claimItem()`,
`releaseItem()`, `deleteItem()`).

After
-----

All drivers still support the same queue-item methods.  Additionally, the
`SqlParallel` driver supports batch-oriented equivalents (`claimItems()`,
`deleteItems()`, etc).

Comments
--------

I initially looked at updating all of the drivers to support queues.  There
were a few obstacles.  Firstly, batched-claims seem semantically
questionable for queues that run 1-by-1 (`Sql`, `Memory`).  Secondly, there
are a few extensions in contrib that extend these classes and override
methods (consequently, they're looking for stable signatures).

The approach here seemed to resolve those two concerns in an OOP-safe way:
define an optional interface (`BatchQueueInterface`) which can be used to
mark enhanced functionality on queues where it makes sense (eg
`SqlParallel`).

2 years agoCRM_Queue_Queue_* - Respect `$queueSpec['lease_time']` (if given)
Tim Otten [Fri, 11 Feb 2022 06:12:40 +0000 (22:12 -0800)]
CRM_Queue_Queue_* - Respect `$queueSpec['lease_time']` (if given)

Before: The lease-time is one of the following:

1. A value requested at runtime
2. The constant 3600

After: The lease-time is either supplied as

1. A value requested at runtime
2. A value configured for the queue
3. The constant 3600

2 years agoCRM_Queue_Queue_* - Respect `$queueSpec['retry_interval']` (if given)
Tim Otten [Wed, 2 Feb 2022 07:22:31 +0000 (23:22 -0800)]
CRM_Queue_Queue_* - Respect `$queueSpec['retry_interval']` (if given)

Background:

* A queue runner should call `releaseItem()` if it tries and aborts some task.
* The `retry_interval` is defined as the extra time to wait before trying again.

Before: The `releaseItem()` always releases for immediate execution.

After: The `releaseItem()` checks `retry_interval`.  If it's set, then it
will add an extra delay before retrying.

2 years agoCRM_Queue_Queue_* - Track and report `run_count` for each item
Tim Otten [Fri, 11 Feb 2022 03:32:02 +0000 (19:32 -0800)]
CRM_Queue_Queue_* - Track and report `run_count` for each item

Before: Whenever you `claimItem()` from the queue, it marks the item `release_time`.

After: Whenever you `claimItem()` from the queue, it marks _both_ the
`release_time` and the `run_count`.

Comments:

* This is the basis for enforcing a `retry_limit` policy.

* This doesn't require any extra queries or joins - it fits into the
  existing update query.