Eileen McNaughton [Mon, 30 Jul 2018 20:03:00 +0000 (08:03 +1200)]
Merge pull request #12591 from eileenmcnaughton/membership_type
Towards using EntityForm.tpl for Membership type & enabling custom data
Eileen McNaughton [Mon, 30 Jul 2018 19:55:26 +0000 (07:55 +1200)]
Merge pull request #12600 from tschuettler/293-geocoding
Skip check for format method when there is no valid geocoding provider
Thomas [Mon, 30 Jul 2018 14:52:14 +0000 (16:52 +0200)]
Skip check for format method when there is no valid geocoding provider
Seamus Lee [Mon, 30 Jul 2018 10:15:04 +0000 (20:15 +1000)]
Merge pull request #12535 from eileenmcnaughton/export_participant_test
Export Add unit test + minor refactor covering specifiable payment output fields for participant export.
Eileen McNaughton [Sun, 29 Jul 2018 22:17:17 +0000 (10:17 +1200)]
Merge pull request #12592 from civicrm/5.4
5.4 to master
Eileen McNaughton [Sun, 29 Jul 2018 22:16:23 +0000 (10:16 +1200)]
Merge pull request #12590 from totten/5.4-flushcache
(dev/core#284) System::flushCache - Reproduce legacy cache behavior. Improve test performance.
eileen [Sun, 29 Jul 2018 04:30:52 +0000 (16:30 +1200)]
Remove some fields from the form to rely on EntityTrait
eileen [Sun, 29 Jul 2018 04:25:36 +0000 (16:25 +1200)]
Convert 'name' & 'description' to use the entity Fields format.
Note that doing a partial conversion in the template is just a stepping stone to using the
EntityField template, when lots of fields need conversion / review it allows us to break it up
Simplify converstion of fields, convert 2 more
eileen [Sun, 29 Jul 2018 04:12:42 +0000 (16:12 +1200)]
Define entity data for membership type form
Eileen McNaughton [Sun, 29 Jul 2018 02:43:20 +0000 (14:43 +1200)]
Merge pull request #12589 from seamuslee001/password_size
dev/core#291 Allow for field size to be set for password fields
Tim Otten [Sat, 28 Jul 2018 22:31:20 +0000 (15:31 -0700)]
Overview
----------------------------------------
`CRM_Utils_System::flushCache()` calls `CRM_Utils_Cache::singleton()->flush()`.
In `5.3`, this triggered a cascading effect; in development of `5.4.alpha`,
some of the cascades were overzealous and we revised to get tighter control
over cascading.
With an aim to being conservative and reproducing old behavior, I previously
patched `5.4.alpha` to add several extra flushes and simulate the old cascades.
However, it wasn't really as conservative as hoped -- because the "old
behavior" depended on the environment. This patch brings us closer the "old
behavior".
See also: https://lab.civicrm.org/dev/core/issues/284
Before (Behavior in version <=`5.3`)
----------------------------------------
On systems with memory-backed caches, `flushCache()` had an aggressive
cascading side-effect where several named caches (`settings`, etc) were also
flushed.
On systems with a default configuration (SQL+ArrayCache), `flushCache()` had a
very limited cascading effect -- it *only cleared the in-process ArrayCache*.
The bulk of the cache content was preserved in SQL.
Before (Behavior in version ~= `5.4.alpha`)
----------------------------------------
To simulate the cascading effect, `flushCache()` explicitly flushes a
half-dozen individual caches. (These half-dozen are chosen to match the old
cascade list and exclude some new things which would problematic.)
On systems with memory-backed caches, this reproduces the aggressive cascading
effect.
On systems with a default configuration (SQL+ArrayCache), this amplifies the
flushing -- because it also destroys the underlying SQL caches.
This has the side-effect of significantly degrading performance of the test
suite.
After (Behavior with patch)
----------------------------------------
`CRM_Utils_System::flushCache` calls `CRM_Utils_Cache::singleton()->flush()`.
To simulate the cascading effect, `flushCache()` explicitly flushes a
half-dozen individual caches... *but only on memory-backed* systems.
On systems with memory-backed caches, this reproduces the aggressive cascading
effect.
On systems with a default configuration (SQL+ArrayCache), this is closer to the
old behavior. The bulk of the cache remains available in SQL.
Based on local spot-checking, this restores performance of the test suite.
Comments
----------------------------------------
Deep down, I don't really believe the cascading effect is a good thing. At
some point, I'd rather just remove these bits. But in absence of a crystal
ball to predict the side-effects of that, I think it's good to find a better
approximation of the old behavior.
Eileen McNaughton [Sat, 28 Jul 2018 23:05:41 +0000 (11:05 +1200)]
Merge pull request #12588 from mattwire/5.4_backportcasefixes
Backport "Fix regression on case export" to 5.4
Seamus Lee [Sat, 28 Jul 2018 22:22:52 +0000 (08:22 +1000)]
dev/core#291 Allow for field size to be set for password fields
eileen [Thu, 19 Jul 2018 22:47:44 +0000 (10:47 +1200)]
Fix regression on case export from recent export fix
https://github.com/civicrm/civicrm-core/commit/
3b4adc92793dccfa446cf66f0740edb543f110d7 changed the way componentmode is defined
It now seems inconsistent
Matthew Wire [Fri, 15 Jun 2018 09:23:33 +0000 (10:23 +0100)]
Non functional changes towards shared functions in Core_Form_Task
Eileen McNaughton [Fri, 27 Jul 2018 07:05:56 +0000 (19:05 +1200)]
Merge pull request #12578 from JKingsnorth/patch-10
(NFC) Update readme to link to GitLab instead of JIRA
Seamus Lee [Fri, 27 Jul 2018 03:44:23 +0000 (13:44 +1000)]
Merge pull request #12577 from eileenmcnaughton/export_sql_columns
Export clean up sql columns
Eileen McNaughton [Fri, 27 Jul 2018 01:37:22 +0000 (13:37 +1200)]
Merge pull request #12530 from colemanw/plainObject
crmRouteBinder - Don't convert arrays to objects
Eileen McNaughton [Fri, 27 Jul 2018 00:17:01 +0000 (12:17 +1200)]
Merge pull request #12573 from pradpnayak/ThrowExceptionOnGetValue
Added code to throw exception on getvalue api call
eileen [Thu, 26 Jul 2018 13:48:53 +0000 (01:48 +1200)]
Extract getMungedFieldName
eileen [Thu, 26 Jul 2018 13:40:30 +0000 (01:40 +1200)]
Extract getSqlColumnDefinition off to processor class.
Note that I wrote test coverage that was pretty extensive on the output of this function earlier
John Kingsnorth [Thu, 26 Jul 2018 22:19:03 +0000 (23:19 +0100)]
Update readme to link to GitLab instead of JIRA
Coleman Watts [Sat, 21 Jul 2018 21:18:41 +0000 (17:18 -0400)]
crmRouteBinder - Don't convert arrays to objects
Eileen McNaughton [Thu, 26 Jul 2018 20:51:36 +0000 (08:51 +1200)]
Merge pull request #12388 from pradpnayak/optionValuePaymentMethod-b
dev/financial/issues/24, Moved code from form layer to BAO and used api instead of BAO function
colemanw [Thu, 26 Jul 2018 14:55:56 +0000 (10:55 -0400)]
Merge pull request #12416 from pradpnayak/232
dev/core/issues/232, Some smart groups and some searches not returning any contacts
Pradeep Nayak [Thu, 26 Jul 2018 11:05:45 +0000 (12:05 +0100)]
Added code to throw exception on getvalue api call
Pradeep Nayak [Tue, 26 Jun 2018 23:31:34 +0000 (05:01 +0530)]
Moved code from form layer to BAO and used api instead of BAO function
Pradeep Nayak [Thu, 26 Jul 2018 09:57:46 +0000 (10:57 +0100)]
updated explode function in custom search
Pradeep Nayak [Thu, 26 Jul 2018 09:57:14 +0000 (10:57 +0100)]
dev/core/issues/232, fixed how contact sub type is using separator
Eileen McNaughton [Thu, 26 Jul 2018 09:55:34 +0000 (21:55 +1200)]
Merge pull request #12556 from totten/master-prevnext-selection
(dev/core#217) PrevNext - Migrate selection methods
Pradeep Nayak [Fri, 13 Jul 2018 13:26:56 +0000 (14:26 +0100)]
added unit test to search contact based on contact sub type
Eileen McNaughton [Thu, 26 Jul 2018 06:35:16 +0000 (18:35 +1200)]
Merge pull request #12571 from civicrm/5.4
Add 5.3.2 release notes (#12570)
Seamus Lee [Thu, 26 Jul 2018 06:34:42 +0000 (16:34 +1000)]
Add 5.3.2 release notes (#12570)
Yashodha Chaku [Thu, 26 Jul 2018 03:12:44 +0000 (08:42 +0530)]
[reviewed, pending rebase] CRM-20703 - Event Contribution Created When No Payment Option Provided (#12367)
* CRM-20703 - Event Contribution Created When No Payment Option Provided
* throw form rule when amount block is active
Eileen McNaughton [Thu, 26 Jul 2018 03:04:28 +0000 (15:04 +1200)]
Merge pull request #12569 from civicrm/5.4
5.4
Eileen McNaughton [Thu, 26 Jul 2018 02:27:36 +0000 (14:27 +1200)]
Merge pull request #12568 from kcristiano/5.4
dev/279 - When Merging two contacts flip, prev, next not working
Seamus Lee [Thu, 26 Jul 2018 00:29:35 +0000 (10:29 +1000)]
Merge pull request #12563 from eileenmcnaughton/enotice54
dev/core#276 enotice fix
Kevin Cristiano [Wed, 25 Jul 2018 22:36:50 +0000 (18:36 -0400)]
dev/279 - When Merging two contacts flip, prev, next not working
Affects Joomla and WordPress
Signed-off-by: Kevin Cristiano <kcristiano@tadpole.cc>
eileen [Wed, 25 Jul 2018 21:35:32 +0000 (09:35 +1200)]
dev/core#276 enotice fix
colemanw [Wed, 25 Jul 2018 13:38:31 +0000 (09:38 -0400)]
Merge pull request #12185 from eileenmcnaughton/entity_form_url_defaults
Entity form : Establish methodology to allow default values to be passed in on the url
colemanw [Wed, 25 Jul 2018 12:38:27 +0000 (08:38 -0400)]
Merge pull request #12561 from eileenmcnaughton/mailing
CRM-21768_NOFOLLOW_links_in_public_online_view_of_mailings
colemanw [Wed, 25 Jul 2018 12:24:12 +0000 (08:24 -0400)]
Merge pull request #12560 from scardinius/core-278
dev/core#278 Fix DB syntax error when try to search deleted cases
Richard van Oosterhout [Thu, 15 Feb 2018 13:43:43 +0000 (14:43 +0100)]
CRM-21768_NOFOLLOW_links_in_public_online_view_of_mailings
scardinius [Wed, 25 Jul 2018 08:41:34 +0000 (10:41 +0200)]
dev/core#278 Fix DB syntax error when try to search deleted cases
Tim Otten [Mon, 2 Jul 2018 23:22:06 +0000 (16:22 -0700)]
(dev/core#217) PrevNext - Make getSelectedContacts() more portable
This function is used one time -- when you run a search, select some
contacts, and perform a task (like "Delete contacts"), the
`CRM/Contact/Form/Task.php` displays a table with the names of the selected
contacts.
This patch makes the logic portable -- so that it can work regardless of
whether selections are stored in MySQL or Redis.
Before
------
* The contacts are selected `FROM civicrm_prevnext_cache WHERE cacheKey LIKE {$key}% AND cacheKey NOT LIKE {$key}_alphabet%`.
* The contact names come from `civicrm_prevnext_cache.data`, which has been
pre-filled with either `civicrm_contact.sort_name` (for most contact
searches) or `civicrm_contact.display_name` (for campaign respondent
searches).
After
-----
* The selections are chosen with `FROM civicrm_prevnext_cache WHERE cacheKey LIKE {$key}%`.
* The contact names are loaded directly from `civicrm_contact.sort_name`.
Comments
--------
* The use of wildcards with `cacheKey` seems like a code-smell suggest a
somewhat deeper problem in how `cacheKey` is understood. However, for our
purposes, it shouldn't matter.
* The before and after queries are very similar in how they use
`cacheKey`... and slightly different. (Ugh.) Is the new one better or
worse? Well, look at how `CRM_Contact_Form_Task` uses `getSelection()`
(for finding contact IDs, which feed into the task logic) and
`getSelectedContacts()` (for finding contact names, which are displayed to
user). If the subtle difference in `cacheKey` filtering matters, then our
UX is buggy because we're showing the user one contact-list (based on old
`getSelectedContacts()`) and we're executing on a different contact-list
(based on the old `getSelection()`).
* Is the old technique for getting names (querying
`civicrm_prevnext_cache.data`) better than the new technique (querying
civicrm_contact.sort_name)? I haven't benchmarked, but I'm skepitcal.
Both techniques transfer the full `O(n)` list from mysql to php.
In typical usage, the size of `n` is limited by what an admin is
willing to click through in the UI (which is probably a few hundred
IDs). The contact tables is indexed by ID. Maybe... if you manually
check several thousand records, it might make a small difference. But
if you're clicking that many, then other things are also getting more
expensive (like the actual task). In this case, it feels like an
unnecessary optimization.
Tim Otten [Mon, 2 Jul 2018 20:07:03 +0000 (13:07 -0700)]
(dev/core#217) PrevNext - Sanitize the `getSelection()` contract
1. Improve docblock formatting
2. The `$entity_table` is never passed in. You can see this by grepping universe for `getSelection`.
Tim Otten [Mon, 2 Jul 2018 19:31:10 +0000 (12:31 -0700)]
(dev/core#217) PrevNext - Sanitize the `markSelection()` contract
The contract feels quirky -- e.g.
* Who would guess that `markSelection()` defaults to `$action == 'unselect'`?
* What's the point of accepting `$entity_table` if it's never used?
Fortunately, this function is only called from `CRM_Contact_Page_AJAX::selectUnselectContacts`,
so it's fairly easy to audit and see that:
* The `$action` is always passed in -- it never relies on the default value.
* The `$entity_table` is never specified explicitly -- it always relies on the default value.
Tim Otten [Mon, 2 Jul 2018 19:54:54 +0000 (12:54 -0700)]
(dev/core#217) PrevNext - Migrate `getSelection()` from BAO to service interface
Tim Otten [Mon, 2 Jul 2018 19:27:38 +0000 (12:27 -0700)]
(dev/core#217) PrevNext - Migrate `markSelection()` from BAO to service interface
Eileen McNaughton [Tue, 24 Jul 2018 22:21:34 +0000 (10:21 +1200)]
Merge pull request #12364 from JMAConsulting/dev-core-210
dev/core#210: Regex filter broken in Search Builder
Eileen McNaughton [Tue, 24 Jul 2018 22:01:21 +0000 (10:01 +1200)]
Merge pull request #12543 from totten/master-prevnext-probe
(dev/core#217) PrevNext - Probe for best available implementation (memory-backed or SQL-backed)
Eileen McNaughton [Tue, 24 Jul 2018 21:59:07 +0000 (09:59 +1200)]
Merge pull request #12555 from civicrm/5.4
5.4 to master
Eileen McNaughton [Tue, 24 Jul 2018 21:58:28 +0000 (09:58 +1200)]
Merge pull request #12552 from colemanw/dedupe54
Handle 'Check for Matching Contact(s)' button with ajax
Eileen McNaughton [Tue, 24 Jul 2018 20:57:58 +0000 (08:57 +1200)]
Merge pull request #11949 from magnolia61/Hide_waitinglist_for_past_and_registration_closed_events
Event Info: show waitinglist statusline only when registration is open
Eileen McNaughton [Tue, 24 Jul 2018 20:30:05 +0000 (08:30 +1200)]
Merge pull request #12440 from mattwire/customfield_selectnooptiongroup
dev/core#244 Allow use of custom fields of type select without specifying an optiongroup
Eileen McNaughton [Tue, 24 Jul 2018 20:21:58 +0000 (08:21 +1200)]
Merge pull request #12439 from mattwire/membershiptype_baotoapi
dev/core#111 Support Custom Data for MembershipType entity
eileen [Mon, 23 Jul 2018 10:01:21 +0000 (22:01 +1200)]
Rationalise selectedPaymentFields.
The selected payments field variable is primarily used when exporting participants
with contributions. This gets the definition of it out of the returnProperties definition
and calculates it more sensibly.
eileen [Mon, 23 Jul 2018 09:11:25 +0000 (21:11 +1200)]
Add unit test covering specifiable output fields for participant export.
Monish Deb [Tue, 24 Jul 2018 19:44:30 +0000 (01:14 +0530)]
Merge pull request #12521 from eileenmcnaughton/fix_im_export_test
Move relationship return properties to the processor class to fix leakage related test fail
Eileen McNaughton [Tue, 24 Jul 2018 19:37:30 +0000 (07:37 +1200)]
Merge pull request #12544 from totten/master-redis-pool
(dev/core#217) CRM_Utils_Cache_Redis::connect() - Allow pooling connections
Eileen McNaughton [Tue, 24 Jul 2018 19:37:02 +0000 (07:37 +1200)]
Merge pull request #12545 from totten/master-prevnext-fill
(dev/core#217) PrevNext - Define and use fillWithSql()/fillWithArray()
Eileen McNaughton [Tue, 24 Jul 2018 19:36:24 +0000 (07:36 +1200)]
Merge pull request #12546 from eileenmcnaughton/redis
Reduce config required to use Redis.
Eileen McNaughton [Tue, 24 Jul 2018 19:33:43 +0000 (07:33 +1200)]
Merge pull request #12385 from mattwire/test_transactions
dev/core#219 Improve consistency displaying "Test Transactions"
Coleman Watts [Tue, 24 Jul 2018 18:42:06 +0000 (14:42 -0400)]
Exclude current contact from dupe check
Coleman Watts [Tue, 24 Jul 2018 04:15:32 +0000 (00:15 -0400)]
Handle 'Check for Matching Contact(s)' button with ajax
Mathieu Lu [Tue, 24 Jul 2018 14:25:20 +0000 (10:25 -0400)]
Merge pull request #12475 from mattwire/CRM-21574_disable_contact_email_tellafriend
CRM-21574 Allow to disable sending of email from source contact for tell a friend on pcp
colemanw [Tue, 24 Jul 2018 12:45:26 +0000 (08:45 -0400)]
Merge pull request #12536 from mukeshcompucorp/SHOR-13-regression-search
Theme layer Fix search for Shoreditch compatibility
Eileen McNaughton [Tue, 24 Jul 2018 11:34:13 +0000 (23:34 +1200)]
Merge pull request #12551 from seamuslee001/missed_54_commits
Included missed 5.3 commits
Seamus Lee [Mon, 23 Apr 2018 04:52:46 +0000 (14:52 +1000)]
Resolve Securty/Core#13 Fix Security/Core SQLi in getTree function of CustomGroup Class
Eileen McNaughton [Tue, 24 Jul 2018 10:49:52 +0000 (22:49 +1200)]
Merge pull request #12549 from civicrm/5.4
5.4
Seamus Lee [Tue, 24 Jul 2018 10:26:34 +0000 (20:26 +1000)]
Merge pull request #12538 from JKingsnorth/patch-8
dev/core#131 Stop Monmouthshire from breaking upgrades
Matthew Wire [Sat, 7 Jul 2018 11:53:22 +0000 (12:53 +0100)]
Convert MembershipType form to EntityForm and use API (so we can save custom data)
Eileen McNaughton [Tue, 24 Jul 2018 08:23:59 +0000 (20:23 +1200)]
Merge pull request #12501 from pradpnayak/customFT
Expose UI support for custom fields on financial types
Eileen McNaughton [Tue, 24 Jul 2018 05:08:00 +0000 (17:08 +1200)]
Merge pull request #12541 from colemanw/menuIcons
Update navigation menu items to use FontAwesome
Eileen McNaughton [Tue, 24 Jul 2018 04:53:18 +0000 (16:53 +1200)]
Merge pull request #12437 from mattwire/fix_premium_display_contributionpage
dev/core#242 Fix display of premiums on contribution page
Eileen McNaughton [Tue, 24 Jul 2018 04:52:26 +0000 (16:52 +1200)]
Merge pull request #12387 from mattwire/paypalipn_fixes
dev/financial#27 Paypal_Standard recurring IPNs don't work
eileen [Tue, 24 Jul 2018 03:40:18 +0000 (15:40 +1200)]
Reduce config required to use Redis.
Specifying the default port sensibly removes one config step & makes sysadmins happier
Tim Otten [Mon, 9 Jul 2018 00:43:01 +0000 (17:43 -0700)]
(dev/core#217) CRM_Utils_Cache_Redis::connect() - Allow pooling connections
Before
------
* Every time you create an instance of `CRM_Utils_Cache_Redis`, it makes
a new instance of the driver class `Redis`.
After
-----
* Every time you create an instance of `CRM_Utils_Cache_Redis`, it uses
a shared instance of the driver class `Redis` (assuming the host/port
are the same).
* If you're writing a driver somewhere else (e.g. the upcomgin
`CRM_Core_PrevNextCache_Redis`), you can use the shared instance
of `Redis`.
Tim Otten [Mon, 9 Jul 2018 00:54:07 +0000 (17:54 -0700)]
(dev/core#217) PrevNext - Probe for best available implementation (memory-backed or SQL-backed)
Before
------
The `prevnext` service is always an instance of `CRM_Core_PrevNextCache_Sql`.
After
-----
If you define `CIVICRM_DB_CACHE_CLASS`, and if there's a corresponding
service `prevnext.driver.{mydriver}`, then it will use that service.
Otherwise, it will use `prevnext.driver.sql` (`CRM_Core_PrevNextCache_Sql`).
Tim Otten [Mon, 9 Jul 2018 00:38:16 +0000 (17:38 -0700)]
(dev/core#217) CRM_Utils_Cache - Extract method `getCacheDriver()`
Eileen McNaughton [Tue, 24 Jul 2018 01:15:46 +0000 (13:15 +1200)]
Merge pull request #12540 from colemanw/Link
Link to option group page from option group menu item
Seamus Lee [Tue, 24 Jul 2018 01:05:38 +0000 (11:05 +1000)]
Merge pull request #12539 from colemanw/recursiveUtils
(NFC) Remove deprecated recursive array utils
Tim Otten [Mon, 2 Jul 2018 22:58:45 +0000 (15:58 -0700)]
(dev/core#217) Campaign Selector - Change direct SQL call to `prevnext->fillWithSql(...)`
Tim Otten [Sat, 30 Jun 2018 00:34:07 +0000 (17:34 -0700)]
(dev/core#217) CRM_Contact_Selector::rebuildPreNextCache - Use PrevNextCache::fillWithArray()
Tim Otten [Fri, 29 Jun 2018 22:05:31 +0000 (15:05 -0700)]
(dev/core#217) CRM_Contact_Selector::fillupPrevNextCache - Use PrevNextCache::fillWithSql()
John Kingsnorth [Mon, 23 Jul 2018 16:01:22 +0000 (17:01 +0100)]
dev/core#131 Stop Monmouthshire from breaking upgrades
Eileen McNaughton [Mon, 23 Jul 2018 19:47:23 +0000 (07:47 +1200)]
Merge pull request #12473 from mattwire/optiongroup_ui_improvements
dev/core#259 OptionGroup Admin UI workflow improvements
Coleman Watts [Mon, 23 Jul 2018 19:33:11 +0000 (15:33 -0400)]
Update navigation menu items to use FontAwesome
Matthew Wire (MJW Consulting) [Mon, 23 Jul 2018 19:25:54 +0000 (20:25 +0100)]
Use same function for 'Contributions' tab count on subtab
Coleman Watts [Mon, 23 Jul 2018 18:56:57 +0000 (14:56 -0400)]
Link to option group page from option group menu item
colemanw [Mon, 23 Jul 2018 18:32:27 +0000 (14:32 -0400)]
Merge pull request #12529 from colemanw/Deprecate
(NFC) Deprecate redundant array util function
Coleman Watts [Mon, 23 Jul 2018 18:28:36 +0000 (14:28 -0400)]
Remove deprecated recursive array utils
Matthew Wire [Fri, 6 Jul 2018 16:34:18 +0000 (17:34 +0100)]
Improve PayPalIPN unit tests
Matthew Wire (MJW Consulting) [Mon, 23 Jul 2018 17:08:20 +0000 (18:08 +0100)]
Don't hardcode contribution_status_id in PayPalProIPN, re-order parameters for readability to match PayPalIPN
Matthew Wire [Sun, 1 Jul 2018 19:43:36 +0000 (20:43 +0100)]
Fix Paypal recurring IPNs
Matthew Wire [Fri, 6 Jul 2018 21:21:20 +0000 (22:21 +0100)]
financial_type_id is not required for a premium product so may not be set in civicrm_premium_product. The filter for display should select those with a NULL financial_type as well as specific financial types.
Matthew Wire [Sat, 7 Jul 2018 21:48:04 +0000 (22:48 +0100)]
Allow custom fields of type Select to be defined without specifying an option group (so they can be populated dynamically using hook_civicrm_fieldOptions
Matthew Wire [Sat, 14 Jul 2018 15:52:48 +0000 (16:52 +0100)]
Improve optiongroups admin UI workflow
Matthew Wire [Sun, 17 Dec 2017 09:54:47 +0000 (18:54 +0900)]
Disable sending from logged in contact ID / user email for 'Tell a Friend'
Pradeep Nayak [Mon, 23 Jul 2018 14:27:00 +0000 (15:27 +0100)]
fixed api test