civicrm-core.git
6 years agosecurity/core#14 Add output encoding within js
Sean Madsen [Sun, 22 Apr 2018 23:06:46 +0000 (19:06 -0400)]
security/core#14 Add output encoding within js

6 years agosecurity/core#14 Validate "context" inputs
Sean Madsen [Sun, 22 Apr 2018 21:50:47 +0000 (17:50 -0400)]
security/core#14 Validate "context" inputs

When "context" is passed as a GET parameter, ensure that its values is
a valid "Alphanumeric" type. This helps prevent XSS when the "context"
value finds its way into templates that lack HTML output encoding.

Replace...

    CRM_Utils_Request::retrieve\((['"])context\1,(\s*)(['"])String\3

...with...

    CRM_Utils_Request::retrieve\($1context$1,$3Alphanumeric$3

Also search for the following and manually fix:

    \$_GET\[(['"])context\1\]
    \$_POST\[(['"])context\1\]
    \$_REQUEST\[(['"])context\1\]

6 years agoMerge pull request #12492 from eileenmcnaughton/msg_fix
Eileen McNaughton [Wed, 18 Jul 2018 21:54:15 +0000 (09:54 +1200)]
Merge pull request #12492 from eileenmcnaughton/msg_fix

dev/core/#/258 Fix message update routine.

6 years agoMerge pull request #12502 from eileenmcnaughton/no_pay
Eileen McNaughton [Wed, 18 Jul 2018 12:57:58 +0000 (00:57 +1200)]
Merge pull request #12502 from eileenmcnaughton/no_pay

Prevent financial transactions from being saved with no payment instr…

6 years agoPrevent financial transactions from being saved with no payment instrument
eileen [Tue, 17 Jul 2018 21:33:42 +0000 (09:33 +1200)]
Prevent financial transactions from being saved with no payment instrument

6 years agoFix message update routine.
eileen [Tue, 17 Jul 2018 07:59:27 +0000 (19:59 +1200)]
Fix message update routine.

Turns out this was seeming to pass but not because the test wasn't running.

6 years agoMerge pull request #12447 from mattwire/allcontactexport_regression
Seamus Lee [Tue, 10 Jul 2018 20:36:35 +0000 (06:36 +1000)]
Merge pull request #12447 from mattwire/allcontactexport_regression

dev/core#249 Fix crash when performing export all contacts from search

6 years agoFix crash when performing export all contacts from search
Matthew Wire [Mon, 9 Jul 2018 22:38:10 +0000 (23:38 +0100)]
Fix crash when performing export all contacts from search

6 years agoMerge pull request #12417 from aydun/core_124_template_upgrade
Seamus Lee [Fri, 6 Jul 2018 05:46:41 +0000 (15:46 +1000)]
Merge pull request #12417 from aydun/core_124_template_upgrade

Follow up to PR 12160 to update the DB version of the templates

6 years agoMerge pull request #12426 from totten/master-container-cache
Seamus Lee [Fri, 6 Jul 2018 05:46:13 +0000 (15:46 +1000)]
Merge pull request #12426 from totten/master-container-cache

Change default for CIVICRM_CONTAINER_CACHE to simplify admin/developer experience

6 years agoMerge pull request #12425 from seamuslee001/5_3_alpha1_fix
Seamus Lee [Fri, 6 Jul 2018 01:13:05 +0000 (11:13 +1000)]
Merge pull request #12425 from seamuslee001/5_3_alpha1_fix

Ensure db updates are run for 5.3.alpha1

6 years agoChange default for CIVICRM_CONTAINER_CACHE to simplify admin/developer experience
Tim Otten [Thu, 5 Jul 2018 21:12:39 +0000 (14:12 -0700)]
Change default for CIVICRM_CONTAINER_CACHE to simplify admin/developer experience

In discussion of cache-related PRs for Civi 5.3, there were a few
reports/issues from developers observing `ServiceNotFoundException`.  This
is because there's not much awareness about how service-definitions are
cached.  It shouldn't be a significant issue for production systems running
vanilla code, but for admins and developers (who juggle patches/branches),
it can cause confusion/support-issues/false-failures.  This PR aims to
reduce those.

(This is a follow-up/substitute for #12401.)

Before
------
* The default value of `CIVICRM_CONTAINER_CACHE` is `always`.

After
-----
* The default value of `CIVICRM_CONTAINER_CACHE` is `auto`.

Technical Details
-----------------
The Symfony container essentially stores a list of "services".  In some
Symfony-based apps, building the list of services can be time consuming, so
it's common to cache this.

In Civi, this cache physically appears as
`files/civicrm/templates_c/CachedCiviContainer.*.php`.  The constant
`CIVICRM_CONTAINER_CACHE` determines how Civi manages the cache.  There are
three available policies:

* `never`: This means we never use the cache.  You never have to worry about
  staleness.  But it means we have to fire `hook_civicrm_container` on every
  page-request, and we go through any container-compilation tasks.
  This would have the fewest support-issues for devs and advanced admins.

* `always`: This means we always use whatever is in the cache.  It never
  (automatically) rebuilds the cache or checks freshness...  if you make
  change, then you must flush the cache explicitly.  This should be the
  fastest in production.

* `auto`: This means we typically use the cache (avoiding
  hooks/recompilation), but it has to `stat()` a half-dozen files to check
  the modification time.  (To wit: if the timestamp on
  `Civi/Core/Container.php` changes, then we discard the cache.)

Since performance is a consideration, I did some light benchmarking on my
laptop (fetching a basic public Civi page 100 times across 3 threads).

https://gist.github.com/totten/ec4bffd723afb7967aec56a3040b9ca3

In these results, the `never` policy appears to be ~15-20ms slower than
`auto` or `always`. `auto` is only ~2ms slower than `always`.

The other consideration is accuracy -- `auto` will usually re-compile if you
make a change, but there are some edge-cases where you must still flush
manually.  (In particular -- when you first implement
`hook_civicrm_container` in a new extension, it might not be aware of the
new extension.  And extensions need to call `$container->addResource()`.)

However, overall, `auto` is a pretty good compromise that's almost as fast
you can get and works out-of-the-box for many dev/admin scenarios.

6 years agoEnsure db updates are run for 5.3.alpha1
Seamus Lee [Thu, 5 Jul 2018 21:24:27 +0000 (07:24 +1000)]
Ensure db updates are run for 5.3.alpha1

6 years agoFollow up to PR 12160 to update the DB version of the templates
Aidan Saunders [Wed, 4 Jul 2018 14:06:17 +0000 (15:06 +0100)]
Follow up to PR 12160 to update the DB version of the templates

6 years agoSet version to 5.4.beta1
CiviCRM [Wed, 4 Jul 2018 19:53:35 +0000 (19:53 +0000)]
Set version to 5.4.beta1

6 years agoMerge pull request #11998 from compucorp/PCHR-3410-add-default-assignee-when-creating...
colemanw [Wed, 4 Jul 2018 14:35:37 +0000 (10:35 -0400)]
Merge pull request #11998 from compucorp/PCHR-3410-add-default-assignee-when-creating-cases

dev/core#107: Add default assignee when creating cases

6 years agodev/core#107 Refactor selection of default assignee by relationship type
René Olivo [Tue, 22 May 2018 20:51:23 +0000 (16:51 -0400)]
dev/core#107 Refactor selection of default assignee by relationship type

6 years agodev/core#107 Automatically add default assignees when creating new cases
René Olivo [Thu, 15 Mar 2018 16:00:05 +0000 (12:00 -0400)]
dev/core#107 Automatically add default assignees when creating new cases

This feature allows users to define default assignees for each activity in a case type.
When creating a new case contacts are assigned to activities automatically by following
one of these rules:

* By relationship to case client
* The user creating the case
* A specific contact
* None (default)

6 years agoMerge pull request #12411 from eileenmcnaughton/matt_opt
Eileen McNaughton [Wed, 4 Jul 2018 07:52:01 +0000 (19:52 +1200)]
Merge pull request #12411 from eileenmcnaughton/matt_opt

Fix sample custom data is_reserved=0

6 years agoMerge pull request #12403 from civicrm/5.3
Eileen McNaughton [Wed, 4 Jul 2018 06:11:11 +0000 (18:11 +1200)]
Merge pull request #12403 from civicrm/5.3

5.3

6 years agoMerge pull request #12409 from eileenmcnaughton/paydata
Eileen McNaughton [Wed, 4 Jul 2018 06:10:52 +0000 (18:10 +1200)]
Merge pull request #12409 from eileenmcnaughton/paydata

dev/core/issues/211 Fix mis-allocation of financial transactions when editing payment method on a completed payment

6 years agoAdd late changes
Eileen McNaughton [Wed, 4 Jul 2018 06:10:35 +0000 (18:10 +1200)]
Add late changes

6 years agoFix mis-allocation of financial transactions
eileen [Tue, 3 Jul 2018 23:52:22 +0000 (11:52 +1200)]
Fix mis-allocation of financial transactions

Per

https://lab.civicrm.org/dev/core/issues/211 there seems to be an issue with assigning entity_financial_trxn
entries the wrong financial_trxn_id - I cannot find any recent change that would have caused this
(unless it's simply the greater use of the payment edit block) - it has been reported as working in
5.0.2.

6 years agoFix sample custom data is_reserved=0
Matthew Wire [Tue, 29 May 2018 21:00:39 +0000 (22:00 +0100)]
Fix sample custom data is_reserved=0

6 years agoMerge pull request #12233 from mattwire/optiongroup_form
Eileen McNaughton [Wed, 4 Jul 2018 04:38:18 +0000 (16:38 +1200)]
Merge pull request #12233 from mattwire/optiongroup_form

dev/core#155 Improve Option Groups form

6 years agoMerge pull request #12296 from eileenmcnaughton/greeting
Seamus Lee [Wed, 4 Jul 2018 02:22:45 +0000 (12:22 +1000)]
Merge pull request #12296 from eileenmcnaughton/greeting

Use email_greeting where possible in receipts

6 years agoMerge pull request #12408 from eileenmcnaughton/location_id
Eileen McNaughton [Wed, 4 Jul 2018 02:14:08 +0000 (14:14 +1200)]
Merge pull request #12408 from eileenmcnaughton/location_id

Add location_id if missing CRM-20711.

6 years agoMerge pull request #12399 from eileenmcnaughton/jamie
Seamus Lee [Tue, 3 Jul 2018 23:15:04 +0000 (09:15 +1000)]
Merge pull request #12399 from eileenmcnaughton/jamie

dev/core/#/229 Fix fatal error on send test mail

6 years agoAdd location_id if missing CRM-20711.
eileen [Tue, 3 Jul 2018 22:29:40 +0000 (10:29 +1200)]
Add location_id if missing CRM-20711.

On a small number of installs it seems location_id is missing from the group_contact table. This adds if missing

6 years agoMerge pull request #12398 from agh1/5.3.0-releasenotes
Eileen McNaughton [Tue, 3 Jul 2018 22:24:06 +0000 (10:24 +1200)]
Merge pull request #12398 from agh1/5.3.0-releasenotes

5.3.0 release notes

6 years agoMerge pull request #12362 from totten/master-cache-session
Eileen McNaughton [Tue, 3 Jul 2018 22:20:13 +0000 (10:20 +1200)]
Merge pull request #12362 from totten/master-cache-session

(dev/core#174) Forms/Sessions - Store state via Civi::cache('session')

6 years agoMerge pull request #12391 from eileenmcnaughton/matt
Eileen McNaughton [Tue, 3 Jul 2018 22:02:58 +0000 (10:02 +1200)]
Merge pull request #12391 from eileenmcnaughton/matt

Revert change to BillingBlock to support hidden fields.

6 years agoFix fatal error on send test mail
eileen [Tue, 3 Jul 2018 02:21:30 +0000 (14:21 +1200)]
Fix fatal error on send test mail

6 years agoMerge pull request #12400 from seamuslee001/dev_core_227
Seamus Lee [Tue, 3 Jul 2018 07:53:27 +0000 (17:53 +1000)]
Merge pull request #12400 from seamuslee001/dev_core_227

dev/core#227 Fix issue where on some extened groups the multiple reco…

6 years agoMerge pull request #12394 from yashodha/dev-223
Eileen McNaughton [Tue, 3 Jul 2018 04:11:53 +0000 (16:11 +1200)]
Merge pull request #12394 from yashodha/dev-223

(dev/core#223) Expose prefix and suffix in reports

6 years agoAdd release notes for 5.2.2
CiviCRM [Wed, 20 Jun 2018 06:00:44 +0000 (06:00 +0000)]
Add release notes for 5.2.2

6 years agoAdd release notes for 5.2.1
Tim Otten [Fri, 8 Jun 2018 23:39:40 +0000 (23:39 +0000)]
Add release notes for 5.2.1

6 years ago5.3.0 release notes: combined, organized, added contributors, boilerplate
Andrew Hunt [Tue, 3 Jul 2018 02:15:20 +0000 (22:15 -0400)]
5.3.0 release notes: combined, organized, added contributors, boilerplate

Also removed redundant issues from 5.2.1 and 5.2.2

6 years ago5.3.0 release notes: my half of the issues
Andrew Hunt [Tue, 3 Jul 2018 01:50:06 +0000 (21:50 -0400)]
5.3.0 release notes: my half of the issues

6 years ago5.3.0 release notes: Alice part of release notes
Alice Frumin [Mon, 2 Jul 2018 20:37:32 +0000 (16:37 -0400)]
5.3.0 release notes: Alice part of release notes

6 years agodev/core#227 Fix issue where on some extened groups the multiple records checkbox...
Seamus Lee [Tue, 3 Jul 2018 02:24:09 +0000 (12:24 +1000)]
dev/core#227 Fix issue where on some extened groups the multiple records checkbox doesn't show this causes empty string to be passed in which was causing problems when working out if we needed to make changes to the custom value table

6 years agoMerge pull request #12393 from scardinius/core-222
Eileen McNaughton [Mon, 2 Jul 2018 20:26:01 +0000 (08:26 +1200)]
Merge pull request #12393 from scardinius/core-222

dev/core#222 - Fix importing contacts with dedupe rule

6 years agoMerge pull request #12389 from totten/master-psr16-xtest
Tim Otten [Mon, 2 Jul 2018 18:58:36 +0000 (11:58 -0700)]
Merge pull request #12389 from totten/master-psr16-xtest

(dev/core#174) Add test to prevent hidden interactions among caches

6 years ago5.3.0 release notes: raw from script
Andrew Hunt [Mon, 2 Jul 2018 17:37:55 +0000 (13:37 -0400)]
5.3.0 release notes: raw from script

6 years ago(dev/core#223) Expose prefix and suffix in reports
yashodha [Mon, 2 Jul 2018 10:47:38 +0000 (16:17 +0530)]
(dev/core#223) Expose prefix and suffix in reports

6 years agoMerge pull request #12340 from eileenmcnaughton/merge_cleanup
Eileen McNaughton [Mon, 2 Jul 2018 09:33:41 +0000 (21:33 +1200)]
Merge pull request #12340 from eileenmcnaughton/merge_cleanup

Move DAO function to DAO class, call it from Merge class

6 years agodev/core#222 - Fix importing contacts with dedupe rule
scardinius [Mon, 2 Jul 2018 08:55:41 +0000 (10:55 +0200)]
dev/core#222 - Fix importing contacts with dedupe rule

6 years agoMerge pull request #12390 from yashodha/dev-220
Eileen McNaughton [Mon, 2 Jul 2018 08:36:49 +0000 (20:36 +1200)]
Merge pull request #12390 from yashodha/dev-220

(dev/core#220) State province/country doesn't show properly in the…

6 years agoRevert change to BillingBlock to support hidden fields.
eileen [Mon, 2 Jul 2018 05:50:01 +0000 (17:50 +1200)]
Revert change to BillingBlock to support hidden fields.

Per discussion with Matt Wire this is actually unnecessary, if we define 'id' in the payment fields
metadata. This is a bit too much like spooky magic but it ... erm .. works

6 years agocore/issues#220 - State province/country doesn't show properly in the history report
yashodha [Mon, 2 Jul 2018 05:32:51 +0000 (11:02 +0530)]
core/issues#220 - State province/country doesn't show properly in the history report

6 years ago(dev/core#174) Forms/Sessions - Clear in roughly the same ways as before
Tim Otten [Thu, 28 Jun 2018 03:19:58 +0000 (20:19 -0700)]
(dev/core#174) Forms/Sessions - Clear in roughly the same ways as before

In the past, if one clears the `civicrm_cache` table (i.e.  by calling
`CRM_Core_Config::clearDBCache()` ==> `TRUNCATE TABLE civicrm_cache`), then it
has the effect of destroying any active sessions/forms.

Now, in allowing sessions to be stored elsewhere, we lose that side-effect.

If we want strictly equivalent behavior (from a business-logic perspective),
then we'd want the patch to go a bit further -- calling
Civi::cache('session')->clear() at the same time that it does
`clearDBCache()`.

This revision adds `clear()` calls to various spots discussed here:

* https://docs.google.com/spreadsheets/d/1FxuIvr2noelBvhu5eja9_ps3YUWnkmGhqijBO3gH8Po/edit?usp=sharing
* https://github.com/civicrm/civicrm-core/pull/12362#issuecomment-400897782

6 years ago(dev/core#174) Forms/Sessions - Store state via Civi::cache('session')
Tim Otten [Thu, 29 Mar 2018 01:52:57 +0000 (18:52 -0700)]
(dev/core#174) Forms/Sessions - Store state via Civi::cache('session')

Overview
----------------------------------------

When using forms based on CiviQuickForm (specifically `CRM_Core_Controller`), `CRM_Core_Session`
stores form-state via `CRM_Core_BAO_Cache::storeSessionToCache` and `::restoreSessionFromCache`,
which in turn calls `CRM_Core_BAO_Cache::setItem()` and `::getItem()`.

However, using `CRM_Core_BAO_Cache::setItem()` and `::getItem()` means that all session state
**must** be written to MySQL.  For dev/core#174, we seek the **option** to store via
Redis/Memcache.

Before
----------------------------------------

* (a) Form/session state is always stored via `CRM_Core_BAO_Cache::setItem()` and `civicrm_cache` table.
* (b) To ensure that old sessions are periodically purged, there is special purpose logic that accesses `civicrm_cache`
  (roughly `delete where group_name=Sessions and  created_date < now()-ttl`).
* (c) On Memcache/Redis-enabled systems, the cache server functions as an extra tier. The DB provides canonical storage for form/session state.

After
----------------------------------------

* (a) Form/session state is stored via `CRM_Utils_CacheInterface`.
    * On a typical server, this defaults to `CRM_Utils_Cache_SqlGroup` and `civicrm_cache` table.
* (b) To ensure that old sessions are periodically purged, the call to `CRM_Utils_CacheInterface::set()` specifies a TTL.
    * It is the responsibility of the cache driver to handle TTLs. With #12360, TTL's are supported in `ArrayCache`, `SqlGroup`, and `Redis`.
* (c) On Memcache/Redis-enabled systems, the cache server provides canonical storage for form/session state.

6 years ago(dev/core#174) Add test to prevent hidden interactions among caches
Tim Otten [Thu, 28 Jun 2018 17:35:55 +0000 (10:35 -0700)]
(dev/core#174) Add test to prevent hidden interactions among caches

6 years agoMerge pull request #12379 from totten/master-psr16-sqlgroup
Eileen McNaughton [Mon, 2 Jul 2018 03:13:27 +0000 (15:13 +1200)]
Merge pull request #12379 from totten/master-psr16-sqlgroup

(dev/core#174) Full PSR-16 compliance for SqlGroup

6 years agoMerge pull request #12386 from mattwire/IPN_NFC
Eileen McNaughton [Mon, 2 Jul 2018 00:11:58 +0000 (12:11 +1200)]
Merge pull request #12386 from mattwire/IPN_NFC

NFC code cleanup for AuthNet, Paypal, PaypalPro IPNs

6 years agoMerge pull request #12305 from eileenmcnaughton/dedupe_limit
Monish Deb [Sun, 1 Jul 2018 18:56:54 +0000 (00:26 +0530)]
Merge pull request #12305 from eileenmcnaughton/dedupe_limit

Re-instate Dedupe limit functionality & fix select toggle functionality

6 years agoNFC code cleanup for AuthNet, Paypal, PaypalPro IPNs
Matthew Wire [Sun, 1 Jul 2018 18:53:27 +0000 (19:53 +0100)]
NFC code cleanup for AuthNet, Paypal, PaypalPro IPNs

6 years agoMerge pull request #12345 from MiyaNoctem/CRM-195-add-counts-to-contribution-sub...
Eileen McNaughton [Sun, 1 Jul 2018 07:39:31 +0000 (00:39 -0700)]
Merge pull request #12345 from MiyaNoctem/CRM-195-add-counts-to-contribution-sub-tabs

dev/core#195 Add Contribution Counts to Sub-tabs

6 years agoMerge pull request #12383 from civicrm/5.3
Eileen McNaughton [Sun, 1 Jul 2018 07:19:01 +0000 (00:19 -0700)]
Merge pull request #12383 from civicrm/5.3

5.3 to master

6 years agoMerge pull request #12382 from eileenmcnaughton/jaap
Eileen McNaughton [Sun, 1 Jul 2018 07:17:47 +0000 (00:17 -0700)]
Merge pull request #12382 from eileenmcnaughton/jaap

Fix mis-reporting of false booleans in reports

6 years agoFix mis-reporting of false booleans in reports
eileen [Sun, 1 Jul 2018 07:10:12 +0000 (19:10 +1200)]
Fix mis-reporting of false booleans in reports

6 years agodev/financial/issues/24, Add unit test for Link payment method to financial account...
Pradeep Nayak [Sun, 1 Jul 2018 06:48:30 +0000 (12:18 +0530)]
dev/financial/issues/24, Add unit test for Link payment method to financial account when created using api (#12365)

* Added api test to create new payment method

* updated api test

6 years agoMerge pull request #12356 from pradpnayak/issue-202
Eileen McNaughton [Sun, 1 Jul 2018 06:39:59 +0000 (23:39 -0700)]
Merge pull request #12356 from pradpnayak/issue-202

dev/core/issues/202, check if default currency is set

6 years agoMerge pull request #12381 from totten/master-psr16-apc
Eileen McNaughton [Sun, 1 Jul 2018 05:07:25 +0000 (22:07 -0700)]
Merge pull request #12381 from totten/master-psr16-apc

(dev/core#174) APCcache - Updates to comply with PSR-16

6 years agoMerge pull request #12380 from totten/master-psr16-memcache
Eileen McNaughton [Sun, 1 Jul 2018 04:50:33 +0000 (21:50 -0700)]
Merge pull request #12380 from totten/master-psr16-memcache

(dev/core#174) Memcache(d) - Updates to comply with PSR-16

6 years agoMerge pull request #12378 from eileenmcnaughton/totten
Seamus Lee [Sat, 30 Jun 2018 23:26:09 +0000 (09:26 +1000)]
Merge pull request #12378 from eileenmcnaughton/totten

(dev/core#174) Full PSR-16 compliance for ArrayCache, Redis

6 years ago(dev/core#174) APCcache - Updates to comply with PSR-16
Tim Otten [Wed, 27 Jun 2018 04:49:54 +0000 (21:49 -0700)]
(dev/core#174) APCcache - Updates to comply with PSR-16

One noteable quirk is that APC retains expired (per TTL) records until the
following page-request. To comply with the test suite, we have to double-check
the expiration time.

6 years ago(dev/core#174) Memcache(d) - Updates to comply with PSR-16
Tim Otten [Tue, 26 Jun 2018 23:10:27 +0000 (16:10 -0700)]
(dev/core#174) Memcache(d) - Updates to comply with PSR-16

There are two drivers, `CRM_Utils_Memcache` and `CRM_Utils_Memcached`.  It's
nice to update them in tandem (with similar design decisions).  If an admin
admin is experimenting/debugging, this consistency makes it easier to switch
between drivers.  (Cache data written by one driver can be read by the other
driver.)

In addition to the standard PSR-16-style changes, there are a couple changes
in how data is formatted when written to memcache:

* To allow support for targetted `flush()`ing (one prefix at a time), we update
  the naming convention per https://github.com/memcached/memcached/wiki/ProgrammingTricks#deleting-by-namespace
  This means that a typical key includes a bucket-revision code:
    * BEFORE: `<site-prefix>/<bucket-prefix>/<item-key>` (`dmaster/default/mykey`)
    * AFTER: `<site-prefix>/<bucket-prefix>/<bucket-revision>/<item-key>` (`dmaster/default/5b33011fea555/mykey`)
* Values are `serialize()`d. This resolves an ambiguity where `Memcache::get()`
  does not let us know if it returns `FALSE` because there's an error because
  that's the stored value. By serializing, those scenarios can be distinguished.
    * `get(...) === FALSE` means "item was not found"
    * `get(...) === serialize(FALSE)` means "item was found with value FALSE"

6 years ago(dev/core#174) CRM_Core_BAO_Cache - Periodically flush expired records
Tim Otten [Mon, 25 Jun 2018 23:20:16 +0000 (16:20 -0700)]
(dev/core#174) CRM_Core_BAO_Cache - Periodically flush expired records

6 years ago(dev/core#174) SqlGroup - Rewrite with PSR-16 and TTL support. Bypass BAO multitier...
Tim Otten [Thu, 21 Jun 2018 01:15:34 +0000 (18:15 -0700)]
(dev/core#174) SqlGroup - Rewrite with PSR-16 and TTL support. Bypass BAO multitier cache.

6 years ago(dev/core#174) Redis - Updates to comply with PSR-16
Tim Otten [Sat, 23 Jun 2018 02:22:34 +0000 (19:22 -0700)]
(dev/core#174) Redis - Updates to comply with PSR-16

6 years ago(dev/core#174) ArrayCache - Updates to comply with PSR-16
Tim Otten [Thu, 21 Jun 2018 00:35:14 +0000 (17:35 -0700)]
(dev/core#174) ArrayCache - Updates to comply with PSR-16

6 years agoMerge pull request #12236 from agileware/CIVICRM-874
colemanw [Sat, 30 Jun 2018 16:42:42 +0000 (12:42 -0400)]
Merge pull request #12236 from agileware/CIVICRM-874

CiviCase, added reference of activities from different timelines.

6 years agoMerge pull request #12376 from totten/master-psr16-util
Eileen McNaughton [Sat, 30 Jun 2018 02:52:21 +0000 (19:52 -0700)]
Merge pull request #12376 from totten/master-psr16-util

(dev/core#174) Add various utilities to support PSR-16

6 years ago(dev/core#174) NaiveMultipleTrait - Fix validation of oddball iterables
Tim Otten [Fri, 29 Jun 2018 23:31:11 +0000 (16:31 -0700)]
(dev/core#174) NaiveMultipleTrait - Fix validation of oddball iterables

6 years ago(dev/core#174) CRM_Utils_Date - Add helpers for handling PSR-16 TTL's
Tim Otten [Tue, 26 Jun 2018 23:08:50 +0000 (16:08 -0700)]
(dev/core#174) CRM_Utils_Date - Add helpers for handling PSR-16 TTL's

6 years ago(dev/core#174) Implement CRM_Utils_Cache::assertValidKey
Tim Otten [Thu, 21 Jun 2018 00:51:55 +0000 (17:51 -0700)]
(dev/core#174) Implement CRM_Utils_Cache::assertValidKey

6 years ago(dev/core#174) NaiveMultipleTrait - Throw errors for bad inputs
Tim Otten [Thu, 21 Jun 2018 00:33:27 +0000 (17:33 -0700)]
(dev/core#174) NaiveMultipleTrait - Throw errors for bad inputs

6 years ago(dev/core#174) Add E2E_Cache_CacheTestCase
Tim Otten [Thu, 21 Jun 2018 00:07:39 +0000 (17:07 -0700)]
(dev/core#174) Add E2E_Cache_CacheTestCase

6 years ago(dev/core#174) Add concrete classes for cache exceptions
Tim Otten [Thu, 21 Jun 2018 00:05:43 +0000 (17:05 -0700)]
(dev/core#174) Add concrete classes for cache exceptions

PSR-16 specifies cache exceptions using interfaces.  This requires that we
implement the interfaces.

6 years agoMerge pull request #12368 from totten/master-cache-schema
Eileen McNaughton [Fri, 29 Jun 2018 21:20:17 +0000 (14:20 -0700)]
Merge pull request #12368 from totten/master-cache-schema

(dev/core#174) civicrm_cache - Finish transition from DATETIME to TIMESTAMP

6 years agoMerge pull request #12374 from yashodha/report-fixes
Eileen McNaughton [Fri, 29 Jun 2018 18:51:23 +0000 (11:51 -0700)]
Merge pull request #12374 from yashodha/report-fixes

core/issues#96 - Expose source column in booking report

6 years agocore/issues#96 - Expose source column in booking report
yashodha [Fri, 29 Jun 2018 09:38:47 +0000 (15:08 +0530)]
core/issues#96 - Expose source column in booking report

6 years agoMerge pull request #12342 from totten/master-psr16-min
Eileen McNaughton [Thu, 28 Jun 2018 16:15:14 +0000 (09:15 -0700)]
Merge pull request #12342 from totten/master-psr16-min

Caching - Comply with PSR-16 interfaces

6 years agoMerge pull request #12355 from mattwire/CRM-21574_disable_contact_email_tellafriend_nfc
Monish Deb [Thu, 28 Jun 2018 07:31:50 +0000 (13:01 +0530)]
Merge pull request #12355 from mattwire/CRM-21574_disable_contact_email_tellafriend_nfc

CRM-21574 NFC code cleanup of CRM_Friend_BAO_Friend class

6 years ago(dev/core#174) Update top-level interfaces to show PSR-16 support
Tim Otten [Tue, 19 Jun 2018 23:54:25 +0000 (16:54 -0700)]
(dev/core#174) Update top-level interfaces to show PSR-16 support

6 years agocomposer.json - Import PSR-16 interfaces (psr/simple-cache ~1.0.1)
Tim Otten [Tue, 19 Jun 2018 23:52:47 +0000 (16:52 -0700)]
composer.json - Import PSR-16 interfaces (psr/simple-cache ~1.0.1)

6 years ago(dev/core#174) CRM_Utils_Cache_Interface - Add `has()` (PSR-16)
Tim Otten [Tue, 19 Jun 2018 23:43:21 +0000 (16:43 -0700)]
(dev/core#174) CRM_Utils_Cache_Interface - Add `has()` (PSR-16)

6 years ago(dev/core#174) CRM_Utils_Cache_Interface::clear() is an alias for flush()
Tim Otten [Tue, 19 Jun 2018 23:22:28 +0000 (16:22 -0700)]
(dev/core#174) CRM_Utils_Cache_Interface::clear() is an alias for flush()

flush() is specified by Civi's traditional interface, and clear() is
specified by PSR-16. The semantics should be the same (i.e. remove
any records managed by this cache-object).

This treats flush() and clear() as aliases.

6 years ago(dev/core#174) CRM_Utils_Cache_Interface::delete() - Return bool like PSR-16
Tim Otten [Tue, 19 Jun 2018 23:18:48 +0000 (16:18 -0700)]
(dev/core#174) CRM_Utils_Cache_Interface::delete() - Return bool like PSR-16

The function signature for `delete()` did not specify a return value, and
actual behaviors varied depending on the driver (`bool` for memcache,
`int` for redis, and `void` for others).

This standardizes on returning a bool -- which makes the signature align
with PSR-16's `delete()`.

6 years ago(dev/core#174) CRM_Utils_Cache_Interface::flush() - Return bool like PSR-16
Tim Otten [Tue, 19 Jun 2018 23:06:26 +0000 (16:06 -0700)]
(dev/core#174) CRM_Utils_Cache_Interface::flush() - Return bool like PSR-16

The function signature for `flush()` did not specify a return value, and
actual behaviors varied depending on the driver (`bool` for memcache,
`int` for redis, and `void` for others).

This standardizes on returning a bool -- which makes the signature align
with PSR-16's `clear()`.

6 years ago(dev/core#174) CRM_Utils_Cache_Interface - Add getMultiple/setMultiple (PSR-16)
Tim Otten [Tue, 19 Jun 2018 22:53:46 +0000 (15:53 -0700)]
(dev/core#174) CRM_Utils_Cache_Interface - Add getMultiple/setMultiple (PSR-16)

6 years ago(dev/core#174) CRM_Utils_Cache_Interface::set() should match PSR-16
Tim Otten [Tue, 19 Jun 2018 22:19:01 +0000 (15:19 -0700)]
(dev/core#174) CRM_Utils_Cache_Interface::set() should match PSR-16

Comparing `CRM_Utils_Cache_Interface::set()` and `Psr\SimpleCache\CacheInterface::set()`,
they agree on key details:

1. The first value is a string key.
2. The second value is a mixed field (string or number or array...).
3. The return value should be a boolean indicating success/failure.

There are two differences:

1. Our old interface didn't actually enforce the return-value in all cases. Should be better now.
2. PSR-16 accepts a third argument, `$ttl`, which defaults to `NULL`. In the NULL/default case,
   the semantics are the same (i.e. up to the discretion of the driver).
    1. Since no existing callers actually use this, we can (for moment) throw an
       error if someone tries to pass `$ttl` to a driver that doesn't support it.
3. The `$value` is pass-by-reference. However, this probably doesn't mean anything.
    1. In older Civi code, there was a tendenacy to pass-by-reference without any real
       need -- perhaps just speculation about performance.
    2. Most cache drivers serialize the value and send it elsewhere. References will
       not survive the process. If there's some code/caller/use-case that requires the
       references to work, then it's already broken for most drivers (except maybe `ArrayCache`).
    3. The old signature meant that callers had to say `$bar=123; $cache->set('foo', $bar)` rather than
       `$cache->set('foo', 123)`. This change relaxes the contract -- so that you can pass
       either `$bar` or `123.

See also: https://www.php-fig.org/psr/psr-16/

6 years ago(dev/core#174) CRM_Utils_Cache_Interface::get() should match PSR-16
Tim Otten [Tue, 19 Jun 2018 22:09:08 +0000 (15:09 -0700)]
(dev/core#174) CRM_Utils_Cache_Interface::get() should match PSR-16

Comparing `CRM_Utils_Cache_Interface::get()` and `Psr\SimpleCache\CacheInterface::get()`,
they agree on key details:

1. They return values are `mixed` (strings, arrays, numbers,, etc)
2. The default representation of a cache-miss is NULL.

They differ in that PSR-16 allows the caller to optionally specify a `$default`.

Since no existing callers actually use this, we can (for moment) throw an
error if someone tries to pass `$default` to a driver that doesn't support
it.

See also: https://www.php-fig.org/psr/psr-16/

6 years agoMerge pull request #12348 from totten/master-clean-keys
Seamus Lee [Wed, 27 Jun 2018 21:15:44 +0000 (07:15 +1000)]
Merge pull request #12348 from totten/master-clean-keys

(dev/core#174) Cache-keys for CRM_Utils_Cache_* should avoid reserved chars

6 years ago(dev/core#174) civicrm_cache - Mandate change from DATETIME to TIMESTAMP
Tim Otten [Wed, 27 Jun 2018 20:20:36 +0000 (13:20 -0700)]
(dev/core#174) civicrm_cache - Mandate change from DATETIME to TIMESTAMP

v4.7.20 updated the definition of `created_date` and `expired_date` so that
new installs would default to TIMESTAMP instead of DATETIME.  Status-checks
and DoctorWhen have been encouraging a transition, but it wasn't mandated,
and there was little urgency...  because `expired_date` was ignored, and
adhoc TTLs on `created_date` had generally long windows.  Now that we're
using `expired_date` in more important ways for 5.4 (dev/core#174), we want
to ensure that these values are handled precisely and consistently.

Before
------------------------------
* On new deployments, `created_date` and `expired_date` are TIMESTAMP.
* On upgraded deployments, `created_date` and `expired_date` may
  be using DATETIME or TIMESTAMP (depending on the particular history
  and administrative decisions).

After
------------------------------
* On all deployments, `created_date` and `expired_date` are TIMESTAMP.

6 years agoCivi\Angular\Manager - Use PSR-16 compliant cache key
Tim Otten [Tue, 26 Jun 2018 19:09:11 +0000 (12:09 -0700)]
Civi\Angular\Manager - Use PSR-16 compliant cache key

6 years agoCRM_Contact_BAO_ContactType - Use PSR-16 compliant cache key
Tim Otten [Mon, 25 Jun 2018 23:19:41 +0000 (16:19 -0700)]
CRM_Contact_BAO_ContactType - Use PSR-16 compliant cache key

6 years agoCRM_Core_BAO_CacheTest - Unit test for CRM_Core_BAO_Cache::cleanKey
Tim Otten [Thu, 21 Jun 2018 23:19:37 +0000 (16:19 -0700)]
CRM_Core_BAO_CacheTest - Unit test for CRM_Core_BAO_Cache::cleanKey

6 years agoCRM_ACL_BAO_ACL - Use PSR-16 compliant cache key
Tim Otten [Thu, 21 Jun 2018 08:22:57 +0000 (01:22 -0700)]
CRM_ACL_BAO_ACL - Use PSR-16 compliant cache key