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 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
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`
colemanw [Wed, 1 Dec 2021 03:07:21 +0000 (22:07 -0500)]
Merge pull request #22165 from eileenmcnaughton/no_escape
Smarty variables] Prevent settings form assigned html from being escaped
Tim Otten [Wed, 1 Dec 2021 03:05:52 +0000 (19:05 -0800)]
Merge pull request #22197 from totten/master-xdebug3
DebugSubscriber - Fix test-suite compatibility with XDebug 3
Tim Otten [Wed, 1 Dec 2021 03:04:32 +0000 (19:04 -0800)]
Merge pull request #22188 from totten/master-uninstall
ManagedEntities - Fix permission error during uninstallation (regression-fix)
colemanw [Wed, 1 Dec 2021 01:24:56 +0000 (20:24 -0500)]
Merge pull request #22175 from eileenmcnaughton/smarty3
[Smarty variable][Civicase] remove isset
colemanw [Wed, 1 Dec 2021 01:24:20 +0000 (20:24 -0500)]
Merge pull request #22180 from eileenmcnaughton/smarty7
Remove issets from Activity search screen
colemanw [Wed, 1 Dec 2021 01:22:30 +0000 (20:22 -0500)]
Merge pull request #22172 from eileenmcnaughton/smarty
Avoid default escaping for blog titles