Tim Otten [Wed, 10 Apr 2019 02:16:47 +0000 (19:16 -0700)]
(dev/core#873) civi.api.prepare - Allow dynamic wrappers
Overview
--------
Allow extensions to dynamically wrap an API. There are some existing mechanisms which sort-of allow wrapping, but
this enables additional use-cases.
Before
------
There are a few techniques for wrapping or overriding an API, but none is suitable to my current use-case. Limitations:
* `hook_civicrm_apiWrappers` - This allows registering things before and after the API call, but it does not allow
changing the underlying API call.
* `civi.api.{authorize,prepare,respond}` events - Same as above. These are a bit more nuanced/fine-grained, but still does not allow changing
* `civi.api.resolve` event with `AdhocProvider` - This allows you to swap an API completely, but it doesn't allow you
to delegate back to the original API call (if you've got nothing to add).
After
------
One may subscribe to `civi.api.prepare` and then call the `wrapApi()` helper:
```php
function onPrepare($event) {
if ($event->getApiRequestSig() === '3.widget.frobnicate') {
$event->wrapApi(function($apiRequest, $continue){
echo "Hello\n";
$r = $continue($apiRequest);
echo "Goodbye\n";
return $r;
});
}
}
```
Key characteristics:
* The wrapper only applies if you register it specifically for the given API call.
* The wrapper allows you to defer to the original implementation (`$continue`).
* The wrapper allows you to perform logic before and after.
* The wrapper allows you to *conditionally* replace -- you might call `$continue` or something entirely different.
The style here is more event-oriented, but you can see the same concept in OOP systems, such as PHP's function-override notation.
This would be analogous:
```php
class MyChild extends MyParent {
function frobnicate($arg1) {
echo "Hello\n";
$r = parent::frobnicate($arg1);
echo "Goodbye\n";
return $r;
}
}
```
Seamus Lee [Sat, 13 Apr 2019 21:12:11 +0000 (07:12 +1000)]
Merge pull request #14044 from totten/master-test-trait-2
(REF; dev/core#873) CiviUnitTestCase - Extract traits to facilitate extension testing
Tim Otten [Sat, 13 Apr 2019 00:42:40 +0000 (17:42 -0700)]
ContactTestTrait::createLoggedInUser() - Fix domain_id error when running from extension
Tim Otten [Sat, 13 Apr 2019 00:41:12 +0000 (17:41 -0700)]
Move helpers from CiviUnitTestCase to MailingTestTrait
* `createMailing(...)`
* `deleteMailing(...)`
Tim Otten [Sat, 13 Apr 2019 00:34:56 +0000 (17:34 -0700)]
Move helpers from CiviUnitTestCase to DbTestTrait
* `assertDBState(...)`
* `assertDBNotNull(...)`
* `assertDBNull(...)`
* `assertDBRowNotExist(...)`
* `assertDBRowExist(...)`
* `assertDBCompareValue(...)`
* `assertDBCompareValues(...)`
* `assertDBQuery(...)`
Tim Otten [Sat, 13 Apr 2019 00:32:15 +0000 (17:32 -0700)]
Move helpers from CiviUnitTestCase to GenericAssertionsTrait
* `assertType(...)`
* `assertTreeEquals(...)`
* `assertApproxEquals(...)`
* `assertAttributesEquals(...)`
* `assertArrayKeyExists(...)`
* `assertArrayValueNotNull(...)`
* `assertArrayValuesEqual(...)`
Tim Otten [Sat, 13 Apr 2019 00:20:44 +0000 (17:20 -0700)]
Move helpers from CiviUnitTestCase to ContactTestTrait
* `createLoggedInUser(...)`
* `organizationCreate(...)`
* `individualCreate(...)`
* `householdCreate(...)`
* `sampleContact(...)`
* `_contactCreate(...)`
* `contactDelete(...)`
* `groupContactCreate(...)`
* `groupCreate(...)`
* `groupDelete(...)`
Eileen McNaughton [Sat, 13 Apr 2019 01:22:38 +0000 (11:22 +1000)]
Merge pull request #14041 from colemanw/fieldTitles
Add pseudoconstant to UFField dao
Eileen McNaughton [Fri, 12 Apr 2019 22:10:04 +0000 (08:10 +1000)]
Merge pull request #14028 from yashodha/dev-865
(dev/core#865) Result filter criteria doesn't show IS NULL/IS NOT NUL…
Eileen McNaughton [Fri, 12 Apr 2019 21:54:48 +0000 (07:54 +1000)]
Merge pull request #14039 from eileenmcnaughton/cont_recur
Remove deprecated function
Coleman Watts [Fri, 12 Apr 2019 18:28:23 +0000 (14:28 -0400)]
Add pseudoconstant to UFField dao
yashodha [Fri, 12 Apr 2019 12:05:37 +0000 (17:35 +0530)]
add missing assignment
Seamus Lee [Fri, 12 Apr 2019 01:29:06 +0000 (11:29 +1000)]
Merge pull request #14037 from colemanw/dev/core#562
dev/core#562 - Remove dao->free from api
eileen [Fri, 12 Apr 2019 00:15:07 +0000 (10:15 +1000)]
Remove deprecated function
This was deprecated in May 2018 as not called from within core - this removes
Coleman Watts [Thu, 11 Apr 2019 23:50:09 +0000 (19:50 -0400)]
dev/core#562 - Remove dao->free from api
Eileen McNaughton [Thu, 11 Apr 2019 23:46:34 +0000 (11:46 +1200)]
Merge pull request #14035 from civicrm/5.13
5.13 to master
Eileen McNaughton [Thu, 11 Apr 2019 23:46:00 +0000 (11:46 +1200)]
Merge pull request #14034 from eileenmcnaughton/5.13
dev/core#859 - Dedupe fails on address field in 5.12
Eileen McNaughton [Thu, 11 Apr 2019 23:30:35 +0000 (11:30 +1200)]
Merge pull request #14031 from seamuslee001/phpcs_disable_mcrypt
Disable phpcs checking in the Crypt files where mcrypt functions are
Eileen McNaughton [Thu, 11 Apr 2019 23:30:17 +0000 (11:30 +1200)]
Merge pull request #14032 from seamuslee001/ingore_eval
(NFC) Ensure phpcs ignores eval notice in these files as it is required
DemeritCowboy [Wed, 10 Apr 2019 00:59:15 +0000 (20:59 -0400)]
add test
DemeritCowboy [Wed, 10 Apr 2019 00:42:18 +0000 (20:42 -0400)]
fix array and notice
Seamus Lee [Thu, 11 Apr 2019 22:06:43 +0000 (08:06 +1000)]
(NFC) Ensure phpcs ignores eval notice in these files as it is required
Seamus Lee [Thu, 11 Apr 2019 21:59:12 +0000 (07:59 +1000)]
Disable phpcs checking in the Crypt files where mcrypt functions are
yashodha [Thu, 11 Apr 2019 08:33:36 +0000 (14:03 +0530)]
(dev/core#865) Result filter criteria doesn't show IS NULL/IS NOT NULL for operations
Seamus Lee [Thu, 11 Apr 2019 03:41:40 +0000 (13:41 +1000)]
Merge pull request #14027 from civicrm/5.13
5.13
Seamus Lee [Thu, 11 Apr 2019 03:40:34 +0000 (13:40 +1000)]
Merge pull request #14025 from seamuslee001/coder_lint_alt_php
(NFC) Lint additional php files up to the new coder standard
Seamus Lee [Thu, 11 Apr 2019 01:10:56 +0000 (11:10 +1000)]
(NFC) Lint additional php files up to the new coder standard
Tim Otten [Thu, 11 Apr 2019 02:28:40 +0000 (19:28 -0700)]
Merge pull request #14026 from seamuslee001/5.13
Port Code Style Fixes to 5.13 from master
Seamus Lee [Tue, 9 Apr 2019 23:39:27 +0000 (09:39 +1000)]
(NFC) Minor code style fixes
Seamus Lee [Wed, 10 Apr 2019 21:11:37 +0000 (07:11 +1000)]
(NFC) Update CRM/Contact to match new coder style
Seamus Lee [Thu, 11 Apr 2019 00:21:17 +0000 (10:21 +1000)]
Merge pull request #14024 from civicrm/5.13
5.13
colemanw [Wed, 10 Apr 2019 23:01:06 +0000 (19:01 -0400)]
Merge pull request #14023 from seamuslee001/core_dedupe_custom
(NFC) Update CRM/Core CRM/Custom CRM/Dedupe to match the new coder style
Seamus Lee [Wed, 10 Apr 2019 22:52:13 +0000 (08:52 +1000)]
Merge pull request #14022 from seamuslee001/contact_new_coder
(NFC) Update CRM/Contact to match new coder style
Seamus Lee [Wed, 10 Apr 2019 22:49:43 +0000 (08:49 +1000)]
Merge pull request #14019 from seamuslee001/event_new_style
(NFC) Update CRM/Event folder for the new coder style
Seamus Lee [Wed, 10 Apr 2019 21:55:24 +0000 (07:55 +1000)]
Merge pull request #14021 from seamuslee001/contribute_new_coder
(NFC) update CRM/Contribute to be the new coder standard
Seamus Lee [Wed, 10 Apr 2019 21:36:06 +0000 (07:36 +1000)]
(NFC) Update CRM/Core CRM/Custom CRM/Dedupe to match the new coder style
Seamus Lee [Wed, 10 Apr 2019 21:11:37 +0000 (07:11 +1000)]
(NFC) Update CRM/Contact to match new coder style
colemanw [Wed, 10 Apr 2019 21:27:25 +0000 (17:27 -0400)]
Merge pull request #14016 from seamuslee001/mailing_group_grant_friend_new_style
(NFC) Update CRM/Friend CRM/Grant CRM/Group CRM/Mailing to be up to d…
colemanw [Wed, 10 Apr 2019 21:26:04 +0000 (17:26 -0400)]
Merge pull request #14017 from seamuslee001/batch_campaign_case_new_style
(NFC) Update CRM/Badge CRM/Campaign CRM/Case to be up to date with a …
colemanw [Wed, 10 Apr 2019 21:25:07 +0000 (17:25 -0400)]
Merge pull request #14018 from seamuslee001/financial_extension_export_cxn_dashlet
(NFC) Update CRM/Cxn CRM/Dashlet CRM/Export CRM/Extension and CRM/Fin…
Seamus Lee [Wed, 10 Apr 2019 20:33:50 +0000 (06:33 +1000)]
(NFC) update CRM/Contribute to be the new coder standard
Seamus Lee [Wed, 10 Apr 2019 00:25:23 +0000 (10:25 +1000)]
(NFC) Update CRM/Friend CRM/Grant CRM/Group CRM/Mailing to be up to date to a future coder version
Seamus Lee [Wed, 10 Apr 2019 01:21:31 +0000 (11:21 +1000)]
(NFC) Update CRM/Cxn CRM/Dashlet CRM/Export CRM/Extension and CRM/Financial files to new coder style
Seamus Lee [Wed, 10 Apr 2019 02:49:09 +0000 (12:49 +1000)]
(NFC) Update CRM/Event folder for the new coder style
Seamus Lee [Wed, 10 Apr 2019 00:48:27 +0000 (10:48 +1000)]
(NFC) Update CRM/Badge CRM/Campaign CRM/Case to be up to date with a newer coder
Seamus Lee [Wed, 10 Apr 2019 01:33:45 +0000 (11:33 +1000)]
Merge pull request #14015 from seamuslee001/nfc_code_style_fixes
(NFC) Minor code style fixes
Seamus Lee [Tue, 9 Apr 2019 23:39:27 +0000 (09:39 +1000)]
(NFC) Minor code style fixes
CiviCRM [Tue, 9 Apr 2019 18:01:36 +0000 (18:01 +0000)]
Set version to 5.14.alpha1
CiviCRM [Tue, 9 Apr 2019 17:55:28 +0000 (17:55 +0000)]
Set version to 5.13.beta1
Tim Otten [Tue, 9 Apr 2019 17:46:18 +0000 (10:46 -0700)]
Merge pull request #13551 from eileenmcnaughton/ext_up
Load hooks during upgrade mode
Joe Murray [Tue, 9 Apr 2019 15:22:26 +0000 (11:22 -0400)]
Added myself
eileen [Wed, 6 Feb 2019 21:48:02 +0000 (10:48 +1300)]
Load hooks during upgrade mode
For unknown, svn, reasons extension hooks are not loaded during upgrade
(this doesn't apply to drupal modules) - this causes some fairly serious problems
1) settings are re-loaded & cached with settings from extensions being lost
2) trigger alter hooks are lost this means
- the summary fields triggers are frequently lost on upgrade
- hooks that unset various tables to prevent them from being logged can fail, resulting in those log tables being created
- hooks that specify the table should be innodb can fail to run, resulting in archive format.
I can't think WHY we do this? Presumably there was some problem that would have been better solved another
way but which was solved this way?
Fix "Load hooks during upgrade mode" (
45312e1e64dd6af0281fe5fb7f96dbd8be39e524)
In my testing, the commit doesn't do what it says because the symbols are wrong.
Eileen McNaughton [Tue, 9 Apr 2019 03:47:53 +0000 (15:47 +1200)]
Merge pull request #14005 from colemanw/shortSettings
[NFC] Short array syntax - auto convert settings dir
Eileen McNaughton [Tue, 9 Apr 2019 03:47:35 +0000 (15:47 +1200)]
Merge pull request #13995 from eileenmcnaughton/loc_title
dev/financial#2 Update new payment_processor.title field to be localisable
Eileen McNaughton [Tue, 9 Apr 2019 03:46:39 +0000 (15:46 +1200)]
Merge pull request #14007 from colemanw/colorTest
Improve test coverage for CRM_Utils_Color::getRgb()
Eileen McNaughton [Tue, 9 Apr 2019 03:07:24 +0000 (15:07 +1200)]
Merge pull request #14009 from eileenmcnaughton/recur_flush
Improve flushing after creating a processor so it can be used for a recurring in the same run
Eileen McNaughton [Tue, 9 Apr 2019 03:06:58 +0000 (15:06 +1200)]
Merge pull request #14008 from totten/master-hook
(REF) CRM_Core_Resources - Move hook declaration from addCoreResources() to Container.php
Eileen McNaughton [Tue, 9 Apr 2019 02:23:21 +0000 (14:23 +1200)]
Merge pull request #14006 from eileenmcnaughton/payment_pay
Include lower level data when throwing an exception on payment processor.pay
Eileen McNaughton [Tue, 9 Apr 2019 02:09:22 +0000 (14:09 +1200)]
Merge pull request #14002 from colemanw/menuConfig
Menu config screen improvements
eileen [Tue, 9 Apr 2019 01:56:09 +0000 (13:56 +1200)]
Improve flushing after creating a processor so it can be used for a recurring in the same run
Mostly affects tests....
Seamus Lee [Tue, 9 Apr 2019 01:48:18 +0000 (11:48 +1000)]
Merge pull request #14000 from eileenmcnaughton/recur_fn
Add unit testing for activity creation when cancelling a recurring, related cleanup
Coleman Watts [Tue, 9 Apr 2019 00:29:07 +0000 (20:29 -0400)]
Short array syntax - auto convert settings dir
eileen [Sun, 7 Apr 2019 22:16:10 +0000 (10:16 +1200)]
Update new payment_processor.title field to be localisable
Re-order upgrade to fix upgrade process and ensure there is the runSql step
Coleman Watts [Tue, 9 Apr 2019 01:08:59 +0000 (21:08 -0400)]
colorTest
Tim Otten [Mon, 8 Apr 2019 23:13:48 +0000 (16:13 -0700)]
(REF) CRM_Core_Resources - Move hook declaration from addCoreResources() to Container.php
tldr: It's easier to declare `hook_civicrm_buildAsset` listeners at a high-level.
Asset building can use two modes -- production mode writes a static file to
disk when it's being reference. Debug mode just generates a URL for a
web-service (which in turn dynamically renders the content in a separate
page-view).
If the only mode were production mode, then the code would be on pretty
solid ground. We could even simplify things a lot by changing the
AssetBuilder contract to replace the hooks with callbacks, as in:
```php
Civi::service('asset_builder')->getUrl('crm-menu.css', function() {
return '...the css code...';
});
```
Why have a hook? Because hooks are generally context-free and
always-available. If we use debug-mode (or if we add a feature to warm-up
the caches during deployment), then we'll want to fire that hook from a
different context (e.g. web-service or CLI), and the hook-listener needs to
be available in those other contexts.
It would be nice if we could declare hooks generally without needing to edit
the `Container.php` mega-file (e.g. maybe some kind of annotation). But,
for the moment, I think this is the best spot that we have in `civicrm-core`
for ensuring that hook listeners are fully/consistently registered.
Tim Otten [Tue, 9 Apr 2019 01:05:16 +0000 (18:05 -0700)]
Merge pull request #13996 from colemanw/menuColor
Configurable menubar color
eileen [Tue, 9 Apr 2019 00:51:57 +0000 (12:51 +1200)]
Include lower level data when throwing an exception on payment processor.pay
Tim Otten [Mon, 8 Apr 2019 23:20:36 +0000 (16:20 -0700)]
Pass menubar preference as a param. Simplify cache mechanics. (#8)
Ex: If an admin uses an API call (CLI/REST) to change the menubar color,
then they don't need to follow-up with a cache-clear. The new setting just
goes live.
Ex: If a customization (via `civicrm.settings.php` or via extension) decides
on the color scheme programmatically (e.g. per-domain or per-role or
per-user-preference), then they don't need to clear cache. Multiple color
schemes can coexist.
Seamus Lee [Mon, 8 Apr 2019 23:19:39 +0000 (09:19 +1000)]
Merge pull request #14003 from seamuslee001/sl_fix_4_7_31_upgrade
Fix 4.7.31 Upgrade in multilingual mode
eileen [Mon, 8 Apr 2019 03:25:46 +0000 (15:25 +1200)]
Add unit testing for activity creation when cancelling a recurring, related cleanup
Seamus Lee [Mon, 8 Apr 2019 21:56:01 +0000 (07:56 +1000)]
Fix 4.7.31 Upgrade in multilingual mode
Coleman Watts [Mon, 8 Apr 2019 01:05:14 +0000 (21:05 -0400)]
Configurable menubar color
Coleman Watts [Mon, 8 Apr 2019 18:39:13 +0000 (14:39 -0400)]
Navigation admin - live refresh and links to related settings
Coleman Watts [Mon, 8 Apr 2019 17:18:41 +0000 (13:18 -0400)]
Navigation admin - fix icon picker & use select2
Seamus Lee [Mon, 8 Apr 2019 04:12:36 +0000 (14:12 +1000)]
Merge pull request #13998 from demeritcowboy/fix-formRule
PHP warnings on Case Dashboard and Find Cases
Coleman Watts [Sun, 7 Apr 2019 15:13:47 +0000 (11:13 -0400)]
Use asset-builder to render menubar css
colemanw [Mon, 8 Apr 2019 03:25:52 +0000 (23:25 -0400)]
Merge pull request #13999 from eileenmcnaughton/recur_fn
Add unit test for api ContributionRecur.cancel, add support for cancel_reason
eileen [Mon, 8 Apr 2019 02:32:51 +0000 (14:32 +1200)]
Add unit test for api ContributionRecur.cancel, add support for cancel_reason
DemeritCowboy [Mon, 8 Apr 2019 02:31:36 +0000 (22:31 -0400)]
fix formRule signature
Seamus Lee [Sun, 7 Apr 2019 23:38:19 +0000 (09:38 +1000)]
Merge pull request #13992 from seamuslee001/member_node_import_logging_price
(NFC) Update CRM/Member CRM/Note CRM/Logging CRM/Import and CRM/Price…
Seamus Lee [Sun, 7 Apr 2019 23:34:15 +0000 (09:34 +1000)]
Merge pull request #13991 from eileenmcnaughton/noisy_guzzle
dev/core#855 Fix guzzle noisiness
Seamus Lee [Sun, 7 Apr 2019 23:04:18 +0000 (09:04 +1000)]
Merge pull request #13990 from seamuslee001/admin_activity_batch_new_coder
(NFC) Update CRM/Activity CRM/Admin and CRM/Batch folders to be the f…
Seamus Lee [Sun, 7 Apr 2019 21:45:09 +0000 (07:45 +1000)]
(NFC) Update CRM/Member CRM/Note CRM/Logging CRM/Import and CRM/Price folders to be a future coder standard
eileen [Sun, 7 Apr 2019 21:33:02 +0000 (09:33 +1200)]
Fix guzzle noisiness
There is no reason to echo the failure here
Seamus Lee [Sun, 7 Apr 2019 21:24:06 +0000 (07:24 +1000)]
(NFC) Update CRM/Activity CRM/Admin and CRM/Batch folders to be the future coder standard
Eileen McNaughton [Sun, 7 Apr 2019 20:48:03 +0000 (08:48 +1200)]
Merge pull request #13987 from seamuslee001/new_coder_pcp_pledge_profile_queue_report
(NFC) Update coding style in PCP, Pledge, Profile, Queue, Report folders
Eileen McNaughton [Sun, 7 Apr 2019 20:47:21 +0000 (08:47 +1200)]
Merge pull request #13986 from seamuslee001/coder_upgrade_uf_tag_sms
(NFC) Update CRM/SMS/ CRM/UF/ CRM/Upgrade/ CRM/Tag/ to be up to speed…
Eileen McNaughton [Sun, 7 Apr 2019 20:46:44 +0000 (08:46 +1200)]
Merge pull request #13985 from seamuslee001/new_coder_crm_utils
(NFC) Bring CRM/Utils folder up to future coder standards
Eileen McNaughton [Sun, 7 Apr 2019 20:32:46 +0000 (08:32 +1200)]
Merge pull request #13988 from seamuslee001/coder_upgrade_dao_files
(NFC) Set _log and _tableName variables to be public
Seamus Lee [Sun, 7 Apr 2019 03:44:57 +0000 (13:44 +1000)]
(NFC) Update coding style in PCP, Pledge, Profile, Queue, Report folders
Seamus Lee [Sun, 7 Apr 2019 01:22:19 +0000 (11:22 +1000)]
(NFC) Bring CRM/Utils folder up to future coder standards
Seamus Lee [Sun, 7 Apr 2019 03:02:06 +0000 (13:02 +1000)]
Merge pull request #13983 from seamuslee001/new_coder_tests
Update Unit test styling to cover the future coder version
Tim Otten [Sat, 6 Apr 2019 23:07:30 +0000 (16:07 -0700)]
(NFC) tests/ - Cleanup phpcbf oddities
Seamus Lee [Sun, 7 Apr 2019 01:54:08 +0000 (11:54 +1000)]
(NFC) Set _log and _table_name variables to be public
Seamus Lee [Sun, 7 Apr 2019 01:31:17 +0000 (11:31 +1000)]
(NFC) Update CRM/SMS/ CRM/UF/ CRM/Upgrade/ CRM/Tag/ to be up to speed with the new coder standard
Seamus Lee [Sat, 6 Apr 2019 22:14:21 +0000 (08:14 +1000)]
Update Unit test styling to cover the future coder version
Seamus Lee [Sun, 7 Apr 2019 00:46:02 +0000 (10:46 +1000)]
Merge pull request #13984 from seamuslee001/nfc_comment_fix_ang
(NFC) Fix location of comment to match future coder version
Seamus Lee [Sat, 6 Apr 2019 22:30:20 +0000 (08:30 +1000)]
Fix location of comment to match future coder version
Eileen McNaughton [Sat, 6 Apr 2019 22:51:58 +0000 (10:51 +1200)]
Merge pull request #13980 from seamuslee001/new_coder_style_check_api
(NFC) Bring up API folder to style of future coder checker
Tim Otten [Sat, 6 Apr 2019 18:17:25 +0000 (11:17 -0700)]
Merge pull request #13982 from colemanw/then
Encourage developers to use .then instead of .done