CRM-19690 - Mailing API - Encode and decode `template_options`
authorTim Otten <totten@civicrm.org>
Fri, 2 Dec 2016 18:24:02 +0000 (10:24 -0800)
committerTim Otten <totten@civicrm.org>
Tue, 20 Dec 2016 01:54:17 +0000 (17:54 -0800)
commit6bc3944aad39af1b16bb68c187b0e3879562604d
tree36a2a7362a794f7bb373027e8ac9686a6a78a213
parent703875d8a8fe2e2e5a43e08f776381bcbf3d98c2
CRM-19690 - Mailing API - Encode and decode `template_options`

Present API consumers with a consistent, array-based interface for reading
and writing properties in a Mailing.

Suppose you're submitting a REST request to create a mailing.  The REST
request as a whole is encoded with JSON.  With the default API behavior, you
would need to double-encode the `template_options`, e.g. roughly

```
POST rest.php
  json_encode([
    entity => Mailing
    action => create
    params => [
      template_options => json_encode([...])
    ]
  ])
```

With this patch, you only need to encode the request once.

This parallels the approach used in CaseType API (for the XML `definition`
field).
api/v3/Mailing.php
tests/phpunit/api/v3/MailingTest.php