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>
Fri, 6 Jan 2017 00:24:16 +0000 (16:24 -0800)
commit986f88520c8c9001a01641579b697f6fee60ba32
tree950b86f967c80bd764a9c9a426544055ae8bf564
parentaadc85822a6b56c75372d93bba465290ba03de7b
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