Coleman Watts [Wed, 8 Dec 2021 14:49:15 +0000 (09:49 -0500)]
NFC - Delete boilerplate comments and empty functions from upgrade classes
Matthew Wire [Wed, 8 Dec 2021 12:07:28 +0000 (12:07 +0000)]
Merge pull request #18158 from mattwire/createProfileContact
Initial refactor of createProfileContact groups
Seamus Lee [Wed, 8 Dec 2021 08:57:40 +0000 (19:57 +1100)]
Merge pull request #22222 from civicrm/5.45
5.45
Seamus Lee [Wed, 8 Dec 2021 02:27:44 +0000 (13:27 +1100)]
Merge pull request #22221 from seamuslee001/nfc_fix_system_test_mysql8
[NFC] Update System Uft8mb4 check to handle for the fact that MySQL8 …
Seamus Lee [Wed, 8 Dec 2021 01:00:25 +0000 (12:00 +1100)]
Merge pull request #22220 from seamuslee001/drupal9_get_version
[REF] Add in getVersion override for Drupal 8/9 to support cv testing…
Seamus Lee [Wed, 8 Dec 2021 00:31:11 +0000 (11:31 +1100)]
Merge pull request #22201 from colemanw/exportPseudoconstantFix
APIv4 Export - Fix logic for exporting pseudoconstant syntax
Seamus Lee [Wed, 8 Dec 2021 00:14:33 +0000 (11:14 +1100)]
[NFC] Update System Uft8mb4 check to handle for the fact that MySQL8 outputs utf8mb3 when the charset has been set to utf8 as utf8mb3 is the underlyling charset for utf8
Seamus Lee [Tue, 7 Dec 2021 23:27:09 +0000 (10:27 +1100)]
[REF] Add in getVersion override for Drupal 8/9 to support cv testing and also cv vars:show picking up the right CMS version
CiviCRM [Tue, 7 Dec 2021 21:48:15 +0000 (21:48 +0000)]
Set version to 5.46.alpha1
CiviCRM [Tue, 7 Dec 2021 21:27:23 +0000 (21:27 +0000)]
Set version to 5.45.beta1
colemanw [Tue, 7 Dec 2021 18:59:41 +0000 (13:59 -0500)]
Merge pull request #22199 from totten/master-mix-dec-all
civix#175 - Switch core extensions to mixins (ang-php, menu-xml, theme-php, case-xml, mgd-php)
demeritcowboy [Tue, 7 Dec 2021 18:49:07 +0000 (13:49 -0500)]
Merge pull request #22219 from demeritcowboy/selenium-webtests
[NFC] Remove Selenium WebTest code from CiviMailUtils
demeritcowboy [Tue, 7 Dec 2021 12:41:02 +0000 (07:41 -0500)]
Merge pull request #22218 from colemanw/fixCanAggregate
SearchKit - Fix undefined variable for searches of Afforms etc.
demeritcowboy [Sun, 21 Nov 2021 03:33:09 +0000 (22:33 -0500)]
remove selenium webtest code
Tim Otten [Tue, 7 Dec 2021 03:58:14 +0000 (19:58 -0800)]
mixin/case-xml - Enable CiviCase during testing
colemanw [Tue, 7 Dec 2021 02:21:37 +0000 (21:21 -0500)]
Merge pull request #22189 from eileenmcnaughton/smarty14
[Smarty variables] Consistently assign isAdmin at php layer
Seamus Lee [Tue, 7 Dec 2021 01:06:37 +0000 (12:06 +1100)]
Merge pull request #22205 from totten/master-hook-conform
APIv4 ConformanceTest - Demonstrate entity APIs which fail to emit `hook_civicrm_post(delete)`
Tim Otten [Fri, 3 Dec 2021 07:01:27 +0000 (23:01 -0800)]
(REF) MixinLoader - Convert static to local property
Tim Otten [Fri, 3 Dec 2021 06:43:56 +0000 (22:43 -0800)]
(REF) Mixins - Promote `MixinLoader` to tracked service-object
Tim Otten [Fri, 3 Dec 2021 06:38:02 +0000 (22:38 -0800)]
(REF) Mixins - Move `applyMixins()` logic into `MixinLoader`
Tim Otten [Fri, 3 Dec 2021 06:30:50 +0000 (22:30 -0800)]
(REF) Mixins - Move more aspects of scanning from MixinLoader to MixinScanner
Tim Otten [Fri, 3 Dec 2021 04:50:05 +0000 (20:50 -0800)]
(REF) Mixins - Split apart class-loader and mixin-loader
Tim Otten [Thu, 2 Dec 2021 21:38:23 +0000 (13:38 -0800)]
ext/**.civix.php - Remove _civix_glob(). Not used anymore.
Tim Otten [Thu, 2 Dec 2021 21:35:35 +0000 (13:35 -0800)]
ext/**.civix.php - Remove _civix_find_files(). Not used anymore.
Tim Otten [Thu, 2 Dec 2021 21:30:21 +0000 (13:30 -0800)]
mixin/mgd-php - Remove unused boilerplate
Tim Otten [Thu, 2 Dec 2021 21:24:59 +0000 (13:24 -0800)]
mixin/mgd-php - Convert live `*.mgd.php` from `hook_managed` to `<mixin>`
Tim Otten [Tue, 30 Nov 2021 22:26:58 +0000 (14:26 -0800)]
mixin/mgd-php - Import
Tim Otten [Thu, 2 Dec 2021 21:17:14 +0000 (13:17 -0800)]
mixin/ang-php - Convert live Angular modules from `hook_angularModules` to `<mixin>`
Tim Otten [Wed, 1 Dec 2021 02:54:36 +0000 (18:54 -0800)]
mixin/menu-xml - Remove unused boilerplate
Tim Otten [Wed, 1 Dec 2021 02:47:05 +0000 (18:47 -0800)]
mixin/menu-xml - Convert live menu-items from `hook_xmlMenu` to `<mixin>`
Tim Otten [Tue, 30 Nov 2021 22:26:34 +0000 (14:26 -0800)]
mixin/menu-xml - Import
Tim Otten [Wed, 1 Dec 2021 02:39:49 +0000 (18:39 -0800)]
mixin/case-xml - Remove unused boilerplate
Tim Otten [Tue, 30 Nov 2021 22:26:23 +0000 (14:26 -0800)]
mixin/case-xml - Import
Tim Otten [Wed, 1 Dec 2021 02:30:38 +0000 (18:30 -0800)]
mixin/theme-php - Remove unused boilerplate
Tim Otten [Tue, 30 Nov 2021 22:26:50 +0000 (14:26 -0800)]
mixin/theme-php - Import
Tim Otten [Wed, 1 Dec 2021 01:00:25 +0000 (17:00 -0800)]
mixin/ang-php - Remove unused boilerplate
Tim Otten [Wed, 1 Dec 2021 00:53:40 +0000 (16:53 -0800)]
mixin/ang-php - Convert live Angular modules from `hook_angularModules` to `<mixin>`
Tim Otten [Tue, 30 Nov 2021 22:26:11 +0000 (14:26 -0800)]
mixin/ang-php - Import
Tim Otten [Mon, 6 Dec 2021 23:08:36 +0000 (15:08 -0800)]
Merge pull request #22207 from colemanw/baoDeleteHooks
[REF] - Switch BAOs to use standard delete function which calls hooks
Seamus Lee [Mon, 6 Dec 2021 22:38:38 +0000 (09:38 +1100)]
Merge pull request #22191 from eileenmcnaughton/smarty16
Smarty variables] Remove isset from a.net
demeritcowboy [Mon, 6 Dec 2021 19:26:31 +0000 (14:26 -0500)]
Merge pull request #22190 from eileenmcnaughton/smarty15
[Smarty variables] remove isset from Mail accounts
demeritcowboy [Mon, 6 Dec 2021 17:34:08 +0000 (12:34 -0500)]
Merge pull request #22181 from eileenmcnaughton/smarty8
[Smarty variables] Remove another isset - user dashboard
Yashodha Chaku [Mon, 6 Dec 2021 16:06:52 +0000 (21:36 +0530)]
Merge pull request #22216 from demeritcowboy/th-br
dev/core#2982 - Remove literal `<br/>` tag in header for Repeat Contributions CiviReport
demeritcowboy [Mon, 6 Dec 2021 15:25:11 +0000 (10:25 -0500)]
Merge pull request #22177 from eileenmcnaughton/smarty5
Smarty variables] Remove isset from relationship tab
demeritcowboy [Mon, 6 Dec 2021 14:16:46 +0000 (09:16 -0500)]
remove br tag in header
demeritcowboy [Mon, 6 Dec 2021 13:58:07 +0000 (08:58 -0500)]
Merge pull request #22215 from totten/master-mixin-xdebug
(NFC) tools/mixin/bin/test-all - Work-around segfault in CI
Tim Otten [Mon, 6 Dec 2021 09:29:17 +0000 (01:29 -0800)]
tools/mixin/bin/test-all - Work-around segfault in CI
Coleman Watts [Mon, 6 Dec 2021 03:18:07 +0000 (22:18 -0500)]
SearchKit - Fix undefined variable for searches of Afforms and other non-DAO entities
Coleman Watts [Wed, 1 Dec 2021 21:44:44 +0000 (16:44 -0500)]
APIv4 Export - Fix logic for exporting pseudoconstant syntax
Coleman Watts [Sat, 4 Dec 2021 20:17:07 +0000 (15:17 -0500)]
FinancialType - Use standard delete function which calls hooks
Coleman Watts [Sat, 4 Dec 2021 20:02:15 +0000 (15:02 -0500)]
FinancialAccount - Use standard delete function which calls hooks
Coleman Watts [Fri, 3 Dec 2021 04:51:22 +0000 (23:51 -0500)]
PaymentProcessorType - Use standard delete function which calls hooks
Coleman Watts [Fri, 3 Dec 2021 04:22:49 +0000 (23:22 -0500)]
PaymentProcessor - Use standard delete function which calls hooks
Coleman Watts [Fri, 3 Dec 2021 04:17:28 +0000 (23:17 -0500)]
LocationType - Use standard delete function which calls hooks
Coleman Watts [Fri, 3 Dec 2021 03:46:21 +0000 (22:46 -0500)]
MessageTemplates - Use standard delete function which calls hooks
Coleman Watts [Fri, 3 Dec 2021 03:36:38 +0000 (22:36 -0500)]
MembershipStatus - Use standard delete function which calls hooks
Coleman Watts [Thu, 2 Dec 2021 22:42:34 +0000 (17:42 -0500)]
MembershipType - Use standard delete function which calls hooks
Coleman Watts [Thu, 2 Dec 2021 20:59:40 +0000 (15:59 -0500)]
RelationshipType - Use standard delete function which calls hooks
Coleman Watts [Thu, 2 Dec 2021 20:34:08 +0000 (15:34 -0500)]
WordReplacement - Use generic writeRecords/deleteRecords which call hooks
Coleman Watts [Thu, 2 Dec 2021 20:01:44 +0000 (15:01 -0500)]
OptionGroup - Use standard delete function which calls hooks
Coleman Watts [Thu, 2 Dec 2021 19:42:45 +0000 (14:42 -0500)]
ContactType - Use standard delete function which calls hooks
Coleman Watts [Thu, 2 Dec 2021 16:08:10 +0000 (11:08 -0500)]
CaseType - Use standard delete function which calls hooks
Tim Otten [Fri, 3 Dec 2021 20:34:25 +0000 (12:34 -0800)]
Merge pull request #22211 from totten/master-544-fwd
Merge forward 5.44 => master
Tim Otten [Fri, 3 Dec 2021 20:06:01 +0000 (12:06 -0800)]
Merge remote-tracking branch 'origin/5.44' into master-544-fwd
Tim Otten [Fri, 3 Dec 2021 19:35:36 +0000 (11:35 -0800)]
Merge pull request #22209 from demeritcowboy/reldate
[NFC] Fix test failures for testRelativeDateRanges
Seamus Lee [Fri, 3 Dec 2021 18:52:06 +0000 (05:52 +1100)]
Merge pull request #22210 from MegaphoneJon/optional-before-required
PHP 8 compat - no optional param before required
Jon Goldberg [Fri, 3 Dec 2021 15:59:11 +0000 (10:59 -0500)]
PHP 8 compat - no optional param before required
demeritcowboy [Fri, 3 Dec 2021 14:56:37 +0000 (09:56 -0500)]
fix strict equality issue
Tim Otten [Fri, 3 Dec 2021 00:26:28 +0000 (16:26 -0800)]
ConformanceTest::checkDeletionAllowed - Coverage for `hook_pre`. Fix `Contact`.
1. Expand assertions used for `hook_post` to check `hook_pre`.
2. Recognize the quirks in how `Contact` records are treated in the hooks.
Tim Otten [Thu, 2 Dec 2021 05:48:42 +0000 (21:48 -0800)]
Merge pull request #22206 from totten/5.44-bump0
5.44.0 - Bump version. Tweak notes.
Tim Otten [Thu, 2 Dec 2021 05:47:24 +0000 (21:47 -0800)]
Set version to 5.44.0
Tim Otten [Thu, 2 Dec 2021 05:46:33 +0000 (21:46 -0800)]
release-notes/5.44.0.md
Tim Otten [Thu, 2 Dec 2021 05:43:27 +0000 (21:43 -0800)]
Merge pull request #22182 from MegaphoneJon/core-2974
fixes core#2974, overrides break membership update status when removed
Tim Otten [Thu, 2 Dec 2021 05:07:23 +0000 (21:07 -0800)]
Merge pull request #22202 from agh1/5.44.0-releasenotes-final
5.44.0 release notes: added late changes
Tim Otten [Thu, 2 Dec 2021 04:43:25 +0000 (20:43 -0800)]
Merge pull request #22204 from totten/master-mixin-testall
tools/mixin/bin/test-all - Fix guard for EXT_DIR
Tim Otten [Thu, 2 Dec 2021 04:17:22 +0000 (20:17 -0800)]
ConformanceTest - Demonstrate entity APIs with non-conformant deletion
Tim Otten [Thu, 2 Dec 2021 03:07:01 +0000 (19:07 -0800)]
tools/mixin/bin/test-all - Fix test for EXT_DIR
There are two slightly different dirs - the example-extension and the extension-container (ie child-dir and parent-dir).
We want to assert that the parent-dir is well-formed, but then use the child-dir.
Eileen McNaughton [Wed, 1 Dec 2021 23:34:49 +0000 (12:34 +1300)]
Merge pull request #22176 from eileenmcnaughton/smarty4
[Smarty variables] [CiviCase] remove isset from case dashboard
colemanw [Wed, 1 Dec 2021 23:26:59 +0000 (18:26 -0500)]
Merge pull request #22198 from totten/master-mix-dec-first
civix#175 - Add support for mixins. Switch core extensions to mixin/setting-php
Andie Hunt [Wed, 1 Dec 2021 22:46:35 +0000 (17:46 -0500)]
5.44.0 release notes: added late changes
Eileen McNaughton [Wed, 1 Dec 2021 21:23:42 +0000 (10:23 +1300)]
Merge pull request #22173 from colemanw/domainStuff
APIv4 - Add fixes & tests for domain-specific managed entities
Eileen McNaughton [Tue, 30 Nov 2021 20:23:07 +0000 (09:23 +1300)]
Remove isset from relationship tab
civicrm/contact/view?reset=1&cid=2&relatedChild=relationship
Jon Goldberg [Tue, 30 Nov 2021 20:57:55 +0000 (15:57 -0500)]
fixes core#2974, overrides break membership update status when removed
Eileen McNaughton [Wed, 1 Dec 2021 19:37:26 +0000 (08:37 +1300)]
Merge pull request #21751 from mlutfy/fixCurrencies
dev/financial#184 Fix currency name for Ghana and Belarus
Eileen McNaughton [Tue, 30 Nov 2021 20:09:49 +0000 (09:09 +1300)]
[Smarty variables] remove isset from case dashboard
Eileen McNaughton [Tue, 30 Nov 2021 22:21:04 +0000 (11:21 +1300)]
Remove isset from a.net
Eileen McNaughton [Tue, 30 Nov 2021 22:13:56 +0000 (11:13 +1300)]
[Smarty variables] remove isset from Mail accounts
civicrm/admin/mailSettings?reset=1
Eileen McNaughton [Tue, 30 Nov 2021 21:56:00 +0000 (10:56 +1300)]
[Smarty variables] Consistently assign isAdmin at php layer
Eileen McNaughton [Wed, 1 Dec 2021 19:25:40 +0000 (08:25 +1300)]
Merge pull request #22185 from eileenmcnaughton/smarty11
[Smarty variables] - remove isset
Mathieu Lutfy [Mon, 11 Oct 2021 13:04:09 +0000 (09:04 -0400)]
dev/financial#184 Fix currency name for Ghana and Belarus
Eileen McNaughton [Wed, 1 Dec 2021 09:42:06 +0000 (22:42 +1300)]
Merge pull request #22179 from eileenmcnaughton/smarty6
[Smarty variables] Fix contribution tab to work with escape by default
Eileen McNaughton [Wed, 1 Dec 2021 09:26:29 +0000 (22:26 +1300)]
Merge pull request #22196 from eileenmcnaughton/smarty21
[Smarty variables] The last isset....
Tim Otten [Wed, 1 Dec 2021 01:27:28 +0000 (17:27 -0800)]
mixin/setting-php - Remove unused boilerplate
Tim Otten [Wed, 1 Dec 2021 00:43:26 +0000 (16:43 -0800)]
mixin/setting-php - Convert live settings from `hook_alterSettingsFolder` to `<mixin>`
Tim Otten [Tue, 30 Nov 2021 22:26:42 +0000 (14:26 -0800)]
mixin/setting-php - Import
Tim Otten [Tue, 30 Nov 2021 22:25:50 +0000 (14:25 -0800)]
mixin/polyfill.php - Import. Update comments.
Tim Otten [Tue, 30 Nov 2021 20:14:10 +0000 (12:14 -0800)]
tools/mixin - Import. Also, update to run within civicrm-core, and add JUnit output.
Tim Otten [Sat, 27 Nov 2021 23:13:58 +0000 (17:13 -0600)]
tests/extensions/shimmy/ - Import. Also, update comments for LifecycleTest.
Tim Otten [Tue, 30 Nov 2021 22:33:28 +0000 (14:33 -0800)]
distmaker - Include `mixin/*` files
Tim Otten [Tue, 14 Jul 2020 07:29:07 +0000 (00:29 -0700)]
civix#175 - Add support for mixins. Use MixinScanner/MixinLoader and boot-cache.
Overview
--------
(NOTE: For this description, I reference the term "API" in the general sense of a programmatic interface -- such as
a hook or file-naming convention. It is not specifically about CRUD/DB APIs.)
The `civix` code-generator provides support for additional coding-conventions -- ones which are more amenable to
code-generation. For example, it autoloads files from `xml/Menu/*.xml` and `**/*.mgd.php`. The technique for
implementing this traditionally relies on generating a lot of boilerplate.
This patch introduces a new construct ("mixin") which allows boilerplate to be maintained more easily. A mixin
inspects an extension programmatically, registering new hooks as needed. A mixin may start out as a file in `civix`
(or even as a bespoke file in some module) - and then be migrated into `civicrm-core`. Each mixin has a name and
version, which means that (at runtime) it will only load the mixin once (ie the best-available version).
See: https://github.com/totten/civix/issues/175
Before
------
The civix templates generate a few files, such as `mymod.php` and `mymod.civix.php`.
A typical example looks like this:
```php
// mymod.php - Implement hook_civicrm_xmlMenu
require_once 'mymod.civix.php';
function mymod_civicrm_xmlMenu(&$all, $the, $params) {
_mymod_civix_civicrm_xmlMenu($all, $the, $params);
}
```
and
```php
// mymod.civix.php - Implement hook_civicrm_xmlMenu
function _mymod_civix_civicrm_xmlMenu(&$all, $the, $params) {
foreach (_mosaico_civix_glob(__DIR__ . '/xml/Menu/*.xml') as $file) {
$files[] = $file;
}
}
```
These two files are managed differently: `mymod.php` is owned by the developer, and they may add/remove/manage the
hooks in this file. `mymod.civix.php` is owned by `civix` and must be autogenerated.
This structure allows `civix` (and any `civix`-based extension) to take advantage of new coding-convention
immediately. However, it comes with a few pain-points:
* If you want to write a patch for `_mymod_civix_civicrm_xmlMenu`, the dev-test-loop requires several steps.
* If `civix` needs to add a new `hook_civicrm_foo`, then the author must manually create the stub
function in `mymod.php`. `civix` has documentation (`UPGRADE.md`) which keeps a long list of stubs that must
be manually added.
* If `civix` has an update for `_mymod_civix_civicrm_xmlMenu`, then the author must regenerate `mymod.civix.php`.
* If `mymod_civix_xmlMenu` needs a change, then the author must apply it manually.
* If `civix`'s spin on `hook_civicrm_xmlMenu` becomes widespread, then the `xmlMenu` boilerplate is duplicated
across many extensions.
After
-----
An extension may enable a mixin in `info.xml`, eg:
```xml
<mixins>
<mixin>civix-register-files@2.0</mixin>
</mixins>
```
Civi will look for a file `mixin/civicrm-register-files@2.0.0.mixin.php` (either in the extension or core). The file follows this pattern:
```php
return function(\CRM_Extension_MixInfo $mixInfo, \CRM_Extension_BootCache $bootCache) {
// echo "This is " . $mixInfo->longName . "!\n";
\Civi::dispatcher()->addListener("hook_civicrm_xmlMenu", function($e) use ($mixInfo) {
...
});
}
```
The mixin file is a plain PHP file that can be debugged/copied/edited verbatim, and it can register for hooks on its
own. The code is no longer a "template", and it doesn't need to be interwoven between `mymod.php` and
`mymod.civix.php`.
It is expected that a system may have multiple copies of a mixin. It will choose the newest compatible copy.
Hypothetically, if there were a security update or internal API change, core might ship a newer version to supplant the
old copy in any extensions.
Technical Details
-----------------
Mixins may define internal classes/interfaces/functions. However, each major-version
must have a distinct prefix (e.g. `\V2\Mymixin\FooInterface`). Minor-versions may be
provide incremental revisions over the same symbol (but it's imperative for newer
increments to provide the backward-compatibility).
MixinScanner - Make it easier to instantiate and pay with instances
Ex: cv ev '$o=new CRM_Extension_MixinScanner(); var_export($o->createLoader());'
MixinScanner - Enable scanning of `[civicrm.root]/mixin`