civicrm-core.git
4 years agoMerge pull request #16433 from eileenmcnaughton/fatal
Seamus Lee [Thu, 30 Jan 2020 21:38:42 +0000 (08:38 +1100)]
Merge pull request #16433 from eileenmcnaughton/fatal

dev/core#560 Replace fatal with exception

4 years agoMerge pull request #16431 from colemanw/explorerCss
Eileen McNaughton [Thu, 30 Jan 2020 21:28:59 +0000 (10:28 +1300)]
Merge pull request #16431 from colemanw/explorerCss

APIv4 Explorer css tweaks

4 years agoReplace fatal with exception
eileen [Thu, 30 Jan 2020 20:30:48 +0000 (09:30 +1300)]
Replace fatal with exception

4 years agoMerge pull request #16365 from mattwire/civicontribute_disabled_devcore547
Eileen McNaughton [Thu, 30 Jan 2020 20:05:54 +0000 (09:05 +1300)]
Merge pull request #16365 from mattwire/civicontribute_disabled_devcore547

dev/core#547 If CiviContribute is not enabled don't crash when calling ContributionPage.getoptions or Event.getoptions

4 years agoMerge pull request #16392 from jaapjansma/dev_1522_tests
Eileen McNaughton [Thu, 30 Jan 2020 20:04:16 +0000 (09:04 +1300)]
Merge pull request #16392 from jaapjansma/dev_1522_tests

dev/core#1522 Handle space as thousand separator

4 years agoIf CiviContribute is not enabled don't crash when calling ContributionPage.getoptions...
Matthew Wire [Thu, 23 Jan 2020 22:53:16 +0000 (22:53 +0000)]
If CiviContribute is not enabled don't crash when calling ContributionPage.getoptions or Event.getoptions

4 years agoAPIv4 Explorer css tweaks
Coleman Watts [Thu, 30 Jan 2020 03:36:08 +0000 (22:36 -0500)]
APIv4 Explorer css tweaks

4 years agoIssue 1522: style formatting
Jaap Jansma [Thu, 30 Jan 2020 10:07:46 +0000 (11:07 +0100)]
Issue 1522: style formatting

4 years agoMerge pull request #16398 from eileenmcnaughton/pref_form
Seamus Lee [Thu, 30 Jan 2020 04:53:43 +0000 (15:53 +1100)]
Merge pull request #16398 from eileenmcnaughton/pref_form

dev/core#1558 [REF] Remove deprecated code from CRM_Admin_Form_Preferences

4 years agoMerge pull request #15842 from totten/master-config-backend
Seamus Lee [Thu, 30 Jan 2020 03:50:32 +0000 (14:50 +1100)]
Merge pull request #15842 from totten/master-config-backend

dev/core#1387 Continue removal of "config_backend"

4 years ago(dev/core#1387) ConfigSetting - Deprecation+guard for retrieve()/add()
Tim Otten [Wed, 13 Nov 2019 06:14:57 +0000 (22:14 -0800)]
(dev/core#1387) ConfigSetting - Deprecation+guard for retrieve()/add()

These functions were traditionally used for accessing `config_backend`,
which was (mostly) dropped in v4.7 and became inert. However, the
functions are still referenced in a couple oddball cases.

Note that the references to `$domain->config_backend` are liable to raise
warnings if evaluated - since the field no longer exists on the DAO class.
Consequently, the extra `$hasBackend` guard should reduce warnings.

4 years ago(dev/core#1387) Remove some lingering references to config_backend
Tim Otten [Wed, 13 Nov 2019 05:54:54 +0000 (21:54 -0800)]
(dev/core#1387) Remove some lingering references to config_backend

4 years ago(dev/core#1387) Remove config_backend from sample/dev setup
Tim Otten [Wed, 13 Nov 2019 05:54:12 +0000 (21:54 -0800)]
(dev/core#1387) Remove config_backend from sample/dev setup

4 years ago(dev/core#1387) FiveTwentyThree - Drop civicrm_domain.config_backend if it snuck in
Tim Otten [Wed, 13 Nov 2019 05:38:56 +0000 (21:38 -0800)]
(dev/core#1387) FiveTwentyThree - Drop civicrm_domain.config_backend if it snuck in

This column was dropped in 4.7.alpha1, but it was still created on new installs, so

* Sites originating with 4.7 - 5.22 should have an empty copy of the column today
  (because it was defined in xml schema - but never used by live code).
* Sites originating with <4.7 (and subsequently upgraded) should not have the column today
  (because FourSeven.php previously dropped it).
* Sites originating with <4.7 (and not yet upgraded) should have the column with some data
  (because FourSeven.php hasn't run yet).
* It is unexpected that any site currently on 4.7-5.22 would have any data in that column.

Note: `dropColumn` has a built-in guard so it only drops the column if it
exists.

4 years ago(dev/core#1387) Domain.xml - Drop config_backend
Tim Otten [Wed, 13 Nov 2019 05:19:04 +0000 (21:19 -0800)]
(dev/core#1387) Domain.xml - Drop config_backend

4 years agoMerge pull request #15760 from colemanw/iconPicker
Eileen McNaughton [Thu, 30 Jan 2020 02:15:11 +0000 (15:15 +1300)]
Merge pull request #15760 from colemanw/iconPicker

IconPicker widget improvements

4 years agoMerge pull request #16405 from totten/master-test-codegen
Eileen McNaughton [Thu, 30 Jan 2020 01:57:03 +0000 (14:57 +1300)]
Merge pull request #16405 from totten/master-test-codegen

Civi\Test - Allow `headless()->apply()` (etc) to execute without setup.sh

4 years agoMerge pull request #16403 from totten/master-relurl
Eileen McNaughton [Thu, 30 Jan 2020 01:52:27 +0000 (14:52 +1300)]
Merge pull request #16403 from totten/master-relurl

Allow most values of $civicrm_paths['XXX']['url'] to be relative

4 years agoMerge pull request #16407 from totten/master-altpkgs-basic
Eileen McNaughton [Thu, 30 Jan 2020 01:49:22 +0000 (14:49 +1300)]
Merge pull request #16407 from totten/master-altpkgs-basic

Fix loading with alternate packages path (system-level)

4 years agoMerge pull request #16406 from totten/master-menu-warn
Eileen McNaughton [Thu, 30 Jan 2020 01:39:48 +0000 (14:39 +1300)]
Merge pull request #16406 from totten/master-menu-warn

CRM_Core_Menu - Fix warnings during local test run (dev/core#742)

4 years agoMerge pull request #16409 from totten/master-altpkgs-ui
Eileen McNaughton [Thu, 30 Jan 2020 01:13:46 +0000 (14:13 +1300)]
Merge pull request #16409 from totten/master-altpkgs-ui

 Fix loading with alternate packages path (UI-level)

4 years agoMerge pull request #16411 from colemanw/api4EntityDoc
Eileen McNaughton [Thu, 30 Jan 2020 01:02:10 +0000 (14:02 +1300)]
Merge pull request #16411 from colemanw/api4EntityDoc

Api4 docs improvements

4 years agoMerge pull request #16423 from totten/master-setup04
Eileen McNaughton [Thu, 30 Jan 2020 00:59:03 +0000 (13:59 +1300)]
Merge pull request #16423 from totten/master-setup04

composer.json - Update civicrm-setup

4 years agoMerge pull request #16402 from eileenmcnaughton/part_test
Eileen McNaughton [Thu, 30 Jan 2020 00:56:41 +0000 (13:56 +1300)]
Merge pull request #16402 from eileenmcnaughton/part_test

[REF] Add test for line item, extract fn

4 years agoMerge pull request #16422 from seamuslee001/contribute_summary_report_stats_hook
Seamus Lee [Thu, 30 Jan 2020 00:44:28 +0000 (11:44 +1100)]
Merge pull request #16422 from seamuslee001/contribute_summary_report_stats_hook

[REF] Ensure that the from is correctly modified in both the main que…

4 years agoAdd test for line item, extract fn
eileen [Tue, 28 Jan 2020 21:41:38 +0000 (10:41 +1300)]
Add test for line item, extract fn

4 years agocomposer.json - Update civicrm-setup
Tim Otten [Wed, 29 Jan 2020 22:01:49 +0000 (14:01 -0800)]
composer.json - Update civicrm-setup

4 years agoMerge pull request #16421 from totten/master-config-php
Tim Otten [Wed, 29 Jan 2020 22:06:30 +0000 (14:06 -0800)]
Merge pull request #16421 from totten/master-config-php

composer.json - Explicitly set target PHP platform

4 years agoAdd in unit test of to verify the change
Seamus Lee [Wed, 29 Jan 2020 21:46:04 +0000 (08:46 +1100)]
Add in unit test of to verify the change

4 years ago[REF] Ensure that the from is correctly modified in both the main query and in the...
Seamus Lee [Wed, 29 Jan 2020 21:20:03 +0000 (08:20 +1100)]
[REF] Ensure that the from is correctly modified in both the main query and in the statistics section of the Contribute Summary Report

4 years agocomposer.json - Explicitly set target PHP platform
Tim Otten [Wed, 29 Jan 2020 20:12:47 +0000 (12:12 -0800)]
composer.json - Explicitly set target PHP platform

Overview
--------

This refines the way in which `composer` resolves dependencies - so as to
prefer packages that are compatible with Civi's declared minimum requirement.

https://blog.martinhujer.cz/17-tips-for-using-composer-efficiently/#tip-%2315%3A-specify-the-production-php-version-in-%60composer.json%60

Before
------

Suppose that:

* The current minimum declared is PHP 7.0. (That happens to be the case at time of writing.)
* You locally use PHP 7.4.
* You wish to add or update a package.

`composer` may grab a version of a package that works on PHP 7.4 -- but is
not available/compatible with PHP 7.0. Then you start developing things under
the false expectation that the library will be usable -- and only discover the
problem later.

After
-----

`composer` should grab packages that are compatible with the declared PHP version,
regardless of the local PHP version.

Comment
-------

* This is orthogonal to the question of *which* PHP version should be the
  platform for CiviCRM -- whatever version that is, this dynamic can play out.
  The patch doesn't change that.
* The value will undoubtedly change over time, which has a small maintenance
  issue to keep the PHP constants in sync with the composer metadata.
  KISS solution: add a comment!

4 years agoMerge pull request #16420 from civicrm/5.22
Eileen McNaughton [Wed, 29 Jan 2020 19:55:00 +0000 (08:55 +1300)]
Merge pull request #16420 from civicrm/5.22

5.22 to master

4 years agoMerge pull request #16417 from jmcclelland/1555b
Eileen McNaughton [Wed, 29 Jan 2020 19:54:18 +0000 (08:54 +1300)]
Merge pull request #16417 from jmcclelland/1555b

avoid undefined offset and uninitialized key errors on upgrade - dev/core#1555

4 years agoAPIv4 - Add docblocks to base classes
Coleman Watts [Wed, 29 Jan 2020 16:43:55 +0000 (11:43 -0500)]
APIv4 - Add docblocks to base classes

4 years agoMerge pull request #16419 from civicrm/5.22
Seamus Lee [Wed, 29 Jan 2020 14:39:27 +0000 (01:39 +1100)]
Merge pull request #16419 from civicrm/5.22

5.22

4 years agoMerge pull request #16418 from seamuslee001/5.22
Seamus Lee [Wed, 29 Jan 2020 14:37:45 +0000 (01:37 +1100)]
Merge pull request #16418 from seamuslee001/5.22

Add release-notes/5.21.2.md

4 years agoAdd release-notes/5.21.2.md
Tim Otten [Thu, 23 Jan 2020 23:58:31 +0000 (15:58 -0800)]
Add release-notes/5.21.2.md

4 years agoavoid undefined offset and uninitialized key errors on upgrade
Jamie McClelland [Tue, 28 Jan 2020 16:48:38 +0000 (11:48 -0500)]
avoid undefined offset and uninitialized key errors on upgrade

https://lab.civicrm.org/dev/core/issues/1555

4 years agoMerge pull request #16415 from eileenmcnaughton/fatal
Matthew Wire [Wed, 29 Jan 2020 11:00:39 +0000 (11:00 +0000)]
Merge pull request #16415 from eileenmcnaughton/fatal

[NFC] throw exceptions, single quotes, declare exceptions, remove unused param

4 years agoMerge pull request #16414 from eileenmcnaughton/acl
Matthew Wire [Wed, 29 Jan 2020 10:59:05 +0000 (10:59 +0000)]
Merge pull request #16414 from eileenmcnaughton/acl

[REF] Remove some unused variables

4 years agoMerge pull request #16412 from eileenmcnaughton/cont_settings
Matthew Wire [Wed, 29 Jan 2020 10:58:09 +0000 (10:58 +0000)]
Merge pull request #16412 from eileenmcnaughton/cont_settings

dev/core#1558 [REF] Remove unnecessary query, clean up silly function

4 years agoMerge pull request #16408 from totten/master-altpkgs-setupsh
Seamus Lee [Wed, 29 Jan 2020 08:41:18 +0000 (19:41 +1100)]
Merge pull request #16408 from totten/master-altpkgs-setupsh

setup.sh - Fixes for running in basic composer file-structure

4 years agoIssue 1522: missing comments
Jaap Jansma [Wed, 29 Jan 2020 07:14:00 +0000 (08:14 +0100)]
Issue 1522: missing comments

4 years ago[NFC] throw exceptions, single quotes, declare exceptions, remove unused param
eileen [Wed, 29 Jan 2020 06:48:11 +0000 (19:48 +1300)]
[NFC] throw exceptions, single quotes, declare exceptions, remove unused param

4 years agoRemove some unused variables
eileen [Wed, 29 Jan 2020 04:18:46 +0000 (17:18 +1300)]
Remove some unused variables

phpcs correctly found these

Eileens-MacBook-Pro:civicrm eileenmcnaughton$ phpcs --standard=DrupalPractice CRM/ACL

FILE: /Users/eileenmcnaughton/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/ACL/Form/WordPress/Permissions.php
---------------------------------------------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
---------------------------------------------------------------------------------------------------------------------
 197 | WARNING | Unused global variable .
---------------------------------------------------------------------------------------------------------------------

FILE: /Users/eileenmcnaughton/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/ACL/Form/ACL.php
---------------------------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
---------------------------------------------------------------------------------------------------
 97 | WARNING | Unused variable .
---------------------------------------------------------------------------------------------------

FILE: /Users/eileenmcnaughton/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/ACL/BAO/ACL.php
--------------------------------------------------------------------------------------------------
FOUND 0 ERRORS AND 3 WARNINGS AFFECTING 3 LINES
--------------------------------------------------------------------------------------------------
 171 | WARNING | Unused variable .
 172 | WARNING | Unused variable .
 296 | WARNING | Unused variable .
--------------------------------------------------------------------------------------------------

4 years ago[REF] spare a query
eileen [Wed, 29 Jan 2020 01:22:42 +0000 (14:22 +1300)]
[REF] spare a query

getInvoiceNumber returns NULL if the 'invoicing' setting is disabled, by checking slightly earlier
we can skip a query if it is not

Upgrade fix: Copy code to upgrade script rather than call a function.

The function will change as we fix the setting but we want the upgrade function to work off the old setting

Test fix: Use hard coded invoicePrefix

We know what it is - if it were not set right then the test would not pick it up because it is comparing
based on the assumption it is - using the string is more reliable

4 years agoApi4 Explorer - enable debug by default
Coleman Watts [Wed, 29 Jan 2020 01:34:45 +0000 (20:34 -0500)]
Api4 Explorer - enable debug by default

4 years agoApi4 Explorer - Add code styles and display in tabs
Coleman Watts [Wed, 29 Jan 2020 00:56:33 +0000 (19:56 -0500)]
Api4 Explorer - Add code styles and display in tabs

4 years agoMerge pull request #16410 from civicrm/5.22
Eileen McNaughton [Wed, 29 Jan 2020 00:42:11 +0000 (13:42 +1300)]
Merge pull request #16410 from civicrm/5.22

5.22 to master

4 years agoMerge pull request #16393 from demeritcowboy/activity-report-pager-crash
Eileen McNaughton [Wed, 29 Jan 2020 00:41:45 +0000 (13:41 +1300)]
Merge pull request #16393 from demeritcowboy/activity-report-pager-crash

dev/core#1552 Fatal error using pager on Activity Detail Report when Include Case Activities is Yes

4 years agoMerge pull request #16404 from totten/master-slashes
Eileen McNaughton [Wed, 29 Jan 2020 00:41:06 +0000 (13:41 +1300)]
Merge pull request #16404 from totten/master-slashes

Make $civicrm_paths less sensitive to trailing slashes. Add tests.

4 years agoCRM_Badge_Form_Layout - (Partially) Fix loading with alternate packages path
Tim Otten [Wed, 15 Jan 2020 21:48:58 +0000 (13:48 -0800)]
CRM_Badge_Form_Layout - (Partially) Fix loading with alternate packages path

This change should work as well as before, and it's more correct.  However,
it's not a full fix making the badge-editor work in D8 - the relevant code
probably needs more of a rethink. But... this is cleaner...

4 years agojs/*.js - Fix loading with alternate packages path
Tim Otten [Thu, 16 Jan 2020 09:24:35 +0000 (01:24 -0800)]
js/*.js - Fix loading with alternate packages path

4 years agoCRM_UF_Page_ProfileEditor - Fix loading with alternate packages path
Tim Otten [Thu, 16 Jan 2020 08:05:10 +0000 (00:05 -0800)]
CRM_UF_Page_ProfileEditor - Fix loading with alternate packages path

4 years agocrmResURL, crmResPath - Allow full path expressions
Tim Otten [Thu, 16 Jan 2020 09:21:20 +0000 (01:21 -0800)]
crmResURL, crmResPath - Allow full path expressions

Before
------

In Smarty, there is no way to request values from `Civi::paths()`.

After
-----

In Smarty, you can request values from `Civi::paths()` using these notations:

```
{crmResURL expr="[civicrm.root]/foo"}
{crmResPath expr="[civicrm.root]/foo"}
```

4 years agobin/setup.sh - Skip 'composer install' on D8
Tim Otten [Thu, 16 Jan 2020 01:38:50 +0000 (17:38 -0800)]
bin/setup.sh - Skip 'composer install' on D8

4 years agoGenCode - Allow execution when civicrm-packages is loaded higher up via composer
Tim Otten [Thu, 16 Jan 2020 01:22:33 +0000 (17:22 -0800)]
GenCode - Allow execution when civicrm-packages is loaded higher up via composer

4 years agoGenCode - Optionaly allow direct control over civicrm.config.php template
Tim Otten [Thu, 16 Jan 2020 01:22:05 +0000 (17:22 -0800)]
GenCode - Optionaly allow direct control over civicrm.config.php template

4 years agoCRM_Utils_String - Fix loading with alternate packages path
Tim Otten [Sat, 18 Jan 2020 06:02:38 +0000 (22:02 -0800)]
CRM_Utils_String - Fix loading with alternate packages path

4 years agoCRM_Core_ClassLoader - Fix loading with alternate packages path
Tim Otten [Wed, 15 Jan 2020 21:40:32 +0000 (13:40 -0800)]
CRM_Core_ClassLoader - Fix loading with alternate packages path

4 years agoCRM_Core_IDS - Fix loading with alternate packages path
Tim Otten [Wed, 15 Jan 2020 21:41:09 +0000 (13:41 -0800)]
CRM_Core_IDS - Fix loading with alternate packages path

4 years agoCRM_Core_Smarty - Fix loading with alternate packages path
Tim Otten [Wed, 15 Jan 2020 21:41:54 +0000 (13:41 -0800)]
CRM_Core_Smarty - Fix loading with alternate packages path

4 years agoCRM_Core_Resources - Fix loading with alternate packages path
Tim Otten [Wed, 15 Jan 2020 22:37:27 +0000 (14:37 -0800)]
CRM_Core_Resources - Fix loading with alternate packages path

4 years agoApi4 - add more debug output
Coleman Watts [Tue, 28 Jan 2020 22:12:29 +0000 (17:12 -0500)]
Api4 - add more debug output

4 years agoCRM_Core_Menu - Fix warnings during local test run (dev/core#742)
Tim Otten [Sat, 18 Jan 2020 07:44:18 +0000 (23:44 -0800)]
CRM_Core_Menu - Fix warnings during local test run (dev/core#742)

Before
------

In certain local OSX+D8 test environments, when running the full suite, I got a large number of warnings like this:

```
Warning: simplexml_load_file(): I/O warning : failed to load external entity "/Users/totten/bknix/build/drupal8-clean/web/vendor/civicrm/civicrm-core//CRM/Campaign/xml/Menu/Campaign.xml" in /Users/totten/bknix/build/drupal8-clean/web/vendor/civicrm/civicrm-core/CRM/Core/Menu.php on line 99
    ```

After
-----

Those warnings seem to have gone away.

The menu still seems to populate correctly.

Comments
--------

This smells a lot like dev/core#742 -- e.g.  it's the same warning and
(after adjusting for changes in line-numbering over the months) same line of
code.

4 years agoE2E_Core_LocalizedDataTest - Adaptation for composer/D8/git-style deployments
Tim Otten [Tue, 28 Jan 2020 01:13:10 +0000 (17:13 -0800)]
E2E_Core_LocalizedDataTest - Adaptation for composer/D8/git-style deployments

4 years agoCivi\Test - Allow `headless()->apply()` (etc) to execute without setup.sh
Tim Otten [Mon, 27 Jan 2020 23:59:41 +0000 (15:59 -0800)]
Civi\Test - Allow `headless()->apply()` (etc) to execute without setup.sh

Before
------

If you have a copy of the `git` codebase and wish to run any of the headless
test suites, you *must* run `setup.sh` aka `GenCode` beforehand.

This is because certain files - `sql/civicrm.mysql` and
`sql/civicrm_data.mysql` - are used in the headless suite.  As large
auto-generated files, they are not provided in git.

After
-----

The files `sql/civicrm.mysql` and `sql/civicrm_data.mysql` are no longer
required by the test suite -- the headless tests will directly use the
`GenCode` classes to produce the needful.

Comments
--------

The general thrust of this commit is to find spots which read an SQL file, e.g.

```php
\Civi\Test::execute(file_get_contents("foobar.mysql"));
```

and instead call the generator for that file, e.g.:

```php
$schema = new \CRM_Core_CodeGen_Schema(\Civi\Test::codeGen());
$result = $schema->generateFooBar();
\Civi\Test::execute($result['foobar.mysql']);
});
```

In doing so, we incorporate a couple tricks:

* The SQL content is cached for the duration of the test-run (`Civi\Test::$statics`).
  Generating the SQL is not super expensive... but `Civi\Test::headless()->...apply()`
  may be called thousands of times, so it could add-up. Just cache it.
* Most of the `generateFooBar()` functions depend in some fashion on `ts()`. This
  commit depends on a preceding commit to make `ts()` more amenable to execution
  during early stages of the test.
    * Related discussion: https://chat.civicrm.org/civicrm/pl/ehohytqkf7bd5prg9w75dq4qqw

4 years ago(REF) Civi\Test - Use de-minimis ts() while runnning installation
Tim Otten [Mon, 27 Jan 2020 23:50:52 +0000 (15:50 -0800)]
(REF) Civi\Test - Use de-minimis ts() while runnning installation

When running early-stage installation helpers like
`Civi\Test::headless()->...->apply()` or `Civi\Test:data()->...->populate()`
it can be hard to call `CRM_CodeGen_*` functionality - because that relies
on `ts()` which relies on other system services.

This change basically suspends/swaps some of the default `ts()` behavior
while the test system performs installation.

The change is in two sub-parts:

* Implement `asPreInstall()` (Files: `Civi/Test.php` and `CRM/Core/I18n.php`)
    * Add the helper `\Civi\Test::asPreInstall()`
    * Skip the use of "word replacements" during the pre-install phase
* Use `asPreInstall()` (Files: `Civi/Test/Data.php` and `Civi/Test/CiviEnvBuilder.php`)
    * Wrap existing code with the helper `\Civi\Test::asPreInstall(). These changes look big, but that's
      just whitespace -- inserting `asPreInstall()` changes the indentation.

This lays groundwork for another commit which will replace some references to `sql/civicrm*.mysql`
with references to `CRM_CodeGen_*`.

4 years ago(REF) CRM_Core_CodeGen_Schema - Allow generating SQL without making files
Tim Otten [Wed, 22 Jan 2020 22:46:55 +0000 (14:46 -0800)]
(REF) CRM_Core_CodeGen_Schema - Allow generating SQL without making files

Overview
--------

This is a refactoring to allow consumers of `CRM_Core_CodeGen_Schema` to
request the SQL without creating files.

Before
------

Calls to `CRM_Core_CodeGen_Schema::generateDropSql` (ad nauseum) create SQL files.

After
-----

Calls to `CRM_Core_CodeGen_Schema::generateDropSql` (ad nauseum) return SQL strings.

Comments
--------

To ensure that files are still generated consistently, you can use this procedure:

```
git checkout MY_BASE_BRANCH
./bin/setup.sh -g
cp -r sql sql.orig

git checkout MY_MODIFIED_BRANCH

rm sql/civicrm.mysql sql/civicrm_acl*mysql sql/civicrm_data*mysql sql/civicrm_drop.mysql sql/civicrm_navigation.mysql -f
./bin/setup.sh -g

colordiff -ru sql.orig sql
```

4 years agoMake $civicrm_paths less sensitive to trailing slashes. Add tests.
Tim Otten [Wed, 22 Jan 2020 05:14:28 +0000 (21:14 -0800)]
Make $civicrm_paths less sensitive to trailing slashes. Add tests.

Overview
--------

Recall that the default value of `imageUploadURL` is `[civicrm.files]/persist/contribute/`. Now, suppose you have one of these two configurations in `civicrm.settings.php`:

```php
// (1) Trailing slash configuration
$civicrm_paths['civicrm.files']['url'] = 'http://tmpd8-clean.bknix:8001/sites/default/files/civicrm/';
$civicrm_paths['civicrm.files']['path'] = '/Users/totten/bknix/build/tmpd8-clean/web/sites/default/files/civicrm/';

// (2) Trimmed slash configuration
$civicrm_paths['civicrm.files']['url'] = 'http://tmpd8-clean.bknix:8001/sites/default/files/civicrm';
$civicrm_paths['civicrm.files']['path'] = '/Users/totten/bknix/build/tmpd8-clean/web/sites/default/files/civicrm';
```

You could inspect to see if the URL is generated correctly by running these commands:

```
$ cv api setting.get return=imageUploadURL
$ cv url -c imageUploadURL
$ cv url -d "[civicrm.files]/persist/contribute/"
$ cv path -c imageUploadDir
$ cv path -d "[civicrm.files]/persist/contribute/"
```

Before
------

Under either configuration (trailing-slash or trimmed-slash), you'll find that paths are generated properly (`cv path ...` or `Civi::paths()->getPath(...)`).

For generating URLs (`cv url ...` or `Civi::paths()->getUrl(...)`), only the trailing-slash cfg works.  The trimmed-slash cfg leads to a bad URL with a missing slash.

```
[bknix-max:~/bknix/build/tmpd8prj-clean/web] cv api setting.get return=imageUploadURL
{
    "is_error": 0,
    "version": 3,
    "count": 1,
    "id": 1,
    "values": {
        "1": {
            "imageUploadURL": "[civicrm.files]/persist/contribute/"
        }
    }
}

[bknix-max:~/bknix/build/tmpd8prj-clean/web] cv url -c imageUploadURL
"http://tmpd8prj-clean.bknix:8001/sites/default/files/civicrmpersist/contribute"

[bknix-max:~/bknix/build/tmpd8prj-clean/web] cv url -d "[civicrm.files]/persist/contribute/"
"http://tmpd8prj-clean.bknix:8001/sites/default/files/civicrmpersist/contribute/"
```

This is surprising because the path expression (`[civicrm.files]/persist/contribute`) includes a slash...  but it disappears in the final computation.

After
-----

Both configurations work, for paths and for URLs.

4 years agoAdd E2E_Core_PathUrlTest to ensure that various path/URL lookups work
Tim Otten [Sat, 18 Jan 2020 02:10:22 +0000 (18:10 -0800)]
Add E2E_Core_PathUrlTest to ensure that various path/URL lookups work

This will allow E2E matrix to send a signal about whether the default
configurations produce valid URLs.

4 years agoThemesTest - Use more realistic expected-values
Tim Otten [Sat, 18 Jan 2020 06:00:06 +0000 (22:00 -0800)]
ThemesTest - Use more realistic expected-values

1. The expected value of `$civicrmBaseUrl` should not be blank. The old value was a fiction of
   the unit-test environment. Be more realistic.
2. The expected values for extension-generated URLs should abide the same `$civicrmBaseUrl` as others.

4 years agoAllow most values of $civicrm_paths['XXX']['url'] to be relative
Tim Otten [Thu, 16 Jan 2020 08:42:55 +0000 (00:42 -0800)]
Allow most values of $civicrm_paths['XXX']['url'] to be relative

Overview
--------

The `$civicrm_paths` variable allows a sysadmin to override various path and
URL computations.

```php
$civicrm_paths['civicrm.packages']['url'] = 'https://example.com/libraries/civicrm/packages';
```

The variable was originally tested with absolute URLs, and the subsequent
examples/docs use absolute URLs (https://docs.civicrm.org/dev/en/latest/framework/filesystem/).

These values are used to generate addresses, as in:

```php
$abs = Civi::paths()->getUrl('[civicrm.packages]/foo.js', 'absolute');
$rel = Civi::paths()->getUrl('[civicrm.packages]/foo.js', 'relative');
```

The patch allows more values in `$civicrm_paths` while ensuring that
`getUrl()` works as expected.

Before
------

The `getUrl()` requests only behave correctly if the override is an absolute URL - not if it's relative.

After
-----

The `getUrl()` requests behave correctly if the override is either an absolute URL or a relative URL.

```php
$civicrm_paths['civicrm.packages']['url'] = 'https://example.com/libraries/civicrm/packages';
$civicrm_paths['civicrm.packages']['url'] = '/libraries/civicrm/packages';
```

Comments
--------

* `toAbsoluteUrl()` needs a base to prepend. I initially used `HTTP_HOST`
  but switched to `cms.root`, but correctly inferring scheme and host and port
  and httpd prefixes would be more complex - esp for background/CLI jobs.
  Using `cms.root` as the base is simpler.
* It's tempting to allow recursive variables. But it's not actually needed for
  my purposes, and it would add complexity/maintenance. If it's really needed,
  one could update `toAbsoluteUrl()` to quickly check for variables
  (`$url[0] === '['`) and then evaluate them. But for now... I think the
  simpler format is fine.

4 years agoMerge pull request #16388 from eileenmcnaughton/event_ref
Eileen McNaughton [Tue, 28 Jan 2020 20:10:06 +0000 (09:10 +1300)]
Merge pull request #16388 from eileenmcnaughton/event_ref

[REF] Extract & share code to determine revenue recognition date.

4 years agofatal error when using pager
demeritcowboy [Tue, 28 Jan 2020 19:14:31 +0000 (14:14 -0500)]
fatal error when using pager

4 years agoApi4 - Improve docblocks and their display in the Explorer
Coleman Watts [Tue, 28 Jan 2020 17:35:14 +0000 (12:35 -0500)]
Api4 - Improve docblocks and their display in the Explorer

4 years agoImprove code docs for Api4 Entity entity
Coleman Watts [Sat, 25 Jan 2020 15:49:28 +0000 (10:49 -0500)]
Improve code docs for Api4 Entity entity

4 years agoAPIv4 - Accept multiple fieldNames in Get helper fn
Coleman Watts [Tue, 28 Jan 2020 00:47:21 +0000 (19:47 -0500)]
APIv4 - Accept multiple fieldNames in Get helper fn

4 years agoMerge pull request #16390 from artfulrobot/tame-propbag-deprecation-logs
Matthew Wire [Tue, 28 Jan 2020 18:17:00 +0000 (18:17 +0000)]
Merge pull request #16390 from artfulrobot/tame-propbag-deprecation-logs

Prevent PropertBag from being so noisy about deprecation warnings

4 years ago[REF] Extract & share code to determine revenue recognition date.
eileen [Sun, 26 Jan 2020 22:05:22 +0000 (11:05 +1300)]
[REF] Extract & share code to determine revenue recognition date.

This also starts the process of consolidating building the 'contribution params' array

4 years agoMerge pull request #16395 from eileenmcnaughton/cont_setting
Seamus Lee [Tue, 28 Jan 2020 06:14:38 +0000 (17:14 +1100)]
Merge pull request #16395 from eileenmcnaughton/cont_setting

Finish removal of deferred_revenue_enabled from non-standard setting

4 years agoMerge pull request #16271 from mattwire/pcp_extractsupportertext
Eileen McNaughton [Tue, 28 Jan 2020 04:37:47 +0000 (17:37 +1300)]
Merge pull request #16271 from mattwire/pcp_extractsupportertext

REF Extract code to build pcp_supporter_text and enable translation

4 years agoMerge pull request #16396 from eileenmcnaughton/cont_setting2
Seamus Lee [Tue, 28 Jan 2020 04:13:22 +0000 (15:13 +1100)]
Merge pull request #16396 from eileenmcnaughton/cont_setting2

[REF] Remove unused variables

4 years agoMerge pull request #16394 from demeritcowboy/extdir-links
Eileen McNaughton [Tue, 28 Jan 2020 03:15:36 +0000 (16:15 +1300)]
Merge pull request #16394 from demeritcowboy/extdir-links

dev/core#1550 Invalid links to extension directory in popup help text

4 years ago[REF] Remove deprecated code from CRM_Admin_Form_Preferences
eileen [Tue, 28 Jan 2020 02:44:06 +0000 (15:44 +1300)]
[REF] Remove deprecated code from CRM_Admin_Form_Preferences

This form was cleaned up back in 2018 but all the stuff to handle ->_varNames was deprecated rather than
removed in case extensions were leveraging it in some way. I'm removing it now although I commented rather
than removed a few lines that I suspect can also go

4 years ago[REF] Remove unused variables
eileen [Tue, 28 Jan 2020 01:03:47 +0000 (14:03 +1300)]
[REF] Remove unused variables

4 years agoFinish removal of deferred_revenue_enabled from non-standard setting
eileen [Tue, 28 Jan 2020 00:54:24 +0000 (13:54 +1300)]
Finish removal of deferred_revenue_enabled from non-standard setting

4 years agoMerge pull request #16372 from colemanw/api4Magic
Eileen McNaughton [Mon, 27 Jan 2020 23:17:20 +0000 (12:17 +1300)]
Merge pull request #16372 from colemanw/api4Magic

Api4 - Use explicit adder functions rather than magicMethod

4 years agoinvalid links
demeritcowboy [Mon, 27 Jan 2020 22:14:53 +0000 (17:14 -0500)]
invalid links

4 years agoissue 1522
Jaap Jansma [Mon, 27 Jan 2020 15:19:48 +0000 (16:19 +0100)]
issue 1522

4 years agoPrevent PropertBag from being so noisy about deprecation warnings for #16390
Rich Lott / Artful Robot [Mon, 27 Jan 2020 12:06:34 +0000 (12:06 +0000)]
Prevent PropertBag from being so noisy about deprecation warnings for #16390

4 years agoMerge pull request #16389 from eileenmcnaughton/ev_static
Seamus Lee [Mon, 27 Jan 2020 06:28:32 +0000 (17:28 +1100)]
Merge pull request #16389 from eileenmcnaughton/ev_static

Fix tests to use buildFeeFn

4 years agoMerge pull request #15408 from ejegg/l10n
Seamus Lee [Mon, 27 Jan 2020 06:28:06 +0000 (17:28 +1100)]
Merge pull request #15408 from ejegg/l10n

dev/translation#30 Move l10n resource dir under private files

4 years ago(dev/translation#30) Undo new MagicMerge::$l10nDir property
Tim Otten [Mon, 27 Jan 2020 03:15:03 +0000 (19:15 -0800)]
(dev/translation#30) Undo new MagicMerge::$l10nDir property

The previous commit added a new property `l10nDir` to `MagicMerge`.

The property doesn't seem to be needed, so omit it.

4 years agoMerge pull request #16352 from mlutfy/translation34
Eileen McNaughton [Mon, 27 Jan 2020 01:19:35 +0000 (14:19 +1300)]
Merge pull request #16352 from mlutfy/translation34

dev/translation#34 Fix Contact Reference option for Postal Code

4 years agoMerge pull request #16367 from MegaphoneJon/event-32
Seamus Lee [Mon, 27 Jan 2020 00:46:46 +0000 (11:46 +1100)]
Merge pull request #16367 from MegaphoneJon/event-32

event#32: Fix bad variable in message template

4 years agodev/translation#30 Move l10n resource dir under private files
Elliott Eggleston [Sun, 6 Oct 2019 16:24:18 +0000 (18:24 +0200)]
dev/translation#30 Move l10n resource dir under private files

Looks under [civicrm.private]/l10n if that exists, falling back to
[civicrm.root]/l10n.

Since I18n::getResourceDirectory needs to be called from GenCode,
where we don't have the base directory defined, we make the l10n
path factory function consult new #define CIVICRM_L10N_BASEDIR first.

In GenCode itself, keep using the old location for now, but make
it possible to change the location with an env var as soon as we
update buildkit.

4 years agoAssert on fail
eileen [Mon, 20 Jan 2020 21:17:05 +0000 (10:17 +1300)]
Assert on fail

4 years agoFix tests to use buildFeeFn
eileen [Mon, 20 Jan 2020 21:16:39 +0000 (10:16 +1300)]
Fix tests to use buildFeeFn

4 years agoMerge pull request #16348 from eileenmcnaughton/ev_online
Eileen McNaughton [Mon, 27 Jan 2020 00:33:10 +0000 (13:33 +1300)]
Merge pull request #16348 from eileenmcnaughton/ev_online

Remove irrelevant code.