civicrm-core.git
4 years agoMerge pull request #18338 from agileware/CIVICRM-1555
Seamus Lee [Mon, 7 Sep 2020 01:44:55 +0000 (11:44 +1000)]
Merge pull request #18338 from agileware/CIVICRM-1555

Change wording on the Opt Out and Unsubscribe pages

4 years agoMerge pull request #18387 from seamuslee001/format_amount_deprecated
Eileen McNaughton [Mon, 7 Sep 2020 01:27:01 +0000 (13:27 +1200)]
Merge pull request #18387 from seamuslee001/format_amount_deprecated

[REF] Mark CRM_Contribute_BAO_Contribution_Utils::formatAmount deprec…

4 years agoMerge pull request #18394 from seamuslee001/ref_memory_usage_create_single_value_alter
Eileen McNaughton [Mon, 7 Sep 2020 01:25:03 +0000 (13:25 +1200)]
Merge pull request #18394 from seamuslee001/ref_memory_usage_create_single_value_alter

[NFC] Aim to reduce memory usage in create single value alter test by…

4 years agoMerge pull request #18392 from demeritcowboy/test-names
Seamus Lee [Mon, 7 Sep 2020 00:44:32 +0000 (10:44 +1000)]
Merge pull request #18392 from demeritcowboy/test-names

[NFC/Test framework] Make class name match file name

4 years agoMerge pull request #18391 from demeritcowboy/utils-array-18207-1
Seamus Lee [Mon, 7 Sep 2020 00:43:52 +0000 (10:43 +1000)]
Merge pull request #18391 from demeritcowboy/utils-array-18207-1

[REF] Swap out CRM_Utils_Array::value() - partial pull out from PR 18207

4 years ago[NFC] Aim to reduce memory usage in create single value alter test by removing xdebug...
Seamus Lee [Sun, 6 Sep 2020 23:47:32 +0000 (09:47 +1000)]
[NFC] Aim to reduce memory usage in create single value alter test by removing xdebug items from comparaison

4 years agoswap out Array::value
demeritcowboy [Sun, 6 Sep 2020 23:37:56 +0000 (19:37 -0400)]
swap out Array::value

4 years agoMerge pull request #18389 from eileenmcnaughton/pp
Seamus Lee [Sun, 6 Sep 2020 23:09:01 +0000 (09:09 +1000)]
Merge pull request #18389 from eileenmcnaughton/pp

[REF] Remove unused lines from loadObjects

4 years agoMerge pull request #18369 from eileenmcnaughton/fail
Seamus Lee [Sun, 6 Sep 2020 22:42:31 +0000 (08:42 +1000)]
Merge pull request #18369 from eileenmcnaughton/fail

Remove inaccessible call to baseIPN failed

4 years ago[REF] Mark CRM_Contribute_BAO_Contribution_Utils::formatAmount deprecated and replace...
Seamus Lee [Sun, 6 Sep 2020 20:37:25 +0000 (06:37 +1000)]
[REF] Mark CRM_Contribute_BAO_Contribution_Utils::formatAmount deprecated and replace its only usage with CRM_Utils_Rule::cleanMoney

4 years ago[REF] Remove unused lines from loadObjects
eileen [Sun, 6 Sep 2020 21:32:41 +0000 (09:32 +1200)]
[REF] Remove unused lines from loadObjects

loadObjects is only called from one place. As we can see the contribution object is
always passed in so we don't need to handle the possibility of it being anything other than a
BAO (I tweaked the error handling around that line too to make it clearer where it was
coming from)

4 years agomismatched classnames
demeritcowboy [Sun, 6 Sep 2020 21:19:44 +0000 (17:19 -0400)]
mismatched classnames

4 years agoMerge pull request #18371 from eileenmcnaughton/key
Seamus Lee [Sun, 6 Sep 2020 20:44:04 +0000 (06:44 +1000)]
Merge pull request #18371 from eileenmcnaughton/key

Rename variable $key to $participantID to make it clear what it is

4 years agoMerge pull request #18383 from eileenmcnaughton/iso
Seamus Lee [Sun, 6 Sep 2020 20:42:16 +0000 (06:42 +1000)]
Merge pull request #18383 from eileenmcnaughton/iso

dev/core#1921 Fix legacy date handling

4 years agoMerge pull request #18384 from eileenmcnaughton/validatepp
Seamus Lee [Sun, 6 Sep 2020 20:42:05 +0000 (06:42 +1000)]
Merge pull request #18384 from eileenmcnaughton/validatepp

Add try catch to main loops on core ipn classes

4 years agoMerge pull request #18386 from demeritcowboy/logging-customfield-notice
Seamus Lee [Sun, 6 Sep 2020 20:40:11 +0000 (06:40 +1000)]
Merge pull request #18386 from demeritcowboy/logging-customfield-notice

dev/core#1989 - E_WARNING when editing custom field with logging turned on

4 years agoe_warning when editing custom field
demeritcowboy [Thu, 3 Sep 2020 00:36:00 +0000 (20:36 -0400)]
e_warning when editing custom field

4 years agoMerge pull request #18352 from eileenmcnaughton/line_move
colemanw [Sun, 6 Sep 2020 16:01:46 +0000 (12:01 -0400)]
Merge pull request #18352 from eileenmcnaughton/line_move

dev/core#1980 Move tax handling from line item api to BAO to make it available from apiv4

4 years agoAdd try catch to main loops on core ipn classes
eileen [Sun, 6 Sep 2020 00:50:55 +0000 (12:50 +1200)]
Add try catch to main loops on core ipn classes

4 years agoMerge pull request #18379 from seamuslee001/report_45
Eileen McNaughton [Sat, 5 Sep 2020 23:53:20 +0000 (11:53 +1200)]
Merge pull request #18379 from seamuslee001/report_45

report#45 Switch out function call CRM_Utils_Array::value and extend …

4 years agodev/core#1921 Fix legacy date handling
eileen [Sat, 5 Sep 2020 23:18:36 +0000 (11:18 +1200)]
dev/core#1921 Fix legacy date handling

Per https://lab.civicrm.org/dev/core/-/issues/1921 this was required before dao->save()
right up until 2014

4 years agoreport#45 Switch out function call CRM_Utils_Array::value and extend test coverage
Seamus Lee [Sat, 5 Sep 2020 21:45:11 +0000 (07:45 +1000)]
report#45 Switch out function call CRM_Utils_Array::value and extend test coverage

Minor fix for MySQL 8

4 years agoMerge pull request #18351 from eileenmcnaughton/line
Seamus Lee [Sat, 5 Sep 2020 22:00:33 +0000 (08:00 +1000)]
Merge pull request #18351 from eileenmcnaughton/line

Add test to cover existing v3 api setting of tax_amount on line items

4 years agoMerge pull request #18377 from seamuslee001/eway_further
Seamus Lee [Sat, 5 Sep 2020 14:33:46 +0000 (00:33 +1000)]
Merge pull request #18377 from seamuslee001/eway_further

[REF] Hide eway extension in UI and only install it if the original e…

4 years agoMerge pull request #18375 from eileenmcnaughton/dep
Eileen McNaughton [Sat, 5 Sep 2020 12:07:47 +0000 (00:07 +1200)]
Merge pull request #18375 from eileenmcnaughton/dep

Remove deprecated ids param

4 years agoMerge pull request #18376 from eileenmcnaughton/ev
Eileen McNaughton [Sat, 5 Sep 2020 12:07:12 +0000 (00:07 +1200)]
Merge pull request #18376 from eileenmcnaughton/ev

Load event title from participantID

4 years agoMerge pull request #18374 from eileenmcnaughton/iso
Eileen McNaughton [Sat, 5 Sep 2020 11:39:12 +0000 (23:39 +1200)]
Merge pull request #18374 from eileenmcnaughton/iso

dev/core#1921 Further removal of iso date handling

4 years ago[REF] Hide eway extension in UI and only install it if the original eway payment...
Seamus Lee [Sat, 5 Sep 2020 05:37:17 +0000 (15:37 +1000)]
[REF] Hide eway extension in UI and only install it if the original eway payment processor is still being used

4 years agoMerge pull request #18370 from KarinG/tidyup_testSubmitContributionPageWithPriceSetQu...
Seamus Lee [Sat, 5 Sep 2020 07:00:21 +0000 (17:00 +1000)]
Merge pull request #18370 from KarinG/tidyup_testSubmitContributionPageWithPriceSetQuantity

Tidy up testSubmitContributionPageWithPriceSetQuantity

4 years agoMerge pull request #18368 from seamuslee001/bundle_public
Seamus Lee [Sat, 5 Sep 2020 07:00:04 +0000 (17:00 +1000)]
Merge pull request #18368 from seamuslee001/bundle_public

[REF] Ensure that all bundle container services are public for Symfon…

4 years agoMerge pull request #18364 from civicrm/5.30
Seamus Lee [Sat, 5 Sep 2020 05:32:58 +0000 (15:32 +1000)]
Merge pull request #18364 from civicrm/5.30

5.30

4 years agoMerge pull request #18349 from seamuslee001/eway_extension
Eileen McNaughton [Sat, 5 Sep 2020 05:32:08 +0000 (17:32 +1200)]
Merge pull request #18349 from seamuslee001/eway_extension

Migrate Eway(Single Currency) Payment Processor Type out into its own…

4 years agoMerge pull request #18366 from seamuslee001/nfc_enablev4_status_pref
Seamus Lee [Sat, 5 Sep 2020 05:16:58 +0000 (15:16 +1000)]
Merge pull request #18366 from seamuslee001/nfc_enablev4_status_pref

[NFC] Enable APIv4 Testing on the statusPrefence API Tests

4 years agoLoad event title from participantID
eileen [Sat, 5 Sep 2020 04:43:39 +0000 (16:43 +1200)]
Load event title from participantID

This is a follow on to https://github.com/civicrm/civicrm-core/pull/18358 - after thinking
more I realised that I had already established this code is rarely reached and by
doing a very small query when it is we can avoid loading the whole event to pass in

Same test applies...

4 years agoRemove deprecated ids param
eileen [Sat, 5 Sep 2020 04:03:30 +0000 (16:03 +1200)]
Remove deprecated ids param

4 years agodev/core#1921 Further removal of iso date handling
eileen [Sat, 5 Sep 2020 03:58:34 +0000 (15:58 +1200)]
dev/core#1921 Further removal of iso date handling

Same deal as https://github.com/civicrm/civicrm-core/pull/18359

4 years agoRename variable key to participantID to make it clear what it is
eileen [Sat, 5 Sep 2020 02:57:31 +0000 (14:57 +1200)]
Rename variable key to participantID to make it clear what it is

4 years agoTidy up testSubmitContributionPageWithPriceSetQuantity
KarinG [Sat, 5 Sep 2020 02:53:18 +0000 (20:53 -0600)]
Tidy up testSubmitContributionPageWithPriceSetQuantity

4 years agoRemove inaccessible call to baseIPN failed
eileen [Sat, 5 Sep 2020 02:50:55 +0000 (14:50 +1200)]
Remove inaccessible call to baseIPN failed

As is now clear the updateContributionStatus function is only accessible to complete
a contribution. This removes the call to baseIPN->failed() as it is unreachable,
along with the hacky handling to support it

4 years ago[REF] Ensure that all bundle container services are public for Symfony v4
Seamus Lee [Sat, 5 Sep 2020 02:50:14 +0000 (12:50 +1000)]
[REF] Ensure that all bundle container services are public for Symfony v4

4 years agoMerge pull request #18357 from eileenmcnaughton/fail
Seamus Lee [Sat, 5 Sep 2020 02:45:29 +0000 (12:45 +1000)]
Merge pull request #18357 from eileenmcnaughton/fail

[REF] Simplify logic on calling self::updateContributionStatus

4 years ago[NFC] Enable APIv4 Testing on the statusPrefence API Tests
Seamus Lee [Sat, 5 Sep 2020 02:31:08 +0000 (12:31 +1000)]
[NFC] Enable APIv4 Testing on the statusPrefence API Tests

4 years agoMerge pull request #18340 from pradpnayak/lineItemFix
Seamus Lee [Sat, 5 Sep 2020 02:05:57 +0000 (12:05 +1000)]
Merge pull request #18340 from pradpnayak/lineItemFix

Fixed pre hook params for LineItem

4 years agoMerge pull request #18363 from colemanw/5.30
Seamus Lee [Sat, 5 Sep 2020 02:05:23 +0000 (12:05 +1000)]
Merge pull request #18363 from colemanw/5.30

Forward-merge 5.29 -> 5.30

4 years agoChange eWAY processor to use guzzle, fix style issues and update info.xml and add...
Seamus Lee [Fri, 4 Sep 2020 22:43:32 +0000 (08:43 +1000)]
Change eWAY processor to use guzzle, fix style issues and update info.xml and add in test of eWAY single Currency payment processor

Update README

4 years agoMigrate Eway(Single Currency) Payment Processor Type out into its own extension
Seamus Lee [Fri, 4 Sep 2020 02:21:12 +0000 (12:21 +1000)]
Migrate Eway(Single Currency) Payment Processor Type out into its own extension

4 years agoMerge pull request #18350 from eileenmcnaughton/payguzz
Seamus Lee [Sat, 5 Sep 2020 01:19:31 +0000 (11:19 +1000)]
Merge pull request #18350 from eileenmcnaughton/payguzz

dev/financial#143 Convert Paypal Pro to use Guzzle

4 years agoMerge pull request #18358 from eileenmcnaughton/event
Seamus Lee [Sat, 5 Sep 2020 00:56:56 +0000 (10:56 +1000)]
Merge pull request #18358 from eileenmcnaughton/event

Use eventID rather than the object in completeTransaction

4 years agoMerge pull request #18354 from totten/master-bs3b
Eileen McNaughton [Sat, 5 Sep 2020 00:54:37 +0000 (12:54 +1200)]
Merge pull request #18354 from totten/master-bs3b

dev/user-interface#27 - Define a "bootstrap3" bundle (skeleton)

4 years agoMerge pull request #18361 from seamuslee001/update_event_checksum
Eileen McNaughton [Sat, 5 Sep 2020 00:48:25 +0000 (12:48 +1200)]
Merge pull request #18361 from seamuslee001/update_event_checksum

[NFC] Update Event DAO Checksum

4 years agoMerge pull request #18359 from eileenmcnaughton/load
Eileen McNaughton [Sat, 5 Sep 2020 00:43:52 +0000 (12:43 +1200)]
Merge pull request #18359 from eileenmcnaughton/load

dev/core#1921 Remove some places where the ghost of 2014 is getting special love

4 years agoFix customField legacy handling in APIv3
Coleman Watts [Fri, 4 Sep 2020 00:59:25 +0000 (20:59 -0400)]
Fix customField legacy handling in APIv3

4 years agodev/core#1998 Address dedupe clash on dashboard contact
eileen [Fri, 4 Sep 2020 07:10:06 +0000 (19:10 +1200)]
dev/core#1998 Address dedupe clash on dashboard contact

4 years agoMerge pull request #18246 from sunilpawar/report_45
Seamus Lee [Fri, 4 Sep 2020 23:29:07 +0000 (09:29 +1000)]
Merge pull request #18246 from sunilpawar/report_45

report#45 Ability to Search Smart or Normal Group using additional filter on Manage Group page

4 years agoFixed pre hook params for LineItem
Pradeep Nayak [Fri, 4 Sep 2020 23:20:38 +0000 (00:20 +0100)]
Fixed pre hook params for LineItem

4 years ago[NFC] Update Event DAO Checksum
Seamus Lee [Fri, 4 Sep 2020 22:51:27 +0000 (08:51 +1000)]
[NFC] Update Event DAO Checksum

4 years agoRemove some places where the ghost of 2014 is getting special love
eileen [Fri, 4 Sep 2020 22:39:33 +0000 (10:39 +1200)]
Remove some places where the ghost of 2014 is getting special love

per https://lab.civicrm.org/dev/core/-/issues/1921 we fixed the root cause of this 6 years ago....

4 years agoUse eventID rather than the object in completeTransaction
eileen [Fri, 4 Sep 2020 22:18:35 +0000 (10:18 +1200)]
Use eventID rather than the object in completeTransaction

This allows us to stop passing it in as an object as a follow up. It potentially does an extra query but this is
mitigated by
1) it only does a look up if the contribution does not already have a source (rare)
2) it uses a pseudoconstant so would only look up a given event once

- we can later remove the whole loading of event and just get the id from the participant record

4 years agoMerge pull request #18147 from eileenmcnaughton/ex_type
Seamus Lee [Fri, 4 Sep 2020 21:45:50 +0000 (07:45 +1000)]
Merge pull request #18147 from eileenmcnaughton/ex_type

Improve consistency of metadata type declarations

4 years ago[REF] Simplify logic on calling self::updateContributionStatus
eileen [Fri, 4 Sep 2020 21:19:01 +0000 (09:19 +1200)]
[REF] Simplify logic on calling self::updateContributionStatus

self::updateContributionStatus is only called when contributionStatusId has been set - there is only
one place that is set so move the code up there rather than set a param to trigger action further down

4 years agoMove tax handling from line item api to BAO to make it available from apiv4
eileen [Fri, 4 Sep 2020 06:55:51 +0000 (18:55 +1200)]
Move tax handling from line item api to BAO to make it available from apiv4

This implementation has some limitations. I only address one in this PR - removing the rounding - as
the focus of the PR is the move.

The rounding from all save layers was previously removed but it was reverted when it was eroneously believed
to have caused a bug. The bug turned out to be https://github.com/civicrm/civicrm-core/pull/18297

4 years agoMerge pull request #18348 from eileenmcnaughton/kg
Matthew Wire [Fri, 4 Sep 2020 15:32:43 +0000 (16:32 +0100)]
Merge pull request #18348 from eileenmcnaughton/kg

Fix test to use validateAllContributions

4 years agoMerge pull request #18331 from eileenmcnaughton/refs
Matthew Wire [Fri, 4 Sep 2020 10:34:09 +0000 (11:34 +0100)]
Merge pull request #18331 from eileenmcnaughton/refs

Stop passing / using object when all we need is the id

4 years agoMerge pull request #18343 from eileenmcnaughton/fail
Matthew Wire [Fri, 4 Sep 2020 10:32:45 +0000 (11:32 +0100)]
Merge pull request #18343 from eileenmcnaughton/fail

Minor code cleanup - this is only ever called from one place so component is always event

4 years agoFix test to use validateAllContributions
eileen [Fri, 4 Sep 2020 01:38:03 +0000 (13:38 +1200)]
Fix test to use validateAllContributions

4 years agoBootstrap3 - Move warning from Api4Explorer to bundle default
Tim Otten [Fri, 4 Sep 2020 06:56:46 +0000 (23:56 -0700)]
Bootstrap3 - Move warning from Api4Explorer to bundle default

The Api4Explorer page has a neat trick - if (by any means) you manage to
have Bootstrap3 active within the body of this Civi page, then it will
display a warning.

This patch moves the trick to be part of the `bootstrap3` bundle, which
means that it will be applied to any page where `bootstrap3` is activated.

4 years agoApi4Explorer - Activate bootstrap3
Tim Otten [Tue, 18 Aug 2020 21:17:52 +0000 (14:17 -0700)]
Api4Explorer - Activate bootstrap3

4 years agoCRM_Core_Resources - Define 'bootstrap3' bundle
Tim Otten [Tue, 18 Aug 2020 06:44:28 +0000 (23:44 -0700)]
CRM_Core_Resources - Define 'bootstrap3' bundle

4 years agoAdd test to cover existing v3 api setting of financial type on line items
eileen [Fri, 4 Sep 2020 06:27:58 +0000 (18:27 +1200)]
Add test to cover existing v3 api setting of financial type on line items

4 years agoAdd expected responses & enble the handler
eileen [Fri, 4 Sep 2020 05:47:48 +0000 (17:47 +1200)]
Add expected responses & enble the handler

4 years agoConvert PaypalPro to use Guzzle - step 1 - prepare to capture
eileen [Fri, 4 Sep 2020 03:26:33 +0000 (15:26 +1200)]
Convert PaypalPro to use Guzzle - step 1 - prepare to capture

4 years agoMerge pull request #18346 from eileenmcnaughton/linetes
Eileen McNaughton [Fri, 4 Sep 2020 04:06:52 +0000 (16:06 +1200)]
Merge pull request #18346 from eileenmcnaughton/linetes

Preliminary cleanup on test

4 years agoMerge pull request #18247 from totten/master-res-coll
Seamus Lee [Fri, 4 Sep 2020 00:09:42 +0000 (10:09 +1000)]
Merge pull request #18247 from totten/master-res-coll

Add higher-level support for "bundles" and "collections" of resources

4 years agoPreliminary cleanup on test
eileen [Thu, 3 Sep 2020 23:51:50 +0000 (11:51 +1200)]
Preliminary cleanup on test

Just fixing unused variables, exception declarations etc

4 years agoUpdate unit tests to match content
Seamus Lee [Thu, 3 Sep 2020 22:08:09 +0000 (08:08 +1000)]
Update unit tests to match content

4 years agoMerge pull request #18264 from demeritcowboy/mysql-ssl-guess
Eileen McNaughton [Thu, 3 Sep 2020 22:07:30 +0000 (10:07 +1200)]
Merge pull request #18264 from demeritcowboy/mysql-ssl-guess

dev/core#1926 - Try to autodetect mysql ssl settings from the CMS config

4 years agoCollectionAdderInterface - Support addMarkup($html)
Tim Otten [Wed, 26 Aug 2020 00:11:34 +0000 (17:11 -0700)]
CollectionAdderInterface - Support addMarkup($html)

4 years ago(REF) CRM_Core_Resources::addBundle() - Improve readability. Add test.
Tim Otten [Tue, 25 Aug 2020 23:53:47 +0000 (16:53 -0700)]
(REF) CRM_Core_Resources::addBundle() - Improve readability. Add test.

4 years ago(NFC) CRM_Core_Resources::addBundle() - More explanatory comments.
Tim Otten [Tue, 25 Aug 2020 23:54:30 +0000 (16:54 -0700)]
(NFC) CRM_Core_Resources::addBundle() - More explanatory comments.

4 years ago(NFC) Docblock tweaks
Tim Otten [Tue, 25 Aug 2020 22:35:30 +0000 (15:35 -0700)]
(NFC) Docblock tweaks

4 years agoForward port https://github.com/civicrm/civicrm-core/pull/18141
Tim Otten [Tue, 25 Aug 2020 04:26:23 +0000 (21:26 -0700)]
Forward port https://github.com/civicrm/civicrm-core/pull/18141

4 years agoCRM_Core_Resources - Use splats, CollectionAdderTrait, CollectionAdderInterface
Tim Otten [Mon, 24 Aug 2020 10:10:33 +0000 (03:10 -0700)]
CRM_Core_Resources - Use splats, CollectionAdderTrait, CollectionAdderInterface

Before
------

`CRM_Core_Resources` directly implements a number of functions (`addFoo()`)

After
-----

`CRM_Core_Resources` re-uses the implementations from `CollectionAdderTrait`

Comment
-------

The method signatures in `CollectionAdderTrait` look different, but they are
compatible.  In particular, the use of splat (`...$options`) means that they
can accept either key-value options or positional options. The existing
test-cases in `CollectionTestTrait` assert as much.

4 years agoCollectionAdderTrait - Use secondary ordering more akin to CRM_Core_Resources
Tim Otten [Mon, 24 Aug 2020 09:47:22 +0000 (02:47 -0700)]
CollectionAdderTrait - Use secondary ordering more akin to CRM_Core_Resources

This is a very subtle behavioral change.  To understand it, we must consider
the traditional ordering in `CRM_Core_Resources::addScriptUrl()` and
`CRM_Core_Region::add()`.  Compare these two examples:

```
Civi::resources()->addScriptUrl('http://example.com/foo.js', 100, 'page-footer');
Civi::resources()->addScriptUrl('http://example.com/bar.js', 100, 'page-footer');

CRM_Core_Region::instance('page-footer')->add([
  'scriptUrl' => 'http://example.com/foo.js',
  'weight' => 100,
]);
CRM_Core_Region::instance('page-footer')->add([
  'scriptUrl' => 'http://example.com/bar.js',
  'weight' => 100,
]);
```

You might expect this to output `<SCRIPT>`s in the same order.  After all,
the examples use the same URLs, the same weights, and the same
procedural/natural order.  Moreover, `Civi::resources()` is just a wrapper
for `CRM_Core_Region`.  Surely they were the same!

They were not. The output order would differ.

The reason is that the ordering had two keys (`weight,name`), and the
secondary-key (`name`) was hidden from us:

* In `CRM_Core_Resources::addScriptUrl()`, the default `name` was the URL.
  This was handy for de-duping resources.
* In `CRM_Core_Region::add()`, the default `name` was a numeric position.
  This made it behave like procedural/natural-ordering.

Of course, the goal in this branch is to make various collections support
the same methods and the same behaviors.  But they didn't agree before, so
something has to give.  Either:

1. Standardize on the behavior of `Resources::addScriptUrl()` and change `Region::add(scriptUrl)`.
2. Standardize on the behavior of `Region::add(scriptUrl)` and change `Resources::addScriptUrl()`.
3. Embrace a split. All `CRM_Core_Resources::add*()` behave one way, and all `CRM_Core_Region::add*()` behave another.
4. Embrace a split. All rich adders (`*::addScriptUrl()`) behave one way, and all generic adders (`*::add()`) behave another.

This developmental branch has been using `#3`. The patch changes it to `#4`.

Both splits achieve backward compatibility wrt `Resources::addScriptUrl()`
and `Region::add(scriptUrl)`.  The difference is that `#4` allows us to have
the same behavior in all collections (regardless of subtype), which means
that collections can be more interoperable and share more code.  From my
POV, it's still quirkier than `#1` or `#2`, but it's not as quirky as `#3`.

4 years agoCRM_Core_Resources - Move addCoreResources to 'coreResources' bundle
Tim Otten [Sun, 23 Aug 2020 03:30:02 +0000 (20:30 -0700)]
CRM_Core_Resources - Move addCoreResources to 'coreResources' bundle

4 years agoCRM_Core_Resources - Move addCoreStyles to 'coreStyles' bundle
Tim Otten [Sun, 23 Aug 2020 01:00:20 +0000 (18:00 -0700)]
CRM_Core_Resources - Move addCoreStyles to 'coreStyles' bundle

4 years agoCRM_Core_Resources_Common - Add skeleton for bundles, 'coreStyles' and 'coreResources'
Tim Otten [Sun, 23 Aug 2020 00:54:42 +0000 (17:54 -0700)]
CRM_Core_Resources_Common - Add skeleton for bundles, 'coreStyles' and 'coreResources'

4 years agoCRM_Core_Resources::addCoreResources - Option `$region` is not meaningfully used
Tim Otten [Tue, 18 Aug 2020 05:05:02 +0000 (22:05 -0700)]
CRM_Core_Resources::addCoreResources - Option `$region` is not meaningfully used

If you grep universe for `addCoreResources` and `addCoreStyles`, all matches
fall into these buckets:

1. They use the implicit default region.
2. They explicitly use the `html-header` region.
3. (Singular case) addCoreResources($region) delegates to addCoreStyles($region);
   but given 1+2, this must still be `html-header`.

4 years agoCollectionTrait - Add corresponding unit-test coverage (via RegionTest, BundleTest)
Tim Otten [Tue, 18 Aug 2020 04:20:29 +0000 (21:20 -0700)]
CollectionTrait - Add corresponding unit-test coverage (via RegionTest, BundleTest)

4 years ago(NFC) CollectionTrait - Reconcile docblocks
Tim Otten [Mon, 24 Aug 2020 02:15:53 +0000 (19:15 -0700)]
(NFC) CollectionTrait - Reconcile docblocks

4 years agoCollectionTrait - Use "splats". Split out "adders". Define interfaces.
Tim Otten [Tue, 18 Aug 2020 03:45:29 +0000 (20:45 -0700)]
CollectionTrait - Use "splats". Split out "adders". Define interfaces.

In the prior commits, the signatures for `addScriptFile()`,
`addScriptUrl()`, etc are not strictly interoperable between
`CRM_Core_Resources` and `CollectionTrait`.  This is because they use
key-value options instead of positional options.  This makes it easier
disregard positional options that don't make sense (e.g.  when calling
`CRM_Core_Region::addScriptFile()`, it's silly to reserve a positional
argument for the `$region` option).

The signatures *can* be unified by using "splats" (ie `...$options`) to
accept either key-value options or backward-compatible positional options.
The ultimate is hope is that:

* `CRM_Core_Resources`, `CRM_Core_Region`, and `CRM_Core_Bundle` all
  implement the `CollectionAdderInterface`.
* `CRM_Core_Resources`, `CRM_Core_Region`, and `CRM_Core_Bundle` all
  accept options in either format (key-value or positional).
* The positional format will fade-away.

The methods in CollectionTrait are newer terrain, so it's safer to change
those signatures, so we do that first.

Note that CollectionTrait formally builds on CollectionAdderTrait. This
ensures that IDE navigation to (eg) `CRM_Core_Region::add()` and
`CRM_Core_Resources_Bundle::add()` works as expected.

4 years agoAdd "Bundle" support - ie an unattached, mixable list of resources
Tim Otten [Mon, 24 Aug 2020 01:49:44 +0000 (18:49 -0700)]
Add "Bundle" support - ie an unattached, mixable list of resources

4 years agoCollectionTrait - Model scriptFile and styleFile as distinct types
Tim Otten [Tue, 18 Aug 2020 02:56:43 +0000 (19:56 -0700)]
CollectionTrait - Model scriptFile and styleFile as distinct types

4 years agoCollectionTrait - Support merge()
Tim Otten [Tue, 18 Aug 2020 02:54:08 +0000 (19:54 -0700)]
CollectionTrait - Support merge()

4 years agoCollectionTrait - Support addScriptFile(), addStyleFile()
Tim Otten [Wed, 5 Aug 2020 13:57:14 +0000 (06:57 -0700)]
CollectionTrait - Support addScriptFile(), addStyleFile()

4 years agoCollectionTrait - Support addSetting(), addSettingsFactory(), ad nauseum
Tim Otten [Wed, 5 Aug 2020 11:29:59 +0000 (04:29 -0700)]
CollectionTrait - Support addSetting(), addSettingsFactory(), ad nauseum

4 years agoCollectionTrait - Support addScript(), addScriptUrl(), addStyle(), addStyleUrl()
Tim Otten [Wed, 5 Aug 2020 11:11:25 +0000 (04:11 -0700)]
CollectionTrait - Support addScript(), addScriptUrl(), addStyle(), addStyleUrl()

4 years agoCollectionTrait - Support getAll(), filter(), find(), and clear()
Tim Otten [Wed, 5 Aug 2020 11:47:34 +0000 (04:47 -0700)]
CollectionTrait - Support getAll(), filter(), find(), and clear()

4 years ago(REF) CRM_Core_Region - Extract $renderSnippet()
Tim Otten [Wed, 5 Aug 2020 12:44:00 +0000 (05:44 -0700)]
(REF) CRM_Core_Region - Extract $renderSnippet()

This makes it possible for renderSnippet to work recursively.

For example, the current `jquery` type can build on the `script` type, and
the hypothetical `scriptFile` type could build on the `scriptUrl` type.

4 years agoCollectionTrait - Create baseline trait based on CRM_Core_Region
Tim Otten [Wed, 5 Aug 2020 10:51:14 +0000 (03:51 -0700)]
CollectionTrait - Create baseline trait based on CRM_Core_Region

4 years agoCRM_Core_Resources - Convert 'settings' to a type of snippet
Tim Otten [Wed, 5 Aug 2020 09:18:21 +0000 (02:18 -0700)]
CRM_Core_Resources - Convert 'settings' to a type of snippet